Example #1
0
 def __init__(self, title=None, comment=None, icon=""):
     # self.widget = custom_widgets.SettingsWidget()
     self.dialog = widgets.BaseDialog()
     self.dialog.set_modality("application")
     self.dialog.setMinimumWidth(400)
     self.dialog.title = title
     self.dialog.set_icon(icon)
     self.dialog.set_layout("grid")
     self.dialog.box.set_spacing(20)
     self.dialog.box.set_margin(20)
     for i, (k, item) in enumerate(self._items.items()):
         self.dialog.box[i, item.label_col] = widgets.Label(item.label)
         self.dialog.box[i, item.label_col + 1:item.label_col +
                         3] = item.widget
         item.widget.id = k
         item.widget.value_changed.connect(self.on_update)
         for active in item.active_on:
             item.widget.setEnabled(self._items[active].widget.get_value())
             self._items[active].widget.value_changed.connect(
                 item.widget.setEnabled)
         for active in item.not_active_on:
             item.widget.setDisabled(self._items[active].widget.get_value())
             self._items[active].widget.value_changed.connect(
                 item.widget.setDisabled)
     if comment:
         label = widgets.Label(comment)
         label.setWordWrap(True)
         self.dialog.box[i + 1, 0:3] = label
     button_box = widgets.DialogButtonBox()
     self.ok_btn = button_box.add_default_button(
         "ok", callback=self.dialog.accept)
     button_box.add_default_button("cancel", callback=self.dialog.reject)
     self.dialog.box.append(button_box)
     self.on_update()
Example #2
0
 def __init__(self, title=None, comment=None, icon=""):
     # self.widget = custom_widgets.SettingsWidget()
     self.dialog = widgets.BaseDialog()
     self.dialog.set_modality("application")
     self.dialog.setMinimumWidth(400)
     self.dialog.title = title
     self.dialog.set_icon(icon)
     self.dialog.set_layout("grid")
     self.dialog.box.setSpacing(20)
     self.dialog.box.set_margin(20)
     for i, (k, item) in enumerate(self._items.items()):
         self.dialog.box[i, item.label_col] = widgets.Label(item.label)
         self.dialog.box[i, item.label_col + 1:item.label_col + 3] = item.widget
         item.widget.id = k
         for active in item.active_on:
             item.widget.setEnabled(self._items[active].widget.get_value())
             self._items[active].widget.value_changed.connect(item.widget.setEnabled)
         for active in item.not_active_on:
             item.widget.setDisabled(self._items[active].widget.get_value())
             self._items[active].widget.value_changed.connect(item.widget.setDisabled)
     if comment:
         label = widgets.Label(comment)
         label.setWordWrap(True)
         self.dialog.box[i + 1, 0:3] = label
     self.dialog.add_buttonbox()
Example #3
0
 def __init__(self, parent: QtWidgets.QWidget | None = None):
     super().__init__(parent=parent)
     self.set_layout("grid")
     self.slider = SpanSlider()
     self.label_lower = widgets.Label()
     self.label_upper = widgets.Label()
     self.box[0, 0:3] = self.slider
     self.box[1, 0] = self.label_lower
     self.box[1, 3] = self.label_upper
     self.slider.value_changed.connect(self.on_value_change)
Example #4
0
def test_splitter():
    widget = widgets.Splitter("vertical")
    test = widgets.Label("test")
    test2 = widgets.Label("test2")
    widget.add_widget(test)
    widget += test2
    assert len(widget) == 2
    assert widget[0] == test
    with open("data.pkl", "wb") as jar:
        pickle.dump(widget, jar)
    with open("data.pkl", "rb") as jar:
        widget = pickle.load(jar)
    for item in widget:
        pass
    widget.set_size_policy("expanding", "expanding")
    widget.set_orientation("horizontal")
Example #5
0
 def set_widget(self, widget, row, role: str = "both"):
     if isinstance(widget, str):
         widget = widgets.Label(widget)
     if isinstance(widget, QtWidgets.QLayout):
         self.set_layout(row, ROLES[role], widget)
     else:
         self.setWidget(row, ROLES[role], widget)
