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): 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)