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.

115 lines
2.7 KiB

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
2 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
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
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
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 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(Glib::RefPtr<Gtk::Application> app, 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. mApp = app;
  21. mOBS = obs;
  22. mOBS->sigStartPreview.connect(sigc::mem_fun(*this, &MainWindow::onPreviewStarted));
  23. mOBS->sigStartRecording.connect(sigc::mem_fun(*this, &MainWindow::onRecordingStarted));
  24. mOBS->sigStopRecording.connect(sigc::mem_fun(*this, &MainWindow::onRecordingStopped));
  25. mButtonPreview.signal_clicked().connect(
  26. sigc::mem_fun(*this, &MainWindow::onPreviewClicked));
  27. mButtonStart.signal_clicked().connect(
  28. sigc::mem_fun(*this, &MainWindow::onStartClicked));
  29. mButtonSettings.signal_clicked().connect(
  30. sigc::mem_fun(*this, &MainWindow::onSettingsClicked));
  31. mButtonExit.signal_clicked().connect(
  32. sigc::mem_fun(*this, &MainWindow::onExitClicked));
  33. mButtonStart.set_sensitive(false);
  34. mBoxMain.add(mButtonPreview);
  35. mBoxMain.add(mButtonStart);
  36. mBoxMain.add(mButtonSettings);
  37. mBoxMain.add(mButtonExit);
  38. mBoxMain.add(mLabelVersion);
  39. add(mBoxMain);
  40. mBoxMain.show_all();
  41. string version;
  42. version.append("OBS Version: ");
  43. version.append(obs->GetVersion());
  44. mLabelVersion.set_text(version);
  45. Gdk::Rectangle rect;
  46. auto screen = get_screen();
  47. auto monitor = screen->get_monitor_at_window(screen->get_active_window());
  48. screen->get_monitor_geometry(monitor, rect);
  49. mOBS->Initialize(rect);
  50. }
  51. MainWindow::~MainWindow()
  52. {
  53. mOBS->Cleanup();
  54. }
  55. void MainWindow::onPreviewClicked()
  56. {
  57. mPreviewWindow.show();
  58. }
  59. void MainWindow::onStartClicked()
  60. {
  61. if (mOBS->IsRecording())
  62. mOBS->StopRecording();
  63. else
  64. mOBS->StartRecording();
  65. }
  66. void MainWindow::onSettingsClicked()
  67. {
  68. mSettingsWindow.set_transient_for(*this);
  69. mSettingsWindow.show();
  70. }
  71. void MainWindow::onExitClicked()
  72. {
  73. mOBS->sigCleanup.connect(sigc::mem_fun(*this, &MainWindow::onCleanupDone));
  74. mOBS->Cleanup();
  75. }
  76. void MainWindow::onCleanupDone()
  77. {
  78. //Gtk::Main::quit();
  79. mApp->quit();
  80. }
  81. void MainWindow::onPreviewStarted()
  82. {
  83. mButtonStart.set_sensitive(true);
  84. }
  85. void MainWindow::onRecordingStarted()
  86. {
  87. mButtonStart.set_label("Stop Recording");
  88. }
  89. void MainWindow::onRecordingStopped()
  90. {
  91. mButtonStart.set_label("Start Recording");
  92. }