Example #6
0
 def __init__(
     self,
     show_flags: bool = True,
     show_error: bool = True,
     parent: QtWidgets.QWidget | None = None,
 ):
     super().__init__(parent=parent)
     self.set_layout("grid")
     self.lineedit = custom_widgets.SingleLineTextEdit()
     self.lineedit.set_syntaxhighlighter("regex")
     self.tb_flags = custom_widgets.BoolDictToolButton(
         "Flags", icon="mdi.flag-variant-outline")
     self.label_error = widgets.Label()
     error_color = self.get_palette().get_color("highlight")
     self.label_error.set_color(error_color)
     self.box[0, 0:1] = self.lineedit
     if show_flags:
         self.box[0, 2] = self.tb_flags
     if show_error:
         self.box[1, 0:2] = self.label_error
     val = custom_validators.RegexPatternValidator()
     val.error_occured.connect(self.label_error.set_text)
     val.pattern_updated.connect(self.value_changed)
     self.tb_flags.value_changed.connect(self._on_value_change)
     self.lineedit.set_validator(val)
     dct = dict(
         multiline="MultiLine",
         ignorecase="Ignore case",
         ascii="ASCII-only matching",
         dotall="Dot matches newline",
         verbose="Ignore whitespace",
     )
     self.tb_flags.set_dict(dct)
Example #7
0
 def set_widget(self,
                widget: str | QtWidgets.QWidget,
                row: int,
                role: RoleStr = "both"):
     if isinstance(widget, str):
         widget = widgets.Label(widget)
     self.setWidget(row, ROLE[role], widget)
Example #8
0
 def add_tooltip_icon(self, text: str):
     label = widgets.Label(text)
     label.setToolTip(text)
     icon = iconprovider.get_icon("mdi.help-circle-outline")
     pixmap = icon.pixmap(20, 20)
     label.setPixmap(pixmap)
     self.box.add(label)
Example #9
0
    def add_separator(self,
                      text: str | None = None,
                      before: QtWidgets.QAction = None) -> QtWidgets.QAction:
        """Adds a separator showing an optional label.

        Args:
            text: Text to show on separator
            before: insert separator before specific action

        Returns:
            Separator action
        """
        if text is None:
            if before:
                return self.insertSeparator(before)
            else:
                return self.addSeparator()
        else:
            label = widgets.Label(text)
            label.setMinimumWidth(self.minimumWidth())
            with label.edit_stylesheet() as ss:
                ss.background.setValue("lightgrey")
            label.set_alignment(horizontal="center")
            if before:
                return self.insertWidget(before, label)
            else:
                return self.addWidget(label)
Example #10
0
def test_statusbar():
    widget = widgets.MainWindow()
    status_bar = widgets.StatusBar()
    status_bar.set_color("black")
    label = widgets.Label("test")
    status_bar.addWidget(label)
    status_bar.setup_default_bar()
    widget.setStatusBar(status_bar)
Example #11
0
def test_label():
    label = widgets.Label()
    label.set_image("")
    label.set_alignment(horizontal="left", vertical="top")
    label.set_text_interaction("by_mouse")
    with open("data.pkl", "wb") as jar:
        pickle.dump(label, jar)
    with open("data.pkl", "rb") as jar:
        label = pickle.load(jar)
    repr(label)
Example #12
0
    def create_dialog(self):
        dialog = widgets.Dialog()
        dialog.set_modality("application")
        dialog.setMinimumWidth(400)
        dialog.set_title(self.dialog_title)
        dialog.set_icon(self.dialog_icon)
        dialog.set_layout("grid")
        dialog.box.set_spacing(10)
        dialog.box.set_margin(20)

        button_box = widgets.DialogButtonBox()
        ok_btn = button_box.add_default_button("ok", callback=dialog.accept)
        button_box.add_default_button("cancel", callback=dialog.reject)
        widget_dict = {k: v.create_widget() for k, v in self._items.items()}
        widget_dict = {k: v for k, v in widget_dict.items() if v is not None}

        def on_update():
            is_valid = all(i.is_valid() if hasattr(i, "is_valid") else True
                           for i in widget_dict.values())
            ok_btn.setEnabled(is_valid)

        for i, (k, item) in enumerate(self._items.items()):
            if k not in widget_dict:
                continue
            dialog.box[i, item.label_col] = widgets.Label(item.label)
            dialog.box[i,
                       item.label_col + 1:item.label_col + 3] = widget_dict[k]
            widget = widget_dict[k]
            widget.set_id(k)
            widget.value_changed.connect(on_update)
            for active in item.enabled_on:
                widget.setEnabled(widget_dict[active].get_value())
                widget_dict[active].value_changed.connect(widget.setEnabled)
            for active in item.disabled_on:
                widget.setDisabled(widget_dict[active].get_value())
                widget_dict[active].value_changed.connect(widget.setDisabled)
        if self.dialog_comment:
            label = widgets.Label(self.dialog_comment)
            label.setWordWrap(True)
            dialog.box[len(self._items) + 1, 0:3] = label
        dialog.box.append(button_box)
        on_update()
        return dialog
