Esempio n. 1
0
    def metadata_window_cursor_layout(self, layout: QtWidgets.QLayout,
                                      cursor: QtGui.QCursor) -> None:
        try:
            if layout is None:
                return
            r = []
            i = layout.count()
            while i > 0:
                i -= 1
                r.append(i)

            for i in r:
                child = layout.itemAt(i)
                # print(child)
                if isinstance(child, QtWidgets.QWidgetItem):
                    try:
                        if isinstance(child.widget(), QtWidgets.QPushButton):
                            if child.widget().objectName(
                            ) == 'label_cover_view':
                                continue
                            child.widget().setCursor(cursor)
                    except Exception:
                        traceback.print_exc()
                elif isinstance(child, QtWidgets.QSpacerItem):
                    ''
                elif isinstance(
                        child, (QtWidgets.QLayoutItem, QtWidgets.QHBoxLayout,
                                QtWidgets.QVBoxLayout, QtWidgets.QGridLayout)):
                    self.metadata_window_cursor_layout(child, cursor)
                del child
        except Exception:
            traceback.print_exc()
Esempio n. 2
0
    def metadata_window_clear_layout(self, layout: QtWidgets.QLayout) -> None:
        if layout is None:
            return
        r = []
        i = layout.count()
        while i > 0:
            i -= 1
            r.append(i)

        for i in r:
            child = layout.itemAt(i)
            # print(child)
            if isinstance(child, QtWidgets.QWidgetItem):
                try:
                    child.widget().setVisible(False)
                    layout.removeWidget(child.widget())
                    # child.widget().deleteLater()
                except Exception:
                    traceback.print_exc()
            elif isinstance(child, QtWidgets.QSpacerItem):
                layout.removeItem(child)
            elif isinstance(child,
                            (QtWidgets.QLayoutItem, QtWidgets.QHBoxLayout)):
                self.metadata_window_clear_layout(child)
                layout.removeItem(child)
            del child
Esempio n. 3
0
def get_layout_widgets(layout: QLayout) -> Iterator[QWidget]:
    for i in range(layout.count()):
        item = layout.itemAt(i)
        sub_layout = item.layout()
        if sub_layout:
            yield from get_layout_widgets(sub_layout)
        else:
            widget = item.widget()
            if widget:
                yield widget
Esempio n. 4
0
 def __init__(self, pane_selectors_layout: QLayout,
              panes_layout: QStackedLayout, pane: QWidget, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.setProperty('pane-selector', 'true')
     self.setFlat(panes_layout.currentWidget() != pane)
     self.setCursor(Qt.PointingHandCursor)
     self.released.connect(lambda: [
         pane_selectors_layout.itemAt(i).widget().setFlat(True)
         for i in range(0, pane_selectors_layout.count())
     ])
     self.released.connect(lambda: self.setFlat(False))
     self.released.connect(lambda: panes_layout.setCurrentWidget(pane))
Esempio n. 5
0
    def setJSONKwargs(self, setFunction, layout:QtWidgets.QLayout, allowedtype:type):
        """ Used to convert each row to a settings.Test row

        Args:
            setFunction (method): The function belonging to each type in the layout
            layout (QtWidgets.QLayout): the layout to parse through
            allowedtype (type): The type of Widget with the layout 
        """
        items = [layout.itemAt(i).widget() for i in range(layout.count()) ]
        for item in items: 
            if not issubclass(type(item),Row): continue
            setFunction(**item.getKwargs())
        return
Esempio n. 6
0
def clear_layout(layout: QLayout):
    """
    Clear all widgets from a QLayout.

    :param layout:
    :return:
    """
    widget_count = layout.count()
    for i in reversed(range(widget_count)):
        item = layout.itemAt(i)
        if isinstance(item, QWidgetItem):
            item.widget().close()
        else:
            clear_layout(item.layout())
        # Remove item from layout
        layout.removeItem(item)
Esempio n. 7
0
def remove_trailing_spacer_from_layout(layout: QLayout):
    """
    If the last item in the layout is spacer, removes it.
    :param layout: target layout
    :return: bool success indicator
    """
    ni = layout.count()
    if ni < 1:
        return False
    ni -= 1
    layout_item = layout.itemAt(ni)
    if layout_item is None:
        return False
    spacer_item = layout_item.spacerItem()
    if spacer_item is not None:
        layout.removeItem(spacer_item)
        return True
    return False
Esempio n. 8
0
def remove_layout_items(layout: QLayout):
    for widget in get_layout_widgets(layout):
        widget.deleteLater()
    while layout.count():
        item = layout.itemAt(0)
        layout.removeItem(item)
Esempio n. 9
0
 def _remove_widgets_from(self, layout: QLayout) -> None:
     for index in reversed(range(layout.count())):
         widget = layout.itemAt(index).widget()
         layout.removeWidget(widget)
         widget.setParent(None)
Esempio n. 10
0
 def _unselect_all_widgets_in(self, layout: QLayout) -> None:
     for index in reversed(range(layout.count())):
         widget = layout.itemAt(index).widget()
         widget.clear_selection()
Esempio n. 11
0
def clear_layout(qlayout: QLayout):
    """Removes all children of a layout."""
    for i in reversed(range(qlayout.count())):
        item = qlayout.itemAt(i)
        qlayout.removeItem(item)
        item.widget().deleteLater()
Esempio n. 12
0
def clearLayout(layout: QtWidgets.QLayout):
    for i in reversed(range(layout.count())):
        widget = layout.itemAt(i).widget()
        layout.removeWidget(widget)
        widget.setParent(None)
        widget.deleteLater()
Esempio n. 13
0
def widgetsOf(layout: QtWidgets.QLayout):
    return (layout.itemAt(i).widget() for i in range(layout.count()))
Esempio n. 14
0
def clear_layout(layout: QtWidgets.QLayout) -> None:
    for i in reversed(range(layout.count())):
        layout.itemAt(i).widget().setParent(None)