diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-15 17:07:56 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-15 17:07:56 +0200 |
| commit | 7758fbc7522b39bad768abfa728b37c97007ffb6 (patch) | |
| tree | 9700de5a2202726d84228ec3ceec1e1d7e0a72df /app | |
| parent | 22fb608fa85148d4d6397b5ef9681a78f8b04319 (diff) | |
| download | turns-7758fbc7522b39bad768abfa728b37c97007ffb6.tar.xz turns-7758fbc7522b39bad768abfa728b37c97007ffb6.zip | |
app: only conditionally enable clear action
Diffstat (limited to 'app')
| -rw-r--r-- | app/include/turns/app/windows/main.hpp | 4 | ||||
| -rw-r--r-- | app/src/windows/main.cpp | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/app/include/turns/app/windows/main.hpp b/app/include/turns/app/windows/main.hpp index 1ba1df5..694876e 100644 --- a/app/include/turns/app/windows/main.hpp +++ b/app/include/turns/app/windows/main.hpp @@ -4,6 +4,7 @@ #include "turns/domain/turn_order.hpp" #include <adwaita.h> +#include <giomm/simpleaction.h> #include <glibmm/binding.h> #include <glibmm/object.h> #include <glibmm/refptr.h> @@ -40,8 +41,11 @@ namespace turns::app::windows Glib::PropertyProxy<Glib::ustring> m_subtitle; + Glib::RefPtr<Glib::Binding> m_clear_action_enabled{}; Glib::RefPtr<Glib::Binding> m_visible_child_widget{}; Glib::RefPtr<Glib::Binding> m_subtitle_text{}; + + Glib::RefPtr<Gio::SimpleAction> m_clear_action{}; }; } // namespace turns::app::windows diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp index d6e5c1a..a8f8739 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -33,7 +33,12 @@ namespace turns::app::windows , m_turn_order{builder->get_widget<Gtk::ScrolledWindow>("turn_order")} , m_participant_list_data{domain::turn_order::create()} , 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_enabled = Glib::Binding::bind_property(m_participant_list_data->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_stack->property_visible_child(), Glib::Binding::Flags::SYNC_CREATE, @@ -47,7 +52,6 @@ namespace turns::app::windows m_participant_list->bind_model(m_participant_list_data, sigc::mem_fun(*this, &main::handle_create_list_row)); add_action("add_participant", sigc::mem_fun(*this, &main::handle_add_participant)); - add_action("clear", sigc::mem_fun(*this, &main::handle_clear)); add_action_with_parameter("delete", Glib::VARIANT_TYPE_INT32, [this](auto param) { auto index = Glib::VariantBase::cast_dynamic<Glib::Variant<int>>(param); m_participant_list_data->remove(index.get()); |
