def keyPressEvent(self, event):
        if event.key() == Qt.Key_V and event.modifiers() == Qt.ControlModifier | Qt.AltModifier and not self.is_mtt_sender:
            MTTSettings.set_value('viewerState', False)
            # get main tool window and disconnect signal
            main_window = self.parentWidget().parentWidget().parentWidget()
            main_window.table_view_selection_model.selectionChanged.disconnect(main_window.on_auto_show_texture)
            # get current QDockWidget parent to hide tool
            self.parentWidget().parentWidget().setVisible(False)
            # set focus to tableView otherwise filter field will be selected
            main_window.table_view.setFocus()

        if self.graphics_view.is_default_texture or event.isAutoRepeat():
            return False if self.is_mtt_sender else None

        if event.key() == Qt.Key_Alt:
            self.graphics_view.navigation_mode = True
            self.graphics_view.setDragMode(QGraphicsView.ScrollHandDrag)
        elif event.key() == Qt.Key_A:
            self.graphics_view.reset_texture_transform()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_F:
            self.graphics_view.fit_texture()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_T:
            state = self.toggle_tile_btn.isChecked()
            self.toggle_tile_btn.setChecked(not state)
            self.graphics_view.toggle_tile()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_C:
            state = self.toggle_compare_btn.isChecked()
            self.toggle_compare_btn.setChecked(not state)
            self.toggle_compare()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_I:
            state = self.toggle_picker_btn.isChecked()
            if not state:
                self.toggle_picker_btn.setChecked(True)
                self.graphics_view.toggle_color_info()
                self.graphics_view.show_popup()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_1:
            self.show_channel('RGB')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_2:
            self.show_channel('RGBA')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_3:
            self.show_channel('R')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_4:
            self.show_channel('G')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_5:
            self.show_channel('B')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_6:
            self.show_channel('A')
            return True if self.is_mtt_sender else None

        return False if self.is_mtt_sender else None