Example #13
0
def test_splitter():
    widget = widgets.Splitter("vertical")
    test = widgets.Label("test")
    test2 = widgets.Label("test2")
    widget.add_widget(test)
    widget += test2
    assert len(widget) == 2
    assert widget[0] == test
    with open("data.pkl", "wb") as jar:
        pickle.dump(widget, jar)
    with open("data.pkl", "rb") as jar:
        widget = pickle.load(jar)
    for item in widget:
        pass
    widget.set_size_policy("expanding", "expanding")
    widget.set_orientation("horizontal")
    with pytest.raises(ValueError):
        widget.set_orientation("test")
    widget.add_layout(widgets.BoxLayout("horizontal"))
    widgets.Splitter.from_widgets([widgets.Widget()])
Example #14
0
 def __init__(self, parent=None, text=None):
     super().__init__(parent=parent)
     self.timer = core.Timer.single_shot(callback=self.close)
     self.label = widgets.Label()
     self.setWindowFlags(self.windowFlags() | QtCore.Qt.Tool
                         | QtCore.Qt.WindowStaysOnTopHint
                         | QtCore.Qt.FramelessWindowHint)
     layout = widgets.BoxLayout("vertical")
     layout.setContentsMargins(20, 20, 20, 20)
     self.setLayout(layout)
     self.setStyleSheet("background-color: black;")  # 2a82da
     layout.addWidget(self.label)
Example #15
0
    def set_spanning_widget(self, row: int, widget):
        """set a widget spanning label and field position at given row

        Args:
            row: Row offset
            widget: widget / layout to get added to layout
        """
        if isinstance(widget, str):
            widget = widgets.Label(widget)
        if isinstance(widget, QtWidgets.QLayout):
            self.setLayout(row, self.SpanningRole, widget)
        else:
            self.setWidget(row, self.SpanningRole, widget)
Example #16
0
    def set_label_widget(self, row: int, widget):
        """set a widget for the label position at given row

        Args:
            row: Row offset
            widget: widget to get added to layout
        """
        if isinstance(widget, str):
            widget = widgets.Label(widget)
        if isinstance(widget, QtWidgets.QLayout):
            self.setLayout(row, self.LabelRole, widget)
        else:
            self.setWidget(row, self.LabelRole, widget)
Example #17
0
 def __init__(self,
              parent: QtWidgets.QWidget | None = None,
              text: str | None = None):
     super().__init__(parent=parent)
     self.timer = core.Timer.single_shot(callback=self.close)
     self.label = widgets.Label()
     self.set_flags(stay_on_top=True, frameless=True, tool=True)
     layout = widgets.BoxLayout("vertical")
     layout.set_margin(20)
     self.set_layout(layout)
     self.set_background_color("black")
     self.label.set_color("white")
     layout.add(self.label)
Example #18
0
def test_label():
    label = widgets.Label()
    label.set_image("")
    label.set_text("testus")
    label.set_alignment(horizontal="left", vertical="top")
    label.set_text_interaction("by_mouse")
    with pytest.raises(ValueError):
        label.set_text_interaction("test")
    # assert label.get_text_interaction() == "by_mouse"
    with open("data.pkl", "wb") as jar:
        pickle.dump(label, jar)
    with open("data.pkl", "rb") as jar:
        label = pickle.load(jar)
    repr(label)
Example #19
0
 def __init__(
     self,
     text: str | None = None,
     tooltip: str = "",
     icon: types.IconType = "mdi.help-circle-outline",
     parent: QtWidgets.QWidget | None = None,
 ):
     super().__init__(parent=parent)
     self.set_layout("horizontal")
     self.label = widgets.Label(text)
     self.label.setMargin(10)
     self.label.set_size_policy(horizontal="minimum")
     self.tooltip = tooltip
     icon = iconprovider.get_icon(icon)
     self.icon = widgets.Label()
     self.icon.setToolTip(tooltip)
     self.icon.set_size_policy(horizontal="minimum")
     pixmap = icon.pixmap(20, 20)
     self.icon.setPixmap(pixmap)
     self.box.add(self.label)
     self.box.add(self.icon)
     self.box.setSpacing(0)
     self.box.addStretch()
Example #20
0
def test_statusbar():
    widget = widgets.MainWindow()
    status_bar = widgets.StatusBar()
    status_bar.set_color("black")
    label = widgets.Label("test")
    status_bar.addWidget(label)
    status_bar.setup_default_bar()
    status_bar.show_message("test")
    status_bar.add_action(widgets.Action())
    status_bar += widgets.Action()
    widget.setStatusBar(status_bar)
    status_bar.add_widget(widgets.Widget())
    status_bar += widgets.Widget()
    status_bar.add_widget(widgets.Widget(), permanent=True)
