示例#1
0
    def __init__(self, parent=None, title=None):
        super(AbstractInputGroupBox, self).__init__(parent)
        # setup main layout
        QBoxLayout(QBoxLayout.TopToBottom, self)
        self.layout().setAlignment(Qt.AlignTop)

        # create separator
        self.separator = AbstractHLine(self)
        self.separator.setStyleSheet("""
            background-color: rgba{rgba_text};
            margin: 30px;
            """.format(rgba_text=repr(iColor["rgba_text"])))
        self.layout().addWidget(self.separator)

        # set up default attrs
        if title:
            self.setTitle(title)
        self._rgba_border = iColor["rgba_outline"]
        self._padding = AbstractInputGroupBox.PADDING
        self._rgba_background = iColor["rgba_gray_0"]
        self._rgba_text = iColor["rgba_text"]

        # setup display styles
        self.display_background = True
        self.updateStyleSheet()

        font_size = getFontSize(QApplication)
        self.layout().setContentsMargins(self.padding * 3, font_size * 2,
                                         self.padding * 3, font_size)
        self.layout().setSpacing(font_size)
        self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
示例#2
0
    def __init__(self):
        super(AbstractInputWidget, self).__init__()
        # setup default args
        self._key_list = []
        self._orig_value = None
        self._updating = False
        # set up style
        self.rgba_border = iColor["rgba_outline"]
        self.rgba_background = iColor["rgba_gray_0"]
        self.rgba_text = iColor["rgba_text"]

        self.updateStyleSheet()

        font_size = getFontSize(QApplication)
        self.setMinimumSize(font_size * 2, font_size * 2)
示例#3
0
    def data(self, index, role):
        if role in (Qt.DisplayRole, Qt.EditRole):
            try:
                return self.item_list[index.row()][0]
            except IndexError:
                return None

        elif role == Qt.DecorationRole:
            # preflight
            if not self.display_item_colors: return

            # get display color
            try:
                color = QColor(*self.item_list[index.row()][1])
            except IndexError:
                color = QColor(*iColor["rgba_gray_0"])

            # create pixmap/icon
            pixmap = QPixmap(
                getFontSize(QApplication) * 2,
                getFontSize(QApplication) * 0.5)
            pixmap.fill(color)
            icon = QIcon(pixmap)
            return icon
示例#4
0
    def setDirection(self, direction):
        # preflight
        if direction not in [Qt.Horizontal, Qt.Vertical]: return

        # set direction
        self.setOrientation(direction)

        font_size = getFontSize(QApplication)
        # setup minimum sizes
        if direction == Qt.Vertical:
            self.setMinimumSize(font_size * 4, font_size * 6)
        else:
            self.setMinimumSize(font_size * 12, font_size * 2.5)

        # update label
        return AbstractInputGroupFrame.setDirection(self, direction)
示例#5
0
    def updateStyleSheet(self, args={}):
        font_size = getFontSize(QApplication)
        style_sheet_args = iColor.style_sheet_args
        style_sheet_args.update({
            "font_size": font_size,
            "padding": self.padding,
            "paddingX2": (self.padding * 2),
            "rgba_gray_0": repr(self.rgba_background),
            "border_color": repr(self.rgba_border),
            "color": repr(self.rgba_text)
        })
        style_sheet_args.update(args)

        style_sheet = """
            QGroupBox::title{{
                subcontrol-origin: margin;
                subcontrol-position: top center; 
                padding: -{padding}px {paddingX2}px;
                color: rgba{rgba_text};
            }}
            QGroupBox[is_selected=true]::title{{
                subcontrol-origin: margin;
                subcontrol-position: top center; 
                padding: -{padding}px {paddingX2}px;
                color: rgba{rgba_selected};
            }}
            QGroupBox[display_background=true]{{
                background-color: rgba{rgba_gray_0};
                border-width: 1px;
                border-radius: {paddingX2};
                border-style: solid;
                border-color: rgba{border_color};
                margin-top: {font_size};
                margin-bottom: {padding};
                margin-left: {padding};
                margin-right:  {padding};
            }}
            QGroupBox[display_background=false]{{
                background-color: rgba(0,0,0,0);
                border: None;
                margin-top: 1ex;
                margin-bottom: {padding};
                margin-left: {padding};
                margin-right: {padding};
            }}
        """.format(**style_sheet_args)
        self.setStyleSheet(style_sheet)
示例#6
0
    def __init__(self,
                 parent=None,
                 name="None",
                 note="None",
                 direction=Qt.Horizontal,
                 widget_type=StringInputWidget):
        super(LabelledInputWidget, self).__init__(parent, direction)
        AbstractInputGroupFrame.__init__(self, parent, name, note, direction)

        # set up attrs
        self._input_widget = None  #hack to make the setInputBaseClass update work
        self._default_label_length = 125
        self._separator_length = -1
        self._separator_width = 5
        self.__splitter_event_is_paused = False
        self.setInputBaseClass(widget_type)

        # create base widget
        self._input_widget = widget_type(self)
        self._input_widget.setSizePolicy(QSizePolicy.MinimumExpanding,
                                         QSizePolicy.Preferred)

        # add widgets
        self.addWidget(self._label)
        self.addWidget(self._input_widget)

        # set size hints
        font_size = getFontSize(QApplication)
        self._input_widget.setMinimumSize(1, font_size * 2.5)
        self._label.setMinimumSize(font_size * 2, font_size * 2.5)
        #
        self.setStretchFactor(0, 0)
        self.setStretchFactor(1, 1)

        self.resetSliderPositionToDefault()

        # setup style
        self.rgba_background = iColor['rgba_gray_1']

        self.splitterMoved.connect(self.__splitterMoved)