// // 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(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& callback) { _signalActivate.connect(callback); } AdwApplication *Application::gobj() const { return _app; } void Application::addWindow(const std::shared_ptr& window) { _windows.push_back(window); gtk_application_add_window(GTK_APPLICATION(_app), GTK_WINDOW(window->gobj())); } void Application::removeWindow(Window* window) { std::remove_if(_windows.begin(), _windows.end(), [window](const auto& ptr) { return ptr.get() == window; }); gtk_application_remove_window(GTK_APPLICATION(_app), GTK_WINDOW(window->gobj())); } }