Example #2
0
    def select_file(self):
        """ Maya Open Dialog to select file texture """
        self.open_dialog_visible = True

        if MTTSettings.value('browserFirstStart'):
            image_dir = cmds.optionVar(query='MTT_browserStartFolder')
        else:
            image_dir = cmds.workspace(query=True,
                                       rootDirectory=True) + cmds.workspace(
                                           fileRuleEntry='sourceImages')
            MTTSettings.set_value('browserFirstStart', True)

        file_path = cmds.fileDialog2(fileMode=1,
                                     startingDirectory=image_dir,
                                     caption='Select a texture',
                                     okCaption='Select')

        if file_path:
            new_path = file_path[0]
            cmds.optionVar(
                sv=['MTT_browserStartFolder',
                    os.path.dirname(new_path)])
            if MTTSettings.value('forceRelativePath'):
                new_path = convert_to_relative_path(new_path)
                # relative_path = workspace(projectPath=new_path)
                # if relative_path != new_path:
                #     new_path = '/%s' % relative_path
            self.line_edit.setText(new_path)
        self.open_dialog_visible = False
        self.close()
        self.editingFinished.emit()
        cmds.showWindow(WINDOW_NAME)
    def closeEvent(self, event):
        MTTSettings.set_value('FilterFileDialog/windowGeometry',
                              self.geometry())
        self.do_save_bookmark()

        self.deleteLater()
        event.accept()
    def select_file(self):
        """ Maya Open Dialog to select file texture """
        self.open_dialog_visible = True

        if MTTSettings.value('browserFirstStart'):
            image_dir = cmds.optionVar(query='MTT_browserStartFolder')
        else:
            image_dir = cmds.workspace(query=True,
                                       rootDirectory=True) + cmds.workspace(
                fileRuleEntry='sourceImages')
            MTTSettings.set_value('browserFirstStart', True)

        file_path = cmds.fileDialog2(fileMode=1, startingDirectory=image_dir,
                                     caption='Select a texture',
                                     okCaption='Select')

        if file_path:
            new_path = file_path[0]
            cmds.optionVar(
                sv=['MTT_browserStartFolder', os.path.dirname(new_path)])
            if MTTSettings.value('forceRelativePath'):
                new_path = convert_to_relative_path(new_path)
                # relative_path = workspace(projectPath=new_path)
                # if relative_path != new_path:
                #     new_path = '/%s' % relative_path
            self.line_edit.setText(new_path)
        self.open_dialog_visible = False
        self.close()
        self.editingFinished.emit()
        cmds.showWindow(WINDOW_NAME)
    def closeEvent(self, event):
        MTTSettings.set_value(
            'FilterFileDialog/windowGeometry', self.geometry())
        self.do_save_bookmark()

        self.deleteLater()
        event.accept()
    def _set_filter_value(self, key, value):
        self.model.layoutAboutToBeChanged.emit()

        MTTSettings.set_value(key, value)
        cmds.optionVar(stringValue=('filtered_instances', ''))

        self.model.layoutChanged.emit()
        self.update_node_file_count()
    def _set_filter_value(self, key, value):
        self.model.layoutAboutToBeChanged.emit()

        MTTSettings.set_value(key, value)
        cmds.optionVar(stringValue=('filtered_instances', ''))

        self.model.layoutChanged.emit()
        self.update_node_file_count()
 def on_filter_manage_quick_filter(self):
     """ Open Quick Filter words manager and save its content """
     manager = MTTQuickFilterManager(self)
     if manager.exec_():
         lists = manager.get_lists()
         # save list in settings
         MTTSettings.set_value('filterQuickWordsWildcard', ';;'.join(lists[0]))
         MTTSettings.set_value('filterQuickWordsRegExp', ';;'.join(lists[1]))
         # set current list
         self.view.quick_filter_words = lists[MTTSettings.value('filterRE')]
     manager.deleteLater()
 def on_filter_manage_quick_filter(self):
     """ Open Quick Filter words manager and save its content """
     manager = MTTQuickFilterManager(self)
     if manager.exec_():
         lists = manager.get_lists()
         # save list in settings
         MTTSettings.set_value('filterQuickWordsWildcard',
                               ';;'.join(lists[0]))
         MTTSettings.set_value('filterQuickWordsRegExp',
                               ';;'.join(lists[1]))
         # set current list
         self.view.quick_filter_words = lists[MTTSettings.value('filterRE')]
     manager.deleteLater()
    def do_save_bookmark(self):
        if not self.bookmark_list:
            return

        row_count = self.bookmark_list.count()
        ordered_list = list()

        for i in range(row_count):
            item = self.bookmark_list.item(i)
            name = item.text().replace(',', '_').replace('|', '_')
            path = item.root_path
            if name != 'sourceimages':
                ordered_list.append('%s|%s' % (name, path))

        MTTSettings.set_value('FilterFileDialog/bookmarks',
                              ','.join(ordered_list))
    def do_save_bookmark(self):
        if not self.bookmark_list:
            return

        row_count = self.bookmark_list.count()
        ordered_list = list()

        for i in range(row_count):
            item = self.bookmark_list.item(i)
            name = item.text().replace(',', '_').replace('|', '_')
            path = item.root_path
            if name != 'sourceimages':
                ordered_list.append('%s|%s' % (name, path))

        MTTSettings.set_value(
            'FilterFileDialog/bookmarks', ','.join(ordered_list))
