OBSWindows.cpp 39 KB

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