def __init__(self, parent=None): super(_RenderGlobalsEditor, self).__init__(parent) self.setWindowTitle(api.Session["AVALON_LABEL"] + " Render Globals") self.setAttribute(QtCore.Qt.WA_DeleteOnClose) pools = QtWidgets.QComboBox() groups = QtWidgets.QComboBox() button = QtWidgets.QPushButton("Refresh") layout = QtWidgets.QVBoxLayout(self) layout.addWidget(QtWidgets.QLabel("Current Pool")) layout.addWidget(pools) layout.addWidget(QtWidgets.QLabel("Current Group")) layout.addWidget(groups) layout.addWidget(QtWidgets.QLabel("")) layout.addWidget(button) self.pools = pools self.groups = groups self.render_globals = None self.resize(300, 100) self.setMinimumWidth(200) self.refresh() button.clicked.connect(self.refresh) pools.currentIndexChanged.connect(self.on_pool_changed) groups.currentIndexChanged.connect(self.on_group_changed)
def add_data(self, header, data): """Add information which needs to be displayed""" if header in self.data_table: print("Cannot add similar header, please use `update` in stead") return data_widget = QtWidgets.QWidget() data_widget.setFixedHeight(self._tile_height) layout = QtWidgets.QVBoxLayout() title = QtWidgets.QLabel(header.upper()) title.setStyleSheet(style.overview_tile_title) formlayout = QtWidgets.QFormLayout() for label, value in data.items(): value_label = QtWidgets.QLabel(value) formlayout.addRow("%s :" % label, value_label) layout.addWidget(title) layout.addLayout(formlayout) layout.addStretch() data_widget.setLayout(layout) self.data_table[header] = {"widget": data_widget, "data": data} position = self.layout.count() + 1 self.layout.insertWidget(position, data_widget)
def __init__(self, instances=None, parent=None): QtWidgets.QDialog.__init__(self, parent) self.setWindowTitle("Update Sequence Range") self.setModal(True) self.setFixedWidth(150) self.setFixedHeight(100) self._instances = instances layout = QtWidgets.QVBoxLayout() start_hlayout = QtWidgets.QHBoxLayout() start_label = QtWidgets.QLabel("Start") start_label.setFixedWidth(30) start_stylesheet = "QAbstractQSpinBox:up-button {subcontrol-origin: border}" start_value = QtWidgets.QSpinBox() start_value.setAlignment(QtCore.Qt.AlignRight) start_value.setStyleSheet(start_stylesheet) start_hlayout.addWidget(start_label) start_hlayout.addWidget(start_value) end_hlayout = QtWidgets.QHBoxLayout() end_label = QtWidgets.QLabel("End") end_label.setFixedWidth(30) end_stylesheet = "QAbstractSpinBox:down-button {subcontrol-origin: bottom}" end_value = QtWidgets.QSpinBox() end_value.setAlignment(QtCore.Qt.AlignRight) end_value.setStyleSheet(end_stylesheet) end_hlayout.addWidget(end_label) end_hlayout.addWidget(end_value) accept_btn = QtWidgets.QPushButton("Accept") layout.addLayout(start_hlayout) layout.addLayout(end_hlayout) layout.addWidget(accept_btn) self.start_value = start_value self.end_value = end_value self.accept = accept_btn self.setLayout(layout) self.make_connections() self._on_init()
def setup_ui(self): """Build the UI""" # Assets (left) asset_outliner = widgets.AssetOutliner() # Looks (right) looks_widget = QtWidgets.QWidget() looks_layout = QtWidgets.QVBoxLayout(looks_widget) look_outliner = widgets.LookOutliner() # Database look overview assign_selected = QtWidgets.QCheckBox("Assign to selected only") assign_selected.setToolTip("Whether to assign only to selected nodes " "or to the full asset") remove_unused_btn = QtWidgets.QPushButton("Remove Unused Looks") looks_layout.addWidget(look_outliner) looks_layout.addWidget(assign_selected) looks_layout.addWidget(remove_unused_btn) # Footer status = QtWidgets.QStatusBar() status.setSizeGripEnabled(False) status.setFixedHeight(25) warn_layer = QtWidgets.QLabel("Current Layer is not " "defaultRenderLayer") warn_layer.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) warn_layer.setStyleSheet("color: #DD5555; font-weight: bold;") warn_layer.setFixedHeight(25) footer = QtWidgets.QHBoxLayout() footer.setContentsMargins(0, 0, 0, 0) footer.addWidget(status) footer.addWidget(warn_layer) # Build up widgets main_layout = QtWidgets.QVBoxLayout(self) main_layout.setSpacing(0) main_splitter = QtWidgets.QSplitter() main_splitter.setStyleSheet("QSplitter{ border: 0px; }") main_splitter.addWidget(asset_outliner) main_splitter.addWidget(looks_widget) main_splitter.setSizes([350, 200]) main_layout.addWidget(main_splitter) main_layout.addLayout(footer) # Set column width asset_outliner.view.setColumnWidth(0, 200) look_outliner.view.setColumnWidth(0, 150) # Open widgets self.asset_outliner = asset_outliner self.look_outliner = look_outliner self.status = status self.warn_layer = warn_layer # Buttons self.remove_unused = remove_unused_btn self.assign_selected = assign_selected
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent=parent) layout = QtWidgets.QVBoxLayout() text = QtWidgets.QLabel("Under development!") tab_widget = QtWidgets.QTabWidget() button_hlayout = QtWidgets.QHBoxLayout() button_hlayout.addStretch() # Generic update button update_button = QtWidgets.QPushButton("Update") update_button.setMinimumWidth(120) update_button.setStyleSheet(style.flat_button) button_hlayout.addWidget(update_button) # Create basic layout layout.addWidget(text) layout.addWidget(tab_widget) layout.addLayout(button_hlayout) self.setLayout(layout) self.tab_widget = tab_widget self.update_button = update_button self.connect_signals()
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
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) layout = QtWidgets.QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(10) title = QtWidgets.QLabel("Rigs:") title.setAlignment(QtCore.Qt.AlignLeft) title.setStyleSheet("font-weight: bold; font-size: 12px") model = models.AssetModel() view = views.View() view.setModel(model) view.setSortingEnabled(False) view.setHeaderHidden(True) view.setMinimumHeight(180) view.setIndentation(10) layout.addWidget(title) layout.addWidget(view) selection_model = view.selectionModel() selection_model.selectionChanged.connect(self.selection_changed) self.view = view self.model = model self._selection_model = selection_model self.setLayout(layout)
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) layout = QtWidgets.QHBoxLayout() context = QtWidgets.QLabel() context.setMinimumWidth(50) context.setStyleSheet("QLabel {font-weight: bold}") set_context_icon = qta.icon("fa.arrow-right", color=style.colors.default) set_context_button = QtWidgets.QPushButton() set_context_button.setIcon(set_context_icon) set_context_button.setFixedWidth(28) layout.addWidget(context) layout.addWidget(set_context_button) self.setLayout(layout) self.set_context_btn = set_context_button self.context_label = context self.connections() self._set_context_label()
def _create_label(self, text): """Lazy function to create a label""" title = QtWidgets.QLabel(text) title.setAlignment(QtCore.Qt.AlignCenter) title.setStyleSheet("font-weight: bold; font-size: 12px") return title
def create_tab(self): panel = { "body": QtWidgets.QWidget(), "top": QtWidgets.QWidget(), "control": QtWidgets.QWidget(), "table": QtWidgets.QWidget(), } widget = { "label": QtWidgets.QLabel("Table Name:"), "line": QtWidgets.QLineEdit(), "nameChk": QtWidgets.QCheckBox("Show Long Name"), "selectorA": views.SelectorWidget(side=views.SIDE_A), "selectorB": views.SelectorWidget(side=views.SIDE_B), "comparer": views.ComparingTable(), "statusLine": widgets.StatusLineWidget(main_logger, self), } layout = QtWidgets.QHBoxLayout(panel["top"]) layout.addWidget(widget["label"]) layout.addWidget(widget["line"]) layout.addWidget(widget["nameChk"]) layout = QtWidgets.QHBoxLayout(panel["control"]) layout.addWidget(widget["selectorA"]) layout.addWidget(widget["selectorB"]) layout = QtWidgets.QVBoxLayout(panel["table"]) layout.addWidget(widget["comparer"]) layout.addWidget(widget["statusLine"]) layout = QtWidgets.QVBoxLayout(panel["body"]) layout.addWidget(panel["top"]) layout.addSpacing(-14) layout.addWidget(panel["control"]) layout.addSpacing(-24) layout.addWidget(panel["table"], stretch=True) layout.setContentsMargins(0, 0, 0, 0) tab = self.page["tab"] # Add Tab name = "New %d" % tab.count() index = tab.addTab(panel["body"], name) tab.setCurrentIndex(index) widget["line"].setText(name) # Connect widget["selectorA"].connect_comparer(widget["comparer"]) widget["selectorB"].connect_comparer(widget["comparer"]) widget["nameChk"].stateChanged.connect( widget["comparer"].on_name_mode_changed) widget["line"].textChanged.connect( lambda text: tab.setTabText(index, text))
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) layout = QtWidgets.QVBoxLayout() title = QtWidgets.QLabel("Assets") title.setAlignment(QtCore.Qt.AlignCenter) title.setStyleSheet("font-weight: bold; font-size: 12px") model = models.AssetModel() view = views.View() view.setModel(model) view.customContextMenuRequested.connect(self.right_mouse_menu) view.setSortingEnabled(False) view.setHeaderHidden(False) view.setIndentation(10) asset_all = QtWidgets.QPushButton("All Loaded") asset_sel = QtWidgets.QPushButton("From Selection") asset_all.setCheckable(True) asset_sel.setCheckable(True) asset_group = QtWidgets.QButtonGroup(self) asset_group.addButton(asset_all) asset_group.addButton(asset_sel) lister_layout = QtWidgets.QHBoxLayout() lister_layout.addWidget(asset_all) lister_layout.addWidget(asset_sel) layout.addWidget(title) layout.addLayout(lister_layout) layout.addWidget(view) # Build connections asset_all.clicked.connect(self.on_all_loaded) asset_sel.clicked.connect(self.on_selection) selection_model = view.selectionModel() selection_model.selectionChanged.connect(self.selection_changed) self.view = view self.model = model self.setLayout(layout) self.log = logging.getLogger(__name__)
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) layout = QtWidgets.QVBoxLayout() title = QtWidgets.QLabel("Assets") title.setAlignment(QtCore.Qt.AlignCenter) title.setStyleSheet("font-weight: bold; font-size: 12px") model = models.AssetModel() view = views.View() view.setModel(model) view.customContextMenuRequested.connect(self.right_mouse_menu) view.setSortingEnabled(False) view.setHeaderHidden(True) view.setIndentation(10) from_all_asset_btn = QtWidgets.QPushButton("Get All Assets") from_selection_btn = QtWidgets.QPushButton("Get Assets From Selection") layout.addWidget(title) layout.addWidget(from_all_asset_btn) layout.addWidget(from_selection_btn) layout.addWidget(view) # Build connections from_selection_btn.clicked.connect(self.get_selected_assets) from_all_asset_btn.clicked.connect(self.get_all_assets) selection_model = view.selectionModel() selection_model.selectionChanged.connect(self.selection_changed) self.view = view self.model = model self.setLayout(layout) self.log = logging.getLogger(__name__)
def __init__(self, parent=None, *args, **kwargs): super(Popup, self).__init__(parent=parent, *args, **kwargs) self.setContentsMargins(0, 0, 0, 0) # Layout layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(10, 5, 10, 10) # Increase spacing slightly for readability layout.setSpacing(10) message = QtWidgets.QLabel("") message.setStyleSheet(""" QLabel { font-size: 12px; } """) button = QtWidgets.QPushButton("Show") button.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) button.setStyleSheet("""QPushButton { background-color: #BB0000 }""") layout.addWidget(message) layout.addWidget(button) # Default size self.resize(400, 40) self.widgets = { "message": message, "button": button, } # Signals button.clicked.connect(self._on_clicked) # Set default title self.setWindowTitle("Popup")
def _create_mapper(self, section, sources, targets): section_box = QtWidgets.QGroupBox(section.title()) section_box.setObjectName(section) layout = QtWidgets.QVBoxLayout() for source in sources: picker_hlayout = QtWidgets.QHBoxLayout() source_label = QtWidgets.QLabel(source) # Create lookup target_picker = SearchComboBox(placeholder="None") target_picker.populate(targets) picker_hlayout.addWidget(source_label) picker_hlayout.addWidget(target_picker) layout.addLayout(picker_hlayout) self.mapping_data[source] = target_picker section_box.setLayout(layout) return section_box
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, *args, **kwargs): super(Popup, self).__init__(parent=parent, *args, **kwargs) self.setContentsMargins(0, 0, 0, 0) # Layout layout = QtWidgets.QHBoxLayout(self) layout.setContentsMargins(10, 5, 10, 10) message = QtWidgets.QLabel("") message.setStyleSheet(""" QLabel { font-size: 12px; } """) show = QtWidgets.QPushButton("Show") show.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) show.setStyleSheet("""QPushButton { background-color: #BB0000 }""") layout.addWidget(message) layout.addWidget(show) # Size self.resize(400, 40) geometry = self.calculate_window_geometry() self.setGeometry(geometry) self.widgets = { "message": message, "show": show, } # Signals show.clicked.connect(self._on_show_clicked) # Set default title self.setWindowTitle("Popup")
def make_group(self, widget, label): group = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel(label) group.addWidget(label) group.addWidget(widget) return group
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent=parent) self.log = logging.getLogger(__name__) self.setWindowTitle("Create New Project") self.setWindowFlags(QtCore.Qt.Dialog) self.setStyleSheet(style.create_widget) layout = QtWidgets.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignCenter) layout.setContentsMargins(50, 50, 50, 50) layout.setSpacing(20) create_vlayout = QtWidgets.QVBoxLayout() project_label = QtWidgets.QLabel("Project Name") project_name = QtWidgets.QLineEdit() project_name.setPlaceholderText("Example: MARVEL_Spiderman_HomeComing") project_name.setStyleSheet("QLineEdit: {font-size: 50px}") create_vlayout.addWidget(project_label) create_vlayout.addWidget(project_name) # Clone from existing clone_vlayout = QtWidgets.QVBoxLayout() clone_label_hlayout = QtWidgets.QHBoxLayout() clone_toggle = QtWidgets.QCheckBox() clone_toggle.setFixedWidth(24) clone_toggle.setFixedHeight(24) clone_label = QtWidgets.QLabel("Clone") clone_label_hlayout.addWidget(clone_label) clone_label_hlayout.addWidget(clone_toggle) clone_project = QtWidgets.QComboBox() clone_vlayout.addLayout(clone_label_hlayout) clone_vlayout.addWidget(clone_project) create_button = QtWidgets.QPushButton("Create") create_button.setStyleSheet(style.flat_button) create_button.setFixedWidth(500) cancel_button = QtWidgets.QPushButton("Cancel") cancel_button.setStyleSheet(style.flat_button) cancel_button.setFixedWidth(500) layout.addLayout(create_vlayout) layout.addLayout(clone_vlayout) layout.addWidget(create_button) layout.addWidget(cancel_button) self.setLayout(layout) self.project_name = project_name self.clone_toggle = clone_toggle self.clone_project = clone_project self.create = create_button self.cancel = cancel_button # Build connections self.connect_signals() self.refresh()
def setup_ui(self): """Build the initial UI""" layout = QtWidgets.QVBoxLayout(self) # region executable executable_grp = QtWidgets.QGroupBox("Executable") executable_vlayout = QtWidgets.QVBoxLayout() executable_hlayout = QtWidgets.QHBoxLayout() executable_filename = QtWidgets.QLineEdit() executable_button = QtWidgets.QPushButton() executable_button.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, 'SP_DialogOpenButton'))) executable_hlayout.addWidget(executable_filename) executable_hlayout.addWidget(executable_button) executable_vlayout.addLayout(executable_hlayout) executable_grp.setLayout(executable_vlayout) # endregion executable # region options options_grp = QtWidgets.QGroupBox("Options") options_vlayout = QtWidgets.QVBoxLayout() postfix_hlayout = QtWidgets.QHBoxLayout() postfix_label = QtWidgets.QLabel("Postfix") postfix_value = QtWidgets.QLineEdit() postfix_hlayout.addWidget(postfix_label) postfix_hlayout.addWidget(postfix_value) compression_hlayout = QtWidgets.QHBoxLayout() compression_label = QtWidgets.QLabel("Compression") compression_value = QtWidgets.QComboBox() compression_hlayout.addWidget(compression_label) compression_hlayout.addWidget(compression_value) linear_hlayout = QtWidgets.QHBoxLayout() linear_label = QtWidgets.QLabel("Linear Conversion") linear_value = QtWidgets.QComboBox() linear_hlayout.addWidget(linear_label) linear_hlayout.addWidget(linear_value) tilesize_hlayout = QtWidgets.QHBoxLayout() tilesize_label = QtWidgets.QLabel("Tile Size") tilesize_value = QtWidgets.QSpinBox() tilesize_value.setValue(64) tilesize_hlayout.addWidget(tilesize_label) tilesize_hlayout.addWidget(tilesize_value) overwrite_hlayout = QtWidgets.QHBoxLayout() overwrite_label = QtWidgets.QLabel("Overwrite") overwrite_value = QtWidgets.QCheckBox() overwrite_value.setChecked(False) overwrite_hlayout.addWidget(overwrite_label) overwrite_hlayout.addWidget(overwrite_value) preserve_hlayout = QtWidgets.QHBoxLayout() preserve_label = QtWidgets.QLabel("Preserve Color Space ") preserve_value = QtWidgets.QCheckBox() preserve_value.setChecked(True) preserve_hlayout.addWidget(preserve_label) preserve_hlayout.addWidget(preserve_value) preserve_filter_hlayout = QtWidgets.QHBoxLayout() preserve_filter_label = QtWidgets.QLabel("Preserver Filter") preserve_filter_value = QtWidgets.QLineEdit() preserve_filter_hlayout.addWidget(preserve_filter_label) preserve_filter_hlayout.addWidget(preserve_filter_value) options_vlayout.addLayout(postfix_hlayout) options_vlayout.addLayout(compression_hlayout) options_vlayout.addLayout(linear_hlayout) options_vlayout.addLayout(tilesize_hlayout) options_vlayout.addLayout(overwrite_hlayout) options_vlayout.addLayout(preserve_hlayout) options_vlayout.addLayout(preserve_filter_hlayout) options_grp.setLayout(options_vlayout) # endregion options # Group box for type of machine list list_type_grp = QtWidgets.QGroupBox("File Texture Nodes") list_type_hlayout = QtWidgets.QVBoxLayout() refresh_button = QtWidgets.QPushButton("Refresh") refresh_button.setToolTip("Refresh texture lists") refresh_button.setIcon(self.style().standardIcon( getattr(QtWidgets.QStyle, 'SP_BrowserReload'))) # region file node list file_node_hlayout = QtWidgets.QVBoxLayout() file_node_hlayout.setSpacing(2) file_node_list = QtWidgets.QListView() file_node_list.setAlternatingRowColors(True) file_node_list.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) file_node_list.setSelectionMode( QtWidgets.QAbstractItemView.MultiSelection) # endregion # conversion buttons button_vlayout = QtWidgets.QHBoxLayout() button_vlayout.setAlignment(QtCore.Qt.AlignCenter) button_vlayout.setSpacing(4) convert_button = QtWidgets.QPushButton("Convert") exr_button = QtWidgets.QPushButton("Show EXR") source_button = QtWidgets.QPushButton("Show Source") set_source_button = QtWidgets.QPushButton("Set new source") set_source_button.setDisabled(True) button_vlayout.addWidget(convert_button) button_vlayout.addWidget(exr_button) button_vlayout.addWidget(source_button) button_vlayout.addWidget(set_source_button) file_node_hlayout.addWidget(file_node_list) file_node_hlayout.addLayout(button_vlayout) list_type_hlayout.addWidget(refresh_button) list_type_hlayout.addLayout(file_node_hlayout) list_type_grp.setLayout(list_type_hlayout) layout.addWidget(executable_grp) layout.addWidget(options_grp) layout.addWidget(list_type_grp) layout.addLayout(file_node_hlayout) # Enable access for all methods self.file_node_list = file_node_list self.postfix_value = postfix_value self.compression_value = compression_value self.linear_value = linear_value self.tilesize_value = tilesize_value self.executable_filename = executable_filename self.exr_button = exr_button self.source_button = source_button self.convert_button = convert_button self.refresh_button = refresh_button self.overwritevalue = overwrite_value self.preserve_value = preserve_value self.preserve_filter_value = preserve_filter_value self.setLayout(layout)
def setup_ui(self): """Build the UI""" # Assets (left) asset_outliner = widgets.AssetOutliner() # Looks (right) looks_widget = QtWidgets.QWidget() looks_layout = QtWidgets.QVBoxLayout(looks_widget) # Sub widgets and layouts db_looks_widget = QtWidgets.QWidget() db_looks_layout = QtWidgets.QVBoxLayout(db_looks_widget) loaded_looks_widget = QtWidgets.QWidget() loaded_looks_layout = QtWidgets.QVBoxLayout(loaded_looks_widget) # Database look overview look_outliner = widgets.LookOutliner() # Scene look overview loaded_look_outliner = widgets.LoadedLookOutliner() # Button and checkBox overload_chk = QtWidgets.QCheckBox("Overload Looks") remove_unused_btn = QtWidgets.QPushButton("Remove Unused Looks") db_looks_layout.addWidget(look_outliner) db_looks_layout.addWidget(overload_chk) loaded_looks_layout.addWidget(loaded_look_outliner) # Look Splitter look_splitter = QtWidgets.QSplitter() look_splitter.setOrientation(QtCore.Qt.Vertical) look_splitter.setStyleSheet("QSplitter{ border: 0px; }") look_splitter.addWidget(db_looks_widget) look_splitter.addWidget(loaded_looks_widget) look_splitter.setSizes([200, 120]) looks_layout.addWidget(look_splitter) looks_layout.addWidget(remove_unused_btn) # Footer status = QtWidgets.QStatusBar() status.setSizeGripEnabled(False) status.setFixedHeight(25) warn_layer = QtWidgets.QLabel("Current Layer is not " "defaultRenderLayer") warn_layer.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) warn_layer.setStyleSheet("color: #DD5555; font-weight: bold;") warn_layer.setFixedHeight(25) footer = QtWidgets.QHBoxLayout() footer.setContentsMargins(0, 0, 0, 0) footer.addWidget(status) footer.addWidget(warn_layer) # Build up widgets main_layout = QtWidgets.QVBoxLayout(self) main_layout.setSpacing(0) main_splitter = QtWidgets.QSplitter() main_splitter.setStyleSheet("QSplitter{ border: 0px; }") main_splitter.addWidget(asset_outliner) main_splitter.addWidget(looks_widget) main_splitter.setSizes([350, 280]) main_layout.addWidget(main_splitter) main_layout.addLayout(footer) # Set column width asset_outliner.view.setColumnWidth(0, 200) look_outliner.view.setColumnWidth(0, 140) # "label" column look_outliner.view.setColumnWidth(2, 50) # "match" column loaded_look_outliner.view.setColumnWidth(0, 140) # "label" column loaded_look_outliner.view.setColumnWidth(1, 60) # "ident" column # Open widgets self.asset_outliner = asset_outliner self.look_outliner = look_outliner self.loaded_look_outliner = loaded_look_outliner self.status = status self.warn_layer = warn_layer # Buttons and CheckBoxes self.remove_unused = remove_unused_btn self.overload = overload_chk
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.setWindowTitle("Project Manager") self.resize(1200, 800) self.projects = {} layout = QtWidgets.QVBoxLayout() # Main control ctrl_button_w = 30 ctrl_button_h = 30 # Calculate icon size icon_size = QtCore.QSize(ctrl_button_w - 4, ctrl_button_h - 4) main_control_layout = QtWidgets.QHBoxLayout() database_label = QtWidgets.QLabel() # Main buttons - create create_button = QtWidgets.QPushButton() create_icon = qta.icon("fa.plus-square", color=style.colors.light) create_button.setIconSize(icon_size) create_button.setFixedWidth(ctrl_button_w) create_button.setFixedHeight(ctrl_button_h) create_button.setIcon(create_icon) create_button.setStyleSheet(cbstyle.flat_button) # Main buttons - refresh refresh_button = QtWidgets.QPushButton() refresh_icon = qta.icon("fa.refresh", color=style.colors.light) refresh_button.setIconSize(icon_size) refresh_button.setFixedWidth(ctrl_button_w) refresh_button.setFixedHeight(ctrl_button_h) refresh_button.setIcon(refresh_icon) refresh_button.setStyleSheet(cbstyle.flat_button) # Project switch control projects_label = QtWidgets.QLabel("Project:") projects = QtWidgets.QComboBox() projects.insertItem(0, "<None>") # Add buttons to the main control layout main_control_layout.addWidget(create_button) main_control_layout.addStretch() main_control_layout.addWidget(database_label) main_control_layout.addWidget(projects_label) main_control_layout.addWidget(projects) main_control_layout.addWidget(refresh_button) # Splitter for tabwidget and preview / details widget split_widget = QtWidgets.QSplitter() # Widgets will be stored in a StackedWidget stacked_widget = QtWidgets.QStackedWidget() # Control widgets which make the tool manager_widget = ManageProjectWidget(parent=self) # Sub manager widgets overview = OverviewWidget() manager_widget.add_widget(overview) stacked_widget.insertWidget(manager_widget.order, manager_widget) # Navigation panel widget navigation_panel = Navigation() # Add buttons to navigation panel navigation_panel.add_button(manager_widget.label, manager_widget.order) # Add widgets to the SplitWidget split_widget.addWidget(navigation_panel) split_widget.addWidget(stacked_widget) split_widget.setHandleWidth(4) split_widget.setSizes([100, 700]) layout.addLayout(main_control_layout) layout.addWidget(split_widget) self.setLayout(layout) # To connect widget store in self attribute self._navigation_panel = navigation_panel self._stacked_widget = stacked_widget self._database_label = database_label self._create_button = create_button self._projects = projects self._refresh_button = refresh_button self._overview = overview self.connect_signals() self.refresh() manager_widget.setFocus(True)
def __init__(self, parent=None): super(Project_name_getUI, self).__init__(parent) self.platform = platform.system() self.new_index = 0 # get projects from ftrack self.session = ftrack_api.Session() self.projects_from_ft = self.session.query( 'Project where status is active') self.disks_from_ft = self.session.query('Disk') self.schemas_from_ft = self.session.query('ProjectSchema') self.projects = self._get_projects_ftrack() # define window geometry self.setWindowTitle('Set project attributes') self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.resize(550, 340) self.setStyleSheet(style.load_stylesheet()) # define disk combobox widget self.disks = self._get_all_disks() self.disk_combobox_label = QtWidgets.QLabel('Destination storage:') self.disk_combobox = QtWidgets.QComboBox() # define schema combobox widget self.schemas = self._get_all_schemas() self.schema_combobox_label = QtWidgets.QLabel('Project schema:') self.schema_combobox = QtWidgets.QComboBox() # define fps widget self.fps_label = QtWidgets.QLabel('Fps:') self.fps_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.fps = QtWidgets.QLineEdit() # define project dir widget self.project_dir_label = QtWidgets.QLabel('Project dir:') self.project_dir_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.project_dir = QtWidgets.QLineEdit() self.project_path_label = QtWidgets.QLabel( 'Project_path (if not then created):') self.project_path_label.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) project_path_font = QtGui.QFont("Helvetica [Cronyx]", 12, QtGui.QFont.Bold) self.project_path = QtWidgets.QLabel() self.project_path.setObjectName('nom_plan_label') self.project_path.setStyleSheet( 'QtWidgets.QLabel#nom_plan_label {color: red}') self.project_path.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) self.project_path.setFont(project_path_font) # define handles widget self.handles_label = QtWidgets.QLabel('Handles:') self.handles_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.handles = QtWidgets.QLineEdit() # define resolution widget self.resolution_w_label = QtWidgets.QLabel('W:') self.resolution_w = QtWidgets.QLineEdit() self.resolution_h_label = QtWidgets.QLabel('H:') self.resolution_h = QtWidgets.QLineEdit() devider = QtWidgets.QFrame() # devider.Shape(QFrame.HLine) devider.setFrameShape(QtWidgets.QFrame.HLine) devider.setFrameShadow(QtWidgets.QFrame.Sunken) self.generate_lines() # define push buttons self.set_pushbutton = QtWidgets.QPushButton('Set project') self.cancel_pushbutton = QtWidgets.QPushButton('Cancel') # definition of layouts ############################################ action_layout = QtWidgets.QHBoxLayout() action_layout.addWidget(self.set_pushbutton) action_layout.addWidget(self.cancel_pushbutton) # schema property schema_layout = QtWidgets.QGridLayout() schema_layout.addWidget(self.schema_combobox, 0, 1) schema_layout.addWidget(self.schema_combobox_label, 0, 0) # storage property storage_layout = QtWidgets.QGridLayout() storage_layout.addWidget(self.disk_combobox, 0, 1) storage_layout.addWidget(self.disk_combobox_label, 0, 0) # fps property fps_layout = QtWidgets.QGridLayout() fps_layout.addWidget(self.fps, 1, 1) fps_layout.addWidget(self.fps_label, 1, 0) # project dir property project_dir_layout = QtWidgets.QGridLayout() project_dir_layout.addWidget(self.project_dir, 1, 1) project_dir_layout.addWidget(self.project_dir_label, 1, 0) # project path property project_path_layout = QtWidgets.QGridLayout() spacer_1_item = QtWidgets.QSpacerItem(10, 10) project_path_layout.addItem(spacer_1_item, 0, 1) project_path_layout.addWidget(self.project_path_label, 1, 1) project_path_layout.addWidget(self.project_path, 2, 1) spacer_2_item = QtWidgets.QSpacerItem(20, 20) project_path_layout.addItem(spacer_2_item, 3, 1) # handles property handles_layout = QtWidgets.QGridLayout() handles_layout.addWidget(self.handles, 1, 1) handles_layout.addWidget(self.handles_label, 1, 0) # resolution property resolution_layout = QtWidgets.QGridLayout() resolution_layout.addWidget(self.resolution_w_label, 1, 1) resolution_layout.addWidget(self.resolution_w, 2, 1) resolution_layout.addWidget(self.resolution_h_label, 1, 2) resolution_layout.addWidget(self.resolution_h, 2, 2) # form project property layout p_layout = QtWidgets.QGridLayout() p_layout.addLayout(storage_layout, 1, 0) p_layout.addLayout(schema_layout, 2, 0) p_layout.addLayout(project_dir_layout, 3, 0) p_layout.addLayout(fps_layout, 4, 0) p_layout.addLayout(handles_layout, 5, 0) p_layout.addLayout(resolution_layout, 6, 0) p_layout.addWidget(devider, 7, 0) spacer_item = QtWidgets.QSpacerItem(150, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) p_layout.addItem(spacer_item, 8, 0) # form with list to one layout with project property list_layout = QtWidgets.QGridLayout() list_layout.addLayout(p_layout, 1, 0) list_layout.addWidget(self.listWidget, 1, 1) root_layout = QtWidgets.QVBoxLayout() root_layout.addLayout(project_path_layout) root_layout.addWidget(devider) root_layout.addLayout(list_layout) root_layout.addLayout(action_layout) self.setLayout(root_layout)
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)
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 create_tab(self): widget = pindict.to_pindict({ "main": QtWidgets.QWidget(), "top": { "main": QtWidgets.QWidget(), "label": QtWidgets.QLabel("Table Name:"), "line": QtWidgets.QLineEdit(), }, "ctrl": { "tabs": { "main": QtWidgets.QTabWidget(), "focus": views.FocusComparing(), "select": { "main": QtWidgets.QWidget(), "selectorA": views.SelectorWidget(side=views.SIDE_A), "selectorB": views.SelectorWidget(side=views.SIDE_B), }, }, }, "table": { "tabs": { "main": QtWidgets.QTabWidget(), "comparer": views.ComparingTable(), }, }, "statusLine": widgets.StatusLineWidget(main_logger, self), }) with widget.pin("top") as top: layout = QtWidgets.QHBoxLayout(top["main"]) layout.addWidget(top["label"]) layout.addWidget(top["line"]) with widget.pin("ctrl.tabs.select") as selectors: layout = QtWidgets.QHBoxLayout(selectors["main"]) layout.addWidget(selectors["selectorA"]) layout.addSpacing(-12) layout.addWidget(selectors["selectorB"]) layout.setContentsMargins(2, 2, 2, 2) with widget.pin("ctrl.tabs") as ctrl: icon_1 = lib.icon("hand-o-right", "white") icon_2 = lib.icon("bullseye", "#BEBEBE") ctrl["main"].addTab(ctrl["select"]["main"], icon_1, "Select") ctrl["main"].addTab(ctrl["focus"], icon_2, "Focus") ctrl["main"].setTabPosition(QtWidgets.QTabWidget.West) with widget.pin("table.tabs") as table: icon = lib.icon("adjust", "#BEBEBE") table["main"].addTab(table["comparer"], icon, "Compare") table["main"].setTabPosition(QtWidgets.QTabWidget.West) layout = QtWidgets.QVBoxLayout(widget["main"]) layout.addWidget(widget["top"]["main"]) layout.addWidget(widget["ctrl"]["tabs"]["main"]) layout.addWidget(widget["table"]["tabs"]["main"], stretch=True) layout.addWidget(widget["statusLine"]) layout.setContentsMargins(4, 4, 4, 4) tab = self.page["tab"] # Add Tab name = "New %d" % tab.count() index = tab.addTab(widget["main"], name) tab.setCurrentIndex(index) widget["top"]["line"].setText(name) self.page["tables"].append(widget) # Connect with widget.pin("table.tabs") as table: with widget.pin("ctrl.tabs.select") as selectors: selectors["selectorA"].connect_comparer(table["comparer"]) selectors["selectorB"].connect_comparer(table["comparer"]) with widget.pin("ctrl.tabs") as ctrl: table["comparer"].picked.connect(ctrl["focus"].on_picked) ctrl["main"].currentChanged.connect( ctrl["focus"].focus_enabled) ctrl["main"].currentChanged.connect( table["comparer"].focus_enabled) with widget.pin("top") as top: top["line"].textChanged.connect( lambda text: tab.setTabText(index, text))
def setup_ui(self): """Build the initial UI""" MULTI_SELECT = QtWidgets.QAbstractItemView.ExtendedSelection layout = QtWidgets.QVBoxLayout(self) publish = QtWidgets.QCheckBox("Suspend Publish Job") extend_frames = QtWidgets.QCheckBox("Extend Frames") override_frames = QtWidgets.QCheckBox("Override Frames") override_frames.setEnabled(False) defaultlayer = QtWidgets.QCheckBox("Include Default Render Layer") maya_batch_checkbox = QtWidgets.QCheckBox("Use MayaBatch") maya_batch_checkbox.setChecked(True) maya_batch_checkbox.setToolTip( 'This uses the MayaBatch plugin. It keeps the scenes loaded ' 'between frames, which reduces the overhead of rendering the ' 'job.\nIt is however easier to debug a render when turning this ' 'off and render using MayaCmd') # region Priority priority_grp = QtWidgets.QGroupBox("Priority") priority_hlayout = QtWidgets.QHBoxLayout() priority_value = QtWidgets.QSpinBox() priority_value.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) priority_value.setEnabled(False) priority_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) priority_slider.setMinimum(0) priority_slider.setMaximum(99) priority_hlayout.addWidget(priority_value) priority_hlayout.addWidget(priority_slider) priority_grp.setLayout(priority_hlayout) # endregion Priority # region ChunkSize chunksize_grp = QtWidgets.QGroupBox("Frames Per Task") chunksize_hlayout = QtWidgets.QHBoxLayout() chunksize_value = QtWidgets.QSpinBox() chunksize_value.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons) chunksize_value.setEnabled(False) chunksize_value.setValue(1) # default value chunksize_value.setMinimum(1) chunksize_value.setMaximum(99) chunksize_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) chunksize_slider.setMinimum(1) chunksize_slider.setMaximum(99) chunksize_hlayout.addWidget(chunksize_value) chunksize_hlayout.addWidget(chunksize_slider) chunksize_grp.setLayout(chunksize_hlayout) # endregion # region pools pools_grp = QtWidgets.QGroupBox("Pools") pools_vlayout = QtWidgets.QVBoxLayout() primary_hlayout = QtWidgets.QHBoxLayout() primary_label = QtWidgets.QLabel("Primary") primary_pool = QtWidgets.QComboBox() primary_hlayout.addWidget(primary_label) primary_hlayout.addWidget(primary_pool) secondary_hlayout = QtWidgets.QHBoxLayout() secondary_label = QtWidgets.QLabel("Secondary") secondary_pool = QtWidgets.QComboBox() secondary_hlayout.addWidget(secondary_label) secondary_hlayout.addWidget(secondary_pool) pools_vlayout.addLayout(primary_hlayout) pools_vlayout.addLayout(secondary_hlayout) pools_grp.setLayout(pools_vlayout) # endregion pools # Group box for type of machine list list_type_grp = QtWidgets.QGroupBox("Machine List Type") list_type_hlayout = QtWidgets.QHBoxLayout() black_list = QtWidgets.QRadioButton("Blacklist") black_list.setChecked(True) black_list.setToolTip("List machines which the job WILL NOT use") white_list = QtWidgets.QRadioButton("Whitelist") white_list.setToolTip("List machines which the job WILL use") list_type_hlayout.addWidget(black_list) list_type_hlayout.addWidget(white_list) list_type_grp.setLayout(list_type_hlayout) # region Machine selection machines_hlayout = QtWidgets.QHBoxLayout() machines_hlayout.setSpacing(2) machine_list = QtWidgets.QListWidget() listed_machines = QtWidgets.QListWidget() # Buttons button_vlayout = QtWidgets.QVBoxLayout() button_vlayout.setAlignment(QtCore.Qt.AlignCenter) button_vlayout.setSpacing(4) add_machine_btn = QtWidgets.QPushButton(">") add_machine_btn.setFixedWidth(25) remove_machine_btn = QtWidgets.QPushButton("<") remove_machine_btn.setFixedWidth(25) button_vlayout.addWidget(add_machine_btn) button_vlayout.addWidget(remove_machine_btn) machines_hlayout.addWidget(machine_list) machines_hlayout.addLayout(button_vlayout) machines_hlayout.addWidget(listed_machines) # Machine selection widget settings machine_list.setSelectionMode(MULTI_SELECT) listed_machines.setSelectionMode(MULTI_SELECT) # endregion accept_btn = QtWidgets.QPushButton("Use Settings") layout.addWidget(defaultlayer) layout.addWidget(publish) layout.addWidget(extend_frames) layout.addWidget(override_frames) layout.addWidget(maya_batch_checkbox) layout.addWidget(priority_grp) layout.addWidget(chunksize_grp) layout.addWidget(pools_grp) layout.addWidget(list_type_grp) layout.addLayout(machines_hlayout) layout.addWidget(accept_btn) # Enable access for all methods self.publish = publish self.extend_frames = extend_frames self.override_frames = override_frames self.defaultlayer = defaultlayer self.priority_value = priority_value self.priority_slider = priority_slider self.chunksize_value = chunksize_value self.chunksize_slider = chunksize_slider self.primary_pool = primary_pool self.secondary_pool = secondary_pool self.black_list = black_list self.white_list = white_list self.machine_list = machine_list self.listed_machines = listed_machines self.add_machine_btn = add_machine_btn self.remove_machine_btn = remove_machine_btn self.use_maya_batch = maya_batch_checkbox self.accept = accept_btn self.setLayout(layout)
def __init__(self, parent=None): super(DatabaseSelectorWidget, self).__init__(parent=parent) panel = { "silo": QtWidgets.QWidget(), "asset": QtWidgets.QWidget(), "subset": QtWidgets.QWidget(), "version": QtWidgets.QWidget(), } label = { "silo": QtWidgets.QLabel("Silo"), "asset": QtWidgets.QLabel("Asset"), "subset": QtWidgets.QLabel("Subset"), "version": QtWidgets.QLabel("Version"), } widget = { "silo": QtWidgets.QComboBox(), "asset": QtWidgets.QComboBox(), "subset": QtWidgets.QComboBox(), "version": QtWidgets.QComboBox(), } model = { "silo": models.DatabaseDocumentModel(level="silo"), "asset": models.DatabaseDocumentModel(level="asset"), "subset": models.DatabaseDocumentModel(level="subset"), "version": models.DatabaseDocumentModel(level="version"), } view = { "silo": QtWidgets.QListView(), "asset": QtWidgets.QListView(), "subset": QtWidgets.QListView(), "version": QtWidgets.QListView(), } widget["silo"].setModel(model["silo"]) widget["asset"].setModel(model["asset"]) widget["subset"].setModel(model["subset"]) widget["version"].setModel(model["version"]) widget["silo"].setView(view["silo"]) widget["asset"].setView(view["asset"]) widget["subset"].setView(view["subset"]) widget["version"].setView(view["version"]) def build_panel(level): label[level].setFixedWidth(60) label[level].setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight) layout = QtWidgets.QHBoxLayout(panel[level]) layout.addWidget(label[level]) layout.addWidget(widget[level]) build_panel("silo") build_panel("asset") build_panel("subset") build_panel("version") layout = QtWidgets.QVBoxLayout(self) layout.addWidget(panel["silo"]) layout.addSpacing(-16) layout.addWidget(panel["asset"]) layout.addSpacing(-16) layout.addWidget(panel["subset"]) layout.addSpacing(-16) layout.addWidget(panel["version"]) # Connect def connect_index_changed(level, callback): widget[level].currentIndexChanged.connect(callback) connect_index_changed("silo", self.on_silo_changed) connect_index_changed("asset", self.on_asset_changed) connect_index_changed("subset", self.on_subset_changed) connect_index_changed("version", self.on_version_changed) # Init self.widget = widget self.model = model self.view = view silo = api.Session.get("AVALON_SILO") if silo: init_index = self.widget["silo"].findText(silo) self.widget["silo"].setCurrentIndex(init_index) asset = api.Session.get("AVALON_ASSET") if silo and asset: init_index = self.widget["asset"].findText(asset) self.widget["asset"].setCurrentIndex(init_index)
def __init__(self, root=None, callback=None, with_keys=None, parent=None): super(Window, self).__init__(parent=parent) self.setWindowTitle("Setup Sequences") icon_dir = qtawesome.icon("fa.folder-open", color="gray") data = pindict.to_pindict({ "rootPath": { "main": QtWidgets.QWidget(), "label": QtWidgets.QLabel("Root: "), "path": QtWidgets.QLineEdit(), "find": QtWidgets.QPushButton(icon_dir, "Browse.."), }, "sequences": { "main": QtWidgets.QWidget(), "options": QtWidgets.QWidget(), "single": QtWidgets.QCheckBox("Include Single Frame"), "stereo": QtWidgets.QCheckBox("Pair Stereo Sequences"), "nameRegex": QtWidgets.QWidget(), "label": QtWidgets.QLabel("Channel Name: "), "nHead": QtWidgets.QLineEdit(), "nTail": QtWidgets.QLineEdit(), "view": widgets.SequenceWidget(), }, "endDialog": { "main": QtWidgets.QWidget(), "accept": QtWidgets.QPushButton("Accept"), "cancel": QtWidgets.QPushButton("Cancel"), "callback": callback, "with_keys": with_keys, }, }) with data.pin("rootPath") as root_path: layout = QtWidgets.QHBoxLayout(root_path["main"]) layout.addWidget(root_path["label"]) layout.addWidget(root_path["path"], stretch=True) layout.addWidget(root_path["find"]) layout.setContentsMargins(4, 0, 4, 0) with data.pin("sequences") as sequences: layout = QtWidgets.QHBoxLayout(sequences["options"]) layout.addWidget(sequences["single"]) layout.addSpacing(5) layout.addWidget(sequences["stereo"]) layout.addStretch() layout.setContentsMargins(2, 2, 2, 2) layout = QtWidgets.QHBoxLayout(sequences["nameRegex"]) layout.addWidget(sequences["label"]) layout.addWidget(sequences["nHead"], stretch=True) layout.addWidget(sequences["nTail"], stretch=True) layout.setContentsMargins(2, 2, 2, 2) layout = QtWidgets.QVBoxLayout(sequences["main"]) layout.addWidget(sequences["options"]) layout.addSpacing(8) layout.addWidget(sequences["nameRegex"]) layout.addWidget(sequences["view"]) layout.setContentsMargins(4, 6, 4, 0) with data.pin("endDialog") as end_dialog: layout = QtWidgets.QHBoxLayout(end_dialog["main"]) layout.addWidget(end_dialog["accept"]) layout.addWidget(end_dialog["cancel"]) layout.setContentsMargins(4, 0, 4, 0) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(data["rootPath"]["main"]) layout.addWidget(data["sequences"]["main"], stretch=True) layout.addWidget(data["endDialog"]["main"]) if root: data["rootPath"]["path"].setText(root) data["rootPath"]["find"].setEnabled(False) data["sequences"]["single"].setEnabled(False) data["rootPath"]["path"].setReadOnly(True) data["rootPath"]["path"].textChanged.connect(self.find_sequences) data["rootPath"]["find"].clicked.connect(self.open_browser) data["sequences"]["single"].stateChanged.connect(self.on_single) data["sequences"]["stereo"].stateChanged.connect(self.on_stereo) data["sequences"]["nHead"].textChanged.connect(self.on_nhead_changed) data["sequences"]["nTail"].textChanged.connect(self.on_ntail_changed) data["endDialog"]["accept"].clicked.connect(self.on_accepted) data["endDialog"]["cancel"].clicked.connect(self.reject) self.data = data # Defaults self.is_single = False self.is_stereo = False self.from_cache = False self.resize(600, 800)
def setup_ui(self): """Build the UI""" main_layout = QtWidgets.QHBoxLayout() splitter = QtWidgets.QSplitter() # Container overview container_widget = QtWidgets.QWidget() container_title = self._create_label("Assets") container_layout = QtWidgets.QVBoxLayout() container_model = models.ContainerModel() container_view = views.View() container_view.setModel(container_model) container_view.setContextMenuPolicy(QtCore.Qt.NoContextMenu) from_selection_btn = QtWidgets.QPushButton("Get Looks From Selection") from_all_asset_btn = QtWidgets.QPushButton("Get Looks From All Assets") container_layout.addWidget(container_title) container_layout.addWidget(from_selection_btn) container_layout.addWidget(from_all_asset_btn) container_layout.addWidget(container_view) # Add container view container_widget.setLayout(container_layout) splitter.addWidget(container_widget) # look manager layout look_views_widget = QtWidgets.QWidget() look_views_layout = QtWidgets.QVBoxLayout() look_views_layout.setSpacing(10) # Looks from database documents_title = self._create_label("Available looks") documents_title.setAlignment(QtCore.Qt.AlignCenter) document_model = models.FlatModel() document_view = views.View() document_view.setToolTip("Use right mouse button menu for direct actions") document_view.setModel(document_model) document_view.setMinimumHeight(230) look_views_layout.addWidget(documents_title) look_views_layout.addWidget(document_view) # Turn off queue at start, show this widget queue_off_message = QtWidgets.QLabel( "Queue is empty, add items to the queue to active it") queue_off_message.setAlignment(QtCore.Qt.AlignCenter) queue_off_message.setStyleSheet("font-size: 12px;") # Queue view queue_title = self._create_label("Queue") queue_title.setAlignment(QtCore.Qt.AlignCenter) queue_model = models.LookQueueModel() queue_view = views.View() queue_view.setModel(queue_model) queue_widgets = QtWidgets.QStackedWidget() queue_widgets.addWidget(queue_off_message) queue_widgets.addWidget(queue_view) look_views_layout.addWidget(queue_title) look_views_layout.addWidget(queue_widgets) # Method buttons method_buttons_layout = QtWidgets.QHBoxLayout() assign_to_selected_btn = QtWidgets.QPushButton("Process Selected Queue") assign_to_all_btn = QtWidgets.QPushButton("Process Queued Looks") remove_unused_btn = QtWidgets.QPushButton("Remove Unused Looks") method_buttons_layout.addWidget(assign_to_selected_btn) method_buttons_layout.addWidget(assign_to_all_btn) method_buttons_layout.addWidget(remove_unused_btn) load_save_buttons_layout = QtWidgets.QHBoxLayout() load_queue_btn = QtWidgets.QPushButton("Load Queue from File") save_queue_btn = QtWidgets.QPushButton("Save Queue to File") load_save_buttons_layout.addWidget(load_queue_btn) load_save_buttons_layout.addWidget(save_queue_btn) look_views_layout.addLayout(method_buttons_layout) look_views_layout.addLayout(load_save_buttons_layout) look_views_widget.setLayout(look_views_layout) splitter.addWidget(look_views_widget) main_layout.addWidget(splitter) container_view.setColumnWidth(0, 200) # subset document_view.setColumnWidth(0, 200) queue_view.setColumnWidth(0, 200) self.from_selection_btn = from_selection_btn self.from_all_asset_btn = from_all_asset_btn self.assign_to_selected_btn = assign_to_selected_btn self.assign_to_all_btn = assign_to_all_btn self.remove_unused_btn = remove_unused_btn self.container_model = container_model self.container_view = container_view self.document_model = document_model self.document_view = document_view self.queue_widgets = queue_widgets self.queue_model = queue_model self.queue_view = queue_view self.save_queue = save_queue_btn self.load_queue = load_queue_btn self.setLayout(main_layout)