Example #21
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.tool_tip = widgets.Label()
     self.tool_tip.set_flags(frameless=True, tooltip=True)
     self.tool_tip.set_attributes(
         transparent_for_mouse_events=True,
         no_system_background=True,
         translucent_background=True,
     )
     self.tool_tip.hide()
     self.slide_anim = custom_animations.SlideAnimation(duration=1000)
     self.slide_anim.apply_to(self.tool_tip)
     self.fade_anim = custom_animations.FadeInAnimation(duration=1000)
     self.fade_anim.apply_to(self.tool_tip)
     self.animation = self.slide_anim | self.fade_anim
Example #22
0
    def _separator(self, text: str) -> widgets.WidgetAction:
        """returns a separator showing a label

        Args:
            text: Text to show on separator

        Returns:
            Separator widget
        """
        label = widgets.Label(text)
        label.setMinimumWidth(self.minimumWidth())
        label.setStyleSheet("background:lightgrey")
        label.set_alignment(horizontal="center")
        separator = widgets.WidgetAction(self)
        separator.setDefaultWidget(label)
        return separator
Example #23
0
    def add_separator(self, text: str | None = None) -> widgets.WidgetAction:
        """Adds a separator showing an optional label.

        Args:
            text: Text to show on separator

        Returns:
            Separator action
        """
        separator = widgets.WidgetAction(parent=self)
        if text is None:
            separator.setSeparator(True)
        else:
            label = widgets.Label(text)
            label.setMinimumWidth(self.minimumWidth())
            with label.edit_stylesheet() as ss:
                ss.background.setValue("lightgrey")
            label.set_alignment(horizontal="center")
            separator.setDefaultWidget(label)
            separator.setEnabled(False)
        self.add(separator)
        return separator
Example #24
0
 def __init__(self, parent: QtWidgets.QWidget | None = None):
     super().__init__(parent)
     layout = widgets.BoxLayout("horizontal")
     row_nb = 14
     cindex = 0
     for k, v in widgets.style.STANDARD_PIXMAP.items():
         if cindex == 0:
             col_layout = widgets.BoxLayout("vertical")
         icon_layout = widgets.BoxLayout("horizontal")
         icon = widgets.Application.get_style_icon(k)
         label = widgets.Label()
         label.setPixmap(icon.pixmap(32, 32))
         icon_layout.addWidget(label)
         icon_layout.addWidget(widgets.LineEdit(k))
         col_layout.addLayout(icon_layout)
         cindex = (cindex + 1) % row_nb
         if cindex == 0:
             layout.addLayout(col_layout)
     self.set_layout(layout)
     self.set_title("Standard Platform Icons")
     icon = widgets.Application.get_style_icon("titlebar_menu_button")
     self.set_icon(icon)
Example #25
0
def test_label():
    widget = widgets.Label()
    widget.show()
    widget.close()
Example #26
0
        pos = self.getItemPosition(index)
        return pos[0], ROLES.inv[pos[1]]

    @classmethod
    def from_dict(cls, dct, parent=None):
        formlayout = cls(parent)
        for i, (k, v) in enumerate(dct.items(), start=1):
            if k is not None:
                formlayout[i, "left"] = k
            if v is not None:
                formlayout[i, "right"] = v
        return formlayout

    def add(self, item):
        if isinstance(item, (QtWidgets.QWidget, QtWidgets.QLayout)):
            self.addRow(item)
        if isinstance(item, tuple):
            self.addRow(*item)


if __name__ == "__main__":
    app = widgets.app()
    dct = {"key": widgets.Label("test"),
           None: widgets.Label("test 2")}
    layout = FormLayout.from_dict(dct)
    layout[3] = "hellooo"
    widget = widgets.Widget()
    widget.set_layout(layout)
    widget.show()
    app.exec_()
Example #27
0
        self.progress_bar.hide()
        self.progress_bar.setRange(0, 0)
        self.progress_bar.setFixedSize(200, 20)
        self.progress_bar.setTextVisible(False)
        self.addPermanentWidget(self.progress_bar)

    def add_action(self, action):
        self.addAction(action)

    def set_color(self, color):
        self.setStyleSheet(f"background-color: {color};")

    def add_widget(self, widget, permanent=False):
        if permanent:
            self.addPermanentWidget(widget)
        else:
            self.addWidget(widget)


