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