コード例 #1
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        # look manager layout
        layout = QtWidgets.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(10)

        # Looks from database
        title = QtWidgets.QLabel("Looks")
        title.setAlignment(QtCore.Qt.AlignCenter)
        title.setStyleSheet("font-weight: bold; font-size: 12px")
        title.setAlignment(QtCore.Qt.AlignCenter)

        model = models.LookModel()

        # Proxy for dynamic sorting
        proxy = QtCore.QSortFilterProxyModel()
        proxy.setSourceModel(model)

        view = views.View()
        view.setModel(proxy)
        view.setMinimumHeight(180)
        view.setToolTip("Use right mouse button menu for direct actions")
        view.customContextMenuRequested.connect(self.right_mouse_menu)
        view.sortByColumn(0, QtCore.Qt.AscendingOrder)

        layout.addWidget(title)
        layout.addWidget(view)

        self.view = view
        self.model = model
コード例 #2
0
    def __init__(self, parent=None):
        super(ComparingTable, self).__init__(parent=parent)

        data = {
            "model": models.ComparerModel(),
            "proxy": QtCore.QSortFilterProxyModel(),
            "view": QtWidgets.QTreeView(),
            "diff": delegates.DiffDelegate(),
            "path": delegates.PathTextDelegate(),
        }

        data["view"].setIndentation(20)
        data["view"].setStyleSheet("""
            QTreeView::item{
                padding: 6px 1px;
                border: 0px;
            }
        """)
        data["view"].setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        data["view"].setAllColumnsShowFocus(True)
        data["view"].setAlternatingRowColors(True)
        data["view"].setSortingEnabled(True)
        data["view"].setSelectionBehavior(
            QtWidgets.QAbstractItemView.SelectItems)
        data["view"].setSelectionMode(
            QtWidgets.QAbstractItemView.ExtendedSelection)

        header = data["view"].header()
        header.setMinimumSectionSize(delegates.DiffDelegate.ICON_SPACE)

        # Delegate
        diff_delegate = data["diff"]
        column = data["model"].Columns.index("diff")
        data["view"].setItemDelegateForColumn(column, diff_delegate)

        path_delegate = data["path"]
        column = data["model"].Columns.index(SIDE_A)
        data["view"].setItemDelegateForColumn(column, path_delegate)
        column = data["model"].Columns.index(SIDE_B)
        data["view"].setItemDelegateForColumn(column, path_delegate)

        # Set Model
        data["proxy"].setSourceModel(data["model"])
        data["view"].setModel(data["proxy"])

        layout = QtWidgets.QHBoxLayout(self)
        layout.addWidget(data["view"])

        # Connect
        data["view"].customContextMenuRequested.connect(self.on_context_menu)

        # Init

        data["view"].setColumnWidth(0, 90)  # "diff" column
        data["view"].setColumnWidth(1, 310)   # "side A" column

        self.data = data
コード例 #3
0
ファイル: widgets.py プロジェクト: VSPipe/reveries-config
    def __init__(self, parent=None):
        super(SequenceWidget, self).__init__(parent=parent)

        data = {
            "model": SequenceModel(),
            "proxy": QtCore.QSortFilterProxyModel(),
            "view": QtWidgets.QTreeView(),
            "fpatternDel": None,
            "nameDel": None,
        }

        data["proxy"].setSourceModel(data["model"])
        data["view"].setModel(data["proxy"])
        data["fpatternDel"] = delegates.LineHTMLDelegate(data["view"])
        data["nameDel"] = delegates.NameEditDelegate()

        fpattern_delegate = data["fpatternDel"]
        column = data["model"].Columns.index("fpattern")
        data["view"].setItemDelegateForColumn(column, fpattern_delegate)

        name_delegate = data["nameDel"]
        column = data["model"].Columns.index("name")
        data["view"].setItemDelegateForColumn(column, name_delegate)

        data["proxy"].setSortCaseSensitivity(QtCore.Qt.CaseInsensitive)
        data["view"].setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        data["view"].setSelectionMode(ExtendedSelection)
        data["view"].setSortingEnabled(True)
        data["view"].sortByColumn(0, QtCore.Qt.AscendingOrder)
        data["view"].setAlternatingRowColors(True)
        data["view"].setAllColumnsShowFocus(True)
        data["view"].setIndentation(6)
        data["view"].setStyleSheet("""
            QTreeView::item{
                padding: 8px 1px;
                border: 0px;
            }
        """)

        data["view"].setColumnWidth(0, 360)  # fpattern
        data["view"].setColumnWidth(1, 100)  # name
        data["view"].setColumnWidth(2, 80)  # frames

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(data["view"])
        layout.setContentsMargins(0, 0, 0, 0)

        data["view"].customContextMenuRequested.connect(self.on_context_menu)

        self.data = data
