def __init__(self, entry: Gtk.Widget, history): self.entry = entry if isinstance(entry, Gtk.ComboBoxText): self.get_text = entry.get_active_text() elif isinstance(entry, Gtk.Entry): self.get_text = entry.get_text() UndoableTextContainer.__init__(self, self.entry, history)
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