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
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
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent=parent) layout = QtWidgets.QVBoxLayout() # controls top_layout = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel("Tasks") add_button = QtWidgets.QPushButton("+") add_button.setFixedWidth(28) remove_button = QtWidgets.QPushButton("-") remove_button.setFixedWidth(28) top_layout.addWidget(label) top_layout.addStretch() top_layout.addWidget(add_button) top_layout.addWidget(remove_button) tree_view = QtWidgets.QTreeView() tree_model = TreeModel() tree_view.setModel(tree_model) layout.addLayout(top_layout) layout.addWidget(tree_view) self.setLayout(layout) self.add_button = add_button self.remove_button = remove_button self.tree_model = tree_model self._add_dialog = AddTaskIconDialog() self.connect_signals()
def __init__(self, parent=None, context=None): super(Window, self).__init__(parent) self.context = context project_name = io.active_project() self.setWindowTitle("Asset creator ({0})".format(project_name)) self.setFocusPolicy(QtCore.Qt.StrongFocus) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) # Validators self.valid_parent = False self.session = None # assets widget assets_widget = QtWidgets.QWidget() assets_widget.setContentsMargins(0, 0, 0, 0) assets_layout = QtWidgets.QVBoxLayout(assets_widget) assets = widget.AssetWidget() assets.view.setSelectionMode(assets.view.ExtendedSelection) assets_layout.addWidget(assets) # Outlink label_outlink = QtWidgets.QLabel("Outlink:") input_outlink = QtWidgets.QLineEdit() input_outlink.setReadOnly(True) input_outlink.setStyleSheet("background-color: #333333;") checkbox_outlink = QtWidgets.QCheckBox("Use outlink") # Parent label_parent = QtWidgets.QLabel("*Parent:") input_parent = QtWidgets.QLineEdit() input_parent.setReadOnly(True) input_parent.setStyleSheet("background-color: #333333;") # Name label_name = QtWidgets.QLabel("*Name:") input_name = QtWidgets.QLineEdit() input_name.setPlaceholderText("<asset name>") # Asset Build label_assetbuild = QtWidgets.QLabel("Asset Build:") combo_assetbuilt = QtWidgets.QComboBox() # Task template label_task_template = QtWidgets.QLabel("Task template:") combo_task_template = QtWidgets.QComboBox() # Info widget info_widget = QtWidgets.QWidget() info_widget.setContentsMargins(10, 10, 10, 10) info_layout = QtWidgets.QVBoxLayout(info_widget) # Inputs widget inputs_widget = QtWidgets.QWidget() inputs_widget.setContentsMargins(0, 0, 0, 0) inputs_layout = QtWidgets.QFormLayout(inputs_widget) inputs_layout.addRow(label_outlink, input_outlink) inputs_layout.addRow(None, checkbox_outlink) inputs_layout.addRow(label_parent, input_parent) inputs_layout.addRow(label_name, input_name) inputs_layout.addRow(label_assetbuild, combo_assetbuilt) inputs_layout.addRow(label_task_template, combo_task_template) # Add button btns_widget = QtWidgets.QWidget() btns_widget.setContentsMargins(0, 0, 0, 0) btn_layout = QtWidgets.QHBoxLayout(btns_widget) btn_create_asset = QtWidgets.QPushButton("Create asset") btn_create_asset.setToolTip( "Creates all neccessary components for asset" ) checkbox_app = None if self.context is not None: checkbox_app = QtWidgets.QCheckBox("Open {}".format( self.context.capitalize()) ) btn_layout.addWidget(checkbox_app) btn_layout.addWidget(btn_create_asset) task_view = QtWidgets.QTreeView() task_view.setIndentation(0) task_model = model.TasksModel() task_view.setModel(task_model) info_layout.addWidget(inputs_widget) info_layout.addWidget(task_view) info_layout.addWidget(btns_widget) # Body body = QtWidgets.QSplitter() body.setContentsMargins(0, 0, 0, 0) body.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) body.setOrientation(QtCore.Qt.Horizontal) body.addWidget(assets_widget) body.addWidget(info_widget) body.setStretchFactor(0, 100) body.setStretchFactor(1, 150) # statusbar message = QtWidgets.QLabel() message.setFixedHeight(20) statusbar = QtWidgets.QWidget() layout = QtWidgets.QHBoxLayout(statusbar) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(message) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(body) layout.addWidget(statusbar) self.data = { "label": { "message": message, }, "view": { "tasks": task_view }, "model": { "assets": assets, "tasks": task_model }, "inputs": { "outlink": input_outlink, "outlink_cb": checkbox_outlink, "parent": input_parent, "name": input_name, "assetbuild": combo_assetbuilt, "tasktemplate": combo_task_template, "open_app": checkbox_app }, "buttons": { "create_asset": btn_create_asset } } # signals btn_create_asset.clicked.connect(self.create_asset) assets.selection_changed.connect(self.on_asset_changed) input_name.textChanged.connect(self.on_asset_name_change) checkbox_outlink.toggled.connect(self.on_outlink_checkbox_change) combo_task_template.currentTextChanged.connect( self.on_task_template_changed ) if self.context is not None: checkbox_app.toggled.connect(self.on_app_checkbox_change) # on start self.on_start() self.resize(600, 500) self.echo("Connected to project: {0}".format(project_name))
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)
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
def __init__(self, parent=None): QtWidgets.QDialog.__init__(self, parent) self.resize(640, 360) project = api.Session["AVALON_PROJECT"] self.setWindowTitle("Context Manager 1.0 - {}".format(project)) self.setObjectName("contextManager") splitter = QtWidgets.QSplitter(self) main_layout = QtWidgets.QVBoxLayout() column_layout = QtWidgets.QHBoxLayout() accept_btn = QtWidgets.QPushButton("Accept") # Asset picker assets = AssetWidget() # Task picker tasks_widgets = QtWidgets.QWidget() tasks_widgets.setContentsMargins(0, 0, 0, 0) tasks_layout = QtWidgets.QVBoxLayout(tasks_widgets) task_view = QtWidgets.QTreeView() task_view.setIndentation(0) task_model = TasksModel() task_view.setModel(task_model) tasks_layout.addWidget(task_view) tasks_layout.addWidget(accept_btn) task_view.setColumnHidden(1, True) # region results result_widget = QtWidgets.QGroupBox("Current Context") result_layout = QtWidgets.QVBoxLayout() result_widget.setLayout(result_layout) project_label = QtWidgets.QLabel("Project: {}".format(project)) asset_label = QtWidgets.QLabel() task_label = QtWidgets.QLabel() result_layout.addWidget(project_label) result_layout.addWidget(asset_label) result_layout.addWidget(task_label) result_layout.addStretch() # endregion results context_widget = QtWidgets.QWidget() column_layout.addWidget(assets) column_layout.addWidget(tasks_widgets) context_widget.setLayout(column_layout) splitter.addWidget(context_widget) splitter.addWidget(result_widget) splitter.setSizes([1, 0]) main_layout.addWidget(splitter) # Enable for other functions self._last_selected_task = None self._task_view = task_view self._task_model = task_model self._assets = assets self._context_asset = asset_label self._context_task = task_label assets.selection_changed.connect(self.on_asset_changed) accept_btn.clicked.connect(self.on_accept_clicked) assets.refresh() self.select_asset(api.Session["AVALON_ASSET"]) self.select_task(api.Session["AVALON_TASK"]) self.setLayout(main_layout) # Enforce current context to be up-to-date self.refresh_context_view()
def __init__(self, parent=None): super(FocusComparing, self).__init__(parent=parent) widget = pindict.to_pindict({ "overallDiff": { "main": QtWidgets.QGroupBox("Compare Features"), "name": { "main": QtWidgets.QWidget(), "icon": QtWidgets.QLabel(), "label": QtWidgets.QLabel("Hierarchy"), "status": QtWidgets.QLabel("--"), }, "id": { "main": QtWidgets.QWidget(), "icon": QtWidgets.QLabel(), "label": QtWidgets.QLabel("Avalon Id"), "status": QtWidgets.QLabel("--"), }, "mesh": { "main": QtWidgets.QWidget(), "icon": QtWidgets.QLabel(), "label": QtWidgets.QLabel("Mesh"), "status": QtWidgets.QLabel("--"), }, "uv": { "main": QtWidgets.QWidget(), "icon": QtWidgets.QLabel(), "label": QtWidgets.QLabel("UV"), "status": QtWidgets.QLabel("--"), }, }, "featureMenu": { "main": QtWidgets.QWidget(), "label": QtWidgets.QLabel("Focus On"), "list": QtWidgets.QComboBox(), }, "focus": { "view": QtWidgets.QTreeView(), "model": models.FocusModel(), "pathDelegate": delegates.PathTextDelegate(), } }) with widget.pin("overallDiff") as diff: layout = QtWidgets.QVBoxLayout(diff["main"]) for key in ["name", "id", "mesh", "uv"]: with widget.pin("overallDiff." + key) as feature: lay = QtWidgets.QHBoxLayout(feature["main"]) lay.addWidget(feature["label"]) lay.addSpacing(8) lay.addWidget(feature["icon"]) lay.addSpacing(12) lay.addWidget(feature["status"], stretch=True) feature["label"].setFixedWidth(60) feature["label"].setAlignment(QtCore.Qt.AlignRight) icon = delegates.FEATURE_ICONS[key] pixmap = lib.icon(icon, models.COLOR_DARK).pixmap(16, 16) feature["icon"].setPixmap(pixmap) layout.addWidget(feature["main"]) layout.addSpacing(-16) layout.addSpacing(16) layout.setContentsMargins(0, 0, 0, 0) with widget.pin("featureMenu") as menu: layout = QtWidgets.QHBoxLayout(menu["main"]) layout.addWidget(menu["label"]) layout.addWidget(menu["list"]) layout.addStretch() layout = QtWidgets.QVBoxLayout(self) layout.addSpacing(-16) layout.addWidget(widget["overallDiff"]["main"]) layout.addSpacing(-8) layout.addWidget(widget["featureMenu"]["main"]) layout.addSpacing(-8) layout.addWidget(widget["focus"]["view"]) # Init with widget.pin("featureMenu") as menu: menu["list"].addItem(" Hierarchy", "longName") menu["list"].addItem(" Avalon Id", "avalonId") menu["list"].addItem(" Full Path", "fullPath") menu["list"].addItem(" Mesh", "points") menu["list"].addItem(" UV", "uvmap") with widget.pin("focus") as focus: focus["view"].setModel(focus["model"]) focus["view"].setItemDelegateForColumn(1, focus["pathDelegate"]) focus["view"].setHeaderHidden(True) focus["view"].setUniformRowHeights(True) focus["view"].setAlternatingRowColors(False) focus["view"].setIndentation(6) focus["view"].setStyleSheet(""" QTreeView::item{ padding: 2px 1px; border: 0px; } """) focus["view"].setSelectionMode(focus["view"].NoSelection) height = focus["view"].sizeHintForRow(0) * 2 + 4 # MagicNum focus["view"].setFixedHeight(height) focus["view"].setColumnWidth(0, 28) self.widget = widget self._focusing = False # Connect with widget.pin("featureMenu") as menu: menu["list"].currentIndexChanged.connect(self.on_feature_changed) self.focus_enabled.connect(self.on_focus_enabled)