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.
|
|
#include "main-window.hpp"
#include "obs-manager.hpp"
#include <iostream>
#include <string>
#include <gdk/gdkx.h>
using namespace std;
MainWindow::MainWindow(Glib::RefPtr<Gtk::Application> app, 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); mApp = app; mOBS = obs; mOBS->sigStartPreview.connect(sigc::mem_fun(*this, &MainWindow::onPreviewStarted)); mOBS->sigStartRecording.connect(sigc::mem_fun(*this, &MainWindow::onRecordingStarted)); mOBS->sigStopRecording.connect(sigc::mem_fun(*this, &MainWindow::onRecordingStopped)); 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)); mButtonStart.set_sensitive(false); 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); Gdk::Rectangle rect; auto screen = get_screen(); auto monitor = screen->get_monitor_at_window(screen->get_active_window()); screen->get_monitor_geometry(monitor, rect); mOBS->Initialize(rect); }
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->sigCleanup.connect(sigc::mem_fun(*this, &MainWindow::onCleanupDone)); mOBS->Cleanup(); }
void MainWindow::onCleanupDone() { //Gtk::Main::quit();
mApp->quit(); }
void MainWindow::onPreviewStarted() { mButtonStart.set_sensitive(true); }
void MainWindow::onRecordingStarted() { mButtonStart.set_label("Stop Recording"); }
void MainWindow::onRecordingStopped() { mButtonStart.set_label("Start Recording"); }
|