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 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 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 __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): QtWidgets.QWidget.__init__(self, parent) self.setWindowTitle("Replicate Houdini Asset (particles)") self.setWindowFlags(QtCore.Qt.Window) self.setParent(parent) self.resize(280, 280) layout = QtWidgets.QVBoxLayout() input_box = QtWidgets.QGroupBox("Input") input_box.setStyleSheet("{color: red}") input_vboxlayout = QtWidgets.QVBoxLayout() from_selection = QtWidgets.QCheckBox("Selected") from_selection.setChecked(True) name_hlayout = QtWidgets.QHBoxLayout() name_label = QtWidgets.QLabel("Name") name_field = QtWidgets.QLineEdit() name_hlayout.addWidget(name_label) name_hlayout.addWidget(name_field) input_box.setLayout(input_vboxlayout) input_vboxlayout.addWidget(from_selection) input_vboxlayout.addLayout(name_hlayout) time_box = QtWidgets.QGroupBox("Time") time_hlayout = QtWidgets.QHBoxLayout() time_start_vbox = QtWidgets.QVBoxLayout() time_start_label = QtWidgets.QLabel("Start") time_start = QtWidgets.QSpinBox() time_start_vbox.addWidget(time_start_label) time_start_vbox.addWidget(time_start) time_end_vbox = QtWidgets.QVBoxLayout() time_end_label = QtWidgets.QLabel("End") time_end = QtWidgets.QSpinBox() time_end_vbox.addWidget(time_end_label) time_end_vbox.addWidget(time_end) time_hlayout.addLayout(time_start_vbox) time_hlayout.addLayout(time_end_vbox) time_box.setLayout(time_hlayout) mapping_box = QtWidgets.QGroupBox("Attribute mapping") mapping_layout = QtWidgets.QVBoxLayout() mapping_box.setLayout(mapping_layout) button_vlayout = QtWidgets.QVBoxLayout() replicate = QtWidgets.QPushButton("Replicate") update_hlayout = QtWidgets.QHBoxLayout() update_all_button = QtWidgets.QPushButton("Update All") update_selected_button = QtWidgets.QPushButton("Update Selected") update_hlayout.addWidget(update_all_button) update_hlayout.addWidget(update_selected_button) refresh_button = QtWidgets.QPushButton("Refresh") button_vlayout.addWidget(replicate) button_vlayout.addLayout(update_hlayout) button_vlayout.addWidget(refresh_button) layout.addWidget(input_box) # layout.addWidget(time_box) layout.addWidget(mapping_box) layout.addLayout(button_vlayout) # Open up items for code self._selection = [] self.mapping_data = {} self.from_selection = from_selection self.name_field = name_field self.time_start = time_start self.time_end = time_end self.mapping_layout = mapping_layout self.replicate_button = replicate self.update_all_button = update_all_button self.update_selected_button = update_selected_button self.refesh_button = refresh_button self.setLayout(layout) layout.addStretch(True) self.get_settings() self.connections()