AutoCatGnome/gtkpp/Application.cpp

38 lines
994 B
C++

//
// Created by selim on 10.05.2022.
//
#include "Application.h"
#include "Window.h"
namespace gtkpp {
void activateCallback(GtkApplication* app, void *data) {
auto application = reinterpret_cast<Application*>(data);
application->_signalActivate.emit();
}
Application::Application(const std::string &id) {
_app = adw_application_new(id.c_str(), G_APPLICATION_FLAGS_NONE);
g_signal_connect(_app, "activate", G_CALLBACK(activateCallback), this);
}
int Application::run(int argc, char **argv) {
return g_application_run(G_APPLICATION(_app), argc, argv);
}
void Application::onActivate(const std::function<void()>& callback) {
_signalActivate.connect(callback);
}
AdwApplication *Application::gobj() const {
return _app;
}
void Application::addWindow(const std::shared_ptr<Window>& window) {
gtk_application_add_window(GTK_APPLICATION(_app), GTK_WINDOW(window->gobj()));
}
}