OBSWindows.cpp 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854
  1. ///////////////////////////////////////////////////////////////////////////
  2. // C++ code generated with wxFormBuilder (version Nov 6 2013)
  3. // http://www.wxformbuilder.org/
  4. //
  5. // PLEASE DO "NOT" EDIT THIS FILE!
  6. ///////////////////////////////////////////////////////////////////////////
  7. #include "OBSWindows.h"
  8. #include "res/delete.ico.h"
  9. #include "res/down.ico.h"
  10. #include "res/list_add.png.h"
  11. #include "res/properties.ico.h"
  12. #include "res/up.ico.h"
  13. ///////////////////////////////////////////////////////////////////////////
  14. OBSBasicBase::OBSBasicBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : WindowSubclass( parent, id, title, pos, size, style )
  15. {
  16. this->SetSizeHints( wxDefaultSize, wxDefaultSize );
  17. mainMenu = new wxMenuBar( 0 );
  18. fileMenu = new wxMenu();
  19. wxMenuItem* fileNewMenu;
  20. fileNewMenu = new wxMenuItem( fileMenu, ID_FILE_NEW, wxString( _("MainMenu.File.New") ) , wxEmptyString, wxITEM_NORMAL );
  21. fileMenu->Append( fileNewMenu );
  22. wxMenuItem* fileOpenMenu;
  23. fileOpenMenu = new wxMenuItem( fileMenu, IF_FILE_OPEN, wxString( _("MainMenu.File.Open") ) , wxEmptyString, wxITEM_NORMAL );
  24. fileMenu->Append( fileOpenMenu );
  25. wxMenuItem* fileSaveMenu;
  26. fileSaveMenu = new wxMenuItem( fileMenu, IF_FILE_SAVE, wxString( _("MainMenu.File.Save") ) , wxEmptyString, wxITEM_NORMAL );
  27. fileMenu->Append( fileSaveMenu );
  28. fileMenu->AppendSeparator();
  29. wxMenuItem* fileExitMenu;
  30. fileExitMenu = new wxMenuItem( fileMenu, ID_FILE_EXIT, wxString( _("MainWindow.Exit") ) , wxEmptyString, wxITEM_NORMAL );
  31. fileMenu->Append( fileExitMenu );
  32. mainMenu->Append( fileMenu, _("MainMenu.File") );
  33. this->SetMenuBar( mainMenu );
  34. wxBoxSizer* mainContainer;
  35. mainContainer = new wxBoxSizer( wxVERTICAL );
  36. mainPanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  37. wxBoxSizer* panelContainer;
  38. panelContainer = new wxBoxSizer( wxVERTICAL );
  39. previewContainer = new wxBoxSizer( wxHORIZONTAL );
  40. wxBoxSizer* previewVertical;
  41. previewVertical = new wxBoxSizer( wxVERTICAL );
  42. previewPanel = new wxPanel( mainPanel, ID_PROGRAM, wxDefaultPosition, wxSize( -1,-1 ), wxTAB_TRAVERSAL );
  43. previewPanel->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_APPWORKSPACE ) );
  44. previewVertical->Add( previewPanel, 0, wxALIGN_CENTER|wxALL, 5 );
  45. previewContainer->Add( previewVertical, 1, wxALIGN_CENTER, 5 );
  46. panelContainer->Add( previewContainer, 1, wxEXPAND, 5 );
  47. wxBoxSizer* bottomContainer;
  48. bottomContainer = new wxBoxSizer( wxVERTICAL );
  49. bottomContainer->SetMinSize( wxSize( -1,155 ) );
  50. wxFlexGridSizer* fgSizer5;
  51. fgSizer5 = new wxFlexGridSizer( 0, 4, 0, 0 );
  52. fgSizer5->AddGrowableRow( 1 );
  53. fgSizer5->SetFlexibleDirection( wxVERTICAL );
  54. fgSizer5->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
  55. scenesLabel = new wxStaticText( mainPanel, wxID_ANY, _("MainWindow.Scenes"), wxDefaultPosition, wxDefaultSize, 0 );
  56. scenesLabel->Wrap( -1 );
  57. fgSizer5->Add( scenesLabel, 0, wxALL|wxEXPAND, 2 );
  58. sourcesLabel = new wxStaticText( mainPanel, wxID_ANY, _("MainWindow.Sources"), wxDefaultPosition, wxDefaultSize, 0 );
  59. sourcesLabel->Wrap( -1 );
  60. fgSizer5->Add( sourcesLabel, 0, wxALL|wxEXPAND, 2 );
  61. sourcesLabel1 = new wxStaticText( mainPanel, wxID_ANY, _("MainWindow.Volume"), wxDefaultPosition, wxDefaultSize, 0 );
  62. sourcesLabel1->Wrap( -1 );
  63. fgSizer5->Add( sourcesLabel1, 0, wxALL|wxEXPAND, 2 );
  64. fgSizer5->Add( 0, 0, 1, wxEXPAND, 5 );
  65. scenesPanel = new wxPanel( mainPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER );
  66. wxBoxSizer* bSizer16;
  67. bSizer16 = new wxBoxSizer( wxVERTICAL );
  68. scenes = new wxListBox( scenesPanel, ID_SCENES, wxDefaultPosition, wxDefaultSize, 0, NULL, 0|wxNO_BORDER );
  69. bSizer16->Add( scenes, 1, wxEXPAND, 0 );
  70. scenesToolbar = new wxToolBar( scenesPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL );
  71. scenesToolbar->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
  72. scenesToolbar->AddTool( ID_SCENE_ADD, _("tool"), list_add_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  73. scenesToolbar->AddTool( ID_SCENE_DELETE, _("tool"), delete_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  74. scenesToolbar->AddTool( ID_SCENE_PROPERTIES, _("tool"), properties_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  75. scenesToolbar->AddSeparator();
  76. scenesToolbar->AddTool( ID_SCENE_MOVEUP, _("tool"), up_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  77. scenesToolbar->AddTool( ID_SCENE_MOVEDOWN, _("tool"), down_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  78. scenesToolbar->Realize();
  79. bSizer16->Add( scenesToolbar, 0, wxEXPAND, 5 );
  80. scenesPanel->SetSizer( bSizer16 );
  81. scenesPanel->Layout();
  82. bSizer16->Fit( scenesPanel );
  83. fgSizer5->Add( scenesPanel, 1, wxEXPAND | wxALL, 2 );
  84. sourcesPanel = new wxPanel( mainPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER );
  85. wxBoxSizer* bSizer17;
  86. bSizer17 = new wxBoxSizer( wxVERTICAL );
  87. wxArrayString sourcesChoices;
  88. sources = new wxCheckListBox( sourcesPanel, ID_SOURCES, wxDefaultPosition, wxDefaultSize, sourcesChoices, 0|wxNO_BORDER );
  89. bSizer17->Add( sources, 1, wxEXPAND, 0 );
  90. sourcesToolbar = new wxToolBar( sourcesPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTB_HORIZONTAL );
  91. sourcesToolbar->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
  92. sourcesToolbar->AddTool( ID_SOURCE_ADD, _("tool"), list_add_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  93. sourcesToolbar->AddTool( ID_SOURCE_DELETE, _("tool"), delete_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  94. sourcesToolbar->AddTool( ID_SOURCE_PROPERTIES, _("tool"), properties_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  95. sourcesToolbar->AddSeparator();
  96. sourcesToolbar->AddTool( ID_SOURCE_MOVEUP, _("tool"), up_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  97. sourcesToolbar->AddTool( ID_SOURCE_MOVEDOWN, _("tool"), down_ico_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
  98. sourcesToolbar->Realize();
  99. bSizer17->Add( sourcesToolbar, 0, wxEXPAND, 5 );
  100. sourcesPanel->SetSizer( bSizer17 );
  101. sourcesPanel->Layout();
  102. bSizer17->Fit( sourcesPanel );
  103. fgSizer5->Add( sourcesPanel, 1, wxEXPAND | wxALL, 2 );
  104. m_scrolledWindow1 = new wxScrolledWindow( mainPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxSIMPLE_BORDER|wxVSCROLL );
  105. m_scrolledWindow1->SetScrollRate( 5, 5 );
  106. wxBoxSizer* bSizer44;
  107. bSizer44 = new wxBoxSizer( wxVERTICAL );
  108. m_scrolledWindow1->SetSizer( bSizer44 );
  109. m_scrolledWindow1->Layout();
  110. bSizer44->Fit( m_scrolledWindow1 );
  111. fgSizer5->Add( m_scrolledWindow1, 1, wxEXPAND|wxALL, 2 );
  112. wxBoxSizer* rightButtonsContainer;
  113. rightButtonsContainer = new wxBoxSizer( wxVERTICAL );
  114. toggleStreamButton = new wxButton( mainPanel, ID_STARTSTREAM, _("MainWindow.StartStream"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
  115. rightButtonsContainer->Add( toggleStreamButton, 0, wxALL|wxEXPAND, 2 );
  116. ToggleRecordButton = new wxButton( mainPanel, ID_RECORD, _("MainWindow.StartRecording"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
  117. rightButtonsContainer->Add( ToggleRecordButton, 0, wxALL|wxEXPAND, 2 );
  118. settingsButton = new wxButton( mainPanel, ID_SETTINGS, _("MainWindow.Settings"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
  119. rightButtonsContainer->Add( settingsButton, 0, wxALL|wxEXPAND, 2 );
  120. exitButton = new wxButton( mainPanel, ID_EXIT, _("MainWindow.Exit"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
  121. rightButtonsContainer->Add( exitButton, 0, wxALL|wxEXPAND, 2 );
  122. fgSizer5->Add( rightButtonsContainer, 1, wxEXPAND, 5 );
  123. bottomContainer->Add( fgSizer5, 1, wxALIGN_CENTER_HORIZONTAL, 5 );
  124. panelContainer->Add( bottomContainer, 0, wxEXPAND, 5 );
  125. mainPanel->SetSizer( panelContainer );
  126. mainPanel->Layout();
  127. panelContainer->Fit( mainPanel );
  128. mainContainer->Add( mainPanel, 1, wxEXPAND | wxALL, 0 );
  129. this->SetSizer( mainContainer );
  130. this->Layout();
  131. statusBar = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
  132. this->Centre( wxBOTH );
  133. // Connect Events
  134. this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( OBSBasicBase::OnClose ) );
  135. this->Connect( wxEVT_ICONIZE, wxIconizeEventHandler( OBSBasicBase::OnMinimize ) );
  136. this->Connect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnSize ) );
  137. this->Connect( fileNewMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileNewClicked ) );
  138. this->Connect( fileOpenMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileOpenClicked ) );
  139. this->Connect( fileSaveMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileSaveClicked ) );
  140. this->Connect( fileExitMenu->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileExitClicked ) );
  141. previewPanel->Connect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnResizePreview ), NULL, this );
  142. scenes->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::scenesClicked ), NULL, this );
  143. scenes->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::scenesRDown ), NULL, this );
  144. this->Connect( ID_SCENE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneAddClicked ) );
  145. this->Connect( ID_SCENE_DELETE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneRemoveClicked ) );
  146. this->Connect( ID_SCENE_PROPERTIES, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::scenePropertiesClicked ) );
  147. this->Connect( ID_SCENE_MOVEUP, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneUpClicked ) );
  148. this->Connect( ID_SCENE_MOVEDOWN, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneDownClicked ) );
  149. sources->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::sourcesClicked ), NULL, this );
  150. sources->Connect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( OBSBasicBase::sourcesToggled ), NULL, this );
  151. sources->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::sourcesRDown ), NULL, this );
  152. this->Connect( ID_SOURCE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceAddClicked ) );
  153. this->Connect( ID_SOURCE_DELETE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceRemoveClicked ) );
  154. this->Connect( ID_SOURCE_PROPERTIES, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourcePropertiesClicked ) );
  155. this->Connect( ID_SOURCE_MOVEUP, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceUpClicked ) );
  156. this->Connect( ID_SOURCE_MOVEDOWN, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceDownClicked ) );
  157. toggleStreamButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::toggleStreamClicked ), NULL, this );
  158. ToggleRecordButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::toggleRecordClicked ), NULL, this );
  159. settingsButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::settingsClicked ), NULL, this );
  160. exitButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::exitClicked ), NULL, this );
  161. }
  162. OBSBasicBase::~OBSBasicBase()
  163. {
  164. // Disconnect Events
  165. this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( OBSBasicBase::OnClose ) );
  166. this->Disconnect( wxEVT_ICONIZE, wxIconizeEventHandler( OBSBasicBase::OnMinimize ) );
  167. this->Disconnect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnSize ) );
  168. this->Disconnect( ID_FILE_NEW, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileNewClicked ) );
  169. this->Disconnect( IF_FILE_OPEN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileOpenClicked ) );
  170. this->Disconnect( IF_FILE_SAVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileSaveClicked ) );
  171. this->Disconnect( ID_FILE_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OBSBasicBase::fileExitClicked ) );
  172. previewPanel->Disconnect( wxEVT_SIZE, wxSizeEventHandler( OBSBasicBase::OnResizePreview ), NULL, this );
  173. scenes->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::scenesClicked ), NULL, this );
  174. scenes->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::scenesRDown ), NULL, this );
  175. this->Disconnect( ID_SCENE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneAddClicked ) );
  176. this->Disconnect( ID_SCENE_DELETE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneRemoveClicked ) );
  177. this->Disconnect( ID_SCENE_PROPERTIES, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::scenePropertiesClicked ) );
  178. this->Disconnect( ID_SCENE_MOVEUP, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneUpClicked ) );
  179. this->Disconnect( ID_SCENE_MOVEDOWN, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sceneDownClicked ) );
  180. sources->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( OBSBasicBase::sourcesClicked ), NULL, this );
  181. sources->Disconnect( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEventHandler( OBSBasicBase::sourcesToggled ), NULL, this );
  182. sources->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( OBSBasicBase::sourcesRDown ), NULL, this );
  183. this->Disconnect( ID_SOURCE_ADD, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceAddClicked ) );
  184. this->Disconnect( ID_SOURCE_DELETE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceRemoveClicked ) );
  185. this->Disconnect( ID_SOURCE_PROPERTIES, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourcePropertiesClicked ) );
  186. this->Disconnect( ID_SOURCE_MOVEUP, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceUpClicked ) );
  187. this->Disconnect( ID_SOURCE_MOVEDOWN, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler( OBSBasicBase::sourceDownClicked ) );
  188. toggleStreamButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::toggleStreamClicked ), NULL, this );
  189. ToggleRecordButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::toggleRecordClicked ), NULL, this );
  190. settingsButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::settingsClicked ), NULL, this );
  191. exitButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicBase::exitClicked ), NULL, this );
  192. }
  193. OBSStudioBase::OBSStudioBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : WindowSubclass( parent, id, title, pos, size, style )
  194. {
  195. this->SetSizeHints( wxSize( 900,400 ), wxDefaultSize );
  196. wxBoxSizer* windowSizer;
  197. windowSizer = new wxBoxSizer( wxVERTICAL );
  198. mainPanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  199. wxBoxSizer* clientSizer;
  200. clientSizer = new wxBoxSizer( wxHORIZONTAL );
  201. leftSizer = new wxBoxSizer( wxVERTICAL );
  202. clientSizer->Add( leftSizer, 0, wxEXPAND, 5 );
  203. wxBoxSizer* centerSizer;
  204. centerSizer = new wxBoxSizer( wxVERTICAL );
  205. wxBoxSizer* topSizer;
  206. topSizer = new wxBoxSizer( wxHORIZONTAL );
  207. wxBoxSizer* bSizer5;
  208. bSizer5 = new wxBoxSizer( wxHORIZONTAL );
  209. wxBoxSizer* bSizer8;
  210. bSizer8 = new wxBoxSizer( wxVERTICAL );
  211. wxBoxSizer* bSizer33;
  212. bSizer33 = new wxBoxSizer( wxVERTICAL );
  213. wxBoxSizer* bSizer191;
  214. bSizer191 = new wxBoxSizer( wxVERTICAL );
  215. m_staticText6 = new wxStaticText( mainPanel, wxID_ANY, _("MainWindow.Preview"), wxDefaultPosition, wxDefaultSize, 0 );
  216. m_staticText6->Wrap( -1 );
  217. bSizer191->Add( m_staticText6, 0, wxALL, 3 );
  218. m_panel2 = new wxPanel( mainPanel, wxID_ANY, wxDefaultPosition, wxSize( 480,270 ), wxTAB_TRAVERSAL );
  219. m_panel2->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_APPWORKSPACE ) );
  220. bSizer191->Add( m_panel2, 0, wxALIGN_CENTER|wxALL, 3 );
  221. bSizer33->Add( bSizer191, 0, wxALIGN_CENTER, 0 );
  222. bSizer8->Add( bSizer33, 0, wxALIGN_CENTER|wxEXPAND, 5 );
  223. bSizer5->Add( bSizer8, 1, wxALIGN_CENTER, 5 );
  224. topSizer->Add( bSizer5, 1, wxEXPAND, 5 );
  225. transitionSizer = new wxBoxSizer( wxVERTICAL );
  226. m_button7 = new wxButton( mainPanel, wxID_ANY, _("MainWindow.Cut"), wxDefaultPosition, wxDefaultSize, 0 );
  227. transitionSizer->Add( m_button7, 0, wxALL, 5 );
  228. topSizer->Add( transitionSizer, 0, wxALIGN_CENTER, 5 );
  229. wxBoxSizer* bSizer6;
  230. bSizer6 = new wxBoxSizer( wxHORIZONTAL );
  231. wxBoxSizer* bSizer13;
  232. bSizer13 = new wxBoxSizer( wxVERTICAL );
  233. wxBoxSizer* bSizer34;
  234. bSizer34 = new wxBoxSizer( wxVERTICAL );
  235. wxBoxSizer* bSizer201;
  236. bSizer201 = new wxBoxSizer( wxVERTICAL );
  237. m_staticText7 = new wxStaticText( mainPanel, wxID_ANY, _("MainWindow.Program"), wxDefaultPosition, wxDefaultSize, 0 );
  238. m_staticText7->Wrap( -1 );
  239. bSizer201->Add( m_staticText7, 0, wxALL, 3 );
  240. m_panel3 = new wxPanel( mainPanel, wxID_ANY, wxDefaultPosition, wxSize( 480,270 ), wxTAB_TRAVERSAL );
  241. m_panel3->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_APPWORKSPACE ) );
  242. bSizer201->Add( m_panel3, 0, wxALIGN_CENTER|wxALL, 3 );
  243. bSizer34->Add( bSizer201, 0, wxALIGN_CENTER, 0 );
  244. bSizer13->Add( bSizer34, 0, wxALIGN_CENTER|wxEXPAND, 5 );
  245. bSizer6->Add( bSizer13, 1, wxALIGN_CENTER, 5 );
  246. topSizer->Add( bSizer6, 1, wxEXPAND, 5 );
  247. centerSizer->Add( topSizer, 1, wxEXPAND, 5 );
  248. bottomSizer = new wxBoxSizer( wxVERTICAL );
  249. centerSizer->Add( bottomSizer, 0, wxEXPAND, 5 );
  250. clientSizer->Add( centerSizer, 1, wxEXPAND, 5 );
  251. rightSizer = new wxBoxSizer( wxVERTICAL );
  252. clientSizer->Add( rightSizer, 0, wxEXPAND, 5 );
  253. mainPanel->SetSizer( clientSizer );
  254. mainPanel->Layout();
  255. clientSizer->Fit( mainPanel );
  256. windowSizer->Add( mainPanel, 1, wxEXPAND, 0 );
  257. this->SetSizer( windowSizer );
  258. this->Layout();
  259. m_menubar1 = new wxMenuBar( 0 );
  260. m_menu1 = new wxMenu();
  261. wxMenuItem* m_menuItem1;
  262. m_menuItem1 = new wxMenuItem( m_menu1, wxID_ANY, wxString( _("MyMenuItem") ) , wxEmptyString, wxITEM_NORMAL );
  263. m_menu1->Append( m_menuItem1 );
  264. m_menubar1->Append( m_menu1, _("MainMenu.File") );
  265. this->SetMenuBar( m_menubar1 );
  266. m_statusBar1 = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
  267. this->Centre( wxBOTH );
  268. }
  269. OBSStudioBase::~OBSStudioBase()
  270. {
  271. }
  272. OBSBasicSettingsBase::OBSBasicSettingsBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DialogSubclass( parent, id, title, pos, size, style )
  273. {
  274. this->SetSizeHints( wxDefaultSize, wxDefaultSize );
  275. wxBoxSizer* bSizer30;
  276. bSizer30 = new wxBoxSizer( wxVERTICAL );
  277. wxBoxSizer* bSizer31;
  278. bSizer31 = new wxBoxSizer( wxVERTICAL );
  279. settingsList = new wxListbook( this, ID_SETTINGS_LIST, wxDefaultPosition, wxDefaultSize, wxLB_DEFAULT );
  280. generalPanel = new wxPanel( settingsList, ID_SETTINGS_GENERAL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  281. wxBoxSizer* bSizer32;
  282. bSizer32 = new wxBoxSizer( wxVERTICAL );
  283. bSizer32->Add( 0, 20, 0, wxEXPAND, 5 );
  284. wxFlexGridSizer* fgSizer13;
  285. fgSizer13 = new wxFlexGridSizer( 0, 2, 0, 0 );
  286. fgSizer13->SetFlexibleDirection( wxBOTH );
  287. fgSizer13->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
  288. m_staticText27 = new wxStaticText( generalPanel, wxID_ANY, _("Settings.General.Language"), wxDefaultPosition, wxSize( 270,-1 ), wxALIGN_RIGHT );
  289. m_staticText27->Wrap( -1 );
  290. fgSizer13->Add( m_staticText27, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  291. languageList = new wxComboBox( generalPanel, ID_LANGUAGE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  292. fgSizer13->Add( languageList, 0, wxALL, 2 );
  293. bSizer32->Add( fgSizer13, 0, wxEXPAND, 5 );
  294. bSizer32->Add( 0, 20, 0, wxEXPAND, 5 );
  295. generalChangedText = new wxStaticText( generalPanel, wxID_ANY, _("Settings.RestartProgram"), wxDefaultPosition, wxDefaultSize, 0 );
  296. generalChangedText->Wrap( -1 );
  297. bSizer32->Add( generalChangedText, 1, wxALL|wxEXPAND, 5 );
  298. generalPanel->SetSizer( bSizer32 );
  299. generalPanel->Layout();
  300. bSizer32->Fit( generalPanel );
  301. settingsList->AddPage( generalPanel, _("Settings.General"), true );
  302. outputsPanel = new wxPanel( settingsList, ID_SETTINGS_OUTPUTS, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  303. wxBoxSizer* bSizer33;
  304. bSizer33 = new wxBoxSizer( wxVERTICAL );
  305. outputsPanel->SetSizer( bSizer33 );
  306. outputsPanel->Layout();
  307. bSizer33->Fit( outputsPanel );
  308. settingsList->AddPage( outputsPanel, _("Settings.Outputs"), false );
  309. videoPanel = new wxPanel( settingsList, ID_SETTINGS_VIDEO, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  310. wxBoxSizer* bSizer34;
  311. bSizer34 = new wxBoxSizer( wxVERTICAL );
  312. bSizer34->Add( 0, 20, 0, wxEXPAND, 5 );
  313. wxFlexGridSizer* fgSizer1;
  314. fgSizer1 = new wxFlexGridSizer( 0, 2, 2, 0 );
  315. fgSizer1->SetFlexibleDirection( wxBOTH );
  316. fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
  317. m_staticText211 = new wxStaticText( videoPanel, wxID_ANY, _("Settings.Video.Renderer"), wxDefaultPosition, wxDefaultSize, 0 );
  318. m_staticText211->Wrap( -1 );
  319. fgSizer1->Add( m_staticText211, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  320. rendererList = new wxComboBox( videoPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  321. fgSizer1->Add( rendererList, 0, wxALL, 2 );
  322. m_staticText6 = new wxStaticText( videoPanel, wxID_ANY, _("Settings.Video.Adapter"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  323. m_staticText6->Wrap( -1 );
  324. m_staticText6->SetMinSize( wxSize( 270,-1 ) );
  325. fgSizer1->Add( m_staticText6, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  326. videoAdapterList = new wxComboBox( videoPanel, ID_ADAPTER, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  327. videoAdapterList->Enable( false );
  328. fgSizer1->Add( videoAdapterList, 0, wxALL, 2 );
  329. m_staticText8 = new wxStaticText( videoPanel, wxID_ANY, _("Settings.Video.BaseRes"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
  330. m_staticText8->Wrap( -1 );
  331. fgSizer1->Add( m_staticText8, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  332. baseResList = new wxComboBox( videoPanel, ID_BASE_RES, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
  333. fgSizer1->Add( baseResList, 0, wxALL, 2 );
  334. m_staticText10 = new wxStaticText( videoPanel, wxID_ANY, _("Settings.Video.OutputRes"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  335. m_staticText10->Wrap( -1 );
  336. fgSizer1->Add( m_staticText10, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  337. outputResList = new wxComboBox( videoPanel, ID_DOWNSCALE_RES, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
  338. fgSizer1->Add( outputResList, 0, wxALL, 2 );
  339. m_staticText11 = new wxStaticText( videoPanel, wxID_ANY, _("Settings.Video.DownscaleFilter"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  340. m_staticText11->Wrap( -1 );
  341. fgSizer1->Add( m_staticText11, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  342. filterList = new wxComboBox( videoPanel, ID_DOWNSCALE_FILTER, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  343. filterList->Enable( false );
  344. fgSizer1->Add( filterList, 0, wxALL, 2 );
  345. fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
  346. disableAeroCheckbox = new wxCheckBox( videoPanel, ID_DISABLEAERO, _("Settings.DisableAeroWindows"), wxDefaultPosition, wxDefaultSize, 0 );
  347. disableAeroCheckbox->Enable( false );
  348. fgSizer1->Add( disableAeroCheckbox, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  349. fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
  350. m_staticline1 = new wxStaticLine( videoPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
  351. fgSizer1->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
  352. m_staticText22 = new wxStaticText( videoPanel, wxID_ANY, _("Settings.Video.FPS"), wxDefaultPosition, wxDefaultSize, 0 );
  353. m_staticText22->Wrap( -1 );
  354. fgSizer1->Add( m_staticText22, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  355. fpsTypeList = new wxChoicebook( videoPanel, ID_FPS_TYPE, wxDefaultPosition, wxDefaultSize, wxCHB_DEFAULT );
  356. m_panel13 = new wxPanel( fpsTypeList, ID_FPSPANEL_COMMON, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  357. wxBoxSizer* bSizer45;
  358. bSizer45 = new wxBoxSizer( wxHORIZONTAL );
  359. fpsCommonList = new wxComboBox( m_panel13, ID_FPS_COMMON, _("30"), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  360. fpsCommonList->Append( _("10") );
  361. fpsCommonList->Append( _("20") );
  362. fpsCommonList->Append( _("25") );
  363. fpsCommonList->Append( _("29.97") );
  364. fpsCommonList->Append( _("30") );
  365. fpsCommonList->Append( _("48") );
  366. fpsCommonList->Append( _("59.94") );
  367. fpsCommonList->Append( _("60") );
  368. fpsCommonList->SetSelection( 4 );
  369. bSizer45->Add( fpsCommonList, 0, wxTOP|wxBOTTOM|wxRIGHT, 2 );
  370. m_panel13->SetSizer( bSizer45 );
  371. m_panel13->Layout();
  372. bSizer45->Fit( m_panel13 );
  373. fpsTypeList->AddPage( m_panel13, _("Settings.Video.FPS.Common"), true );
  374. m_panel14 = new wxPanel( fpsTypeList, ID_FPSPANEL_INTEGER, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  375. wxBoxSizer* bSizer46;
  376. bSizer46 = new wxBoxSizer( wxHORIZONTAL );
  377. fpsIntegerScroller = new wxSpinCtrl( m_panel14, ID_FPS_INTEGER, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 120, 30 );
  378. bSizer46->Add( fpsIntegerScroller, 0, wxTOP|wxBOTTOM|wxRIGHT, 2 );
  379. m_panel14->SetSizer( bSizer46 );
  380. m_panel14->Layout();
  381. bSizer46->Fit( m_panel14 );
  382. fpsTypeList->AddPage( m_panel14, _("Settings.Video.FPS.Integer"), false );
  383. m_panel15 = new wxPanel( fpsTypeList, ID_FPSPANEL_FRACTION, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  384. wxFlexGridSizer* fgSizer10;
  385. fgSizer10 = new wxFlexGridSizer( 0, 2, 0, 0 );
  386. fgSizer10->SetFlexibleDirection( wxBOTH );
  387. fgSizer10->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
  388. m_staticText20 = new wxStaticText( m_panel15, wxID_ANY, _("Settings.Video.FPS.Numerator"), wxDefaultPosition, wxDefaultSize, 0 );
  389. m_staticText20->Wrap( -1 );
  390. fgSizer10->Add( m_staticText20, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  391. fpsNumeratorScroller = new wxSpinCtrl( m_panel15, ID_FPS_NUMERATOR, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 1000000000, 30 );
  392. fgSizer10->Add( fpsNumeratorScroller, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 2 );
  393. m_staticText21 = new wxStaticText( m_panel15, wxID_ANY, _("Settings.Video.FPS.Denominator"), wxDefaultPosition, wxDefaultSize, 0 );
  394. m_staticText21->Wrap( -1 );
  395. fgSizer10->Add( m_staticText21, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  396. fpsDenominatorScroller = new wxSpinCtrl( m_panel15, ID_FPS_DENOMINATOR, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 1000000000, 1 );
  397. fgSizer10->Add( fpsDenominatorScroller, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 2 );
  398. m_panel15->SetSizer( fgSizer10 );
  399. m_panel15->Layout();
  400. fgSizer10->Fit( m_panel15 );
  401. fpsTypeList->AddPage( m_panel15, _("Settings.Video.FPS.Fraction"), false );
  402. m_panel16 = new wxPanel( fpsTypeList, ID_FPSPANEL_NANOSECONDS, wxDefaultPosition, wxSize( -1,-1 ), wxTAB_TRAVERSAL );
  403. wxBoxSizer* bSizer50;
  404. bSizer50 = new wxBoxSizer( wxHORIZONTAL );
  405. fpsNanosecondsScroller = new wxSpinCtrl( m_panel16, ID_FPS_NANOSECONDS, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 8333333, 1000000000, 33333333 );
  406. bSizer50->Add( fpsNanosecondsScroller, 0, wxTOP|wxBOTTOM|wxRIGHT, 2 );
  407. m_panel16->SetSizer( bSizer50 );
  408. m_panel16->Layout();
  409. bSizer50->Fit( m_panel16 );
  410. fpsTypeList->AddPage( m_panel16, _("Settings.Video.FPS.Nanoseconds"), false );
  411. fgSizer1->Add( fpsTypeList, 0, wxALL, 2 );
  412. bSizer34->Add( fgSizer1, 0, wxEXPAND, 5 );
  413. bSizer34->Add( 0, 20, 0, wxEXPAND, 5 );
  414. videoChangedText = new wxStaticText( videoPanel, wxID_ANY, _("Settings.StreamRestart"), wxDefaultPosition, wxDefaultSize, 0 );
  415. videoChangedText->Wrap( -1 );
  416. bSizer34->Add( videoChangedText, 1, wxALL|wxEXPAND, 5 );
  417. videoPanel->SetSizer( bSizer34 );
  418. videoPanel->Layout();
  419. bSizer34->Fit( videoPanel );
  420. settingsList->AddPage( videoPanel, _("Settings.Video"), false );
  421. audioPanel = new wxPanel( settingsList, ID_SETTINGS_AUDIO, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
  422. wxBoxSizer* bSizer36;
  423. bSizer36 = new wxBoxSizer( wxVERTICAL );
  424. bSizer36->Add( 0, 20, 0, wxEXPAND, 5 );
  425. wxFlexGridSizer* fgSizer11;
  426. fgSizer11 = new wxFlexGridSizer( 0, 2, 2, 0 );
  427. fgSizer11->SetFlexibleDirection( wxBOTH );
  428. fgSizer11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
  429. m_staticText23 = new wxStaticText( audioPanel, wxID_ANY, _("Settings.Audio.DesktopAudioDevice1"), wxDefaultPosition, wxSize( 270,-1 ), wxALIGN_RIGHT );
  430. m_staticText23->Wrap( -1 );
  431. fgSizer11->Add( m_staticText23, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  432. desktopAudioDeviceList1 = new wxComboBox( audioPanel, ID_DESKTOP_AUDIO_DEVICE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  433. desktopAudioDeviceList1->Enable( false );
  434. fgSizer11->Add( desktopAudioDeviceList1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  435. m_staticText231 = new wxStaticText( audioPanel, wxID_ANY, _("Settings.Audio.DesktopAudioDevice2"), wxDefaultPosition, wxSize( 270,-1 ), wxALIGN_RIGHT );
  436. m_staticText231->Wrap( -1 );
  437. fgSizer11->Add( m_staticText231, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  438. desktopAudioDeviceList2 = new wxComboBox( audioPanel, ID_DESKTOP_AUDIO_DEVICE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  439. desktopAudioDeviceList2->Enable( false );
  440. fgSizer11->Add( desktopAudioDeviceList2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  441. m_staticText24 = new wxStaticText( audioPanel, wxID_ANY, _("Settings.Audio.AuxAudioDevice1"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  442. m_staticText24->Wrap( -1 );
  443. fgSizer11->Add( m_staticText24, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  444. auxAudioDeviceList1 = new wxComboBox( audioPanel, ID_AUX_AUDIO_DEVICE1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  445. auxAudioDeviceList1->Enable( false );
  446. fgSizer11->Add( auxAudioDeviceList1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  447. m_staticText241 = new wxStaticText( audioPanel, wxID_ANY, _("Settings.Audio.AuxAudioDevice2"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  448. m_staticText241->Wrap( -1 );
  449. fgSizer11->Add( m_staticText241, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  450. auxAudioDeviceList2 = new wxComboBox( audioPanel, ID_AUX_AUDIO_DEVICE2, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  451. auxAudioDeviceList2->Enable( false );
  452. fgSizer11->Add( auxAudioDeviceList2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  453. m_staticText242 = new wxStaticText( audioPanel, wxID_ANY, _("Settings.Audio.AuxAudioDevice3"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  454. m_staticText242->Wrap( -1 );
  455. fgSizer11->Add( m_staticText242, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  456. auxAudioDeviceList3 = new wxComboBox( audioPanel, ID_AUX_AUDIO_DEVICE3, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  457. auxAudioDeviceList3->Enable( false );
  458. fgSizer11->Add( auxAudioDeviceList3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  459. m_staticText243 = new wxStaticText( audioPanel, wxID_ANY, _("Settings.Audio.AuxAudioDevice4"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
  460. m_staticText243->Wrap( -1 );
  461. fgSizer11->Add( m_staticText243, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 2 );
  462. auxAudioDeviceList4 = new wxComboBox( audioPanel, ID_AUX_AUDIO_DEVICE4, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
  463. auxAudioDeviceList4->Enable( false );
  464. fgSizer11->Add( auxAudioDeviceList4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 2 );
  465. bSizer36->Add( fgSizer11, 0, wxEXPAND, 5 );
  466. audioPanel->SetSizer( bSizer36 );
  467. audioPanel->Layout();
  468. bSizer36->Fit( audioPanel );
  469. settingsList->AddPage( audioPanel, _("Settings.Audio"), false );
  470. bSizer31->Add( settingsList, 1, wxEXPAND | wxALL, 5 );
  471. bSizer30->Add( bSizer31, 1, wxEXPAND, 5 );
  472. wxBoxSizer* bSizer37;
  473. bSizer37 = new wxBoxSizer( wxHORIZONTAL );
  474. okButton = new wxButton( this, ID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
  475. bSizer37->Add( okButton, 0, wxALL, 5 );
  476. cancelButton = new wxButton( this, ID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
  477. bSizer37->Add( cancelButton, 0, wxALL, 5 );
  478. applyButton = new wxButton( this, ID_APPLY, _("Apply"), wxDefaultPosition, wxDefaultSize, 0 );
  479. applyButton->Enable( false );
  480. bSizer37->Add( applyButton, 0, wxALL, 5 );
  481. bSizer30->Add( bSizer37, 0, wxALIGN_RIGHT, 5 );
  482. this->SetSizer( bSizer30 );
  483. this->Layout();
  484. this->Centre( wxBOTH );
  485. // Connect Events
  486. this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( OBSBasicSettingsBase::OnClose ) );
  487. settingsList->Connect( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, wxListbookEventHandler( OBSBasicSettingsBase::PageChanged ), NULL, this );
  488. settingsList->Connect( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, wxListbookEventHandler( OBSBasicSettingsBase::PageChanging ), NULL, this );
  489. okButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicSettingsBase::OKClicked ), NULL, this );
  490. cancelButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicSettingsBase::CancelClicked ), NULL, this );
  491. applyButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicSettingsBase::ApplyClicked ), NULL, this );
  492. }
  493. OBSBasicSettingsBase::~OBSBasicSettingsBase()
  494. {
  495. // Disconnect Events
  496. this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( OBSBasicSettingsBase::OnClose ) );
  497. settingsList->Disconnect( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, wxListbookEventHandler( OBSBasicSettingsBase::PageChanged ), NULL, this );
  498. settingsList->Disconnect( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, wxListbookEventHandler( OBSBasicSettingsBase::PageChanging ), NULL, this );
  499. okButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicSettingsBase::OKClicked ), NULL, this );
  500. cancelButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicSettingsBase::CancelClicked ), NULL, this );
  501. applyButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( OBSBasicSettingsBase::ApplyClicked ), NULL, this );
  502. }
  503. ProjectChooserBase::ProjectChooserBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DialogSubclass( parent, id, title, pos, size, style )
  504. {
  505. this->SetSizeHints( wxDefaultSize, wxDefaultSize );
  506. wxBoxSizer* bSizer40;
  507. bSizer40 = new wxBoxSizer( wxVERTICAL );
  508. m_staticText22 = new wxStaticText( this, wxID_ANY, _("ProjectChooser.SelectType"), wxDefaultPosition, wxDefaultSize, 0 );
  509. m_staticText22->Wrap( -1 );
  510. bSizer40->Add( m_staticText22, 0, wxALL, 5 );
  511. wxBoxSizer* bSizer41;
  512. bSizer41 = new wxBoxSizer( wxVERTICAL );
  513. basicButton = new wxButton( this, wxID_ANY, _("ProjectChooser.Basic"), wxDefaultPosition, wxDefaultSize, 0 );
  514. bSizer41->Add( basicButton, 0, wxALL|wxEXPAND, 5 );
  515. studioButton = new wxButton( this, wxID_ANY, _("ProjectChooser.Studio"), wxDefaultPosition, wxDefaultSize, 0 );
  516. bSizer41->Add( studioButton, 0, wxALL|wxEXPAND, 5 );
  517. exitButton = new wxButton( this, wxID_ANY, _("MainWindow.Exit"), wxDefaultPosition, wxDefaultSize, 0 );
  518. bSizer41->Add( exitButton, 0, wxALL|wxEXPAND, 5 );
  519. bSizer40->Add( bSizer41, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
  520. this->SetSizer( bSizer40 );
  521. this->Layout();
  522. this->Centre( wxBOTH );
  523. // Connect Events
  524. this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( ProjectChooserBase::OnClose ) );
  525. basicButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ProjectChooserBase::BasicClicked ), NULL, this );
  526. studioButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ProjectChooserBase::StudioClicked ), NULL, this );
  527. exitButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ProjectChooserBase::ExitClicked ), NULL, this );
  528. }
  529. ProjectChooserBase::~ProjectChooserBase()
  530. {
  531. // Disconnect Events
  532. this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( ProjectChooserBase::OnClose ) );
  533. basicButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ProjectChooserBase::BasicClicked ), NULL, this );
  534. studioButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ProjectChooserBase::StudioClicked ), NULL, this );
  535. exitButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( ProjectChooserBase::ExitClicked ), NULL, this );
  536. }
  537. NameDialogBase::NameDialogBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DialogSubclass( parent, id, title, pos, size, style )
  538. {
  539. this->SetSizeHints( wxDefaultSize, wxDefaultSize );
  540. wxBoxSizer* bSizer44;
  541. bSizer44 = new wxBoxSizer( wxVERTICAL );
  542. questionText = new wxStaticText( this, wxID_ANY, _("Please enter a name (or is it text you want to enter?):"), wxDefaultPosition, wxDefaultSize, 0 );
  543. questionText->Wrap( -1 );
  544. bSizer44->Add( questionText, 0, wxTOP|wxRIGHT|wxLEFT, 10 );
  545. wxBoxSizer* bSizer46;
  546. bSizer46 = new wxBoxSizer( wxHORIZONTAL );
  547. bSizer46->Add( 20, 0, 0, 0, 5 );
  548. nameEdit = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
  549. bSizer46->Add( nameEdit, 1, wxALL|wxEXPAND, 5 );
  550. bSizer46->Add( 20, 0, 0, 0, 5 );
  551. bSizer44->Add( bSizer46, 0, wxEXPAND, 5 );
  552. wxBoxSizer* bSizer45;
  553. bSizer45 = new wxBoxSizer( wxHORIZONTAL );
  554. okButton = new wxButton( this, wxID_ANY, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
  555. okButton->SetDefault();
  556. bSizer45->Add( okButton, 0, wxALL, 5 );
  557. cancelButton = new wxButton( this, wxID_ANY, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
  558. bSizer45->Add( cancelButton, 0, wxALL, 5 );
  559. bSizer44->Add( bSizer45, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
  560. this->SetSizer( bSizer44 );
  561. this->Layout();
  562. this->Centre( wxBOTH );
  563. // Connect Events
  564. this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( NameDialogBase::OnClose ) );
  565. okButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( NameDialogBase::OKPressed ), NULL, this );
  566. cancelButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( NameDialogBase::CancelPressed ), NULL, this );
  567. }
  568. NameDialogBase::~NameDialogBase()
  569. {
  570. // Disconnect Events
  571. this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( NameDialogBase::OnClose ) );
  572. okButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( NameDialogBase::OKPressed ), NULL, this );
  573. cancelButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( NameDialogBase::CancelPressed ), NULL, this );
  574. }