summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/include/turns/app/windows/main.hpp4
-rw-r--r--app/src/windows/main.cpp6
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());