gtkmm2ext: change action registration functions to return ToggleAction or RadioAction

This commit is contained in:
Paul Davis 2025-07-27 13:19:24 -06:00
parent c6fc0d8283
commit 458c54990b
2 changed files with 14 additions and 17 deletions

View file

@ -430,7 +430,7 @@ ActionManager::register_action (RefPtr<ActionGroup> group,
return RefPtr<Action>(); return RefPtr<Action>();
} }
RefPtr<Action> RefPtr<RadioAction>
ActionManager::register_radio_action (RefPtr<ActionGroup> group, ActionManager::register_radio_action (RefPtr<ActionGroup> group,
Gtk::RadioAction::Group& rgroup, Gtk::RadioAction::Group& rgroup,
const char* name, const char* label, const char* name, const char* label,
@ -439,9 +439,8 @@ ActionManager::register_radio_action (RefPtr<ActionGroup> group,
string fullpath; string fullpath;
DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("creating action %1 in %2\n", name, group->get_name())); DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("creating action %1 in %2\n", name, group->get_name()));
RefPtr<Action> act = RadioAction::create (rgroup, name, label); RefPtr<RadioAction> act = RadioAction::create (rgroup, name, label);
DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("created action %1 in %2 success: %3\n", name, group->get_name(), (bool) act)); DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("created action %1 in %2 success: %3\n", name, group->get_name(), (bool) act));
RefPtr<RadioAction> ract = RefPtr<RadioAction>::cast_dynamic(act);
fullpath = group->get_name(); fullpath = group->get_name();
fullpath += '/'; fullpath += '/';
@ -453,22 +452,20 @@ ActionManager::register_radio_action (RefPtr<ActionGroup> group,
} }
/* already registered */ /* already registered */
return RefPtr<Action>(); return RefPtr<RadioAction>();
} }
RefPtr<Action> RefPtr<RadioAction>
ActionManager::register_radio_action (RefPtr<ActionGroup> group, ActionManager::register_radio_action (RefPtr<ActionGroup> group,
Gtk::RadioAction::Group& rgroup, Gtk::RadioAction::Group& rgroup,
const char* name, const char* label, const char* name, const char* label,
sigc::slot<void,GtkAction*> sl, sigc::slot<void,GtkRadioAction*> sl,
int value) int value)
{ {
string fullpath; string fullpath;
RefPtr<Action> act = RadioAction::create (rgroup, name, label); RefPtr<RadioAction> act = RadioAction::create (rgroup, name, label);
DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("created radio-action %1 in %2 success: %3\n", name, group->get_name(), (bool) act)); DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("created radio-action %1 in %2 success: %3\n", name, group->get_name(), (bool) act));
RefPtr<RadioAction> ract = RefPtr<RadioAction>::cast_dynamic(act);
ract->property_value() = value;
fullpath = group->get_name(); fullpath = group->get_name();
fullpath += '/'; fullpath += '/';
@ -481,10 +478,10 @@ ActionManager::register_radio_action (RefPtr<ActionGroup> group,
/* already registered */ /* already registered */
return RefPtr<Action>(); return RefPtr<RadioAction>();
} }
RefPtr<Action> RefPtr<ToggleAction>
ActionManager::register_toggle_action (RefPtr<ActionGroup> group, ActionManager::register_toggle_action (RefPtr<ActionGroup> group,
const char* name, const char* label, sigc::slot<void> sl) const char* name, const char* label, sigc::slot<void> sl)
{ {
@ -494,7 +491,7 @@ ActionManager::register_toggle_action (RefPtr<ActionGroup> group,
fullpath += '/'; fullpath += '/';
fullpath += name; fullpath += name;
RefPtr<Action> act = ToggleAction::create (name, label); RefPtr<ToggleAction> act = ToggleAction::create (name, label);
DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("created action %1 in %2 success: %3\n", name, group->get_name(), (bool) act)); DEBUG_TRACE (PBD::DEBUG::Actions, string_compose ("created action %1 in %2 success: %3\n", name, group->get_name(), (bool) act));
if (actions.insert (ActionMap::value_type (fullpath, act)).second) { if (actions.insert (ActionMap::value_type (fullpath, act)).second) {
@ -503,7 +500,7 @@ ActionManager::register_toggle_action (RefPtr<ActionGroup> group,
} }
/* already registered */ /* already registered */
return RefPtr<Action>(); return RefPtr<ToggleAction>();
} }
void void

View file

@ -87,16 +87,16 @@ namespace ActionManager {
LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group, const char* name, const char* label); LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group, const char* name, const char* label);
LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group, LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group,
const char* name, const char* label, sigc::slot<void> sl); const char* name, const char* label, sigc::slot<void> sl);
LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group, LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::RadioAction> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group,
Gtk::RadioAction::Group&, Gtk::RadioAction::Group&,
const char* name, const char* label, const char* name, const char* label,
sigc::slot<void,GtkAction*> sl, sigc::slot<void,GtkRadioAction*> sl,
int value); int value);
LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group, LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::RadioAction> register_radio_action (Glib::RefPtr<Gtk::ActionGroup> group,
Gtk::RadioAction::Group&, Gtk::RadioAction::Group&,
const char* name, const char* label, const char* name, const char* label,
sigc::slot<void> sl); sigc::slot<void> sl);
LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group, LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::ToggleAction> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group,
const char* name, const char* label, sigc::slot<void> sl); const char* name, const char* label, sigc::slot<void> sl);
LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> get_action (const std::string& name, bool or_die = true); LIBGTKMM2EXT_API extern Glib::RefPtr<Gtk::Action> get_action (const std::string& name, bool or_die = true);