You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.1 KiB

3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
  1. #include "main-window.hpp"
  2. #include "obs-manager.hpp"
  3. #include <iostream>
  4. #include <string>
  5. #include <gdk/gdkx.h>
  6. using namespace std;
  7. MainWindow::MainWindow(OBSManager *obs)
  8. : mBoxMain(Gtk::Orientation::ORIENTATION_VERTICAL, 2),
  9. mButtonPreview("Start Preview"),
  10. mButtonStart("Start Recording"),
  11. mButtonSettings("Settings"),
  12. mButtonExit("Exit"),
  13. mLabelVersion("Version: "),
  14. mSettingsWindow(obs),
  15. mPreviewWindow(obs)
  16. {
  17. set_title("New Recording");
  18. set_default_size(1048, 720);
  19. set_border_width(10);
  20. mOBS = obs;
  21. mOBS->startRecording.connect(sigc::mem_fun(*this, &MainWindow::recordingStarted));
  22. mOBS->stopRecording.connect(sigc::mem_fun(*this, &MainWindow::recordingStopped));
  23. mButtonPreview.signal_clicked().connect(
  24. sigc::mem_fun(*this, &MainWindow::onPreviewClicked));
  25. mButtonStart.signal_clicked().connect(
  26. sigc::mem_fun(*this, &MainWindow::onStartClicked));
  27. mButtonSettings.signal_clicked().connect(
  28. sigc::mem_fun(*this, &MainWindow::onSettingsClicked));
  29. mButtonExit.signal_clicked().connect(
  30. sigc::mem_fun(*this, &MainWindow::onExitClicked));
  31. mBoxMain.add(mButtonPreview);
  32. mBoxMain.add(mButtonStart);
  33. mBoxMain.add(mButtonSettings);
  34. mBoxMain.add(mButtonExit);
  35. mBoxMain.add(mLabelVersion);
  36. add(mBoxMain);
  37. mBoxMain.show_all();
  38. string version;
  39. version.append("OBS Version: ");
  40. version.append(obs->GetVersion());
  41. mLabelVersion.set_text(version);
  42. mOBS->Initialize();
  43. }
  44. MainWindow::~MainWindow()
  45. {
  46. mOBS->Cleanup();
  47. }
  48. void MainWindow::onPreviewClicked()
  49. {
  50. mPreviewWindow.show();
  51. }
  52. void MainWindow::onStartClicked()
  53. {
  54. if (mOBS->IsRecording())
  55. mOBS->StopRecording();
  56. else
  57. mOBS->StartRecording();
  58. }
  59. void MainWindow::onSettingsClicked()
  60. {
  61. mSettingsWindow.set_transient_for(*this);
  62. mSettingsWindow.show();
  63. }
  64. void MainWindow::onExitClicked()
  65. {
  66. mOBS->Cleanup();
  67. Gtk::Main::quit();
  68. }
  69. void MainWindow::recordingStarted()
  70. {
  71. mButtonStart.set_label("Stop Recording");
  72. }
  73. void MainWindow::recordingStopped()
  74. {
  75. mButtonStart.set_label("Start Recording");
  76. }