def add_preview(self, layout): path_ui = ("/").join( [os.path.dirname(__file__), "ui", TITLE + "_preview.ui"]) self.wgPreview = QtCompat.loadUi(path_ui) layout.addWidget(self.wgPreview, 0, 0) self.wgPreview.btnPreviewImg.clicked.connect(self.press_btnPreviewImg) self.wgPreview.btnScreenshot.clicked.connect(self.press_btnScreenshot) self.wgPreview.btnSnapshotRender.clicked.connect( self.press_btnSnapshotRender) self.wgPreview.btnSnapshotViewport.clicked.connect( self.press_btnSnapshotViewport) self.wgPreview.btnPreviewImg.setIcon( QtGui.QPixmap(QtGui.QImage(libData.get_img_path("lbl/default")))) self.wgPreview.btnScreenshot.setIcon( QtGui.QPixmap(QtGui.QImage( libData.get_img_path("btn/btnCamera48")))) self.wgPreview.btnSnapshotViewport.setIcon( QtGui.QPixmap( QtGui.QImage( libData.get_img_path( "software/maya/shelf/shelf_renderLow35")))) self.wgPreview.btnSnapshotRender.setIcon( QtGui.QPixmap( QtGui.QImage( libData.get_img_path( "software/maya/shelf/shelf_renderHigh35"))))
def __init__(self, parent=None): super(ArSave, self).__init__() path_ui = ("/").join([os.path.dirname(__file__), "ui", TITLE + ".ui"]) self.wgSave = QtCompat.loadUi(path_ui) self.save_dir = os.getenv('PROJECT_PATH') self.save_file = '' self.comment = "Comment" self.img_path = libSnapshot.default_tmp_path self.software = Tank().software.software self.wgSave.btnVersionUp.clicked.connect(self.update_version) self.wgSave.btnVersionDown.clicked.connect( lambda: self.update_version(add=-1)) # self.wgSave.btnPreviewImg.clicked.connect(self.press_btnPreviewImg) self.wgSave.btnScreenshot.clicked.connect(self.press_btnScreenshot) self.wgSave.btnSnapshotViewport.clicked.connect( self.press_btnSnapshotViewport) self.wgSave.btnSnapshotRender.clicked.connect( self.press_btnSnapshotRender) self.wgSave.btnPreviewImg.setIcon( QtGui.QPixmap(QtGui.QImage(libData.get_img_path("lbl/default")))) self.wgSave.btnScreenshot.setIcon( QtGui.QPixmap(QtGui.QImage( libData.get_img_path("btn/btnCamera48")))) self.wgSave.btnSnapshotRender.setIcon( QtGui.QPixmap( QtGui.QImage( libData.get_img_path( "software/maya/shelf/shelf_renderHigh35")))) self.wgSave.btnSnapshotViewport.setIcon( QtGui.QPixmap( QtGui.QImage( libData.get_img_path( "software/maya/shelf/shelf_viewport35")))) self.resize_widget(self.wgSave) if not self.set_path(): self.press_btnOption() return # self.wgSave : always on top # self.wgHeader.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.wgHeader.setWindowTitle(TITLE) self.wgHeader.setWindowIcon( QtGui.QIcon(libData.get_img_path("btn/btnSave48"))) self.wgHeader.btnOption.setText('SaveAs') self.wgSave.btnSnapshotRender.hide() if self.software == 'nuke': self.wgSave.btnSnapshotRender.hide() self.wgHeader.layMain.addWidget(self.wgSave, 0, 0) self.wgSave.show() LOG.info('START : arSave')
def fill_meta(self): self.wgPreview.lblTitle.setText(self.file_name) self.wgPreview.lblDate.setText( str( datetime.datetime.fromtimestamp( os.path.getmtime(self.load_file))).split(".")[0]) self.wgPreview.lblSize.setText( str("{0:.2f}".format( os.path.getsize(self.load_file) / (1024 * 1024.0)) + " MB")) self.extension = self.wgLoad.lstFiles.currentItem().text().split( '.')[-1] if self.extension in self.data['script'][TITLE].get('img'): software_img = "software/img" else: software_img = "software/" + self.software_format[self.extension] if self.file_data and self.file_data.has_key( self.wgLoad.lstFiles.currentItem().text()): current_file = self.file_data[ self.wgLoad.lstFiles.currentItem().text()] comment = current_file.get('comment') user_id = current_file.get('user') else: comment = '' user_id = 'unknown' self.wgPreview.edtComment.setPlainText(comment) self.wgPreview.lblUser.setText(user_id) self.wgPreview.lblSoftwareIcon.setPixmap( QtGui.QPixmap(QtGui.QImage(libData.get_img_path(software_img)))) self.wgPreview.lblUserIcon.setPixmap( QtGui.QPixmap(QtGui.QImage(libData.get_img_path('user/' + user_id))))
def __init__(self, notice): ui_path = ('/').join([os.path.dirname(__file__), 'ui', TITLE + '.ui']) self.wgNotice = QtCompat.loadUi(ui_path) self.notice = notice self.wgNotice.btnCancel.clicked.connect(self.press_btnCancel) self.wgNotice.btnPreviewImg.clicked.connect(self.press_btnPreviewImg) self.wgNotice.edtTitle.setText(self.notice.title) self.wgNotice.edtMsg.setPlainText(self.notice.msg) self.wgNotice.btnUser.setIcon( QtGui.QPixmap( QtGui.QImage(libData.get_img_path('user/' + self.notice.user)))) self.wgNotice.btnUser.setToolTip( ('').join([self.notice.user, '\n', self.notice.time])) self.wgNotice.btnUser.clicked.connect(libFunc.get_help) self.wgNotice.edtTitle.setText(self.notice.title) self.open_link = self.notice.img_link self.wgNotice.btnPreviewImg.setToolTip(self.open_link) if not os.path.exists(self.notice.img): self.notice.img = libData.get_img_path(self.notice.img) self.wgNotice.btnPreviewImg.setIcon( QtGui.QPixmap(QtGui.QImage(self.notice.img))) if self.notice.func: self.wgNotice.lblFunc.setText(self.notice.func) else: self.wgNotice.lblFunc.hide() # self.wgNotice.btnCancel.hide() # WIDGET : delete border & always on top self.wgNotice.setWindowFlags(QtCore.Qt.CustomizeWindowHint | QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnTopHint) # WIDGET : move to right low corner resolution = QtWidgets.QDesktopWidget().screenGeometry() self.wgNotice.move(resolution.width() - self.wgNotice.width() - 5, resolution.height() - self.wgNotice.height() - 45) self.wgNotice.setWindowOpacity(0.9) # round edges path = QtGui.QPainterPath() path.addRoundedRect(QtCore.QRectF(self.wgNotice.rect()), 3.0, 3.0) self.wgNotice.setMask(QtGui.QRegion(path.toFillPolygon().toPolygon())) self.wgNotice.show() self.start_timer()
def __init__(self, new_file=True): super(ArSaveAs, self).__init__() path_ui = ("/").join([os.path.dirname(__file__), "ui", TITLE + ".ui"]) self.wgSaveAs = QtCompat.loadUi(path_ui) self.all_task = '<all tasks>' self.new_file = new_file self.save_file = '' self.save_dir = self.data['project']['path'] self.software = Tank().software.software self.inputs = [ self.wgSaveAs.cbxScene, self.wgSaveAs.cbxSet, self.wgSaveAs.cbxAsset, self.wgSaveAs.cbxTask ] self.wgHeader.btnOption.hide() self.wgHeader.cbxAdd.hide() self.wgHeader.setWindowIcon( QtGui.QIcon(libData.get_img_path("btn/btnSave48"))) btn_title = TITLE if self.new_file else 'Create New Folder' self.wgHeader.setWindowTitle(btn_title) btn_title = 'Save As' if self.new_file else 'Create' self.wgHeader.btnAccept.setText(btn_title) self.wgHeader.layMain.addWidget(self.wgSaveAs, 0, 0) self.resize_widget(self.wgSaveAs) # self.wgSaveAs : always on top self.wgSaveAs.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) self.setup() self.wgSaveAs.show() LOG.info('START : arSaveAs')
def add_menu(self): path_ui = ("/").join([os.path.dirname(__file__), "ui", TITLE + "_menu.ui"]) self.wgMenu = QtCompat.loadUi(path_ui) self.wgHeader.layMain.addWidget(self.wgMenu, 1, 1) menu01_img = ["btn/btnWrite48", "btn/btnArrowRight48", "btn/btnHoneypot48", "btn/btnLog48", "btn/btnInboxE48", "user/default"] menu01_items = [self.wgMenu.btnMenu01_item01, self.wgMenu.btnMenu01_item02, self.wgMenu.btnMenu01_item03, self.wgMenu.btnMenu01_item04, self.wgMenu.btnMenu01_item05, self.wgMenu.btnMenu01_item06] self.select_menu = { "data" : self.wgMenu.btnMenu01_item01, "path" : self.wgMenu.btnMenu01_item02, "advanced" : self.wgMenu.btnMenu01_item03, "log" : self.wgMenu.btnMenu01_item04, "report" : self.wgMenu.btnMenu01_item05, "user" : self.wgMenu.btnMenu01_item06 } for index, each_item in enumerate(menu01_items): each_item.setIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path(menu01_img[index])))) # each_item.clicked.connect(lambda: self.press_btnMenu("settings")) self.wgMenu.btnMenu01_item01.clicked.connect(lambda: self.press_btnMenu("data")) self.wgMenu.btnMenu01_item02.clicked.connect(lambda: self.press_btnMenu("path")) self.wgMenu.btnMenu01_item03.clicked.connect(lambda: self.press_btnMenu("advanced")) self.wgMenu.btnMenu01_item04.clicked.connect(lambda: self.press_btnMenu("log")) self.wgMenu.btnMenu01_item05.clicked.connect(lambda: self.press_btnMenu("report")) self.wgMenu.btnMenu01_item06.clicked.connect(lambda: self.press_btnMenu("user")) menu01_items[0].click()
def __init__(self): super(ArLoad, self).__init__() path_ui = ("/").join([os.path.dirname(__file__), "ui", TITLE + ".ui"]) self.wgLoad = QtCompat.loadUi(path_ui) self.load_dir = '' self.load_file = '' self.software_format = { y: x.upper() for x, y in self.data['software']['EXTENSION'].items() } self.software_keys = list(self.software_format.keys()) self.wgLoad.lstScene.itemSelectionChanged.connect(self.change_lstScene) self.wgLoad.lstSet.itemSelectionChanged.connect(self.change_lstSet) self.wgLoad.lstAsset.itemSelectionChanged.connect(self.change_lstAsset) self.wgLoad.lstTask.itemSelectionChanged.connect(self.change_lstTask) self.wgLoad.lstStatus.itemSelectionChanged.connect( self.change_lstStatus) self.wgLoad.lstFiles.itemSelectionChanged.connect(self.change_lstFiles) self.wgHeader.btnOption.clicked.connect(self.press_menuItemAddFolder) self.wgLoad.lstFiles.itemDoubleClicked.connect(self.press_btnAccept) self.wgLoad.lstScene.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.wgLoad.lstScene.customContextMenuRequested.connect( lambda: self.press_openMenu(self.wgLoad.lstScene)) self.wgLoad.lstSet.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.wgLoad.lstSet.customContextMenuRequested.connect( lambda: self.press_openMenu(self.wgLoad.lstSet)) self.wgLoad.lstAsset.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.wgLoad.lstAsset.customContextMenuRequested.connect( lambda: self.press_openMenu(self.wgLoad.lstAsset)) self.wgLoad.lstTask.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.wgLoad.lstTask.customContextMenuRequested.connect( lambda: self.press_openMenu(self.wgLoad.lstTask)) self.wgLoad.lstFiles.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.wgLoad.lstFiles.customContextMenuRequested.connect( lambda: self.press_openMenu(self.wgLoad.lstFiles)) self.wgLoad.lstAsset.hide() self.wgHeader.cbxAdd.hide() self.add_preview(self.wgLoad.layMeta) self.wgHeader.layMain.addWidget(self.wgLoad, 0, 0) self.wgPreview.wgSnapshot.hide() self.wgHeader.setWindowTitle(TITLE) self.wgHeader.btnAccept.setText('Load') self.wgHeader.btnOption.setText('Create') self.wgHeader.setWindowIcon( QtGui.QIcon(libData.get_img_path("btn/btnLoad48"))) self.setup() self.resize_widget(self.wgLoad) self.wgLoad.show() LOG.info('START : ArLoad')
def change_lstFiles(self): self.extension = self.wgLoad.lstFiles.currentItem().text().split( '.')[-1] self.file_name = self.wgLoad.lstFiles.currentItem().text().split( '.')[0] if self.extension in self.data['script'][TITLE]['img']: self.preview_img_path = self.file_dir + '/' + self.wgLoad.lstFiles.currentItem( ).text() else: self.preview_img_path = self.file_dir + '/' + libData.META_FOLDER + '/' + self.file_name + libData.THUMBS_FORMAT self.load_file = self.file_dir + '/' + self.wgLoad.lstFiles.currentItem( ).text() if os.path.exists(self.preview_img_path): self.wgPreview.btnPreviewImg.setIcon( QtGui.QPixmap(QtGui.QImage(self.preview_img_path))) else: self.wgPreview.btnPreviewImg.setIcon( QtGui.QPixmap(QtGui.QImage( libData.get_img_path("lbl/default")))) self.set_open_folder(self.file_dir) if os.path.exists(self.load_file): self.fill_meta() else: self.clear_meta()
def copy_splash(): splash_path = libData.get_img_path("software/max/splash.bmp") max_path = os.path.dirname(Tank().software.data['path']) if not os.path.exists(max_path + '/splash.bmp'): try: shutil.copy(splash_path, max_path) except: LOG.error('FAILED to copy splash: '.format(max_path), exc_info=True)
def set_status(self, msg = '', msg_type = 0): # 0 - neutral - blue # 1 - done - green # 2 - warning - yellow # 3 - failed - red if msg: self.set_comment(msg) self.wgHeader.lblCommentImg.setPixmap(QtGui.QPixmap(QtGui.QImage(libData.get_img_path(self.data['script'][TITLE]['progress_img'][msg_type])))) if not msg_type: template_css = """QProgressBar::chunk { background: %s; }""" css = template_css % self.data['script'][TITLE]['progress_color'][msg_type] self.wgHeader.prbStatus.setStyleSheet(css) self.set_progress(100)
def __init__(self): path_ui = ("/").join([os.path.dirname(__file__), "ui", TITLE + ".ui"]) self.wgHeader = QtCompat.loadUi(path_ui) # VAR # self.monitor_res = QtGui.QDesktopWidget().screenGeometry() # self.monitor_size = QtCore.QSize(self.monitor_res.width(), self.monitor_res.height()) self.open_path = "" self.preview_img_path = '' User().create() self.wgHeader.setWindowIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path("btn/btnProject48")))) # BUTTONS ICONS self.wgHeader.btnReport.setIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path("btn/btnReport48")))) self.wgHeader.btnHelp.setIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path("btn/default")))) self.wgHeader.btnOpenFolder.setIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path("btn/btnFolder48")))) self.wgHeader.btnUser.setIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path("user/default")))) # current user self.wgHeader.btnUser.setToolTip(("").join(['<html><head/><body><p><span style=" font-weight:600;">', User().name, '</span><br>', User().rights, '<br>[open user folder]</p></body></html>'])) self.wgHeader.btnProject.setIcon(QtGui.QPixmap(QtGui.QImage(libData.get_img_path('btn/btnProject48')))) # current user self.wgHeader.btnProject.setToolTip(os.environ['PROJECT_NAME'] + '\n[open project folder]') # SIGNAL self.wgHeader.btnAccept.clicked.connect(self.press_btnAccept) self.wgHeader.btnAccept.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.wgHeader.btnOption.clicked.connect(self.press_btnOption) self.wgHeader.btnOpenFolder.clicked.connect(self.press_btnOpenFolder) self.wgHeader.btnUser.clicked.connect(self.press_btnUser) self.wgHeader.btnProject.clicked.connect(self.press_btnProject) self.wgHeader.btnReport.clicked.connect(self.press_btnReport) self.wgHeader.btnHelp.clicked.connect(self.press_btnHelp) # SETUP self.refresh_data() self.set_status() self.set_open_folder() self.wgHeader.edtComment.setText('') self.wgHeader.setWindowIcon(QtGui.QIcon(libData.get_img_path("btn/program"))) #self.add_preview(self.wgHeader.layMain) #self.add_menu() self.wgHeader.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # self.wgHeader.setWindowFlags(QtCore.Qt.CustomizeWindowHint | QtCore.Qt.FramelessWindowHint) # | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnTopHint) self.wgHeader.show()
def __init__(self, parent=None): QtGui.QSystemTrayIcon.__init__(self, parent) #self.activated.connect(self.showMainWidget) self.setIcon(QtGui.QIcon(libData.get_img_path('program/default'))) self.parent = parent menu = QtGui.QMenu() self.user = users.User() self.config_data = libData.get_data() menu.setStyleSheet(self.config_data['style']['arDesktop']['menu']) # ADMIN UI if self.user.is_admin: adminMenu = QtGui.QMenu('Admin') adminMenu.setStyleSheet( self.config_data['style']['arDesktop']['menu']) menu.addMenu(adminMenu) menuItem = adminMenu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnLogProjekt48')), 'Project Data') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnOpenProjectLog) menuItem = adminMenu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnLogLocal48')), 'User Data') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnOpenLocalLog) adminMenu.addSeparator() menuItem = adminMenu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnProject48')), 'Reminder') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnWriteReminder) menu.addSeparator() menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('user/default')), self.user.name) QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnShowUserData) menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('project/default')), self.config_data['project']['name']) QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnOpenProjectPath) menu.addSeparator() # menuItem = menu.addAction(QtGui.QIcon(libData.get_img_path('btn/btnProject48')), 'Settings') # QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnProject) # menu.addSeparator() subMenu = QtGui.QMenu('Software') subMenu.setStyleSheet(self.config_data['style']['arDesktop']['menu']) menu.addMenu(subMenu) menuItem = subMenu.addAction( QtGui.QIcon(libData.get_img_path('program/maya')), 'Maya') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnOpenMaya) menuItem = subMenu.addAction( QtGui.QIcon(libData.get_img_path('program/nuke')), 'Nuke') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnOpenNuke) # menuItem = subMenu.addAction(QtGui.QIcon(libData.get_img_path('program/houdini')), 'Houdini') # QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnOpenHoudini) menu.addSeparator() # menuItem = menu.addAction(QtGui.QIcon(libData.get_img_path('btn/btnReport48')), 'Report') # QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnReport) # self.setContextMenu(menu) menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnHelp48')), 'Help') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_btnHelp) self.setContextMenu(menu) menu.addSeparator() menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnDenial48')), 'Quit') QtCore.QObject.connect(menuItem, QtCore.SIGNAL('triggered()'), self.press_closeStartup) self.setContextMenu(menu)
def __init__(self, parent=None): QtWidgets.QSystemTrayIcon.__init__(self, parent) # self.activated.connect(self.showMainWidget) self.setIcon(QtGui.QIcon(libData.get_img_path('software/default'))) self.parent = parent Tank().init_os() self.data = Tank().data self.user = Tank().user self.project_data = Tank().data['project'] menu = QtWidgets.QMenu() menu.setStyleSheet(self.data['script'][TITLE]['style']) # ADMIN UI if True: # self.user.is_admin: adminMenu = QtWidgets.QMenu('Admin') adminMenu.setStyleSheet(self.data['script'][TITLE]['style']) menu.addMenu(adminMenu) menuItem = adminMenu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnFolder48')), 'Open Project Data') menuItem.triggered.connect(self.press_btnOpenProjectLog) menuItem = adminMenu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnFolder48')), 'Open User Data') menuItem.triggered.connect(self.press_btnOpenLocalLog) menu.addSeparator() menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('user/' + self.user.id)), self.user.id) menuItem.triggered.connect(self.press_btnShowUserData) menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('project/default')), self.data['project']['name']) menuItem.triggered.connect(self.press_btnOpenProjectPath) menu.addSeparator() subMenu = QtWidgets.QMenu('Software') subMenu.setStyleSheet(self.data['script'][TITLE]['style']) menu.addMenu(subMenu) for soft, soft_func in self.data['script'][TITLE]['SOFTWARE'].items(): menuItem = subMenu.addAction( QtGui.QIcon(libData.get_img_path('software/' + soft)), soft.title()) menuItem.triggered.connect(eval(soft_func)) menu.addSeparator() menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnFolderSearchGet48')), 'Load') menuItem.triggered.connect(self.press_btnLoad) menu.addSeparator() menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnReport48')), 'Report') menuItem.triggered.connect(self.press_btnReport) menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnHelp48')), 'Help') menuItem.triggered.connect(self.press_btnHelp) menu.addSeparator() menuItem = menu.addAction( QtGui.QIcon(libData.get_img_path('btn/btnDenial48')), 'Quit') menuItem.triggered.connect(self.press_closeStartup) self.setContextMenu(menu)