def __init__(self, logger, parent=None): super(StatusLineWidget, self).__init__(parent) icon = _LogLevelIconButton() line = QtWidgets.QLineEdit() line.setReadOnly(True) line.setStyleSheet(""" QLineEdit { border: 0px; border-radius: 6px; padding: 0 6px; color: #AAAAAA; background: #363636; } """) body = QtWidgets.QHBoxLayout(self) body.addWidget(icon) body.addWidget(line) handler = _WidgetLogHandler(self) logger.addHandler(handler) self.icon = icon self.line = line self.echo.connect(self.on_echo) self.icon.clicked.connect(lambda: self._echo(0, "", True))
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self._comp = avalon.get_current_comp() self._comp_name = self._get_comp_name() self.setWindowTitle("Set Render Mode") self.setFixedSize(300, 175) layout = QtWidgets.QVBoxLayout() # region comp info comp_info_layout = QtWidgets.QHBoxLayout() update_btn = QtWidgets.QPushButton( qtawesome.icon("fa.refresh", color="white"), "") update_btn.setFixedWidth(25) update_btn.setFixedHeight(25) comp_information = QtWidgets.QLineEdit() comp_information.setEnabled(False) comp_info_layout.addWidget(comp_information) comp_info_layout.addWidget(update_btn) # endregion comp info # region modes mode_options = QtWidgets.QComboBox() mode_options.addItems(_help.keys()) mode_information = QtWidgets.QTextEdit() mode_information.setReadOnly(True) # endregion modes accept_btn = QtWidgets.QPushButton("Accept") layout.addLayout(comp_info_layout) layout.addWidget(mode_options) layout.addWidget(mode_information) layout.addWidget(accept_btn) self.setLayout(layout) self.comp_information = comp_information self.update_btn = update_btn self.mode_options = mode_options self.mode_information = mode_information self.accept_btn = accept_btn self.connections() self.update() # Force updated render mode help text self._update_rendermode_info()
def createEditor(self, parent, option, index): editor = QtWidgets.QLineEdit(parent) def commit_data(): self.commitData.emit(editor) # Update model data self.name_changed.emit() # Display model data editor.editingFinished.connect(commit_data) return editor
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): super(ResolutionEditor, self).__init__(parent) weditor = QtWidgets.QLineEdit() heditor = QtWidgets.QLineEdit() weditor.setValidator(QtGui.QIntValidator()) heditor.setValidator(QtGui.QIntValidator()) layout = QtWidgets.QHBoxLayout(self) layout.addWidget(weditor) layout.addWidget(heditor) # This is important to make those QLineEdit widgets to have # proper hight in column. layout.setContentsMargins(2, 0, 2, 0) weditor.editingFinished.connect(self.on_editingFinished) heditor.editingFinished.connect(self.on_editingFinished) self.data = { "w": weditor, "h": heditor, }
def __init__(self, parent=None): super(AssetWidget, self).__init__(parent=parent) self.setContentsMargins(0, 0, 0, 0) layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(4) # Tree View model = AssetModel(self) proxy = RecursiveSortFilterProxyModel() proxy.setSourceModel(model) proxy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) view = DeselectableTreeView() view.setIndentation(15) view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) view.setHeaderHidden(True) view.setModel(proxy) # Header header = QtWidgets.QHBoxLayout() icon = qtawesome.icon("fa.refresh", color=style.colors.light) refresh = QtWidgets.QPushButton(icon, "") refresh.setToolTip("Refresh items") filter = QtWidgets.QLineEdit() filter.textChanged.connect(proxy.setFilterFixedString) filter.setPlaceholderText("Filter assets..") header.addWidget(filter) header.addWidget(refresh) # Layout layout.addLayout(header) layout.addWidget(view) # Signals/Slots selection = view.selectionModel() selection.selectionChanged.connect(self.selection_changed) selection.currentChanged.connect(self.current_changed) refresh.clicked.connect(self.refresh) self.refreshButton = refresh self.model = model self.proxy = proxy self.view = view
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent=parent) self.setWindowFlag(QtCore.Qt.Dialog) if parent: self.setStyleSheet(parent.styleSheet()) layout = QtWidgets.QVBoxLayout() task_icon_layout = QtWidgets.QHBoxLayout() task_name = QtWidgets.QLineEdit() icon_name = QtWidgets.QComboBox() icon_preview_button = QtWidgets.QPushButton() icon_preview_button.setEnabled(False) icon_preview_button.setStyleSheet(style.preview_button) task_icon_layout.addWidget(task_name) task_icon_layout.addWidget(icon_name) task_icon_layout.addWidget(icon_preview_button) buttons_layout = QtWidgets.QHBoxLayout() accept_button = QtWidgets.QPushButton("Accept") cancel_button = QtWidgets.QPushButton("Cancel") buttons_layout.addWidget(accept_button) buttons_layout.addWidget(cancel_button) layout.addLayout(task_icon_layout) layout.addLayout(buttons_layout) self.setLayout(layout) self.task_name = task_name self.icon_name = icon_name self.icon_preview = icon_preview_button self.fontlib = {} self.connect_signals() self.refresh()
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, 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 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 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 createEditor(self, parent, option, index): editor = QtWidgets.QLineEdit(parent) editor.setReadOnly(True) return editor
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 __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()
def __init__(self, session=None, parent=None): QtWidgets.QWidget.__init__(self, parent) # Attributes self._context = None self._session = session or api.Session self.log = logging.getLogger("File Sequence Publisher") # Build UI window_icon = qta.icon("fa.filter", color=style.colors.default) self.setWindowIcon(window_icon) self.setWindowTitle("File Sequence Publisher") layout = QtWidgets.QVBoxLayout() breadcrumps = SimpleContextSwitcher() set_context_btn = QtWidgets.QPushButton("Set Context") browse_hlayout = QtWidgets.QHBoxLayout() file_path = QtWidgets.QLineEdit() browse_button = QtWidgets.QPushButton("Browse") browse_hlayout.addWidget(file_path) browse_hlayout.addWidget(browse_button) family_layout = QtWidgets.QHBoxLayout() family_label = QtWidgets.QLabel("Family") family_label.setFixedWidth(50) family_box = SearchComboBox() family_layout.addWidget(family_label) family_layout.addWidget(family_box) collect_layout = QtWidgets.QVBoxLayout() collect_buttons_hlayout = QtWidgets.QHBoxLayout() refresh_icon = qta.icon("fa.refresh", color=style.colors.default) refresh_button = QtWidgets.QPushButton() refresh_button.setIcon(refresh_icon) refresh_button.setFixedWidth(28) collect_button = QtWidgets.QPushButton("Collect") collect_buttons_hlayout.addWidget(collect_button) collect_buttons_hlayout.addWidget(refresh_button) collect_view = QtWidgets.QListWidget() collect_view.setAlternatingRowColors(True) collect_view.setSelectionMode(3) collect_view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) collect_view.customContextMenuRequested.connect( self.show_right_mouse_menu) collect_layout.addLayout(collect_buttons_hlayout) collect_layout.addWidget(collect_view) publish_button = QtWidgets.QPushButton("Publish") publish_button.setEnabled(False) layout.addWidget(breadcrumps) layout.addLayout(browse_hlayout) layout.addLayout(family_layout) layout.addLayout(collect_layout) layout.addWidget(publish_button) self.setLayout(layout) self.set_context_btn = set_context_btn self.browse = browse_button self.file_path = file_path self.family = family_box self.collect_button = collect_button self.collection_view = collect_view self.publish_button = publish_button self.refresh_button = refresh_button self.make_connections() self.install() self.get_families() self.resize(self.sizeHint())
def __init__(self, parent=None): ################################################ # |---------------------| |------------------| # # |Comp | |Asset | # # |[..][ v]| |[ v]| # # |---------------------| |------------------| # # | Update existing comp [ ] | # # |------------------------------------------| # # | Switch | # # |------------------------------------------| # ################################################ QtWidgets.QWidget.__init__(self, parent) layout = QtWidgets.QVBoxLayout() # Comp related input comp_hlayout = QtWidgets.QHBoxLayout() comp_label = QtWidgets.QLabel("Comp file") comp_label.setFixedWidth(50) comp_box = QtWidgets.QComboBox() button_icon = qta.icon("fa.folder", color="white") open_from_dir = QtWidgets.QPushButton() open_from_dir.setIcon(button_icon) comp_box.setFixedHeight(25) open_from_dir.setFixedWidth(25) open_from_dir.setFixedHeight(25) comp_hlayout.addWidget(comp_label) comp_hlayout.addWidget(comp_box) comp_hlayout.addWidget(open_from_dir) # Asset related input asset_hlayout = QtWidgets.QHBoxLayout() asset_label = QtWidgets.QLabel("Shot") asset_label.setFixedWidth(50) asset_box = QtWidgets.QComboBox() asset_box.setLineEdit(QtWidgets.QLineEdit()) asset_box.setFixedHeight(25) refresh_icon = qta.icon("fa.refresh", color="white") refresh_btn = QtWidgets.QPushButton() refresh_btn.setIcon(refresh_icon) asset_box.setFixedHeight(25) refresh_btn.setFixedWidth(25) refresh_btn.setFixedHeight(25) asset_hlayout.addWidget(asset_label) asset_hlayout.addWidget(asset_box) asset_hlayout.addWidget(refresh_btn) # Options options = QtWidgets.QHBoxLayout() options.setAlignment(QtCore.Qt.AlignLeft) current_comp_check = QtWidgets.QCheckBox() current_comp_check.setChecked(True) current_comp_label = QtWidgets.QLabel("Use current comp") options.addWidget(current_comp_label) options.addWidget(current_comp_check) accept_btn = QtWidgets.QPushButton("Switch") layout.addLayout(options) layout.addLayout(comp_hlayout) layout.addLayout(asset_hlayout) layout.addWidget(accept_btn) self._open_from_dir = open_from_dir self._comps = comp_box self._assets = asset_box self._use_current = current_comp_check self._accept_btn = accept_btn self._refresh_btn = refresh_btn self.setWindowTitle("Fusion Switch Shot") self.setLayout(layout) self.resize(260, 140) self.setMinimumWidth(260) self.setFixedHeight(140) self.connections() # Update ui to correct state self._on_use_current_comp() self._refresh()
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 __init__(self, parent=None): super(Window, self).__init__(parent=parent) icon = qtawesome.icon("fa.map-pin", color="#E74C3C") unlink = qtawesome.icon("fa.chain-broken", color="#DFDFDF") self.setWindowIcon(icon) self.setWindowTitle("Pinner") self.setWindowFlags(QtCore.Qt.Window) widgets = { "pin": QtWidgets.QWidget(), "addPinBtn": QtWidgets.QPushButton("Create/Add Pin"), "pinName": QtWidgets.QLineEdit(), "ref": QtWidgets.QWidget(), "setReference": QtWidgets.QPushButton("Set Reference"), "refName": QtWidgets.QLineEdit(), "tar": QtWidgets.QWidget(), "setTarget": QtWidgets.QPushButton("Set Target"), "tarName": QtWidgets.QLineEdit(), "btm": QtWidgets.QWidget(), "runBtn": QtWidgets.QPushButton(icon, ""), "unlinkBtn": QtWidgets.QPushButton(unlink, ""), } widgets["addPinBtn"].setFixedWidth(160) widgets["setReference"].setFixedWidth(160) widgets["setTarget"].setFixedWidth(160) widgets["runBtn"].setFixedWidth(80) widgets["pinName"].setPlaceholderText( "A transform node to pin onto, default is a locator") widgets["refName"].setPlaceholderText( "Set motion reference object, like character's main geometry") widgets["tarName"].setPlaceholderText( "A transform node to be pinned, e.g. a rig controller") layout = QtWidgets.QHBoxLayout(widgets["pin"]) layout.addWidget(widgets["addPinBtn"]) layout.addWidget(widgets["pinName"], stretch=True) layout.setContentsMargins(0, 0, 0, 0) layout = QtWidgets.QHBoxLayout(widgets["ref"]) layout.addWidget(widgets["setReference"]) layout.addWidget(widgets["refName"], stretch=True) layout.setContentsMargins(0, 0, 0, 0) layout = QtWidgets.QHBoxLayout(widgets["tar"]) layout.addWidget(widgets["setTarget"]) layout.addWidget(widgets["tarName"], stretch=True) layout.setContentsMargins(0, 0, 0, 0) layout = QtWidgets.QHBoxLayout(widgets["btm"]) layout.addStretch() layout.addWidget(widgets["runBtn"]) layout.addWidget(widgets["unlinkBtn"]) layout.setContentsMargins(0, 0, 0, 0) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(widgets["pin"]) layout.addWidget(widgets["ref"]) layout.addWidget(widgets["tar"]) layout.addStretch() layout.addWidget(widgets["btm"]) # Connect widgets["addPinBtn"].clicked.connect(self.on_add_pin_clicked) widgets["setReference"].clicked.connect(self.on_set_ref_clicked) widgets["setTarget"].clicked.connect(self.on_set_target_clicked) widgets["runBtn"].clicked.connect(self.on_run_clicked) widgets["unlinkBtn"].clicked.connect(self.on_unlink_clicked) self.widgets = widgets self.resize(560, 150)