def filter_library(self, widget: Gtk.Widget = None): self.__load_tile_states() if isinstance(widget, Gtk.Switch): self.show_installed_only = widget.get_active() elif isinstance(widget, Gtk.SearchEntry): self.search_string = widget.get_text() self.flowbox.set_filter_func(self.__filter_library_func)
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 __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 _process_control(self, control: Gtk.Widget, param: Pmd2PatchParameter) -> Union[int, str]: try: if param.type == Pmd2PatchParameterType.INTEGER or param.type == Pmd2PatchParameterType.STRING: assert isinstance(control, Gtk.Entry) control: Gtk.Entry value = control.get_text() if param.type == Pmd2PatchParameterType.INTEGER: return int(value) return value elif param.type == Pmd2PatchParameterType.SELECT: assert isinstance(control, Gtk.ComboBoxText) control: Gtk.ComboBoxText selected_id = control.get_active_id() for option in param.options: # We do it like this, because option.value has the correct type, # selected_id is always a string. if option.value == selected_id: return option.value raise TypeError("Unknown option " + selected_id) raise TypeError("Unknown parameter type " + param.type) except ValueError: raise PatchNotConfiguredError( _("Invalid values for some settings provided. Please try again." ), "*", _("Invalid values for some settings provided. Please try again." ))
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 refresh_widget_text(widget: Gtk.Widget) -> None: if isinstance(widget, Gtk.MenuButton): if widget.get_use_popover(): refresh_widget_text(widget.get_popover()) else: refresh_widget_text(widget.get_popup()) return if isinstance(widget, Gtk.Container): childrens = Gtk.Container.get_children(widget) else: if isinstance(widget, Gtk.Label): try: cached_text = i18n.cache[i18n.new_hash(widget.get_text())] except KeyError: log.debug("it's not an i18n string: %s", widget.get_text()) return c_ = _ if widget.get_use_markup(): old_attributes = Pango.Layout.get_attributes( widget.get_layout()) widget.set_text(c_(cached_text)) widget.set_attributes(old_attributes) else: widget.set_text(c_(cached_text)) log.debug('widget refreshed: %s', widget) else: log.debug('widget not refresh: %s', widget) return for children in childrens: refresh_widget_text(children)
def get_label_for_widget(widget: Gtk.Widget): my_label = None if hasattr(widget, 'get_label'): my_label = widget.get_label() # Mainly for the stackswitcher radio buttons if not my_label and hasattr(widget, 'get_child'): child = widget.get_child() if hasattr(child, 'get_label'): my_label = child.get_label() if not my_label and hasattr(widget, 'get_text'): my_label = widget.get_text() return my_label