def create_nodes(define_path='', define_type=None):
    dialog = MTTFilterFileDialog(define_path=define_path,
                                 define_type=define_type)

    if dialog.exec_():
        files = dialog.get_selected_files()
        node_type = dialog.get_node_type()
        node_attr = [
            attr for (n_type, nice, attr) in MTTSettings.SUPPORTED_TYPE
            if node_type == n_type
        ][0]

        current_selection = cmds.ls(selection=True)
        MTTSettings.set_value('suspendRenameCallbacks', True)

        nodes = list()
        for f in files:
            n_name = os.path.basename(f).rsplit('.')[0]
            node_name = n_name if not n_name[0].isdigit() else '_%s' % n_name
            new_node = cmds.shadingNode(node_type, name=node_name, asTexture=1)
            convert = MTTSettings.value('forceRelativePath')

            if convert:
                f = convert_to_relative_path(f)

            set_attr(new_node, node_attr, f, attr_type='string')

            if MTTSettings.IMPORT_POLICY:
                try:
                    exec MTTSettings.IMPORT_POLICY
                    exec_import_policy(current_selection, node_name,
                                       os.path.basename(f))

                except RuntimeError:
                    mtt_log('Fail to run import policy.',
                            msg_type='error',
                            verbose=False)

            nodes.append(new_node)

        MTTSettings.set_value('suspendRenameCallbacks', False)
        MTTSettings.remove('suspendRenameCallbacks')
        if nodes:
            cmds.select(nodes, replace=True)

    dialog.deleteLater()
def create_nodes(define_path='', define_type=None):
    dialog = MTTFilterFileDialog(
        define_path=define_path, define_type=define_type)

    if dialog.exec_():
        files = dialog.get_selected_files()
        node_type = dialog.get_node_type()
        node_attr = [
            attr
            for (n_type, nice, attr) in MTTSettings.SUPPORTED_TYPE
            if node_type == n_type][0]

        current_selection = cmds.ls(selection=True)
        MTTSettings.set_value('suspendRenameCallbacks', True)

        nodes = list()
        for f in files:
            n_name = os.path.basename(f).rsplit('.')[0]
            node_name = n_name if not n_name[0].isdigit() else '_%s' % n_name
            new_node = cmds.shadingNode(node_type, name=node_name, asTexture=1)
            convert = MTTSettings.value('forceRelativePath')

            if convert:
                f = convert_to_relative_path(f)

            set_attr(new_node, node_attr, f, attr_type='string')

            if MTTSettings.IMPORT_POLICY:
                try:
                    exec MTTSettings.IMPORT_POLICY
                    exec_import_policy(
                        current_selection, node_name, os.path.basename(f)
                    )

                except RuntimeError:
                    mtt_log('Fail to run import policy.', msg_type='error',
                            verbose=False)

            nodes.append(new_node)

        MTTSettings.set_value('suspendRenameCallbacks', False)
        MTTSettings.remove('suspendRenameCallbacks')
        if nodes:
            cmds.select(nodes, replace=True)

    dialog.deleteLater()
