def outputLoaderScript( self ) : ''' This Method Output The Loader Script. @return: Output Success. ( Boolean ) ''' LOGGER.debug( "> Initializing Loader Script Output." ) selectedTemplates = self._coreTemplatesOutliner.getSelectedTemplates() if selectedTemplates and len( selectedTemplates ) != 1: messageBox.messageBox( "Information", "Information", "{0} | Multiple Selected Templates, '{1}' Will Be Used !".format( self.__class__.__name__, selectedTemplates[0]._datas.name ) ) template = selectedTemplates and selectedTemplates[0] or None if not template : raise foundations.exceptions.UserError, "{0} | In Order To Output The Loader Script, You Need To Select A Template !".format( self.__class__.__name__ ) if not os.path.exists( template._datas.path ) : raise OSError, "{0} | '{1}' Template File Doesn't Exists !".format( self.__class__.__name__, template._datas.name ) selectedIblSet = self._coreDatabaseBrowser.getSelectedItems() iblSet = selectedIblSet and selectedIblSet[0] or None if not iblSet : raise foundations.exceptions.UserError, "{0} | In Order To Output The Loader Script, You Need To Select A Set !".format( self.__class__.__name__ ) if not os.path.exists( iblSet._datas.path ) : raise OSError, "{0} | '{1}' Ibl Set File Doesn't Exists !".format( self.__class__.__name__, iblSet._datas.name ) self._overrideKeys = self.getDefaultOverrideKeys() for component in self._container.componentsManager.getComponents() : profile = self._container._componentsManager.components[component] interface = self._container.componentsManager.getInterface( component ) if interface.activated and profile.name != self.name : hasattr( interface, "getOverrideKeys" ) and interface.getOverrideKeys() if self._container.parameters.loaderScriptsOutputDirectory : if os.path.exists( self._container.parameters.loaderScriptsOutputDirectory ) : loaderScript = File( os.path.join( self._container.parameters.loaderScriptsOutputDirectory, template._datas.outputScript ) ) else : raise OSError, "{0} | '{1}' Loader Script Output Directory Doesn't Exists !".format( self.__class__.__name__, self._container.parameters.loaderScriptsOutputDirectory ) else : loaderScript = File( os.path.join( self._ioDirectory, template._datas.outputScript ) ) LOGGER.debug( "> Loader Script Output File Path : '{0}'.".format( loaderScript.file ) ) loaderScript.content = self.getLoaderScript( template._datas.path, iblSet._datas.path, self._overrideKeys ) if loaderScript.content and loaderScript.write() : messageBox.messageBox( "Information", "Information", "{0} | '{1}' Output Done !".format( self.__class__.__name__, template._datas.outputScript ) ) return True else : raise Exception, "{0} | '{1}' Output Failed !".format( self.__class__.__name__, template._datas.outputScript )
def exploreProvidedFolder( self, folder ) : ''' This Method Provides Folder Exploring Capability. @param folder: Folder To Explore. ( String ) ''' browserCommand = None customFileBrowser = str( self.ui.Custom_File_Browser_Path_lineEdit.text() ) folder = os.path.normpath( folder ) if platform.system() == "Windows" or platform.system() == "Microsoft": if customFileBrowser : LOGGER.info( "{0} | Launching '{1}' Custom File Browser With '{2}'.".format( self.__class__.__name__, os.path.basename( customFileBrowser ), folder ) ) browserCommand = "\"{0}\" \"{1}\"".format( customFileBrowser, folder ) else: LOGGER.info( "{0} | Launching 'explorer.exe' With '{1}'.".format( self.__class__.__name__, folder ) ) browserCommand = "explorer.exe \"{0}\"".format( folder ) elif platform.system() == "Darwin" : if customFileBrowser : LOGGER.info( "{0} | Launching '{1}' Custom File Browser With '{2}'.".format( self.__class__.__name__, os.path.basename( customFileBrowser ), folder ) ) browserCommand = "open -a \"{0}\" \"{1}\"".format( customFileBrowser, folder ) else: LOGGER.info( "{0} | Launching 'Finder' With '{1}'.".format( self.__class__.__name__, folder ) ) browserCommand = "open \"{0}\"".format( folder ) elif platform.system() == "Linux": if customFileBrowser : LOGGER.info( "{0} | Launching '{1}' Custom File Browser With '{2}'.".format( self.__class__.__name__, os.path.basename( customFileBrowser ), folder ) ) browserCommand = "\"{0}\" \"{1}\"".format( customFileBrowser, folder ) else : environmentVariable = Environment( "PATH" ) paths = environmentVariable.getPath().split( ":" ) browserFound = False for browser in self._linuxBrowsers : if not browserFound : try : for path in paths : if os.path.exists( os.path.join( path, browser ) ) : LOGGER.info( "{0} | Launching '{1}' File Browser With '{2}'.".format( self.__class__.__name__, browser, folder ) ) browserCommand = "\"{0}\" \"{1}\"".format( browser, folder ) browserFound = True raise StopIteration except StopIteration: pass else : break if browserCommand : LOGGER.debug( "> Current Browser Command : '{0}'.".format( browserCommand ) ) browserProcess = QProcess() browserProcess.startDetached( browserCommand ) else : messageBox.messageBox( "Warning", "Warning", "{0} | Please Define A Browser Executable In The Preferences !".format( self.__class__.__name__ ) )
def uiExtendedExceptionHandler( exception, origin, *args, **kwargs ) : ''' This Definition Provides A Ui Extended Exception Handler. @param exception: Exception. ( Exception ) @param origin: Function / Method Raising The Exception. ( String ) @param *args: Arguments. ( * ) @param **kwargs: Arguments. ( * ) ''' messageBox.messageBox( "Error", "Exception", "Exception In '{0}' : {1}".format( origin, exception ) ) foundations.exceptions.defaultExceptionsHandler( exception, origin, *args, **kwargs )
def editProvidedfile( self, file ): ''' This Method Provides Editing Capability. @param file: File To Edit. ( String ) ''' editCommand = None customTextEditor = str( self.ui.Custom_Text_Editor_Path_lineEdit.text() ) file = os.path.normpath( file ) if platform.system() == "Windows" or platform.system() == "Microsoft": if customTextEditor : LOGGER.info( "{0} | Launching '{1}' Custom Text Editor With '{2}'.".format( self.__class__.__name__, os.path.basename( customTextEditor ), file ) ) editCommand = "\"{0}\" \"{1}\"".format( customTextEditor, file ) else: LOGGER.info( "{0} | Launching 'notepad.exe' With '{1}'.".format( self.__class__.__name__, file ) ) editCommand = "notepad.exe \"{0}\"".format( file ) elif platform.system() == "Darwin" : if customTextEditor : LOGGER.info( "{0} | Launching '{1}' Custom Text Editor With '{2}'.".format( self.__class__.__name__, os.path.basename( customTextEditor ), file ) ) editCommand = "open -a \"{0}\" \"{1}\"".format( customTextEditor, file ) else: LOGGER.info( "{0} | Launching Default Text Editor With '{1}'.".format( self.__class__.__name__, file ) ) editCommand = "open -e \"{0}\"".format( file ) elif platform.system() == "Linux": if customTextEditor : LOGGER.info( "{0} | Launching '{1}' Custom Text Editor With '{2}'.".format( self.__class__.__name__, os.path.basename( customTextEditor ), file ) ) editCommand = "\"{0}\" \"{1}\"".format( customTextEditor, file ) else : environmentVariable = Environment( "PATH" ) paths = environmentVariable.getPath().split( ":" ) editorFound = False for editor in self._linuxTextEditors : if not editorFound : try : for path in paths : if os.path.exists( os.path.join( path, editor ) ) : LOGGER.info( "{0} | Launching '{1}' Text Editor With '{2}'.".format( self.__class__.__name__, editor, file ) ) editCommand = "\"{0}\" \"{1}\"".format( editor, file ) editorFound = True raise StopIteration except StopIteration: pass else : break if editCommand : LOGGER.debug( "> Current Edit Command : '{0}'.".format( editCommand ) ) editProcess = QProcess() editProcess.startDetached( editCommand ) else : messageBox.messageBox( "Warning", "Warning", "{0} | Please Define A Text Editor Executable In The Preferences !".format( self.__class__.__name__ ) )
def Components_Manager_Ui_treeView_activateComponentsAction( self, checked ): ''' This Method Is Triggered By activateComponentsAction. @param checked: Action Checked State. ( Boolean ) ''' selectedComponents = self.getSelectedItems() if selectedComponents : for component in selectedComponents : if component._type == "Component" : if not component._datas.interface.activated : self.activateComponent( component._datas ) else : messageBox.messageBox( "Warning", "Warning", "{0} | '{1}' Component Is Already Activated !".format( self.__class__.__name__, component._datas.name ) ) self.Components_Manager_Ui_treeView_refreshActivationsStatus() self.storeDeactivatedComponents()
def Database_Browser_listView_editInSIBLEditAction( self, checked ): ''' This Method Is Triggered By editInSIBLEditAction. @param checked: Action Checked State. ( Boolean ) ''' sIBLedit = str( self.ui.sIBLedit_Path_lineEdit.text() ) selectedIblSet = self._coreDatabaseBrowser.getSelectedItems() selectedIblSet = selectedIblSet and os.path.exists( selectedIblSet[0]._datas.path ) and selectedIblSet[0] or None if sIBLedit : if selectedIblSet : LOGGER.info( "{0} | Launching 'sIBLedit' With '{1}'.".format( self.__class__.__name__, selectedIblSet._datas.path ) ) editCommand = "\"{0}\" \"{1}\"".format( sIBLedit, selectedIblSet._datas.path ) LOGGER.debug( "> Current Edit Command : '{0}'.".format( editCommand ) ) editProcess = QProcess() editProcess.startDetached( editCommand ) else : messageBox.messageBox( "Warning", "Warning", "{0} | Please Define An 'sIBLedit' Executable In The Preferences !".format( self.__class__.__name__ ) )
def databaseChanged( self ): ''' This Method Is Triggered By The SetsScanner_Worker When The Database Has Changed. ''' if self._setsScannerWorkerThread.newIblSets : if messageBox.messageBox( "Question", "Question", "One Or More Neighbor Ibl Sets Have Been Found ! Would You Like To Add That Content : '{0}' To The Database ?".format( ", ".join( self._setsScannerWorkerThread.newIblSets.keys() ) ), buttons = QMessageBox.Yes | QMessageBox.No ) == 16384 : for iblSet, path in self._setsScannerWorkerThread.newIblSets.items(): LOGGER.info( "{0} | Adding '{1}' Ibl Set To Database !".format( self.__class__.__name__, iblSet ) ) if not dbUtilities.common.addSet( self._coreDb.dbSession, iblSet, path, self._coreCollectionsOutliner.getCollectionId( self._coreCollectionsOutliner._defaultCollection ) ) : LOGGER.error( "!>{0} | Exception Raised While Adding '{1}' Ibl Set To Database !".format( self.__class__.__name__, iblSet ) ) self._coreDatabaseBrowser.Database_Browser_listView_extendedRefreshModel() self._setsScannerWorkerThread.exit()
def deactivate( self ): ''' This Method Deactivates The Component. ''' messageBox.messageBox( "Warning", "Warning", "{0} Component Cannot Be Deactivated !".format( self.__class__.__name__ ) )