Example #1
0
	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 )
Example #2
0
	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__ ) )
Example #3
0
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 )
Example #4
0
	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__ ) )
Example #5
0
	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()
Example #6
0
	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__ ) )
Example #7
0
	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()
Example #8
0
	def deactivate( self ):
		'''
		This Method Deactivates The Component.
		'''

		messageBox.messageBox( "Warning", "Warning", "{0} Component Cannot Be Deactivated !".format( self.__class__.__name__ ) )