Example #14
0
 def toggle_premultiply(self):
     state = not MTTSettings.value('Viewer/premultiply')
     MTTSettings.set_value('Viewer/premultiply', state)
     if self.texture_path:
         self.show_image(self.texture_path)
 def on_show_real_attribute_value(self):
     self.view.model.layoutAboutToBeChanged.emit()
     show_real_attribute_state = MTTSettings.value('showRealAttributeValue')
     MTTSettings.set_value(
         'showRealAttributeValue', not show_real_attribute_state)
     self.view._layout_changed()
 def on_switch_source_edit_menu(self):
     state = MTTSettings.value('switchEdit')
     MTTSettings.set_value('switchEdit', not state)
     self.view.on_set_source_edit_menu(not state)
 def on_auto_reload():
     state = MTTSettings.value('autoReload')
     MTTSettings.set_value('autoReload', not state)
    def keyPressEvent(self, event):
        if event.key() == Qt.Key_V and event.modifiers(
        ) == Qt.ControlModifier | Qt.AltModifier and not self.is_mtt_sender:
            MTTSettings.set_value('viewerState', False)
            # get main tool window and disconnect signal
            main_window = self.parentWidget().parentWidget().parentWidget()
            main_window.table_view_selection_model.selectionChanged.disconnect(
                main_window.on_auto_show_texture)
            # get current QDockWidget parent to hide tool
            self.parentWidget().parentWidget().setVisible(False)
            # set focus to tableView otherwise filter field will be selected
            main_window.table_view.setFocus()

        if self.graphics_view.is_default_texture or event.isAutoRepeat():
            return False if self.is_mtt_sender else None

        if event.key() == Qt.Key_Alt:
            self.graphics_view.navigation_mode = True
            self.graphics_view.setDragMode(QGraphicsView.ScrollHandDrag)
        elif event.key() == Qt.Key_A:
            self.graphics_view.reset_texture_transform()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_F:
            self.graphics_view.fit_texture()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_T:
            state = self.toggle_tile_btn.isChecked()
            self.toggle_tile_btn.setChecked(not state)
            self.graphics_view.toggle_tile()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_C:
            state = self.toggle_compare_btn.isChecked()
            self.toggle_compare_btn.setChecked(not state)
            self.toggle_compare()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_I:
            state = self.toggle_picker_btn.isChecked()
            if not state:
                self.toggle_picker_btn.setChecked(True)
                self.graphics_view.toggle_color_info()
                self.graphics_view.show_popup()
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_1:
            self.show_channel('RGB')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_2:
            self.show_channel('RGBA')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_3:
            self.show_channel('R')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_4:
            self.show_channel('G')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_5:
            self.show_channel('B')
            return True if self.is_mtt_sender else None
        elif event.key() == Qt.Key_6:
            self.show_channel('A')
            return True if self.is_mtt_sender else None

        return False if self.is_mtt_sender else None
    def save_states(self):
        # buttons states
        MTTSettings.set_value('onlySelectionState', self.selection_btn.isChecked())
        MTTSettings.set_value('onlyWritableState', self.writable_btn.isChecked())
        MTTSettings.set_value('showReferenceState', self.reference_btn.isChecked())
        MTTSettings.set_value('showWrongNameState', self.wrong_name_btn.isChecked())
        MTTSettings.remove('pinnedNode')
        MTTSettings.set_value('vizWrongNameState', self.wrong_name_visibility_btn.isChecked())
        MTTSettings.set_value('showBasenameState', self.basename_visibility_btn.isChecked())
        MTTSettings.set_value('filterInstances', self.filter_instances_btn.isChecked())

        # groups states
        MTTSettings.set_value('filterGroup', self.filter_grp.current_state())
        MTTSettings.set_value('visibilityGroup', self.visibility_grp.current_state())
        MTTSettings.set_value('folderGroup', self.folder_grp.current_state())
        MTTSettings.set_value('autoGroup', self.auto_grp.current_state())
        MTTSettings.set_value('toolGroup', self.tool_grp.current_state())
        MTTSettings.set_value('mayaGroup', self.maya_grp.current_state())
 def on_switch_source_edit_menu(self):
     state = MTTSettings.value('switchEdit')
     MTTSettings.set_value('switchEdit', not state)
     self.view.on_set_source_edit_menu(not state)
 def on_auto_rename():
     state = MTTSettings.value('autoRename')
     MTTSettings.set_value('autoRename', not state)
 def on_toggle_headsup():
     state = MTTSettings.value('showHeadsUp')
     MTTSettings.set_value('showHeadsUp', not state)
 def on_force_relative_path():
     state = MTTSettings.value('forceRelativePath')
     MTTSettings.set_value('forceRelativePath', not state)
 def __on_toggle_power_user(self):
     state = MTTSettings.value('powerUser')
     MTTSettings.set_value('powerUser', not state)
     self.power_user = not state
 def on_force_relative_path():
     state = MTTSettings.value('forceRelativePath')
     MTTSettings.set_value('forceRelativePath', not state)
 def on_toggle_focus():
     state = MTTSettings.value('filterFocus')
     MTTSettings.set_value('filterFocus', not state)
 def on_toggle_headsup():
     state = MTTSettings.value('showHeadsUp')
     MTTSettings.set_value('showHeadsUp', not state)
 def on_show_real_attribute_value(self):
     self.view.model.layoutAboutToBeChanged.emit()
     show_real_attribute_state = MTTSettings.value('showRealAttributeValue')
     MTTSettings.set_value('showRealAttributeValue',
                           not show_real_attribute_state)
     self.view._layout_changed()
 def on_toggle_focus():
     state = MTTSettings.value('filterFocus')
     MTTSettings.set_value('filterFocus', not state)
 def on_show_only_selection(self):
     """ Filter nodes from current selection """
     state = self.selection_btn.isChecked()
     MTTSettings.set_value('onlySelectionState', state)
     self.filterSelectionToggled.emit(state)
 def __on_toggle_power_user(self):
     state = MTTSettings.value('powerUser')
     MTTSettings.set_value('powerUser', not state)
     self.power_user = not state
 def on_auto_reload():
     state = MTTSettings.value('autoReload')
     MTTSettings.set_value('autoReload', not state)
