AutoCatGnome/app/App.cpp
2022-02-23 15:14:13 +03:00

49 lines
1.3 KiB
C++

//
// 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<App*>(data);
int i = 0;
auto win = std::make_shared<MainWindow>();
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<Gtk::Window> 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;
}