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
def __init__(self, button: Gtk.Widget, subreddit_name: str): self._subreddit_name = subreddit_name button.connect('clicked', self.__clicked_cb)
def connect_drag_data_received(widget: Gtk.Widget, act: Callable[..., None]) -> None: widget.drag_dest_set(Gtk.DestDefaults.ALL, [], Gdk.DragAction.COPY) widget.drag_dest_add_text_targets() widget.connect('drag_data_received', act)
def bind_setting(self, widget: Gtk.Widget, prop: str, setting: str): widget.connect('notify::' + prop, self._on_property_change, (prop, setting)) self.settings_map[setting] = (widget, prop) self.settings[setting] = None