diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-13 23:07:15 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-13 23:08:27 +0200 |
| commit | 37e22df7fb942dbe6dbcc39ed161ee9336e8f0d9 (patch) | |
| tree | 89bd791aeae49fbb91acdfeca0e3e057cbe9f889 /app | |
| parent | 7fed739bece80b26e4f7bb75fab91f90ef3a44ea (diff) | |
| download | turns-37e22df7fb942dbe6dbcc39ed161ee9336e8f0d9.tar.xz turns-37e22df7fb942dbe6dbcc39ed161ee9336e8f0d9.zip | |
app: switch to Adw.Application
Diffstat (limited to 'app')
| -rw-r--r-- | app/include/turns/app/application.hpp | 16 | ||||
| -rw-r--r-- | app/src/application.cpp | 32 | ||||
| -rw-r--r-- | app/src/widgets/participant_list_row.cpp | 2 | ||||
| -rw-r--r-- | app/tests/windows/main.cpp | 2 |
4 files changed, 33 insertions, 19 deletions
diff --git a/app/include/turns/app/application.hpp b/app/include/turns/app/application.hpp index 4a29254..c74f340 100644 --- a/app/include/turns/app/application.hpp +++ b/app/include/turns/app/application.hpp @@ -7,22 +7,28 @@ #include <gtkmm/application.h> #include <gtkmm/applicationwindow.h> +#include <memory> + namespace turns::app { - struct application : Gtk::Application + struct application { - auto static create() -> Glib::RefPtr<application>; + auto static create() -> std::shared_ptr<application>; + + auto run(int argc, char * argv[]) -> int; private: application(); auto handle_action_quit() -> void; - auto on_activate() -> void override; - auto on_shutdown() -> void override; - auto on_startup() -> void override; + auto on_activate() -> void; + auto on_shutdown() -> void; + auto on_startup() -> void; + AdwApplication * m_self; + Glib::RefPtr<Gtk::Application> m_application; AdwApplicationWindow * m_main_window; }; diff --git a/app/src/application.cpp b/app/src/application.cpp index a998210..a120f40 100644 --- a/app/src/application.cpp +++ b/app/src/application.cpp @@ -4,6 +4,7 @@ #include <glibmm.h> #include <gtkmm/builder.h> +#include <gtkmm/init.h> #include <gtkmm/window.h> #include <sigc++/functors/functors.h> @@ -11,18 +12,30 @@ namespace turns::app { - auto application::create() -> Glib::RefPtr<application> + auto application::create() -> std::shared_ptr<application> { - return Glib::make_refptr_for_instance(new application{}); + Gtk::init_gtkmm_internals(); + return std::shared_ptr<application>{new application{}}; + } + + auto application::run(int argc, char * argv[]) -> int + { + return g_application_run(G_APPLICATION(m_self), argc, argv); } application::application() - : Gtk::Application{"ch.arknet.Turns"} { - auto builder = Gtk::Builder::create_from_resource("/turns/windows/main_window.ui"); + m_self = adw_application_new("ch.arknet.Turns", G_APPLICATION_DEFAULT_FLAGS); + m_application = Glib::wrap(GTK_APPLICATION(m_self)); + + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/main_window.ui"); auto main_window = Gtk::Builder::get_widget_derived<windows::main>(builder, "main_window"); m_main_window = ADW_APPLICATION_WINDOW(main_window->gobj()); + + m_application->signal_activate().connect(sigc::mem_fun(*this, &application::on_activate)); + m_application->signal_shutdown().connect(sigc::mem_fun(*this, &application::on_shutdown)); + m_application->signal_startup().connect(sigc::mem_fun(*this, &application::on_startup)); } auto application::handle_action_quit() -> void @@ -32,28 +45,23 @@ namespace turns::app auto application::on_activate() -> void { - Gtk::Application::on_activate(); - gtk_application_add_window(GTK_APPLICATION(gobj()), GTK_WINDOW(m_main_window)); + gtk_application_add_window(m_application->gobj(), GTK_WINDOW(m_main_window)); gtk_window_present(GTK_WINDOW(m_main_window)); } auto application::on_shutdown() -> void { - Gtk::Application::on_shutdown(); - gtk_window_close(GTK_WINDOW(m_main_window)); delete Glib::wrap(GTK_WINDOW(m_main_window)); } auto application::on_startup() -> void { - Gtk::Application::on_startup(); - auto style_manager = adw_style_manager_get_default(); adw_style_manager_set_color_scheme(style_manager, ADW_COLOR_SCHEME_PREFER_LIGHT); - add_action("quit", sigc::mem_fun(*this, &application::handle_action_quit)); - set_accel_for_action("app.quit", "<ctrl>q"); + m_application->add_action("quit", sigc::mem_fun(*this, &application::handle_action_quit)); + m_application->set_accel_for_action("app.quit", "<ctrl>q"); } } // namespace turns::app
\ No newline at end of file diff --git a/app/src/widgets/participant_list_row.cpp b/app/src/widgets/participant_list_row.cpp index 772495e..358a947 100644 --- a/app/src/widgets/participant_list_row.cpp +++ b/app/src/widgets/participant_list_row.cpp @@ -10,7 +10,7 @@ namespace turns::app::widgets namespace { auto constexpr static TYPE_NAME = "participant_list_row"; - auto constexpr static TEMPLATE = "/turns/widgets/participant_list_row.ui"; + auto constexpr static TEMPLATE = "/ch/arknet/Turns/widgets/participant_list_row.ui"; } // namespace participant_list_row::participant_list_row() diff --git a/app/tests/windows/main.cpp b/app/tests/windows/main.cpp index b6e1122..fa340be 100644 --- a/app/tests/windows/main.cpp +++ b/app/tests/windows/main.cpp @@ -25,7 +25,7 @@ namespace turns::app::windows::tests auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8"); setlocale(LC_ALL, locale); - auto builder = Gtk::Builder::create_from_resource("/turns/windows/main_window.ui"); + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/main_window.ui"); auto instance = Gtk::Builder::get_widget_derived<main>(builder, "main_window"); SECTION("construction via builder succeeds") |