コード例 #4
0
    def __init__(self, parent=None):
        super(SelectionOutline, self).__init__(parent=parent)

        self.model = model.SelectionModel()
        proxy = QtCore.QSortFilterProxyModel()
        proxy.setSourceModel(self.model)

        view = QtWidgets.QTreeView()
        view.setIndentation(20)
        view.setStyleSheet("""
            QTreeView::item{
                padding: 4px 1px;
                border: 0px;
            }
        """)
        view.setAllColumnsShowFocus(True)
        view.setAlternatingRowColors(True)
        view.setSortingEnabled(True)
        view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        view.sortByColumn(1, QtCore.Qt.AscendingOrder)
        view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)

        # Delegate
        time_delegate = delegates.PrettyTimeDelegate()
        column = self.model.Columns.index("time")
        view.setItemDelegateForColumn(column, time_delegate)

        view.setModel(proxy)
        view.setColumnWidth(0, 100)
        view.setColumnWidth(1, 140)
        view.setColumnWidth(2, 200)
        view.setColumnWidth(3, 200)
        view.setColumnWidth(4, 70)
        self.view = view
        self.proxy = proxy

        # (TODO)
        # Get all nodes
        # Get selected nodes
        # Dynamic selecting (If this enabled, dim out above two. Default off)
        # "Freeze List" will not be needed

        freezer = QtWidgets.QCheckBox("Freeze List")

        # (TODO)
        # These three not implemented
        include_hierarchy = QtWidgets.QCheckBox("Include Hierarchy")
        hide_referenced = QtWidgets.QCheckBox("Hide Referenced")
        refresh = QtWidgets.QPushButton("Refresh")

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(freezer)
        layout.addWidget(include_hierarchy)
        layout.addWidget(hide_referenced)
        layout.addWidget(self.view)
        layout.addWidget(refresh)

        self.setLayout(layout)

        self.data = {
            "delegates": {
                "time": time_delegate,
            }
        }

        self.view.customContextMenuRequested.connect(self.on_menu)
        freezer.stateChanged.connect(self.on_freezed)
コード例 #5
0
ファイル: view.py プロジェクト: VSPipe/reveries-config
    def __init__(self, parent=None):
        super(SelectionOutline, self).__init__(parent=parent)

        data = pindict({
            "model": model.SelectionModel(),
            "proxy": QtCore.QSortFilterProxyModel(),
        })

        panels = {
            "header": QtWidgets.QWidget(),
            "body": QtWidgets.QWidget(),
            "footer": QtWidgets.QWidget(),
        }

        widgets = pindict({
            "view": QtWidgets.QTreeView(),
            "lock": QtWidgets.QPushButton("Lock"),
            "unlock": QtWidgets.QPushButton("Unlock"),
            "save": QtWidgets.QPushButton("Save"),
            "refresh": QtWidgets.QPushButton(),
        })

        data["proxy"].setSourceModel(data["model"])
        widgets["view"].setModel(data["proxy"])

        with widgets.pin("view") as _:
            _.setAllColumnsShowFocus(True)
            _.setAlternatingRowColors(True)
            _.setSortingEnabled(True)
            _.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
            _.sortByColumn(1, QtCore.Qt.AscendingOrder)
            _.setSelectionMode(_.ExtendedSelection)

            _.setIndentation(20)
            _.setStyleSheet("""
                QTreeView::item{
                    padding: 4px 1px;
                    border: 0px;
                }
            """)

            _.setColumnWidth(0, 240)

        layout = QtWidgets.QHBoxLayout(panels["header"])
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setMargin(0)
        layout.addStretch()
        layout.addWidget(widgets["refresh"])

        layout = QtWidgets.QHBoxLayout(panels["body"])
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setMargin(0)
        layout.addWidget(widgets["view"])

        layout = QtWidgets.QHBoxLayout(panels["footer"])
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setMargin(0)
        layout.addWidget(widgets["lock"])
        layout.addWidget(widgets["unlock"])
        layout.addWidget(widgets["save"])

        layout = QtWidgets.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setMargin(0)
        layout.addWidget(panels["header"])
        layout.addWidget(panels["body"])
        layout.addWidget(panels["footer"])

        widgets["view"].customContextMenuRequested.connect(self.on_menu)
        widgets["lock"].clicked.connect(lambda: self.on_locked(True))
        widgets["unlock"].clicked.connect(lambda: self.on_locked(False))
        widgets["save"].clicked.connect(self.on_saved)
        widgets["refresh"].clicked.connect(self.on_refreshed)

        icon = qtawesome.icon("fa.lock", color="gray")
        widgets["lock"].setIcon(icon)
        icon = qtawesome.icon("fa.unlock", color="gray")
        widgets["unlock"].setIcon(icon)
        icon = qtawesome.icon("fa.save", color="gray")
        widgets["save"].setIcon(icon)
        icon = qtawesome.icon("fa.refresh", color="white")
        widgets["refresh"].setIcon(icon)

        self.data = data
        self.widgets = widgets

        self._selection_sync = True