From 1a83168d5c7269bd91043d79169898ca6893d88a Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 16 Jul 2024 16:20:47 +0200 Subject: app: rename main window to tracker --- app/CMakeLists.txt | 6 +-- app/include/turns/app/application.hpp | 4 +- app/include/turns/app/windows/main.hpp | 53 -------------------- app/include/turns/app/windows/tracker.hpp | 53 ++++++++++++++++++++ app/src/application.cpp | 16 +++--- app/src/main.cpp | 15 ++++++ app/src/turns.cpp | 15 ------ app/src/windows/main.cpp | 83 ------------------------------- app/src/windows/tracker.cpp | 83 +++++++++++++++++++++++++++++++ app/tests/windows/main.cpp | 76 ---------------------------- app/tests/windows/tracker.cpp | 76 ++++++++++++++++++++++++++++ res/CMakeLists.txt | 2 +- res/tests/windows.cpp | 4 +- res/ui.cmb | 4 +- 14 files changed, 245 insertions(+), 245 deletions(-) delete mode 100644 app/include/turns/app/windows/main.hpp create mode 100644 app/include/turns/app/windows/tracker.hpp create mode 100644 app/src/main.cpp delete mode 100644 app/src/turns.cpp delete mode 100644 app/src/windows/main.cpp create mode 100644 app/src/windows/tracker.cpp delete mode 100644 app/tests/windows/main.cpp create mode 100644 app/tests/windows/tracker.cpp diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index eb426ca..0514383 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -4,8 +4,8 @@ add_library("app" "src/application.cpp" "src/widgets/participant_row.cpp" "src/widgets/turn_order_view.cpp" - "src/windows/main.cpp" "src/windows/participant_editor.cpp" + "src/windows/tracker.cpp" ) add_library("turns::app" ALIAS "app") @@ -41,7 +41,7 @@ target_link_libraries("app" PUBLIC # Application add_executable("exe" - "src/turns.cpp" + "src/main.cpp" ) target_link_libraries("exe" PRIVATE @@ -69,8 +69,8 @@ install(FILES add_executable("app-tests" "tests/widgets/participant_row.cpp" - "tests/windows/main.cpp" "tests/windows/participant_editor.cpp" + "tests/windows/tracker.cpp" ) target_link_libraries("app-tests" PRIVATE diff --git a/app/include/turns/app/application.hpp b/app/include/turns/app/application.hpp index 6506dd7..680c3af 100644 --- a/app/include/turns/app/application.hpp +++ b/app/include/turns/app/application.hpp @@ -1,7 +1,7 @@ #ifndef TURNS_APP_APPLICATION_HPP #define TURNS_APP_APPLICATION_HPP -#include "turns/app/windows/main.hpp" +#include "turns/app/windows/tracker.hpp" #include @@ -31,7 +31,7 @@ namespace turns::app AdwApplication * m_adw; Glib::RefPtr m_application; - windows::main * m_main; + windows::tracker * m_tracker; }; } // namespace turns::app diff --git a/app/include/turns/app/windows/main.hpp b/app/include/turns/app/windows/main.hpp deleted file mode 100644 index 29bad85..0000000 --- a/app/include/turns/app/windows/main.hpp +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef TURNS_APP_WINDOWS_MAIN_WINDOW_HPP -#define TURNS_APP_WINDOWS_MAIN_WINDOW_HPP - -#include "turns/domain/turn_order.hpp" -#include "turns/app/widgets/turn_order_view.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace turns::app::windows -{ - - struct main : Gtk::ApplicationWindow - { - main(BaseObjectType * base, Glib::RefPtr const builder); - - private: - auto handle_add_participant() -> void; - auto handle_clear() -> void; - auto handle_edit_participant(Glib::VariantBase param) -> void; - - AdwApplicationWindow * m_adw; - Gtk::Revealer * m_controls; - Gtk::Widget * m_empty; - Gtk::Stack * m_stack; - AdwWindowTitle * m_title; - widgets::turn_order_view * m_turn_order; - - Glib::PropertyProxy m_subtitle; - - Glib::RefPtr m_clear_action_enabled{}; - Glib::RefPtr m_controls_revealed{}; - Glib::RefPtr m_visible_child_widget{}; - Glib::RefPtr m_subtitle_text{}; - - Glib::RefPtr m_clear_action{}; - }; - -} // namespace turns::app::windows - -#endif \ No newline at end of file diff --git a/app/include/turns/app/windows/tracker.hpp b/app/include/turns/app/windows/tracker.hpp new file mode 100644 index 0000000..ed7260e --- /dev/null +++ b/app/include/turns/app/windows/tracker.hpp @@ -0,0 +1,53 @@ +#ifndef TURNS_APP_WINDOWS_TRACKER_HPP +#define TURNS_APP_WINDOWS_TRACKER_HPP + +#include "turns/domain/turn_order.hpp" +#include "turns/app/widgets/turn_order_view.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace turns::app::windows +{ + + struct tracker : Gtk::ApplicationWindow + { + tracker(BaseObjectType * base, Glib::RefPtr const builder); + + private: + auto handle_add_participant() -> void; + auto handle_clear() -> void; + auto handle_edit_participant(Glib::VariantBase param) -> void; + + AdwApplicationWindow * m_adw; + Gtk::Revealer * m_controls; + Gtk::Widget * m_empty; + Gtk::Stack * m_stack; + AdwWindowTitle * m_title; + widgets::turn_order_view * m_turn_order; + + Glib::PropertyProxy m_subtitle; + + Glib::RefPtr m_clear_action_enabled{}; + Glib::RefPtr m_controls_revealed{}; + Glib::RefPtr m_visible_child_widget{}; + Glib::RefPtr m_subtitle_text{}; + + Glib::RefPtr m_clear_action{}; + }; + +} // namespace turns::app::windows + +#endif \ No newline at end of file diff --git a/app/src/application.cpp b/app/src/application.cpp index 35dcfdb..efa1ce0 100644 --- a/app/src/application.cpp +++ b/app/src/application.cpp @@ -1,7 +1,7 @@ #include "turns/app/application.hpp" #include "turns/app/widgets/turn_order_view.hpp" -#include "turns/app/windows/main.hpp" +#include "turns/app/windows/tracker.hpp" #include #include @@ -37,22 +37,22 @@ namespace turns::app auto application::handle_action_quit() -> void { - m_main->close(); + m_tracker->close(); } auto application::on_activate() -> void { - auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/main.ui"); - m_main = Gtk::Builder::get_widget_derived(builder, "main"); + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/tracker.ui"); + m_tracker = Gtk::Builder::get_widget_derived(builder, "tracker"); - m_application->add_window(*m_main); - m_main->present(); + m_application->add_window(*m_tracker); + m_tracker->present(); } auto application::on_shutdown() -> void { - m_main->close(); - delete m_main; + m_tracker->close(); + delete m_tracker; } auto application::on_startup() -> void diff --git a/app/src/main.cpp b/app/src/main.cpp new file mode 100644 index 0000000..d81f34f --- /dev/null +++ b/app/src/main.cpp @@ -0,0 +1,15 @@ +#include "turns/app/application.hpp" + +#include +#include + +auto main(int argc, char * argv[]) -> int +{ + setlocale(LC_ALL, ""); + bindtextdomain("turns", LOCALEDIR); + bind_textdomain_codeset("turns", "UTF-8"); + textdomain("turns"); + + auto app = turns::app::application::create(); + return app->run(argc, argv); +} \ No newline at end of file diff --git a/app/src/turns.cpp b/app/src/turns.cpp deleted file mode 100644 index d81f34f..0000000 --- a/app/src/turns.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "turns/app/application.hpp" - -#include -#include - -auto main(int argc, char * argv[]) -> int -{ - setlocale(LC_ALL, ""); - bindtextdomain("turns", LOCALEDIR); - bind_textdomain_codeset("turns", "UTF-8"); - textdomain("turns"); - - auto app = turns::app::application::create(); - return app->run(argc, argv); -} \ No newline at end of file diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp deleted file mode 100644 index a532dc0..0000000 --- a/app/src/windows/main.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "turns/app/windows/main.hpp" - -#include "turns/app/widgets/participant_row.hpp" -#include "turns/app/windows/participant_editor.hpp" -#include "turns/lang/messages.hpp" - -#include -#include - -#include -#include -#include - -namespace turns::app::windows -{ - - namespace - { - auto editor_for(Glib::RefPtr participant) - { - auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/participant_editor.ui"); - return std::pair{builder, Gtk::Builder::get_widget_derived(builder, "participant_editor", participant)}; - } - } // namespace - - main::main(BaseObjectType * base, Glib::RefPtr const builder) - : Gtk::ApplicationWindow{base} - , m_adw{ADW_APPLICATION_WINDOW(gobj())} - , m_controls{builder->get_widget("controls")} - , m_empty(builder->get_widget("empty")) - , m_stack{builder->get_widget("stack")} - , m_title(ADW_WINDOW_TITLE(builder->get_widget("title")->gobj())) - , m_turn_order{Gtk::make_managed()} - , m_subtitle{Glib::wrap(GTK_WIDGET(m_title)), "subtitle"} - , m_clear_action{add_action("clear", sigc::mem_fun(*m_turn_order, &widgets::turn_order_view::clear))} - { - m_stack->add(*m_turn_order); - - // clang-format off - m_clear_action_enabled = Glib::Binding::bind_property(m_turn_order->property_n_items(), - m_clear_action->property_enabled(), - Glib::Binding::Flags::SYNC_CREATE); - - m_controls_revealed = Glib::Binding::bind_property(m_turn_order->property_n_items(), - m_controls->property_reveal_child(), - Glib::Binding::Flags::SYNC_CREATE); - - m_visible_child_widget = Glib::Binding::bind_property(m_turn_order->property_n_items(), - m_stack->property_visible_child(), - Glib::Binding::Flags::SYNC_CREATE, - [this](auto count) { return count ? m_turn_order : m_empty; }); - - m_subtitle_text = Glib::Binding::bind_property(m_turn_order->property_n_items(), - m_subtitle, - Glib::Binding::Flags::SYNC_CREATE, - [](auto count) { return count ? "" : _(lang::no_active_turn_order); }); - // clang-format on - - add_action("add_participant", sigc::mem_fun(*this, &main::handle_add_participant)); - add_action_with_parameter("delete", Glib::VARIANT_TYPE_INT32, [this](auto param) { - auto index = Glib::VariantBase::cast_dynamic>(param); - m_turn_order->remove(index.get()); - }); - add_action_with_parameter("edit", Glib::VARIANT_TYPE_INT32, sigc::mem_fun(*this, &main::handle_edit_participant)); - } - - auto main::handle_add_participant() -> void - { - auto [lifeline, dialog] = editor_for(nullptr); - dialog->present(this); - dialog->signal_finished().connect(sigc::mem_fun(*m_turn_order, &widgets::turn_order_view::append)); - } - - auto main::handle_edit_participant(Glib::VariantBase param) -> void - { - static_cast(param); - auto index = Glib::VariantBase::cast_dynamic>(param); - auto participant = m_turn_order->get(index.get()); - auto [lifeline, dialog] = editor_for(participant); - dialog->present(this); - } - -} // namespace turns::app::windows diff --git a/app/src/windows/tracker.cpp b/app/src/windows/tracker.cpp new file mode 100644 index 0000000..f57e9eb --- /dev/null +++ b/app/src/windows/tracker.cpp @@ -0,0 +1,83 @@ +#include "turns/app/windows/tracker.hpp" + +#include "turns/app/widgets/participant_row.hpp" +#include "turns/app/windows/participant_editor.hpp" +#include "turns/lang/messages.hpp" + +#include +#include + +#include +#include +#include + +namespace turns::app::windows +{ + + namespace + { + auto editor_for(Glib::RefPtr participant) + { + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/participant_editor.ui"); + return std::pair{builder, Gtk::Builder::get_widget_derived(builder, "participant_editor", participant)}; + } + } // namespace + + tracker::tracker(BaseObjectType * base, Glib::RefPtr const builder) + : Gtk::ApplicationWindow{base} + , m_adw{ADW_APPLICATION_WINDOW(gobj())} + , m_controls{builder->get_widget("controls")} + , m_empty(builder->get_widget("empty")) + , m_stack{builder->get_widget("stack")} + , m_title(ADW_WINDOW_TITLE(builder->get_widget("title")->gobj())) + , m_turn_order{Gtk::make_managed()} + , m_subtitle{Glib::wrap(GTK_WIDGET(m_title)), "subtitle"} + , m_clear_action{add_action("clear", sigc::mem_fun(*m_turn_order, &widgets::turn_order_view::clear))} + { + m_stack->add(*m_turn_order); + + // clang-format off + m_clear_action_enabled = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_clear_action->property_enabled(), + Glib::Binding::Flags::SYNC_CREATE); + + m_controls_revealed = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_controls->property_reveal_child(), + Glib::Binding::Flags::SYNC_CREATE); + + m_visible_child_widget = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_stack->property_visible_child(), + Glib::Binding::Flags::SYNC_CREATE, + [this](auto count) { return count ? m_turn_order : m_empty; }); + + m_subtitle_text = Glib::Binding::bind_property(m_turn_order->property_n_items(), + m_subtitle, + Glib::Binding::Flags::SYNC_CREATE, + [](auto count) { return count ? "" : _(lang::no_active_turn_order); }); + // clang-format on + + add_action("add_participant", sigc::mem_fun(*this, &tracker::handle_add_participant)); + add_action_with_parameter("delete", Glib::VARIANT_TYPE_INT32, [this](auto param) { + auto index = Glib::VariantBase::cast_dynamic>(param); + m_turn_order->remove(index.get()); + }); + add_action_with_parameter("edit", Glib::VARIANT_TYPE_INT32, sigc::mem_fun(*this, &tracker::handle_edit_participant)); + } + + auto tracker::handle_add_participant() -> void + { + auto [lifeline, dialog] = editor_for(nullptr); + dialog->present(this); + dialog->signal_finished().connect(sigc::mem_fun(*m_turn_order, &widgets::turn_order_view::append)); + } + + auto tracker::handle_edit_participant(Glib::VariantBase param) -> void + { + static_cast(param); + auto index = Glib::VariantBase::cast_dynamic>(param); + auto participant = m_turn_order->get(index.get()); + auto [lifeline, dialog] = editor_for(participant); + dialog->present(this); + } + +} // namespace turns::app::windows diff --git a/app/tests/windows/main.cpp b/app/tests/windows/main.cpp deleted file mode 100644 index a04a130..0000000 --- a/app/tests/windows/main.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include "turns/app/windows/main.hpp" - -#include "turns/lang/messages.hpp" - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace turns::app::windows::tests -{ - - TEST_CASE("A freshly constructed main window", "[windows]") - { - auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8"); - setlocale(LC_ALL, locale); - - auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/main.ui"); - auto instance = Gtk::Builder::get_widget_derived
(builder, "main"); - - SECTION("was successfully constructed") - { - REQUIRE(instance); - } - - SECTION("has a non-empty subtitle") - { - auto widget = builder->get_widget("title"); - auto adw = ADW_WINDOW_TITLE(widget->gobj()); - REQUIRE(adw_window_title_get_subtitle(adw)); - } - - SECTION("has its subtitle set according to the active language") - { - auto widget = builder->get_widget("title"); - auto adw = ADW_WINDOW_TITLE(widget->gobj()); - REQUIRE(adw_window_title_get_subtitle(adw) == Glib::ustring{_(lang::no_active_turn_order)}); - } - - SECTION("has a non-empty title") - { - auto widget = builder->get_widget("title"); - auto adw = ADW_WINDOW_TITLE(widget->gobj()); - REQUIRE(adw_window_title_get_title(adw)); - } - - SECTION("has its title set according to the active language") - { - auto widget = builder->get_widget("title"); - auto adw = ADW_WINDOW_TITLE(widget->gobj()); - REQUIRE(adw_window_title_get_title(adw) == Glib::ustring{_(lang::turns)}); - } - - SECTION("has its add_participant button's tooltip set according to the active language") - { - auto widget = builder->get_widget("add_participant"); - REQUIRE(widget->get_tooltip_text() == Glib::ustring{_(lang::add_participant)}); - } - - SECTION("as its open_main_menu button's tooltip set according to the active language") - { - auto widget = builder->get_widget("open_main_menu"); - REQUIRE(widget->get_tooltip_text() == Glib::ustring{_(lang::main_menu)}); - } - } - -} // namespace turns::app::windows::tests \ No newline at end of file diff --git a/app/tests/windows/tracker.cpp b/app/tests/windows/tracker.cpp new file mode 100644 index 0000000..c522bd4 --- /dev/null +++ b/app/tests/windows/tracker.cpp @@ -0,0 +1,76 @@ +#include "turns/app/windows/tracker.hpp" + +#include "turns/lang/messages.hpp" + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace turns::app::windows::tests +{ + + TEST_CASE("A freshly constructed tracker window", "[windows]") + { + auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8"); + setlocale(LC_ALL, locale); + + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/tracker.ui"); + auto instance = Gtk::Builder::get_widget_derived(builder, "tracker"); + + SECTION("was successfully constructed") + { + REQUIRE(instance); + } + + SECTION("has a non-empty subtitle") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_subtitle(adw)); + } + + SECTION("has its subtitle set according to the active language") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_subtitle(adw) == Glib::ustring{_(lang::no_active_turn_order)}); + } + + SECTION("has a non-empty title") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_title(adw)); + } + + SECTION("has its title set according to the active language") + { + auto widget = builder->get_widget("title"); + auto adw = ADW_WINDOW_TITLE(widget->gobj()); + REQUIRE(adw_window_title_get_title(adw) == Glib::ustring{_(lang::turns)}); + } + + SECTION("has its add_participant button's tooltip set according to the active language") + { + auto widget = builder->get_widget("add_participant"); + REQUIRE(widget->get_tooltip_text() == Glib::ustring{_(lang::add_participant)}); + } + + SECTION("as its open_main_menu button's tooltip set according to the active language") + { + auto widget = builder->get_widget("open_main_menu"); + REQUIRE(widget->get_tooltip_text() == Glib::ustring{_(lang::main_menu)}); + } + } + +} // namespace turns::app::windows::tests \ No newline at end of file diff --git a/res/CMakeLists.txt b/res/CMakeLists.txt index 325c584..a825e4c 100644 --- a/res/CMakeLists.txt +++ b/res/CMakeLists.txt @@ -5,8 +5,8 @@ add_library("res") set(UI_FILES "widgets/participant_row.ui" "widgets/turn_order_view.ui" - "windows/main.ui" "windows/participant_editor.ui" + "windows/tracker.ui" ) export_cambalache_files("ui.cmb" UI_FILES ${UI_FILES}) diff --git a/res/tests/windows.cpp b/res/tests/windows.cpp index a442824..75e21fb 100644 --- a/res/tests/windows.cpp +++ b/res/tests/windows.cpp @@ -2,9 +2,9 @@ #include -TEST_CASE("GResource for main") +TEST_CASE("GResource for tracker") { - auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/main.ui"); + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/tracker.ui"); SECTION("can create Gtk.Builder for the main window UI definition") { diff --git a/res/ui.cmb b/res/ui.cmb index 9343018..1bfae73 100644 --- a/res/ui.cmb +++ b/res/ui.cmb @@ -2,7 +2,7 @@ - (1,None,None,"windows/main.ui",None,None,None,None,None,None,None), + (1,None,None,"windows/tracker.ui",None,None,None,None,None,None,None), (2,None,None,"windows/participant_editor.ui",None,None,None,None,None,None,None), (3,1,None,"widgets/participant_row.ui",None,None,None,None,None,None,None), (4,1,None,"widgets/turn_order_view.ui",None,None,None,None,None,None,None) @@ -15,7 +15,7 @@ (3,"gtk","4.14",None) - (1,1,"AdwApplicationWindow","main",None,None,None,None,-1,None,None), + (1,1,"AdwApplicationWindow","tracker",None,None,None,None,-1,None,None), (1,2,"AdwToolbarView",None,1,None,None,None,-1,None,None), (1,3,"AdwHeaderBar","header",2,None,"top",None,-1,None,None), (1,6,"AdwWindowTitle","title",3,None,None,None,3,None,None), -- cgit v1.2.3