def query_tab_names(): """ Create Tabs from maya-type sTypes """ search_type = 'sthpw/search_object' if env.Mode().get == 'standalone': filters = [('type', env.Env().get_types_list()), ('namespace', env.Env().get_namespace())] else: filters = [('type', env.Mode().get), ('namespace', env.Env().get_namespace())] assets = server_query(search_type, filters) out_tabs = { 'names': [], 'codes': [], 'layouts': [], 'colors': [], } if assets: for asset in assets: asset_get = asset.get out_tabs['names'].append(asset_get('title')) out_tabs['codes'].append(asset_get('code')) out_tabs['layouts'].append(asset_get('layout')) out_tabs['colors'].append(asset_get('color')) return out_tabs
def close_routine(): if env.Mode().get == 'maya': maya_dock_instances = mf.get_maya_dock_window() for maya_dock_instance in maya_dock_instances: maya_dock_instance.close() maya_dock_instance.deleteLater() if env.Mode().get == 'standalone': self.close()
def readSettings(self): """ Reading Settings """ self.setWindowTitle(self.ui_main_window.windowTitle()) self.settings.beginGroup(env.Mode().get + '/ui_maya_dock') is_floating = self.settings.value('isFloating', 'false') == 'true' and True or False self.move(self.settings.value('pos', QtCore.QPoint(200, 200))) size = self.settings.value('size', QtCore.QSize(427, 690)) if self.settings.value('tabArea', self) == 2: area = 'right' else: area = 'left' self.settings.endGroup() self.setDockableParameters(dockable=True, floating=is_floating, area=area, width=size.width(), height=size.height()) self.parent().setAllowedAreas( QtCore.Qt.DockWidgetArea.RightDockWidgetArea | QtCore.Qt.DockWidgetArea.LeftDockWidgetArea) self.show() self.raise_()
def readSettings(self): """ Reading Settings """ self.settings.beginGroup(env.Mode().get + '/ui_addsobject') self.setGeometry(self.settings.value('geometry', QtCore.QRect(500, 400, 500, 350))) self.settings.endGroup()
def readSettings(self): """ Reading Settings """ self.settings.beginGroup(env.Mode().get + '/ui_checkout') tab_name = self.objectName().split('/') group_path = '{0}/{1}/{2}'.format(tab_name[0], env.Env().get_project(), tab_name[1]) self.settings.beginGroup(group_path) self.commentsSplitter.restoreState( self.settings.value('commentsSplitter')) self.descriptionSplitter.restoreState( self.settings.value('descriptionSplitter')) self.imagesSplitter.restoreState(self.settings.value('imagesSplitter')) self.searchLineEdit.setText( self.settings.value('searchLineEdit_text', '')) self.contextComboBox.setCurrentIndex( self.settings.value('contextComboBox', 0)) self.add_items_to_results(self.searchLineEdit.text()) try: gf.revert_expanded_state(self.resultsTreeWidget, self.settings.value( 'resultsTreeWidget_isExpanded', None), expand=True) gf.revert_expanded_state(self.resultsTreeWidget, self.settings.value( 'resultsTreeWidget_isSelected', None), select=True) except: pass self.settings.endGroup() self.settings.endGroup()
def readSettings(self): """ Reading Settings """ self.settings.beginGroup(env.Mode().get + '/ui_main') self.move(self.settings.value('float_notify_pos', self.pos())) self.resize(self.settings.value('float_notify_size', self.size())) lastUpdate = self.settings.value('float_notify_lastUpdate') now = QtCore.QDateTime.currentDateTimeUtc() # update_time = 60*60*24*5 secs = self.update_secs if not lastUpdate: # secs = abs(lastUpdate.secsTo(now)) if secs >= self.update_secs: print "Update is past due at load time" self.manual_update() return else: print "Still %d seconds left from last load, until next update" % secs self.start_update(secs) self.settings.endGroup()
def readSettings(self): """ Reading Settings """ self.userNameLineEdit.setText(env.Env().get_user()) self.passwordLineEdit.setText(env.Env().get_user()) self.tacticEnvLineEdit.setText(env.Env().get_data_dir()) self.tacticAssetDirLineEdit.setText(env.Env().get_asset_dir()) self.tacticInstallDirLineEdit.setText(env.Env().get_install_dir()) self.tacticServerLineEdit.setText(env.Env().get_server()) if env.Mode().get == 'maya': self.currentWorkdirLineEdit.setText(cmds.workspace(q=True, dir=True)) self.settings.beginGroup(env.Mode().get + '/ui_conf') self.configToolBox.setCurrentIndex(self.settings.value('configToolBox', 0)) self.settings.endGroup()
def reference_file(self): file_path = self.get_current_item_paths()[0] if env.Mode().get == 'maya': mf.reference_scene(file_path) else: pass
def import_file(self): file_path = self.get_current_item_paths()[0] if env.Mode().get == 'maya': mf.import_scene(file_path) else: pass
def server_restart(first_run=False): def run_bat(restart=False): path = os.path.normpath(os.environ['TACTIC_INSTALL_DIR'] + os.sep + os.pardir) print('Starting TACTIC Server...') os.system(path + '/ServerRun.bat') print('Hold on for 3 seconds until server start...') time.sleep(3) server = get_server() if restart: ui_maya_dock.startup() conf_dialog.close() return server msb = QtGui.QMessageBox(QtGui.QMessageBox.Question, 'TACTIC Server not running!', "<p>Looks like TACTIC Server isn't running!</p> <p>Start Server?</p>", QtGui.QMessageBox.NoButton, env.Inst().ui_main) msb.addButton("Yes", QtGui.QMessageBox.YesRole) msb.addButton("Open config", QtGui.QMessageBox.AcceptRole) msb.addButton("No", QtGui.QMessageBox.NoRole) msb.exec_() reply = msb.buttonRole(msb.clickedButton()) if reply == QtGui.QMessageBox.YesRole: run_bat() if reply == QtGui.QMessageBox.AcceptRole: conf_dialog = ui_conf_classes.Ui_configuration_dialogWidget() conf_dialog.configToolBox.setCurrentIndex(1) try_run = conf_dialog.buttonBox.addButton("Try Run", QtGui.QDialogButtonBox.YesRole) try_run.clicked.connect(lambda: run_bat(True)) conf_dialog.show() sys.exit() if reply == QtGui.QMessageBox.NoRole: if env.Mode().get == 'maya': cmds.warning('Failed to run TACTIC Handler. TACTIC Server not running!') elif env.Mode().get == 'standalone': msg = QtGui.QMessageBox(QtGui.QMessageBox.Warning, 'Failed to run TACTIC Handler', 'TACTIC Server not running!', QtGui.QMessageBox.NoButton, env.Inst().ui_main) msg.addButton("Close", QtGui.QMessageBox.AcceptRole) msg.exec_() rpl = msg.buttonRole(msg.clickedButton()) if rpl == QtGui.QMessageBox.AcceptRole: sys.exit() else: print('Failed to run TACTIC Handler. TACTIC Server not running!') if first_run: sys.exit()
def open_file(self): file_path, dir_path, all_process = self.get_current_item_paths() if env.Mode().get == 'maya': mf.open_scene(file_path, dir_path, all_process) else: gf.open_file_associated(file_path)
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_addsobject') self.settings.setValue('geometry', self.geometry()) print('Done ui_addsobject settings write') self.settings.endGroup()
def readSettings(self): """ Reading Settings """ self.settings.beginGroup(env.Mode().get + '/ui_checkin') self.sObjTabWidget.setCurrentIndex( self.settings.value('sObjTabWidget', 0)) self.settings.endGroup()
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_conf') self.settings.setValue('configToolBox', self.configToolBox.currentIndex()) print('Done ui_conf settings write') self.settings.endGroup()
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_main') self.settings.setValue('float_notify_pos', self.pos()) self.settings.setValue('float_notify_size', self.size()) print('Done ui_float_notify settings write') self.settings.endGroup()
def import_file_options(self): file_path = self.get_current_item_paths()[0] nested_item = self.resultsTreeWidget.itemWidget( self.resultsTreeWidget.currentItem(), 0) if env.Mode().get == 'maya': self.import_dialog = maya_dialogs.Ui_importOptionsWidget( file_path, nested_item) self.import_dialog.show()
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_checkin') self.settings.setValue('sObjTabWidget', self.sObjTabWidget.currentIndex()) print('Done ui_checkout_tab settings write') self.settings.endGroup() for tab in self.ui_tree: tab.writeSettings()
def restart(self): ask_restart = QtGui.QMessageBox.question(self, 'Restart TACTIC Handler?', "<p>Looks like You have made changes which require restarting</p>" "<p>Perform restart?</p>", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if ask_restart == QtGui.QMessageBox.Yes: self.close() if env.Mode().get == 'maya': reload(ui_maya_dock) ui_maya_dock.startup(restart=True) else: self.parent().close() self.parent().deleteLater()
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_maya_dock') self.settings.setValue('pos', self.parent().pos()) self.settings.setValue('size', self.size()) self.settings.setValue('isFloating', self.isFloating()) self.settings.setValue( 'tabArea', self.parent().parent().dockWidgetArea(self.parent())) print('Done general_ui settings write') self.settings.endGroup() self.deleteLater()
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_main') if self.windowState() == QtCore.Qt.WindowMaximized: state = True else: state = False self.settings.setValue('pos', self.pos()) self.settings.setValue('size', self.size()) self.settings.setValue("windowState", state) self.settings.setValue('main_tabWidget_currentIndex', self.main_tabWidget.currentIndex()) print('Done main_ui settings write') self.settings.endGroup()
def readSettings(self): """ Reading Settings """ self.settings = QtCore.QSettings('TACTIC Handler', 'TACTIC Handling Tool') self.settings.beginGroup(env.Mode().get + '/ui_main') self.move(self.settings.value('pos', self.pos())) self.resize(self.settings.value('size', self.size())) state = str(self.settings.value("windowState")) if state == 'true': print('maximized') self.setWindowState(QtCore.Qt.WindowMaximized) self.main_tabWidget.setCurrentIndex( self.settings.value('main_tabWidget_currentIndex', 0)) self.settings.endGroup()
def open_menu(self, position): nested_item = self.resultsTreeWidget.itemWidget( self.resultsTreeWidget.currentItem(), 0) indexes = self.resultsTreeWidget.selectedIndexes() # if self.resultsTreeWidget.currentItem().isExpanded(): # print('EXPANDED') level = None if len(indexes) > 0: level = 0 index = indexes[0] while index.parent().isValid(): index = index.parent() level += 1 if level > 1 and nested_item.files: print(level) self.custom_menu = QtGui.QMenu() open_action = QtGui.QWidgetAction(self) open_widget = menu_widget.Ui_menuWidget(self) open_widget.label.setText('Open') open_action.setDefaultWidget(open_widget) open_action.triggered.connect(self.open_file) open_widget.toolButton.clicked.connect(self.open_file_options) reference_action = QtGui.QWidgetAction(self) reference_widget = menu_widget.Ui_menuWidget(self) reference_widget.label.setText('Reference') reference_action.setDefaultWidget(reference_widget) reference_action.triggered.connect(self.reference_file) reference_widget.toolButton.clicked.connect( self.reference_file_options) import_action = QtGui.QWidgetAction(self) import_widget = menu_widget.Ui_menuWidget(self) import_widget.label.setText('Import') import_action.setDefaultWidget(import_widget) import_action.triggered.connect(self.import_file) import_widget.toolButton.clicked.connect(self.import_file_options) self.custom_menu.addAction(open_action) if env.Mode().get == 'maya': self.custom_menu.addAction(reference_action) self.custom_menu.addAction(import_action) self.custom_menu.exec_( self.resultsTreeWidget.viewport().mapToGlobal(position))
def writeSettings(self): """ Writing Settings """ self.settings.beginGroup(env.Mode().get + '/ui_checkin') tab_name = self.objectName().split('/') group_path = '{0}/{1}/{2}'.format(tab_name[0], env.Env().get_project(), tab_name[1]) self.settings.beginGroup(group_path) self.settings.setValue('commentsSplitter', self.commentsSplitter.saveState()) self.settings.setValue('descriptionSplitter', self.descriptionSplitter.saveState()) self.settings.setValue('imagesSplitter', self.imagesSplitter.saveState()) self.settings.setValue('dropPlateSplitter', self.dropPlateSplitter.saveState()) self.settings.setValue('searchOptionsSplitter', self.searchOptionsSplitter.saveState()) self.settings.setValue('searchLineEdit_text', self.searchLineEdit.text()) self.settings.setValue('contextComboBox', self.contextComboBox.currentIndex()) self.settings.setValue( 'searchByCodeRadioButton', self.searchOptionsGroupBox.byCodeRadioButton.isChecked()) self.settings.setValue( 'searchByNameRadioButton', self.searchOptionsGroupBox.byNameRadioButton.isChecked()) self.settings.setValue( 'searchAllProcessCheckBox', self.searchOptionsGroupBox.showAllProcessCheckBox.isChecked()) if self.resultsTreeWidget.topLevelItemCount() > 0: self.settings.setValue( 'resultsTreeWidget_isSelected', gf.expanded_state(self.resultsTreeWidget, is_selected=True)) self.settings.setValue( 'resultsTreeWidget_isExpanded', gf.expanded_state(self.resultsTreeWidget, is_expanded=True)) print('Done ui_checkin_tree ' + self.objectName() + ' settings write') self.settings.endGroup() self.settings.endGroup()
def get_current_item_paths(self): nested_item = self.resultsTreeWidget.itemWidget( self.resultsTreeWidget.currentItem(), 0) file_path = None dir_path = None all_process = None modes = env.Mode().mods modes.append('main') for mode in modes: if nested_item.files.get(mode): main_file = nested_item.files[mode][0] asset_dir = env.Env().get_asset_dir() file_path = '{0}/{1}/{2}'.format(asset_dir, main_file['relative_dir'], main_file['file_name']) split_path = main_file['relative_dir'].split('/') dir_path = '{0}/{1}'.format(asset_dir, '{0}/{1}/{2}'.format(*split_path)) all_process = nested_item.sobject.all_process return file_path, dir_path, all_process
def save_file(self): nested_item = self.resultsTreeWidget.itemWidget( self.resultsTreeWidget.currentItem(), 0) search_key = nested_item.get_skey(parent=True) context = nested_item.get_context(True, self.contextLineEdit.text()).replace( ' ', '_') if self.descriptionTextEdit.toPlainText() != '': description = gf.simplify_html(self.descriptionTextEdit.toHtml()) else: description = 'No Description' self.descriptionTextEdit.clear() if env.Mode().get == 'maya': mf.save_scene(search_key, context, description, nested_item.sobject.all_process) # update current tree item to see saving results nested_item.sobject.update_snapshots() update = nested_item.row, nested_item.sobject.info['code'] self.add_items_to_results(update=update)
# module Main Ui Classes # file ui_main_classes.py # Main Window interface import PySide.QtCore as QtCore import PySide.QtGui as QtGui import environment as env import tactic_classes as tc if env.Mode().get == 'maya': import maya_functions as mf import lib.ui.ui_main as ui_main import ui_checkin_out_tabs_classes import ui_conf_classes import ui_my_tactic_classes import ui_assets_browser_classes import ui_float_notify_classes reload(ui_main) reload(ui_checkin_out_tabs_classes) reload(ui_conf_classes) reload(ui_my_tactic_classes) reload(ui_assets_browser_classes) class Ui_Main(QtGui.QMainWindow, ui_main.Ui_MainWindow): def __init__(self, parent=None): super(self.__class__, self).__init__(parent=parent) env.Inst().ui_main = self self.setupUi(self)
def add_items_to_formats_combo(self): if env.Mode().get == 'maya': self.formatTypeComboBox.addItem('mayaAscii') self.formatTypeComboBox.addItem('mayaBinary') else: self.formatTypeComboBox.addItem('all')