示例#1
0
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")
示例#2
0
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")
示例#3
0
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()
示例#4
0
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")
示例#5
0
文件: partedit.py 项目: wdas/partio
    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
示例#6
0
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)
示例#7
0
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
示例#8
0
    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)
示例#9
0
    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()
示例#11
0
    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
示例#12
0
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()
示例#13
0
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()))