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)
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)
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
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)
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)
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)