// // Created by selim on 02.02.2022. // #include "App.h" #include "../gui/MainWindow.h" static void activateApp(GtkApplication *gtkApp, void* data) { auto app = reinterpret_cast(data); int i = 0; auto win = std::make_shared(); app->setWindow(win); // GtkWidget *window = gtk_application_window_new (gtkApp); // GtkWidget *label = gtk_label_new ("Hello World"); // // gtk_window_set_title (GTK_WINDOW (window), "Hello"); // gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); // gtk_window_set_child (GTK_WINDOW (window), label); // gtk_window_present (GTK_WINDOW (window)); } App::App(): _app(nullptr), _window(nullptr) { _app = adw_application_new("pro.aliencat.aliencat", G_APPLICATION_FLAGS_NONE); g_signal_connect_data(_app, "activate", G_CALLBACK(activateApp), this, nullptr, G_CONNECT_AFTER); } App::~App() { glib_autoptr_cleanup_AdwApplication(&_app); } int App::run(int argc, char **argv) { return g_application_run(G_APPLICATION(_app), argc, argv); } void App::setWindow(std::shared_ptr window) { gtk_application_add_window(GTK_APPLICATION(_app), window->gobj()); if(_window) { _window->hide(); gtk_application_remove_window(GTK_APPLICATION(_app), _window->gobj()); } window->show(); _window = window; }