summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/CMakeLists.txt6
-rw-r--r--app/include/turns/app/application.hpp37
-rw-r--r--app/src/application.cpp73
-rw-r--r--app/src/main.cpp38
4 files changed, 37 insertions, 117 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 62bfa82..8443eb9 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -1,18 +1,14 @@
add_executable("app"
- "src/application.cpp"
"src/main.cpp"
)
-target_include_directories("app" PRIVATE
- "include"
-)
-
target_link_libraries("app" PRIVATE
"$<$<AND:$<CXX_COMPILER_ID:GNU,Clang>,$<CONFIG:Debug>>:gcov>"
"PkgConfig::adwaita"
"PkgConfig::gtkmm"
+ "turns::adw"
"turns::core"
"turns::lang"
diff --git a/app/include/turns/app/application.hpp b/app/include/turns/app/application.hpp
deleted file mode 100644
index ce4ef92..0000000
--- a/app/include/turns/app/application.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef TURNS_APP_APPLICATION_HPP
-#define TURNS_APP_APPLICATION_HPP
-
-#include "turns/ui/windows/fwd.hpp"
-
-#include <glibmm/refptr.h>
-
-#include <gtkmm/application.h>
-
-#include <adwaita.h>
-
-namespace turns::app
-{
-
- struct 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;
- auto on_shutdown() -> void;
- auto on_startup() -> void;
-
- AdwApplication * m_adw;
- Glib::RefPtr<Gtk::Application> m_application;
- ui::windows::tracker * m_tracker;
- };
-
-} // namespace turns::app
-
-#endif \ No newline at end of file
diff --git a/app/src/application.cpp b/app/src/application.cpp
deleted file mode 100644
index 083cf9b..0000000
--- a/app/src/application.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "turns/app/application.hpp"
-
-#include "turns/core/init.hpp"
-#include "turns/ui/init.hpp"
-#include "turns/ui/windows/tracker.hpp"
-
-#include <sigc++/functors/mem_fun.h>
-
-#include <gtkmm/application.h>
-#include <gtkmm/builder.h>
-#include <gtkmm/init.h>
-
-namespace turns::app
-{
-
- auto application::create() -> std::shared_ptr<application>
- {
- Gtk::init_gtkmm_internals();
- adw_init();
- core::register_types();
- ui::register_types();
- return std::shared_ptr<application>{new application{}};
- }
-
- auto application::run(int argc, char * argv[]) -> int
- {
- return g_application_run(G_APPLICATION(m_adw), argc, argv);
- }
-
- application::application()
- {
- m_adw = adw_application_new("ch.arknet.Turns", G_APPLICATION_DEFAULT_FLAGS);
- m_application = Glib::wrap(GTK_APPLICATION(m_adw));
-
- 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
- {
- m_tracker->close();
- }
-
- auto application::on_activate() -> void
- {
- auto builder = Gtk::Builder::create_from_resource("/windows/tracker.ui");
- m_tracker = Gtk::Builder::get_widget_derived<ui::windows::tracker>(builder, "tracker");
-
- m_application->add_window(*m_tracker);
- m_tracker->present();
- }
-
- auto application::on_shutdown() -> void
- {
- m_tracker->close();
- delete m_tracker;
- }
-
- auto application::on_startup() -> void
- {
- auto style_manager = adw_style_manager_get_default();
- adw_style_manager_set_color_scheme(style_manager, ADW_COLOR_SCHEME_PREFER_LIGHT);
-
- m_application->add_action("quit", sigc::mem_fun(*this, &application::handle_action_quit));
- m_application->set_accel_for_action("app.quit", "<Primary>q");
- m_application->set_accel_for_action("win.clear", "<Primary>x");
- m_application->set_accel_for_action("win.next", "<Primary>space");
- m_application->set_accel_for_action("win.previous", "<Primary>BackSpace");
- m_application->set_accel_for_action("win.add_participant", "<Primary>a");
- }
-
-} // namespace turns::app \ No newline at end of file
diff --git a/app/src/main.cpp b/app/src/main.cpp
index 9ec90d2..119022f 100644
--- a/app/src/main.cpp
+++ b/app/src/main.cpp
@@ -1,7 +1,13 @@
-#include "turns/app/application.hpp"
+#include "turns/adw/application.hpp"
+#include "turns/adw/wrap_init.hpp"
+#include "turns/core/init.hpp"
+#include "turns/ui/init.hpp"
+#include "turns/ui/windows/tracker.hpp"
#include <glibmm/i18n.h>
+#include <gtkmm/builder.h>
+
auto main(int argc, char * argv[]) -> int
{
setlocale(LC_ALL, "");
@@ -9,6 +15,34 @@ auto main(int argc, char * argv[]) -> int
bind_textdomain_codeset("turns", "UTF-8");
textdomain("turns");
- auto app = turns::app::application::create();
+ auto app = turns::adw::Application::create("ch.arknet.Turns");
+ auto builder = Gtk::Builder::create_from_resource("/windows/tracker.ui");
+ auto window = Gtk::Builder::get_widget_derived<turns::ui::windows::tracker>(builder, "tracker");
+
+ app->signal_startup().connect([app] {
+ turns::core::register_types();
+ turns::ui::register_types();
+
+ auto style_manager = adw_style_manager_get_default();
+ adw_style_manager_set_color_scheme(style_manager, ADW_COLOR_SCHEME_PREFER_LIGHT);
+
+ app->add_action("quit", sigc::mem_fun(*app, &turns::adw::Application::quit));
+ app->set_accel_for_action("app.quit", "<Primary>q");
+ app->set_accel_for_action("win.clear", "<Primary>x");
+ app->set_accel_for_action("win.next", "<Primary>space");
+ app->set_accel_for_action("win.previous", "<Primary>BackSpace");
+ app->set_accel_for_action("win.add_participant", "<Primary>a");
+ });
+
+ app->signal_shutdown().connect([window] {
+ window->close();
+ delete window;
+ });
+
+ app->signal_activate().connect([app, window] {
+ app->add_window(*window);
+ window->present();
+ });
+
return app->run(argc, argv);
} \ No newline at end of file