Esempio n. 1
0
    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))
Esempio n. 2
0
    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()
Esempio n. 3
0
    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
Esempio n. 4
0
    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))
Esempio n. 5
0
    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,
        }
Esempio n. 6
0
    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
Esempio n. 7
0
    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()
Esempio n. 8
0
    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)
Esempio n. 9
0
    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))
Esempio n. 10
0
    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)
Esempio n. 11
0
    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))
Esempio n. 12
0
 def createEditor(self, parent, option, index):
     editor = QtWidgets.QLineEdit(parent)
     editor.setReadOnly(True)
     return editor
Esempio n. 13
0
    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()
Esempio n. 14
0
    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()
Esempio n. 15
0
    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())
Esempio n. 16
0
    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()
Esempio n. 17
0
    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)
Esempio n. 18
0
    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)