#include "main-window.hpp" #include "obs-manager.hpp" #include #include #include using namespace std; MainWindow::MainWindow(OBSManager *obs) : mBoxMain(Gtk::Orientation::ORIENTATION_VERTICAL, 2), mButtonPreview("Start Preview"), mButtonStart("Start Recording"), mButtonSettings("Settings"), mButtonExit("Exit"), mLabelVersion("Version: "), mSettingsWindow(obs), mPreviewWindow(obs) { set_title("New Recording"); set_default_size(1048, 720); set_border_width(10); mOBS = obs; mOBS->startRecording.connect(sigc::mem_fun(*this, &MainWindow::recordingStarted)); mOBS->stopRecording.connect(sigc::mem_fun(*this, &MainWindow::recordingStopped)); mButtonPreview.signal_clicked().connect( sigc::mem_fun(*this, &MainWindow::onPreviewClicked)); mButtonStart.signal_clicked().connect( sigc::mem_fun(*this, &MainWindow::onStartClicked)); mButtonSettings.signal_clicked().connect( sigc::mem_fun(*this, &MainWindow::onSettingsClicked)); mButtonExit.signal_clicked().connect( sigc::mem_fun(*this, &MainWindow::onExitClicked)); mBoxMain.add(mButtonPreview); mBoxMain.add(mButtonStart); mBoxMain.add(mButtonSettings); mBoxMain.add(mButtonExit); mBoxMain.add(mLabelVersion); add(mBoxMain); mBoxMain.show_all(); string version; version.append("OBS Version: "); version.append(obs->GetVersion()); mLabelVersion.set_text(version); mOBS->Initialize(); } MainWindow::~MainWindow() { mOBS->Cleanup(); } void MainWindow::onPreviewClicked() { mPreviewWindow.show(); } void MainWindow::onStartClicked() { if (mOBS->IsRecording()) mOBS->StopRecording(); else mOBS->StartRecording(); } void MainWindow::onSettingsClicked() { mSettingsWindow.set_transient_for(*this); mSettingsWindow.show(); } void MainWindow::onExitClicked() { mOBS->Cleanup(); Gtk::Main::quit(); } void MainWindow::recordingStarted() { mButtonStart.set_label("Stop Recording"); } void MainWindow::recordingStopped() { mButtonStart.set_label("Start Recording"); }