_button->signal_toggled().connect (sigc::mem_fun (*this, &CheckOption::toggled));
Gtkmm2ext::Activatable::set_related_action (act);
- if (_action) {
+ assert (_action);
- action_sensitivity_changed ();
+ action_sensitivity_changed ();
- Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
- if (tact) {
- action_toggled ();
- tact->signal_toggled().connect (sigc::mem_fun (*this, &CheckOption::action_toggled));
- }
-
- _action->connect_property_changed ("sensitive", sigc::mem_fun (*this, &CheckOption::action_sensitivity_changed));
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (_action);
+ if (tact) {
+ action_toggled ();
+ _callback_connection = tact->signal_toggled().connect (sigc::mem_fun (*this, &CheckOption::action_toggled));
}
+
+ _action->connect_property_changed ("sensitive", sigc::mem_fun (*this, &CheckOption::action_sensitivity_changed));
+}
+
+CheckOption::~CheckOption ()
+{
+ _callback_connection.disconnect ();
}
void
{
public:
CheckOption (std::string const &, std::string const &, Glib::RefPtr<Gtk::Action> act );
+ virtual ~CheckOption ();
void set_state_from_config () {}
void parameter_changed (std::string const &) {}
void add_to_page (OptionEditorPage*);
Gtk::Widget& tip_widget() { return *_button; }
+protected:
void action_toggled ();
void action_sensitivity_changed () {}
void action_visibility_changed () {}
-protected:
virtual void toggled ();
- sigc::slot<bool> _get; ///< slot to get the configuration variable's value
- sigc::slot<bool, bool> _set; ///< slot to set the configuration variable's value
Gtk::CheckButton* _button; ///< UI button
Gtk::Label* _label; ///< label for button, so we can use markup
+
+private:
+ sigc::connection _callback_connection;
};
/** Component which provides the UI to handle a boolean option using a GTK CheckButton */