Example #1
0
 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)
Example #2
0
    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)
Example #3
0
 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)
Example #4
0
 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
Example #6
0
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
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