if __name__ == "__main__":
    app = widgets.app()
    dlg = widgets.MainWindow()
    status_bar = StatusBar()
    status_bar.set_color("black")
    label = widgets.Label("test")
    status_bar.addWidget(label)
    status_bar.setup_default_bar()
    dlg.setStatusBar(status_bar)
    dlg.show()
    app.exec_()
Example #28
0
 def create_label(text: str):
     label = widgets.Label(text)
     label.setFrameStyle(widgets.Frame.Box | widgets.Frame.Raised)
     return label
Example #29
0
 def __init__(
     self,
     title: str = "Regex Editor",
     regex: str = "",
     teststring: str = "",
     parent: QtWidgets.QWidget | None = None,
 ):
     super().__init__(parent)
     self.resize(1200, 800)
     self.set_title(title)
     self.set_icon("mdi.regex")
     self.set_layout("horizontal")
     self.left_layout = widgets.BoxLayout("vertical")
     self.right_layout = widgets.BoxLayout("vertical")
     self.prog: Pattern | None = None
     self.matches: list[Match] = list()
     self.groupbox = widgets.GroupBox(title="Regular expression")
     self.grid = widgets.GridLayout(self.groupbox)
     self.layout_toprow = widgets.BoxLayout("horizontal")
     self.regexinput = custom_widgets.RegexInput()
     self.regexinput.set_min_size(400, 0)
     self.layout_toprow.add(self.regexinput)
     self.grid.add(self.layout_toprow, 1, 0)
     self.left_layout.add(self.groupbox)
     self.groupbox_teststring = widgets.GroupBox(title="Test strings")
     self.groupbox_teststring.set_layout("grid")
     self.textedit_teststring = widgets.PlainTextEdit(teststring)
     self.textedit_teststring.set_min_size(400, 0)
     self.groupbox_teststring.box.add(self.textedit_teststring, 0, 0)
     self.label_num_matches = widgets.Label("No match")
     self.label_num_matches.set_alignment("center")
     self.left_layout.add(self.groupbox_teststring)
     self.groupbox_sub = widgets.GroupBox(title="Substitution", checkable=True)
     self.layout_sub = widgets.GridLayout(self.groupbox_sub)
     self.lineedit_sub = widgets.LineEdit()
     self.lineedit_sub.textChanged.connect(self.update_sub_textedit)
     self.textedit_sub = widgets.PlainTextEdit()
     self.textedit_sub.set_min_size(400, 0)
     self.textedit_sub.set_read_only()
     self.layout_sub.add(self.lineedit_sub, 0, 0)
     self.layout_sub.add(self.textedit_sub, 1, 0)
     self.left_layout.add(self.groupbox_sub)
     self.cb_quickref = widgets.CheckBox("Show Regular Expression Quick Reference")
     self.left_layout.add(self.cb_quickref)
     self.table_matches = widgets.TableView()
     self.table_matches.setup_list_style()
     self.box.add(self.left_layout)
     self.box.add(self.right_layout)
     self.right_layout.add(self.label_num_matches)
     self.right_layout.add(self.table_matches)
     model = custom_models.RegexMatchesModel()
     self.table_matches.set_model(model)
     self.table_matches.setColumnWidth(0, 60)
     self.table_matches.setColumnWidth(1, 60)
     self.groupbox_sub.toggled.connect(self.lineedit_sub.setVisible)
     self.groupbox_sub.toggled.connect(self.textedit_sub.setVisible)
     doc = self.textedit_teststring.document()
     self._highlighter = RegexMatchHighlighter(doc)
     self._highlighter.rehighlight()
     self.cb_quickref.stateChanged.connect(self.quick_ref_requested)
     self.regexinput.value_changed.connect(self._update_view)
     self.textedit_teststring.textChanged.connect(self._update_view)
     self.regexinput.pattern = regex
     self._update_view()
Example #30
0
        return not self._is_collapsed

    def expand(self):
        self._button.set_arrow_type("down")
        self._panel.setVisible(True)
        self._is_collapsed = False
        self.set_size_policy("minimum_expanding", "minimum_expanding")

    def collapse(self):
        self._panel.setVisible(False)
        self._button.set_arrow_type("right")
        self._is_collapsed = True
        self.set_size_policy("preferred", "preferred")

    @core.Slot()
    def on_button_click(self):
        if self._is_collapsed:
            self.expand()
            self.expanded.emit()
        else:
            self.collapse()
            self.collapsed.emit()


if __name__ == "__main__":
    app = widgets.app()
    widget = CollapsibleFrame()
    widget.add_widget(widgets.Label("test"))
    widget.show()
    app.main_loop()