Example #33
0
 def toggle_recover_mode():
     state = not MTTSettings.value('Viewer/recoverMode')
     MTTSettings.set_value('Viewer/recoverMode', state)
 def on_auto_select():
     state = MTTSettings.value('autoSelect')
     MTTSettings.set_value('autoSelect', not state)
Example #35
0
 def auto_reset_zoom():
     MTTSettings.set_value('Viewer/autoFit', False)
     MTTSettings.set_value('Viewer/autoLock', False)
     MTTSettings.set_value('Viewer/autoReset', True)
 def on_auto_rename():
     state = MTTSettings.value('autoRename')
     MTTSettings.set_value('autoRename', not state)
 def on_show_only_selection(self):
     """ Filter nodes from current selection """
     state = self.selection_btn.isChecked()
     MTTSettings.set_value('onlySelectionState', state)
     self.filterSelectionToggled.emit(state)
 def toggle_recover_mode():
     state = not MTTSettings.value('Viewer/recoverMode')
     MTTSettings.set_value('Viewer/recoverMode', state)
 def on_auto_select():
     state = MTTSettings.value('autoSelect')
     MTTSettings.set_value('autoSelect', not state)
 def auto_reset_zoom():
     MTTSettings.set_value('Viewer/autoFit', False)
     MTTSettings.set_value('Viewer/autoLock', False)
     MTTSettings.set_value('Viewer/autoReset', True)
    def save_states(self):
        # buttons states
        MTTSettings.set_value('onlySelectionState',
                              self.selection_btn.isChecked())
        MTTSettings.set_value('onlyWritableState',
                              self.writable_btn.isChecked())
        MTTSettings.set_value('showReferenceState',
                              self.reference_btn.isChecked())
        MTTSettings.set_value('showWrongNameState',
                              self.wrong_name_btn.isChecked())
        MTTSettings.remove('pinnedNode')
        MTTSettings.set_value('vizWrongNameState',
                              self.wrong_name_visibility_btn.isChecked())
        MTTSettings.set_value('showBasenameState',
                              self.basename_visibility_btn.isChecked())
        MTTSettings.set_value('filterInstances',
                              self.filter_instances_btn.isChecked())

        # groups states
        MTTSettings.set_value('filterGroup', self.filter_grp.current_state())
        MTTSettings.set_value('visibilityGroup',
                              self.visibility_grp.current_state())
        MTTSettings.set_value('folderGroup', self.folder_grp.current_state())
        MTTSettings.set_value('autoGroup', self.auto_grp.current_state())
        MTTSettings.set_value('toolGroup', self.tool_grp.current_state())
        MTTSettings.set_value('mayaGroup', self.maya_grp.current_state())
 def toggle_premultiply(self):
     state = not MTTSettings.value('Viewer/premultiply')
     MTTSettings.set_value('Viewer/premultiply', state)
     if self.texture_path:
         self.show_image(self.texture_path)