From 44d2614a260d2b029a79c59ee7fdd45e1958feb8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 16 Jul 2024 13:02:46 +0200 Subject: app: extract turn order view --- CMakeLists.txt | 2 +- app/CMakeLists.txt | 1 + app/include/turns/app/application.hpp | 2 + app/include/turns/app/widgets/participant_row.hpp | 5 +- app/include/turns/app/widgets/turn_order_view.hpp | 48 ++++++ app/include/turns/app/windows/main.hpp | 7 +- app/src/application.cpp | 14 +- app/src/widgets/participant_row.cpp | 20 +-- app/src/widgets/turn_order_view.cpp | 66 ++++++++ app/src/windows/main.cpp | 36 ++--- domain/src/turn_order.cpp | 4 +- res/CMakeLists.txt | 1 + res/ui.cmb | 187 ++++++++++++++++++++++ res/widgets/participant_row.ui | 21 +-- res/widgets/turn_order_view.ui | 24 +++ res/widgets/widgets.cmb | 83 ---------- res/windows/main.ui | 22 --- res/windows/windows.cmb | 129 --------------- 18 files changed, 371 insertions(+), 301 deletions(-) create mode 100644 app/include/turns/app/widgets/turn_order_view.hpp create mode 100644 app/src/widgets/turn_order_view.cpp create mode 100644 res/ui.cmb create mode 100644 res/widgets/turn_order_view.ui delete mode 100644 res/widgets/widgets.cmb delete mode 100644 res/windows/windows.cmb diff --git a/CMakeLists.txt b/CMakeLists.txt index 66fca94..76b9015 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,7 @@ check_ipo_supported(RESULT CAN_DO_IPO LANGUAGES CXX) set(CMAKE_CXX_STANDARD "23") set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${CAN_DO_IPO}) +# set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${CAN_DO_IPO}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib") diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 4f024a4..eb426ca 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -3,6 +3,7 @@ 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" ) diff --git a/app/include/turns/app/application.hpp b/app/include/turns/app/application.hpp index 81fe333..6506dd7 100644 --- a/app/include/turns/app/application.hpp +++ b/app/include/turns/app/application.hpp @@ -27,6 +27,8 @@ namespace turns::app auto on_shutdown() -> void; auto on_startup() -> void; + auto register_derived_widgets() -> void; + AdwApplication * m_adw; Glib::RefPtr m_application; windows::main * m_main; diff --git a/app/include/turns/app/widgets/participant_row.hpp b/app/include/turns/app/widgets/participant_row.hpp index a8f225f..79de1e9 100644 --- a/app/include/turns/app/widgets/participant_row.hpp +++ b/app/include/turns/app/widgets/participant_row.hpp @@ -28,9 +28,6 @@ namespace turns::app::widgets participant_row(Glib::RefPtr participant); - auto set_subtitle(Glib::ustring const & value) -> void; - auto set_title(Glib::ustring const & value) -> void; - private: auto handle_delete() -> void; auto handle_edit() -> void; @@ -41,7 +38,9 @@ namespace turns::app::widgets Gtk::Label * m_title; Gtk::ToggleButton * m_toggle_defeated; + Glib::RefPtr m_subtitle_label{}; Glib::RefPtr m_subtitle_visibility{}; + Glib::RefPtr m_title_label{}; Glib::RefPtr m_title_visibility{}; Glib::RefPtr m_toggle_defeated_icon{}; }; diff --git a/app/include/turns/app/widgets/turn_order_view.hpp b/app/include/turns/app/widgets/turn_order_view.hpp new file mode 100644 index 0000000..c55483a --- /dev/null +++ b/app/include/turns/app/widgets/turn_order_view.hpp @@ -0,0 +1,48 @@ +#ifndef TURNS_APP_WIDGETS_TURN_ORDER_VIEW_HPP +#define TURNS_APP_WIDGETS_TURN_ORDER_VIEW_HPP + +#include "turns/app/widgets/template_widget.hpp" +#include "turns/domain/turn_order.hpp" +#include "turns/domain/participant.hpp" +#include "turns/domain/disposition.hpp" + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace turns::app::widgets +{ + struct turn_order_view : template_widget + { + auto constexpr inline static children = std::array{ + "view", + }; + + turn_order_view(); + + auto append(Glib::ustring name, float priority, domain::disposition disposition) -> void; + auto clear() -> void; + auto get(std::size_t index) -> Glib::RefPtr; + auto remove(std::size_t index) -> void; + + + auto get_n_items() const noexcept -> unsigned int; + auto property_n_items() const -> Glib::PropertyProxy_ReadOnly; + + private: + auto handle_create_row(Glib::RefPtr const item) -> Gtk::Widget *; + + Glib::RefPtr m_model; + Gtk::ListBox * m_view; + + Glib::PropertyProxy_ReadOnly m_n_items; + }; +} // namespace turns::app::widgets + +#endif \ No newline at end of file diff --git a/app/include/turns/app/windows/main.hpp b/app/include/turns/app/windows/main.hpp index 694876e..5e13cf0 100644 --- a/app/include/turns/app/windows/main.hpp +++ b/app/include/turns/app/windows/main.hpp @@ -2,6 +2,7 @@ #define TURNS_APP_WINDOWS_MAIN_WINDOW_HPP #include "turns/domain/turn_order.hpp" +#include "turns/app/widgets/turn_order_view.hpp" #include #include @@ -25,19 +26,15 @@ namespace turns::app::windows main(BaseObjectType * base, Glib::RefPtr const builder); private: - auto handle_create_list_row(Glib::RefPtr const item) -> Gtk::Widget *; auto handle_add_participant() -> void; auto handle_clear() -> void; auto handle_edit_participant(Glib::VariantBase param) -> void; AdwApplicationWindow * m_adw; Gtk::Widget * m_empty; - Gtk::ListBox * m_participant_list; Gtk::Stack * m_stack; AdwWindowTitle * m_title; - Gtk::ScrolledWindow * m_turn_order; - - Glib::RefPtr m_participant_list_data; + widgets::turn_order_view * m_turn_order; Glib::PropertyProxy m_subtitle; diff --git a/app/src/application.cpp b/app/src/application.cpp index 1d38ea1..35dcfdb 100644 --- a/app/src/application.cpp +++ b/app/src/application.cpp @@ -1,5 +1,6 @@ #include "turns/app/application.hpp" +#include "turns/app/widgets/turn_order_view.hpp" #include "turns/app/windows/main.hpp" #include @@ -29,9 +30,6 @@ namespace turns::app m_adw = adw_application_new("ch.arknet.Turns", G_APPLICATION_DEFAULT_FLAGS); m_application = Glib::wrap(GTK_APPLICATION(m_adw)); - auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/main.ui"); - m_main = Gtk::Builder::get_widget_derived(builder, "main"); - 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)); @@ -44,6 +42,9 @@ namespace turns::app 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"); + m_application->add_window(*m_main); m_main->present(); } @@ -62,6 +63,13 @@ namespace turns::app m_application->add_action("quit", sigc::mem_fun(*this, &application::handle_action_quit)); m_application->set_accel_for_action("app.quit", "q"); m_application->set_accel_for_action("win.clear", "x"); + + register_derived_widgets(); + } + + auto application::register_derived_widgets() -> void + { + static_cast(widgets::turn_order_view{}); } } // namespace turns::app \ No newline at end of file diff --git a/app/src/widgets/participant_row.cpp b/app/src/widgets/participant_row.cpp index 9e0419a..75321e5 100644 --- a/app/src/widgets/participant_row.cpp +++ b/app/src/widgets/participant_row.cpp @@ -45,22 +45,14 @@ namespace turns::app::widgets if (participant) { - set_title(participant->get_name()); - auto priority = participant->get_priority(); - set_subtitle(std::vformat(_(lang::priority_number), std::make_format_args(priority))); - } - } - - auto participant_row::set_subtitle(Glib::ustring const & value) -> void - { - m_subtitle->property_label() = value; - } + m_title_label = Glib::Binding::bind_property(participant->property_name(), m_title->property_label(), Glib::Binding::Flags::SYNC_CREATE); - auto participant_row::set_title(Glib::ustring const & value) -> void - { - m_title->property_label() = value; + m_subtitle_label = Glib::Binding::bind_property(participant->property_priority(), + m_subtitle->property_label(), + Glib::Binding::Flags::SYNC_CREATE, + [](auto n) { return std::vformat(_(lang::priority_number), std::make_format_args(n)); }); + } } - auto participant_row::handle_delete() -> void { auto index = Glib::Variant::create(get_index()); diff --git a/app/src/widgets/turn_order_view.cpp b/app/src/widgets/turn_order_view.cpp new file mode 100644 index 0000000..9d49ad8 --- /dev/null +++ b/app/src/widgets/turn_order_view.cpp @@ -0,0 +1,66 @@ +#include "turns/app/widgets/turn_order_view.hpp" + +#include "turns/app/widgets/participant_row.hpp" +#include "turns/domain/participant.hpp" +#include "turns/lang/messages.hpp" + +#include + +#include + +namespace turns::app::widgets +{ + namespace + { + auto constexpr static TYPE_NAME = "turn_order_view"; + auto constexpr static TEMPLATE = "/ch/arknet/Turns/widgets/turn_order_view.ui"; + } // namespace + + turn_order_view::turn_order_view() + : Glib::ObjectBase(TYPE_NAME) + , template_widget{TEMPLATE} + , m_model{domain::turn_order::create()} + , m_view{get_widget("view")} + , m_n_items{m_model.get(), "n_items"} + { + m_view->bind_model(m_model, sigc::mem_fun(*this, &turn_order_view::handle_create_row)); + } + + auto turn_order_view::append(Glib::ustring name, float priority, domain::disposition disposition) -> void + { + auto participant = domain::participant::create(name, priority, disposition); + m_model->append(participant); + } + + auto turn_order_view::clear() -> void + { + m_model->remove_all(); + } + + auto turn_order_view::get(std::size_t index) -> Glib::RefPtr + { + return m_model->get_item(index); + } + + auto turn_order_view::remove(std::size_t index) -> void + { + m_model->remove(index); + } + + auto turn_order_view::get_n_items() const noexcept -> unsigned int + { + return m_n_items; + } + + auto turn_order_view::property_n_items() const -> Glib::PropertyProxy_ReadOnly + { + return m_n_items; + } + + auto turn_order_view::handle_create_row(Glib::RefPtr const item) -> Gtk::Widget * + { + auto participant = std::dynamic_pointer_cast(item); + return Gtk::make_managed(participant); + } + +} // namespace turns::app::widgets \ No newline at end of file diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp index 68d2c5f..04d7329 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -27,60 +27,50 @@ namespace turns::app::windows : Gtk::ApplicationWindow{base} , m_adw{ADW_APPLICATION_WINDOW(gobj())} , m_empty(builder->get_widget("empty")) - , m_participant_list{builder->get_widget("participant_list")} , m_stack{builder->get_widget("stack")} , m_title(ADW_WINDOW_TITLE(builder->get_widget("title")->gobj())) - , m_turn_order{builder->get_widget("turn_order")} - , m_participant_list_data{domain::turn_order::create()} + , m_turn_order{Gtk::make_managed()} , m_subtitle{Glib::wrap(GTK_WIDGET(m_title)), "subtitle"} - , m_clear_action{add_action("clear", sigc::mem_fun(*this, &main::handle_clear))} + , m_clear_action{add_action("clear", sigc::mem_fun(*m_turn_order, &widgets::turn_order_view::clear))} { - m_clear_action_enabled = Glib::Binding::bind_property(m_participant_list_data->property_n_items(), + 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_visible_child_widget = Glib::Binding::bind_property(m_participant_list_data->property_n_items(), + 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_participant_list_data->property_n_items(), + 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); }); - - m_participant_list->bind_model(m_participant_list_data, sigc::mem_fun(*this, &main::handle_create_list_row)); + // 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_participant_list_data->remove(index.get()); + 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_create_list_row(Glib::RefPtr const item) -> Gtk::Widget * - { - auto participant = std::dynamic_pointer_cast(item); - return Gtk::make_managed(participant); - } - auto main::handle_add_participant() -> void { auto [lifeline, dialog] = editor_for(nullptr); dialog->present(this); - dialog->signal_finished().connect([this](auto name, auto priority, auto disposition) { m_participant_list_data->append(name, priority, disposition); }); - } - - auto main::handle_clear() -> void - { - m_participant_list_data->remove_all(); + 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_participant_list_data->get_item(index.get()); + auto participant = m_turn_order->get(index.get()); auto [lifeline, dialog] = editor_for(participant); dialog->present(this); } diff --git a/domain/src/turn_order.cpp b/domain/src/turn_order.cpp index 4f1ed3b..7216239 100644 --- a/domain/src/turn_order.cpp +++ b/domain/src/turn_order.cpp @@ -39,13 +39,15 @@ namespace turns::domain if (auto [found, index] = find(item, equal_comparator); !found) { insert_sorted(item, comparator); + item->property_priority().signal_changed().connect([this] { + sort(comparator); + }); } } auto turn_order::append(Glib::ustring const & name, float priority, disposition disposition) -> void { auto participant = participant::create(name, priority, disposition); - participant->property_priority().signal_changed().connect([this] { sort(comparator); }); append(participant); } diff --git a/res/CMakeLists.txt b/res/CMakeLists.txt index 64ec023..fda52b8 100644 --- a/res/CMakeLists.txt +++ b/res/CMakeLists.txt @@ -6,6 +6,7 @@ target_add_glib_resources("res" PREFIX "ch/arknet/Turns" UI_FILES "widgets/participant_row.ui" + "widgets/turn_order_view.ui" "windows/main.ui" "windows/participant_editor.ui" CSS_FILES diff --git a/res/ui.cmb b/res/ui.cmb new file mode 100644 index 0000000..119c828 --- /dev/null +++ b/res/ui.cmb @@ -0,0 +1,187 @@ + + + + + (1,None,None,"windows/main.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) + + + (1,"gtk","4.14",None), + (1,"libadwaita","1.5",None), + (2,"gtk","4.14",None), + (2,"libadwaita","1.5",None), + (3,"gtk","4.14",None) + + + (1,1,"AdwApplicationWindow","main",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), + (1,7,"GtkMenuButton","open_main_menu",3,None,"end",None,None,None,None), + (1,8,"GtkButton","add_participant",3,None,"start",None,1,None,None), + (1,9,"(menu)","main_menu",None,None,None,None,-1,None,None), + (1,10,"(item)",None,9,None,None,None,1,None,None), + (1,11,"GtkStack","stack",2,None,None,None,-1,None,None), + (1,16,"AdwStatusPage","empty",11,None,None,None,-1,None,None), + (1,17,"GtkButton",None,16,None,None,None,-1,None,None), + (1,18,"GtkButton","start",3,None,"start",None,2,None,None), + (1,19,"(item)",None,9,None,None,None,None,None,None), + (2,1,"AdwDialog","participant_editor",None,None,None,None,-1,None,None), + (2,2,"AdwToolbarView",None,1,None,None,None,-1,None,None), + (2,3,"AdwHeaderBar",None,2,None,"top",None,-1,None,None), + (2,4,"AdwClamp",None,2,None,None,None,-1,None,None), + (2,5,"GtkBox",None,4,None,None,None,-1,None,None), + (2,6,"GtkListBox",None,5,None,None,None,None,None,None), + (2,7,"AdwEntryRow","name",6,None,None,None,None,None,None), + (2,9,"GtkButton","finish",5,None,None,None,1,None,None), + (2,10,"AdwSpinRow","priority",6,None,None,None,1,None,None), + (2,11,"AdwComboRow","disposition",6,None,None,None,2,None,None), + (2,12,"GtkAdjustment",None,10,None,None,None,-1,None,None), + (3,1,"GtkListBoxRow","gtkmm__CustomObject_participant_row",None,None,None,None,-1,None,None), + (3,2,"GtkBox",None,1,None,None,None,-1,None,None), + (3,3,"GtkBox",None,2,None,None,None,-1,None,None), + (3,4,"GtkBox",None,2,None,None,None,-1,None,None), + (3,5,"GtkBox",None,2,None,None,None,-1,None,None), + (3,6,"GtkToggleButton","toggle_defeated",3,None,None,None,-1,None,None), + (3,7,"GtkLabel","title",4,None,None,None,-1,None,None), + (3,8,"GtkLabel","subtitle",4,None,None,None,-1,None,None), + (3,9,"GtkButton","delete",5,None,None,None,-1,None,None), + (3,10,"GtkButton","edit",5,None,None,None,-1,None,None), + (4,1,"GtkScrolledWindow","gtkmm__CustomObject_turn_order_view",None,None,None,None,-1,None,None), + (4,2,"AdwClamp",None,1,None,None,None,-1,None,None), + (4,3,"GtkListBox","view",2,None,None,None,-1,None,None) + + + (1,1,"AdwApplicationWindow","content",None,None,None,None,None,2,None,None,None,None), + (1,1,"GtkWidget","height-request","480",None,None,None,None,None,None,None,None,None), + (1,1,"GtkWidget","width-request","360",None,None,None,None,None,None,None,None,None), + (1,1,"GtkWindow","default-height","720",None,None,None,None,None,None,None,None,None), + (1,1,"GtkWindow","default-width","360",None,None,None,None,None,None,None,None,None), + (1,2,"AdwToolbarView","content",None,None,None,None,None,11,None,None,None,None), + (1,3,"AdwHeaderBar","title-widget",None,None,None,None,None,6,None,None,None,None), + (1,6,"AdwWindowTitle","subtitle","No active turn order",1,None,None,None,None,None,None,None,None), + (1,6,"AdwWindowTitle","title","Turns",1,None,None,None,None,None,None,None,None), + (1,7,"GtkMenuButton","icon-name","open-menu",None,None,None,None,None,None,None,None,None), + (1,7,"GtkMenuButton","menu-model","9",None,None,None,None,None,None,None,None,None), + (1,7,"GtkWidget","tooltip-text","Main Menu",1,None,None,None,None,None,None,None,None), + (1,8,"GtkActionable","action-name","win.add_participant",None,None,None,None,None,None,None,None,None), + (1,8,"GtkButton","icon-name","contact-new",None,None,None,None,None,None,None,None,None), + (1,8,"GtkWidget","tooltip-text","Add participant",1,None,None,None,None,None,None,None,None), + (1,10,"(item)","action","app.quit",None,None,None,None,None,None,None,None,None), + (1,10,"(item)","label","_Quit",1,None,None,None,None,None,None,None,None), + (1,11,"GtkStack","transition-type","crossfade",None,None,None,None,None,None,None,None,None), + (1,16,"AdwStatusPage","child",None,None,None,None,None,17,None,None,None,None), + (1,16,"AdwStatusPage","icon-name","contact-new-symbolic",None,None,None,None,None,None,None,None,None), + (1,17,"GtkActionable","action-name","win.add_participant",None,None,None,None,None,None,None,None,None), + (1,17,"GtkButton","label","Add participant",1,None,None,None,None,None,None,None,None), + (1,17,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None), + (1,18,"GtkActionable","action-name","win.start",None,None,None,None,None,None,None,None,None), + (1,18,"GtkButton","icon-name","media-playback-start-symbolic",None,None,None,None,None,None,None,None,None), + (1,18,"GtkWidget","tooltip-text","Start turn order",1,None,None,None,None,None,None,None,None), + (1,19,"(item)","action","win.clear",None,None,None,None,None,None,None,None,None), + (1,19,"(item)","label","_Clear",1,None,None,None,None,None,None,None,None), + (2,1,"AdwDialog","child",None,None,None,None,None,2,None,None,None,None), + (2,1,"AdwDialog","default-widget",None,None,None,None,None,None,None,None,None,None), + (2,1,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (2,2,"AdwToolbarView","content",None,None,None,None,None,4,None,None,None,None), + (2,4,"AdwClamp","child",None,None,None,None,None,5,None,None,None,None), + (2,5,"GtkBox","spacing","18",None,None,None,None,None,None,None,None,None), + (2,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (2,5,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (2,5,"GtkWidget","margin-bottom","18",None,None,None,None,None,None,None,None,None), + (2,5,"GtkWidget","margin-end","12",None,None,None,None,None,None,None,None,None), + (2,5,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None), + (2,5,"GtkWidget","margin-top","18",None,None,None,None,None,None,None,None,None), + (2,5,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), + (2,7,"AdwPreferencesRow","title","Name",1,None,None,None,None,None,None,None,None), + (2,9,"GtkButton","label","Finish",1,None,None,None,None,None,None,None,None), + (2,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (2,10,"AdwPreferencesRow","title","Priority",1,None,None,None,None,None,None,None,None), + (2,10,"AdwSpinRow","adjustment",None,None,None,None,None,12,None,None,None,None), + (2,10,"AdwSpinRow","digits","1",None,None,None,None,None,None,None,None,None), + (2,10,"AdwSpinRow","numeric","True",None,None,None,None,None,None,None,None,None), + (2,11,"AdwPreferencesRow","title","Disposition",1,None,None,None,None,None,None,None,None), + (2,12,"GtkAdjustment","lower","-1000.0",None,None,None,None,None,None,None,None,None), + (2,12,"GtkAdjustment","step-increment","1.0",None,None,None,None,None,None,None,None,None), + (2,12,"GtkAdjustment","upper","1000.0",None,None,None,None,None,None,None,None,None), + (3,1,"GtkListBoxRow","activatable","False",None,None,None,None,None,None,None,None,None), + (3,1,"GtkListBoxRow","child",None,None,None,None,None,2,None,None,None,None), + (3,1,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (3,4,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (3,4,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (3,4,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (3,5,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (3,6,"GtkButton","icon-name","face-smile-symbolic",None,None,None,None,None,None,None,None,None), + (3,6,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None), + (3,6,"GtkWidget","tooltip-text","Mark as defeated",1,None,None,None,None,None,None,None,None), + (3,6,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (3,7,"GtkLabel","wrap-mode","word-char",None,None,None,None,None,None,None,None,None), + (3,7,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), + (3,8,"GtkLabel","wrap-mode","word-char",None,None,None,None,None,None,None,None,None), + (3,8,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), + (3,9,"GtkButton","icon-name","edit-delete-symbolic",None,None,None,None,None,None,None,None,None), + (3,9,"GtkWidget","tooltip-text","Delete participant",1,None,None,None,None,None,None,None,None), + (3,10,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None), + (4,1,"GtkScrolledWindow","child",None,None,None,None,None,2,None,None,None,None), + (4,2,"AdwClamp","child",None,None,None,None,None,3,None,None,None,None), + (4,2,"GtkWidget","margin-bottom","18",None,None,None,None,None,None,None,None,None), + (4,2,"GtkWidget","margin-end","12",None,None,None,None,None,None,None,None,None), + (4,2,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None), + (4,2,"GtkWidget","margin-top","12",None,None,None,None,None,None,None,None,None), + (4,3,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None) + + + (1,1,"GtkWidget",2,2,None,1,None,None,None,None), + (1,3,"GtkWidget",1,1,None,None,None,None,None,None), + (1,2,"GtkWidget",1,1,None,None,None,None,None,None), + (2,6,"GtkWidget",1,1,None,None,None,None,None,None), + (2,6,"GtkWidget",2,2,None,1,None,None,None,None), + (2,9,"GtkWidget",1,1,None,None,None,None,None,None), + (2,9,"GtkWidget",2,2,None,1,None,None,None,None), + (2,9,"GtkWidget",2,3,None,1,None,None,None,None), + (1,17,"GtkWidget",1,1,None,None,None,None,None,None), + (1,17,"GtkWidget",2,2,None,1,None,None,None,None), + (1,17,"GtkWidget",2,3,None,1,None,None,None,None), + (3,6,"GtkWidget",1,1,None,None,None,None,None,None), + (3,6,"GtkWidget",2,2,None,1,None,None,None,None), + (3,2,"GtkWidget",1,1,None,None,None,None,None,None), + (3,2,"GtkWidget",2,2,None,1,None,None,None,None), + (3,7,"GtkWidget",1,1,None,None,None,None,None,None), + (3,7,"GtkWidget",2,2,None,1,None,None,None,None), + (3,8,"GtkWidget",1,1,None,None,None,None,None,None), + (3,8,"GtkWidget",2,2,None,1,None,None,None,None), + (3,9,"GtkWidget",1,1,None,None,None,None,None,None), + (3,9,"GtkWidget",2,2,None,1,None,None,None,None), + (3,10,"GtkWidget",1,1,None,None,None,None,None,None), + (3,10,"GtkWidget",2,2,None,1,None,None,None,None), + (3,9,"GtkWidget",2,3,None,1,None,None,None,None), + (3,10,"GtkWidget",2,3,None,1,None,None,None,None), + (3,5,"GtkWidget",1,1,None,None,None,None,None,None), + (3,5,"GtkWidget",2,2,None,1,None,None,None,None), + (3,3,"GtkWidget",1,1,None,None,None,None,None,None), + (3,3,"GtkWidget",2,2,None,1,None,None,None,None), + (4,3,"GtkWidget",1,1,None,None,None,None,None,None), + (4,3,"GtkWidget",2,2,None,1,None,None,None,None) + + + (1,1,"GtkWidget",2,2,"name","background"), + (2,6,"GtkWidget",2,2,"name","boxed-list"), + (2,9,"GtkWidget",2,2,"name","pill"), + (2,9,"GtkWidget",2,3,"name","suggested-action"), + (1,17,"GtkWidget",2,2,"name","pill"), + (1,17,"GtkWidget",2,3,"name","suggested-action"), + (3,6,"GtkWidget",2,2,"name","circular"), + (3,2,"GtkWidget",2,2,"name","header"), + (3,7,"GtkWidget",2,2,"name","title"), + (3,8,"GtkWidget",2,2,"name","subtitle"), + (3,9,"GtkWidget",2,2,"name","circular"), + (3,10,"GtkWidget",2,2,"name","circular"), + (3,9,"GtkWidget",2,3,"name","destructive-action"), + (3,10,"GtkWidget",2,3,"name","suggested-action"), + (3,5,"GtkWidget",2,2,"name","suffixes"), + (3,3,"GtkWidget",2,2,"name","prefixes"), + (4,3,"GtkWidget",2,2,"name","boxed-list") + + diff --git a/res/widgets/participant_row.ui b/res/widgets/participant_row.ui index 683fbb6..7948eab 100644 --- a/res/widgets/participant_row.ui +++ b/res/widgets/participant_row.ui @@ -1,13 +1,11 @@ - + diff --git a/res/widgets/widgets.cmb b/res/widgets/widgets.cmb deleted file mode 100644 index 983dbea..0000000 --- a/res/widgets/widgets.cmb +++ /dev/null @@ -1,83 +0,0 @@ - - - - - (1,1,"participant_list_item.ui","participant_row.ui",None,None,None,None,None,None,None) - - - (1,"gtk","4.14",None) - - - (1,1,"GtkListBoxRow","gtkmm__CustomObject_participant_row",None,None,None,None,-1,None,None), - (1,2,"GtkBox",None,1,None,None,None,-1,None,None), - (1,3,"GtkBox",None,2,None,None,None,-1,None,None), - (1,5,"GtkBox",None,2,None,None,None,-1,None,None), - (1,7,"GtkLabel","subtitle",5,None,None,None,1,"<property name=\"sensitive\"\n bind-source=\"toggle_defeated\"\n bind-property=\"active\"\n bind-flags=\"sync-create|invert-boolean\" />",None), - (1,8,"GtkBox",None,2,None,None,None,-1,None,None), - (1,12,"GtkToggleButton","toggle_defeated",3,None,None,None,-1,None,None), - (1,13,"GtkButton","edit",8,None,None,None,1,"<property name=\"sensitive\"\n bind-source=\"toggle_defeated\"\n bind-property=\"active\"\n bind-flags=\"sync-create|invert-boolean\" />",None), - (1,14,"GtkButton","delete",8,None,None,None,None,None,None), - (1,15,"GtkLabel","title",5,None,None,None,None,None,None) - - - (1,1,"GtkListBoxRow","activatable","False",None,None,None,None,None,None,None,None,None), - (1,1,"GtkListBoxRow","child",None,None,None,None,None,2,None,None,None,None), - (1,1,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,2,"GtkWidget","css-classes","header",None,None,None,None,None,None,None,None,None), - (1,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (1,5,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (1,5,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,7,"GtkLabel","lines","0",None,None,None,None,None,None,None,None,None), - (1,7,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None), - (1,7,"GtkLabel","wrap-mode","word-char",None,None,None,None,None,None,None,None,None), - (1,7,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), - (1,7,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None), - (1,8,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,12,"GtkButton","icon-name","face-smile-symbolic",None,None,None,None,None,None,None,None,None), - (1,12,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None), - (1,12,"GtkWidget","tooltip-text","Mark as defeated",1,None,None,None,None,None,None,None,None), - (1,12,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,13,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None), - (1,13,"GtkWidget","tooltip-text","Edit participant",1,None,None,None,None,None,None,None,None), - (1,14,"GtkButton","icon-name","edit-delete-symbolic",None,None,None,None,None,None,None,None,None), - (1,14,"GtkWidget","sensitive",None,None," Custom object fragments ",None,None,None,12,"GtkToggleButton","active","sync-create|invert-boolean"), - (1,14,"GtkWidget","tooltip-text","Delete participant",1,None,None,None,None,None,None,None,None), - (1,15,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), - (1,15,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None) - - - (1,5,"GtkWidget",1,1,None,None,None,None,None,None), - (1,5,"GtkWidget",2,2,None,1,None,None,None,None), - (1,3,"GtkWidget",1,1,None,None,None,None,None,None), - (1,3,"GtkWidget",2,2,None,1,None,None,None,None), - (1,7,"GtkWidget",1,1,None,None,None,None,None,None), - (1,7,"GtkWidget",2,2,None,1,None,None,None,None), - (1,8,"GtkWidget",1,1,None,None,None,None,None,None), - (1,8,"GtkWidget",2,2,None,1,None,None,None,None), - (1,1,"GtkWidget",2,2,None,1,None,None,None,None), - (1,1,"GtkWidget",1,3,None,None,None,None,None,None), - (1,12,"GtkWidget",1,1,None,None,None,None,None,None), - (1,12,"GtkWidget",2,2,None,1,None,None,None,None), - (1,13,"GtkWidget",1,1,None,None,None,None,None,None), - (1,13,"GtkWidget",2,2,None,1,None,None,None,None), - (1,13,"GtkWidget",2,3,None,1,None,None,None,None), - (1,14,"GtkWidget",1,1,None,None,None,None,None,None), - (1,14,"GtkWidget",2,2,None,1,None,None,None,None), - (1,14,"GtkWidget",2,3,None,1,None,None,None,None), - (1,15,"GtkWidget",1,1,None,None,None,None,None,None), - (1,15,"GtkWidget",2,2,None,1,None,None,None,None) - - - (1,5,"GtkWidget",2,2,"name","title"), - (1,3,"GtkWidget",2,2,"name","prefixes"), - (1,7,"GtkWidget",2,2,"name","subtitle"), - (1,8,"GtkWidget",2,2,"name","suffixes"), - (1,1,"GtkWidget",2,2,"name","property"), - (1,12,"GtkWidget",2,2,"name","circular"), - (1,13,"GtkWidget",2,2,"name","circular"), - (1,13,"GtkWidget",2,3,"name","suggested-action"), - (1,14,"GtkWidget",2,2,"name","circular"), - (1,14,"GtkWidget",2,3,"name","destructive-action"), - (1,15,"GtkWidget",2,2,"name","title") - - diff --git a/res/windows/main.ui b/res/windows/main.ui index 4361f5e..e01c8d1 100644 --- a/res/windows/main.ui +++ b/res/windows/main.ui @@ -1,7 +1,6 @@ - @@ -27,27 +26,6 @@ contact-new-symbolic - - - - - - - none - - - - 18 - 12 - 12 - 18 - start - - - - diff --git a/res/windows/windows.cmb b/res/windows/windows.cmb deleted file mode 100644 index 60370d8..0000000 --- a/res/windows/windows.cmb +++ /dev/null @@ -1,129 +0,0 @@ - - - - - (1,None,"main_window.ui","main.ui",None,None,None,None,None,None,None), - (2,None,None,"participant_editor.ui",None,None,None,None,None,None,None) - - - (1,"gtk","4.14",None), - (1,"libadwaita","1.5",None), - (2,"gtk","4.14",None), - (2,"libadwaita","1.5",None) - - - (1,1,"AdwApplicationWindow","main",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), - (1,7,"GtkMenuButton","open_main_menu",3,None,"end",None,None,None,None), - (1,8,"GtkButton","add_participant",3,None,"start",None,1,None,None), - (1,9,"(menu)","main_menu",None,None,None,None,-1,None,None), - (1,10,"(item)",None,9,None,None,None,1,None,None), - (1,11,"GtkStack","stack",2,None,None,None,-1,None,None), - (1,13,"GtkScrolledWindow","turn_order",11,None,None,None,1,None,None), - (1,14,"AdwClamp",None,13,None,None,None,None,None,None), - (1,15,"GtkListBox","participant_list",14,None,None,None,None,None,None), - (1,16,"AdwStatusPage","empty",11,None,None,None,-1,None,None), - (1,17,"GtkButton",None,16,None,None,None,-1,None,None), - (1,18,"GtkButton","start",3,None,"start",None,2,None,None), - (1,19,"(item)",None,9,None,None,None,None,None,None), - (2,1,"AdwDialog","participant_editor",None,None,None,None,-1,None,None), - (2,2,"AdwToolbarView",None,1,None,None,None,-1,None,None), - (2,3,"AdwHeaderBar",None,2,None,"top",None,-1,None,None), - (2,4,"AdwClamp",None,2,None,None,None,-1,None,None), - (2,5,"GtkBox",None,4,None,None,None,-1,None,None), - (2,6,"GtkListBox",None,5,None,None,None,None,None,None), - (2,7,"AdwEntryRow","name",6,None,None,None,None,None,None), - (2,9,"GtkButton","finish",5,None,None,None,1,None,None), - (2,10,"AdwSpinRow","priority",6,None,None,None,1,None,None), - (2,11,"AdwComboRow","disposition",6,None,None,None,2,None,None), - (2,12,"GtkAdjustment",None,10,None,None,None,-1,None,None) - - - (1,1,"AdwApplicationWindow","content",None,None,None,None,None,2,None,None,None,None), - (1,1,"GtkWidget","height-request","480",None,None,None,None,None,None,None,None,None), - (1,1,"GtkWidget","width-request","360",None,None,None,None,None,None,None,None,None), - (1,1,"GtkWindow","default-height","720",None,None,None,None,None,None,None,None,None), - (1,1,"GtkWindow","default-width","360",None,None,None,None,None,None,None,None,None), - (1,2,"AdwToolbarView","content",None,None,None,None,None,11,None,None,None,None), - (1,3,"AdwHeaderBar","title-widget",None,None,None,None,None,6,None,None,None,None), - (1,6,"AdwWindowTitle","subtitle","No active turn order",1,None,None,None,None,None,None,None,None), - (1,6,"AdwWindowTitle","title","Turns",1,None,None,None,None,None,None,None,None), - (1,7,"GtkMenuButton","icon-name","open-menu",None,None,None,None,None,None,None,None,None), - (1,7,"GtkMenuButton","menu-model","9",None,None,None,None,None,None,None,None,None), - (1,7,"GtkWidget","tooltip-text","Main Menu",1,None,None,None,None,None,None,None,None), - (1,8,"GtkActionable","action-name","win.add_participant",None,None,None,None,None,None,None,None,None), - (1,8,"GtkButton","icon-name","contact-new",None,None,None,None,None,None,None,None,None), - (1,8,"GtkWidget","tooltip-text","Add participant",1,None,None,None,None,None,None,None,None), - (1,10,"(item)","action","app.quit",None,None,None,None,None,None,None,None,None), - (1,10,"(item)","label","_Quit",1,None,None,None,None,None,None,None,None), - (1,11,"GtkStack","transition-type","crossfade",None,None,None,None,None,None,None,None,None), - (1,13,"GtkScrolledWindow","child",None,None,None,None,None,14,None,None,None,None), - (1,14,"AdwClamp","child",None,None,None,None,None,15,None,None,None,None), - (1,14,"GtkWidget","margin-bottom","18",None,None,None,None,None,None,None,None,None), - (1,14,"GtkWidget","margin-end","12",None,None,None,None,None,None,None,None,None), - (1,14,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None), - (1,14,"GtkWidget","margin-top","18",None,None,None,None,None,None,None,None,None), - (1,14,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), - (1,15,"GtkListBox","selection-mode","none",None,None,None,None,None,None,None,None,None), - (1,16,"AdwStatusPage","child",None,None,None,None,None,17,None,None,None,None), - (1,16,"AdwStatusPage","icon-name","contact-new-symbolic",None,None,None,None,None,None,None,None,None), - (1,17,"GtkActionable","action-name","win.add_participant",None,None,None,None,None,None,None,None,None), - (1,17,"GtkButton","label","Add participant",1,None,None,None,None,None,None,None,None), - (1,17,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None), - (1,18,"GtkActionable","action-name","win.start",None,None,None,None,None,None,None,None,None), - (1,18,"GtkButton","icon-name","media-playback-start-symbolic",None,None,None,None,None,None,None,None,None), - (1,18,"GtkWidget","tooltip-text","Start turn order",1,None,None,None,None,None,None,None,None), - (1,19,"(item)","action","win.clear",None,None,None,None,None,None,None,None,None), - (1,19,"(item)","label","_Clear",1,None,None,None,None,None,None,None,None), - (2,1,"AdwDialog","child",None,None,None,None,None,2,None,None,None,None), - (2,1,"AdwDialog","default-widget",None,None,None,None,None,None,None,None,None,None), - (2,1,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (2,2,"AdwToolbarView","content",None,None,None,None,None,4,None,None,None,None), - (2,4,"AdwClamp","child",None,None,None,None,None,5,None,None,None,None), - (2,5,"GtkBox","spacing","18",None,None,None,None,None,None,None,None,None), - (2,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (2,5,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (2,5,"GtkWidget","margin-bottom","18",None,None,None,None,None,None,None,None,None), - (2,5,"GtkWidget","margin-end","12",None,None,None,None,None,None,None,None,None), - (2,5,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None), - (2,5,"GtkWidget","margin-top","18",None,None,None,None,None,None,None,None,None), - (2,5,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), - (2,7,"AdwPreferencesRow","title","Name",1,None,None,None,None,None,None,None,None), - (2,9,"GtkButton","label","Finish",1,None,None,None,None,None,None,None,None), - (2,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), - (2,10,"AdwPreferencesRow","title","Priority",1,None,None,None,None,None,None,None,None), - (2,10,"AdwSpinRow","adjustment",None,None,None,None,None,12,None,None,None,None), - (2,10,"AdwSpinRow","digits","1",None,None,None,None,None,None,None,None,None), - (2,10,"AdwSpinRow","numeric","True",None,None,None,None,None,None,None,None,None), - (2,11,"AdwPreferencesRow","title","Disposition",1,None,None,None,None,None,None,None,None), - (2,12,"GtkAdjustment","lower","-1000.0",None,None,None,None,None,None,None,None,None), - (2,12,"GtkAdjustment","step-increment","1.0",None,None,None,None,None,None,None,None,None), - (2,12,"GtkAdjustment","upper","1000.0",None,None,None,None,None,None,None,None,None) - - - (1,1,"GtkWidget",2,2,None,1,None,None,None,None), - (1,3,"GtkWidget",1,1,None,None,None,None,None,None), - (1,2,"GtkWidget",1,1,None,None,None,None,None,None), - (2,6,"GtkWidget",1,1,None,None,None,None,None,None), - (2,6,"GtkWidget",2,2,None,1,None,None,None,None), - (2,9,"GtkWidget",1,1,None,None,None,None,None,None), - (2,9,"GtkWidget",2,2,None,1,None,None,None,None), - (2,9,"GtkWidget",2,3,None,1,None,None,None,None), - (1,15,"GtkWidget",1,1,None,None,None,None,None,None), - (1,15,"GtkWidget",2,2,None,1,None,None,None,None), - (1,17,"GtkWidget",1,1,None,None,None,None,None,None), - (1,17,"GtkWidget",2,2,None,1,None,None,None,None), - (1,17,"GtkWidget",2,3,None,1,None,None,None,None) - - - (1,1,"GtkWidget",2,2,"name","background"), - (2,6,"GtkWidget",2,2,"name","boxed-list"), - (2,9,"GtkWidget",2,2,"name","pill"), - (2,9,"GtkWidget",2,3,"name","suggested-action"), - (1,15,"GtkWidget",2,2,"name","boxed-list"), - (1,17,"GtkWidget",2,2,"name","pill"), - (1,17,"GtkWidget",2,3,"name","suggested-action") - - -- cgit v1.2.3