class VariablesTool(DockTool): """docstring for Variables tool.""" def __init__(self): super(VariablesTool, self).__init__() self.setMinimumSize(QtCore.QSize(200, 50)) self.content = QWidget() self.content.setObjectName("VariablesToolContent") self.verticalLayout = QVBoxLayout(self.content) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.setWidget(self.content) @staticmethod def getIcon(): return QtGui.QIcon(":variable.png") @staticmethod def isSingleton(): return True def onShow(self): super(VariablesTool, self).onShow() varsWidget = VariablesWidget(self.pyFlowInstance) self.pyFlowInstance.fileBeenLoaded.connect(varsWidget.actualize) self.verticalLayout.addWidget(varsWidget) @staticmethod def toolTip(): return "Variables editing/creation" @staticmethod def name(): return str("Variables")
class VariablesTool(DockTool): """docstring for Variables tool.""" def __init__(self): super(VariablesTool, self).__init__() self.setMinimumSize(QtCore.QSize(200, 50)) self.content = QWidget() self.content.setObjectName("VariablesToolContent") self.verticalLayout = QVBoxLayout(self.content) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.setWidget(self.content) @staticmethod def getIcon(): return QtGui.QIcon(RESOURCES_DIR + "/variable.png") @staticmethod def isSingleton(): return True def onShow(self): super(VariablesTool, self).onShow() self.verticalLayout.addWidget(VariablesWidget(self.canvas)) @staticmethod def toolTip(): return "Variables editing/creation" @staticmethod def name(): return str("Variables")
class NodesBox(QWidget): """doc string for NodesBox""" def __init__(self, parent, canvas=None): super(NodesBox, self).__init__(parent) self.canvasRef = weakref.ref(canvas) self.verticalLayout = QVBoxLayout(self) self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setContentsMargins(4, 4, 4, 4) self.lineEdit = NodeBoxLineEdit(self) self.lineEdit.setObjectName("lineEdit") self.verticalLayout.addWidget(self.lineEdit) self.treeWidget = NodeBoxTreeWidget(self) self.treeWidget.setObjectName("treeWidget") self.treeWidget.headerItem().setText(0, "1") self.verticalLayout.addWidget(self.treeWidget) self.lineEdit.textChanged.connect(self.leTextChanged) self.treeWidget.refresh() def sizeHint(self): return QtCore.QSize(400, 250) def expandCategory(self): for i in self.treeWidget.categoryPaths: self.treeWidget.setItemExpanded(self.treeWidget.categoryPaths[i], True) def leTextChanged(self): if self.lineEdit.text() == '': self.lineEdit.setPlaceholderText("enter node name..") self.treeWidget.refresh() return self.treeWidget.refresh(None, self.lineEdit.text()) self.expandCategory()
class HistoryTool(DockTool): """docstring for History tool.""" def __init__(self): super(HistoryTool, self).__init__() self.setMinimumSize(QtCore.QSize(200, 50)) self.content = QWidget() self.content.setObjectName("historyToolContent") self.verticalLayout = QVBoxLayout(self.content) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.undoStackView = QUndoView(self) self.undoStackView.setObjectName("undoStackView") self.verticalLayout.addWidget(self.undoStackView) self.setWidget(self.content) @staticmethod def getIcon(): return QtGui.QIcon(RESOURCES_DIR + "/history.png") def onShow(self): super(HistoryTool, self).onShow() self.undoStackView.setStack(self.canvas.undoStack) @staticmethod def defaultDockArea(): return QtCore.Qt.LeftDockWidgetArea @staticmethod def toolTip(): return "Undo stack" @staticmethod def name(): return str("History")
def __init__(self, value, data, attr, particleNum, numColumns, parent=None): QWidget.__init__(self, parent) self.value = value self.data = data self.attr = attr self.particleNum = particleNum self.setFrameShape(QFrame.NoFrame) self.name = 'AttrWidget{}'.format(AttrWidget.widgetNumber) self.setObjectName(self.name) AttrWidget.widgetNumber += 1 self.withBorderStyle = '#%s {border: 1px solid dodgerblue;}' % self.name self.noBorderStyle = '#%s {border: 0px;}' % self.name self.setStyleSheet(self.noBorderStyle) layout = QVBoxLayout() layout.setContentsMargins(0,0,0,0) self.setLayout(layout) idx = 0 self.items = [] self.textValues = [] numRows = int(math.ceil(len(value) / float(numColumns))) for _ in range(numRows): row = QHBoxLayout() layout.addLayout(row) for _ in range(numColumns): item = NumericalEdit(value[idx]) self.textValues.append(str(value[idx])) item.editingFinished.connect(self.applyEdit) row.addWidget(item, Qt.AlignHCenter|Qt.AlignTop) self.items.append(item) idx += 1 if idx == len(self.value): break
class Counters(QScrollArea): button_clicked = Signal(object, object) SPACING = 2 def __init__(self, parent=None): QScrollArea.__init__(self, parent) self.setWidgetResizable(True) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self._layout = QVBoxLayout() self._layout.setContentsMargins(0, 0, 0, 0) self._layout.setSpacing(Counters.SPACING) widget = QWidget() widget.setLayout(self._layout) self.setWidget(widget) self.setFixedWidth(200) self.checked_buttons = dict() def set(self, counters): previous_buttons = self.checked_buttons.copy() self.clear() for column, counter in counters.items(): for entry, value in counter.items(): checked = previous_buttons.get(entry, False) self.checked_buttons[entry] = checked button = QPushButton('{} {}'.format(entry, value)) button.setProperty(PROPERTY_SIDE_STROKED, checked) button.clicked.connect(self._clicked) self._layout.addWidget(button) self._layout.addWidget(QLabel()) self._layout.addWidget(QWidget()) self._layout.setStretch(self._layout.count() - 1, 100) def clear(self): clear_layout(self._layout) self.checked_buttons = dict() def _clicked(self): button = self.sender() checked = not button.property(PROPERTY_SIDE_STROKED) entry = button.text().split()[0] self.checked_buttons[entry] = checked button.setProperty(PROPERTY_SIDE_STROKED, checked) self.button_clicked.emit(entry, self.checked_buttons)
def get_horizontal_separator(): v_div_w = QWidget() v_div_l = QVBoxLayout() v_div_l.setAlignment(Qt.AlignLeft) v_div_l.setContentsMargins(0, 0, 0, 0) v_div_l.setSpacing(0) v_div_w.setLayout(v_div_l) v_div = QFrame() v_div.setMinimumHeight(30) v_div.setFrameShape(QFrame.VLine) v_div.setFrameShadow(QFrame.Sunken) v_div_l.addWidget(v_div) return v_div_w
def _build_ui(self): self._lyt_grid.setContentsMargins(0, 0, 0, 0) self._lyt_grid.setSpacing(10) self._lyt_grid.setAlignment(Qt.AlignTop | Qt.AlignLeft) scroll_area = QScrollArea() scroll_area.setFrameStyle(0) scroll_area.setWidget(QWidget()) scroll_area.widget().setLayout(self._lyt_grid) scroll_area.setWidgetResizable(True) lyt_main = QVBoxLayout() lyt_main.setContentsMargins(0, 0, 0, 0) lyt_main.setSpacing(0) lyt_main.addWidget(scroll_area) lyt_main.addWidget(self._toolbar) self.setLayout(lyt_main)
def __init__(self, name='modelPanelWidget', **kwargs): super(ModelPanelWidget, self).__init__(**kwargs) unique_name = name + str(id(self)) self.setObjectName(unique_name + 'Widget') main_layout = QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setObjectName(unique_name + 'Layout') self.setLayout(main_layout) maya.cmds.setParent(main_layout.objectName()) pane_layout_name = maya.cmds.paneLayout() self._model_panel = maya.cmds.modelPanel(unique_name, label="ModelPanel", menuBarVisible=False) pane_layout_widget = gui.to_qt_object(pane_layout_name) main_layout.addWidget(pane_layout_widget) self.set_model_panel_options() self.hide_bar_layout() self.hide_menu_bar()
class TextEditDialog(QDialog): def __init__(self, font, textColor, parent=None): super(TextEditDialog, self).__init__(parent) self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) self.resize(QtCore.QSize(400, 300)) self.layout = QVBoxLayout(self) self.layout.setContentsMargins(2, 2, 2, 2) self.te = TextEditingField() self.te.accepted.connect(self.onAccept) self._font = QtGui.QFont(font) self.te.setTextColor(textColor) self.layout.addWidget(self.te) self.buttons = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self) self.buttons.accepted.connect(self.onAccept) self.buttons.rejected.connect(self.onReject) self.layout.addWidget(self.buttons) self._result = None def zoomIn(self, factor): self.te.zoomIn(factor) def setHtml(self, html): self.te.setHtml(html) self.te.selectAll() self.te.setFontPointSize(20) cursor = self.te.textCursor() cursor.clearSelection() cursor.movePosition(QtGui.QTextCursor.End) self.te.setTextCursor(cursor) def onReject(self): self._result = "", False self.reject() def getResult(self): return self._result def onAccept(self): self.te.selectAll() self.te.setFontPointSize(self._font.pointSize()) self._result = self.te.toHtml(), True self.accept()
def __init__(self, value, data, attr, particleNum, numColumns, parent=None): QWidget.__init__(self, parent) self.value = value self.data = data self.attr = attr self.particleNum = particleNum self.setFrameShape(QFrame.NoFrame) self.name = 'AttrWidget{}'.format(AttrWidget.widgetNumber) self.setObjectName(self.name) AttrWidget.widgetNumber += 1 self.withBorderStyle = '#%s {border: 1px solid dodgerblue;}' % self.name self.noBorderStyle = '#%s {border: 0px;}' % self.name self.setStyleSheet(self.noBorderStyle) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) idx = 0 self.items = [] self.textValues = [] numRows = int(math.ceil(len(value) / float(numColumns))) for _ in range(numRows): row = QHBoxLayout() layout.addLayout(row) for _ in range(numColumns): item = NumericalEdit(value[idx]) self.textValues.append(str(value[idx])) item.editingFinished.connect(self.applyEdit) row.addWidget(item, Qt.AlignHCenter | Qt.AlignTop) self.items.append(item) idx += 1 if idx == len(self.value): break
class TextEditDialog(QDialog): def __init__(self, font, textColor, parent=None): super(TextEditDialog, self).__init__(parent) self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) self.resize(QtCore.QSize(400, 300)) self.layout = QVBoxLayout(self) self.layout.setContentsMargins(2, 2, 2, 2) self.te = QTextEdit() self._font = font self._font = QtGui.QFont(font) self.te.setFont(self._font) self.te.setTextColor(textColor) self.layout.addWidget(self.te) self.buttons = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self) self.buttons.accepted.connect(self.onAccept) self.buttons.rejected.connect(self.onReject) self.layout.addWidget(self.buttons) self._result = None self.te.textChanged.connect( lambda color=textColor: self.te.setTextColor(color)) def zoomIn(self, factor): self.te.zoomIn(factor) def setHtml(self, html): self.te.setHtml(html) def onReject(self): self._result = "", False self.reject() def getResult(self): return self._result def onAccept(self): self.te.selectAll() # self._font.setPointSize(self.initialPointSize) self.te.setFont(self._font) self._result = self.te.toHtml(), True self.accept()
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, url: QUrl) -> None: super().__init__() self.setupUi(self) self.m_cookies = [] self.m_urlLineEdit.setText(url.toString()) self.m_layout = QVBoxLayout() self.m_layout.addItem( QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.m_layout.setContentsMargins(0, 0, 0, 0) self.m_layout.setSpacing(0) w = QWidget() p = w.palette() p.setColor(self.widget.backgroundRole(), Qt.white) w.setPalette(p) w.setLayout(self.m_layout) self.m_scrollArea.setWidget(w) self.m_scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.m_scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.m_urlButton.clicked.connect(self.handleUrlClicked) self.m_deleteAllButton.clicked.connect(self.handleDeleteAllClicked) self.m_newButton.clicked.connect(self.handleNewClicked) self.m_store: QWebEngineCookieStore = self.m_webview.page().profile( ).cookieStore() self.m_store.cookieAdded.connect(self.handleCookieAdded) self.m_store.loadAllCookies() self.m_webview.load(url) def containsCookie(self, cookie: QNetworkCookie): for c in self.m_cookies: if c.hasSameIdentifier(cookie): return True return False @Slot(QNetworkCookie) def handleCookieAdded(self, cookie: QNetworkCookie): if self.containsCookie(cookie): return widget = CookieWidget(cookie) widget.setHighlighted(len(self.m_cookies) % 2) self.m_cookies.append(QNetworkCookie(cookie)) self.m_layout.insertWidget(0, widget) widget.deleteClicked.connect( partial(self._on_deleteClicked, QNetworkCookie(cookie), widget)) widget.viewClicked.connect( partial(self._on_viewClicked, QNetworkCookie(cookie))) def _on_deleteClicked(self, cookie: QNetworkCookie, widget: QWidget): self.m_store.deleteCookie(QNetworkCookie(cookie)) # FIXME # sip.delete(widget) self.m_cookies.remove(cookie) for i in range(self.m_layout.count() - 1, -1, -1): w = self.m_layout.itemAt(i).widget() if isinstance(w, CookieWidget): w.setHighlighted(i % 2) def _on_viewClicked(self, cookie): dialog = CookieDialog(cookie) dialog.exec_() @Slot() def handleDeleteAllClicked(self): self.m_store.deleteAllCookies() for i in range(self.m_layout.count() - 1, -1, -1): w = self.m_layout.itemAt(i).widget() if w: sip.delete(w) self.m_cookies.clear() @Slot() def handleNewClicked(self): dialog = CookieDialog() if dialog.exec_() == QDialog.Accepted: self.m_store.setCookie(QNetworkCookie(dialog.cookie())) @Slot() def handleUrlClicked(self): self.m_webview.load(QUrl.fromUserInput(self.m_urlLineEdit.text()))