def register_widget(self, widget: Gtk.Widget, param_name: str, exportable: bool = True): if param_name in self._params: raise ValueError( "register_widget cannot overwrite existing parameters!") if isinstance(widget, Gtk.SpinButton): self._params[param_name] = widget.get_value() self._signal_ids[param_name] = widget.connect( "value-changed", self._spinbutton_value_changed_cb, param_name) elif isinstance(widget, Gtk.CheckButton): self._params[param_name] = widget.get_active() self._signal_ids[param_name] = widget.connect( "toggled", self._checkbutton_toggled_cb, param_name) elif isinstance(widget, Gtk.FileChooserButton): self._params[param_name] = widget.get_filename() self._signal_ids[param_name] = widget.connect( "selection-changed", self._filechooserbutton_selection_changed_cb, param_name) elif isinstance(widget, Gtk.Entry): #pylint: disable=used-before-assignment self._params[param_name] = tmp if (tmp := widget.get_text().strip( )) != "" else widget.get_placeholder_text() self._signal_ids[param_name] = widget.connect( "changed", self._entry_changed_cb, param_name)
def register_widget( self, widget: Gtk.Widget, param_name: str, exportable: bool = True, desensitized: bool = False, ): if param_name in self._params: raise ValueError( "register_widget cannot overwrite existing parameters!" ) if isinstance(widget, Gtk.Switch): self._params[param_name] = widget.get_active() self._signal_ids[param_name] = widget.connect( "notify::active", self._switch_value_changed_cb, param_name ) elif isinstance(widget, Gtk.SpinButton): self._params[param_name] = widget.get_value() self._signal_ids[param_name] = widget.connect( "value-changed", self._spinbutton_value_changed_cb, param_name ) elif isinstance(widget, Gtk.CheckButton): self._params[param_name] = widget.get_active() self._signal_ids[param_name] = widget.connect( "toggled", self._checkbutton_toggled_cb, param_name ) elif isinstance(widget, Gtk.FileChooserButton): self._params[param_name] = widget.get_filename() self._signal_ids[param_name] = widget.connect( "selection-changed", self._filechooserbutton_selection_changed_cb, param_name, ) elif isinstance(widget, Gtk.Entry): self._params[param_name] = widget.get_text().strip() self._signal_ids[param_name] = widget.connect( "changed", self._entry_changed_cb, param_name ) elif isinstance(widget, Gtk.ComboBoxText): self._params[param_name] = widget.get_active_text() self._signal_ids[param_name] = widget.connect( "changed", self._combobox_changed_cb, param_name ) else: raise NotImplementedError( f"register_widget: no support for {type(widget).__name__}" ) self._widgets[param_name] = widget if exportable: self._exportable_params.append(param_name) if desensitized: self._desensitized_widgets.append(widget) return widget