49 lines
1.3 KiB
C++
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;
|
|
}
|