Exemplo n.º 1
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)
    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
Exemplo n.º 3
0
 def __init__(self, button: Gtk.Widget, subreddit_name: str):
     self._subreddit_name = subreddit_name
     button.connect('clicked', self.__clicked_cb)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
 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