Beispiel #1
0
    def __init__(self):
        assert (not EditorApp._singleton)
        EditorApp._singleton = self
        EditorModuleManager.get()._app = self

        self.defaultMainloopBudget = 0.005

        self.initialized = False
        self.projectLoaded = False
        self.flagModified = False
        self.debugging = False
        self.running = False
        self.basePath = getMainModulePath()
        self.dataPaths = []
        self.config = {}
        self.packageManager = PackageManager()

        self.commandRegistry = EditorCommandRegistry.get()
        self.remoteCommandRegistry = RemoteCommandRegistry.get()

        self.registerDataPath(self.getPath('data'))

        signals.connect('module.register', self.onModuleRegister)
Beispiel #2
0
	def __init__(self):
		assert(not EditorApp._singleton)
		EditorApp._singleton = self
		EditorModuleManager.get()._app = self

		self.defaultMainloopBudget = 0.005

		self.initialized   = False
		self.projectLoaded = False
		self.flagModified  = False
		self.debugging     = False
		self.running       = False
		self.basePath      = getMainModulePath()
		self.dataPaths     = []
		self.config        = {}
		self.packageManager   = PackageManager()

		self.commandRegistry       = EditorCommandRegistry.get()
		self.remoteCommandRegistry = RemoteCommandRegistry.get()
		
		self.registerDataPath( self.getPath('data') )

		signals.connect( 'module.register', self.onModuleRegister )
Beispiel #3
0
class EditorApp(object):
    _singleton = None

    @staticmethod
    def get():
        return _singleton

    def __init__(self):
        assert (not EditorApp._singleton)
        EditorApp._singleton = self
        EditorModuleManager.get()._app = self

        self.defaultMainloopBudget = 0.005

        self.initialized = False
        self.projectLoaded = False
        self.flagModified = False
        self.debugging = False
        self.running = False
        self.basePath = getMainModulePath()
        self.dataPaths = []
        self.config = {}
        self.packageManager = PackageManager()

        self.commandRegistry = EditorCommandRegistry.get()
        self.remoteCommandRegistry = RemoteCommandRegistry.get()

        self.registerDataPath(self.getPath('data'))

        signals.connect('module.register', self.onModuleRegister)

    def onModuleRegister(self, m):
        if self.running:
            logging.info('registered in runtime:' + m.getName())
            EditorModuleManager.get().loadModule(m)

    def init(self, **options):
        if options.get('stop_other_instance', False):
            if not checkSingleInstance():
                retryCount = 5
                logging.warning(
                    'running instance detected, trying to shut it down')
                sendRemoteMsg('shut_down')
                ready = False
                for i in range(retryCount):
                    time.sleep(1)
                    if checkSingleInstance():
                        ready = True
                        break
                if not ready:
                    logging.warning('timeout for shuting down other instance')
                    return False

        else:
            if not checkSingleInstance():
                logging.warning('running instance detected')
                return False

        self.loadConfig()

        if self.initialized: return True
        self.openProject()

        #scan packages
        excludePackages = self.getProject().getConfig('excluded_packages')
        self.packageManager.addExcludedPackage(excludePackages)

        if not self.packageManager.scanPackages(
                self.getPath(_GII_BUILTIN_PACKAGES_PATH)):
            return False

        if self.getProject().isLoaded():
            self.packageManager.scanPackages(self.getProject().envPackagePath)

        #modules
        EditorModuleManager.get().loadAllModules()
        signals.emitNow('module.loaded')  #some pre app-ready activities
        signals.dispatchAll()

        self.getProject().loadAssetLibrary()

        self.initialized = True
        self.running = True

        signals.connect('app.remote', self.onRemote)

        return True

    def run(self, **kwargs):
        if not self.initialized:
            if not self.init(**kwargs):
                return False
        hasError = False
        self.resetMainLoopBudget()

        try:
            signals.emitNow('app.pre_start')

            EditorModuleManager.get().startAllModules()
            self.getProject().getAssetLibrary().scanProject()

            signals.emitNow('app.start')
            signals.dispatchAll()

            self.saveConfig()

            EditorModuleManager.get().tellAllModulesAppReady()
            signals.emit('app.ready')

            #main loop
            while self.running:
                self.doMainLoop()

        except Exception, e:
            #TODO: popup a alert window?
            logging.exception(e)
            hasError = True

        signals.emitNow('app.close')

        signals.dispatchAll()
        EditorModuleManager.get().stopAllModules()

        if not hasError:
            self.getProject().save()

        signals.dispatchAll()
        EditorModuleManager.get().unloadAllModules()
        return True
Beispiel #4
0
class EditorApp(object):
	_singleton = None

	@staticmethod
	def get():
		return _singleton

	def __init__(self):
		assert(not EditorApp._singleton)
		EditorApp._singleton = self
		EditorModuleManager.get()._app = self

		self.defaultMainloopBudget = 0.005

		self.initialized   = False
		self.projectLoaded = False
		self.flagModified  = False
		self.debugging     = False
		self.running       = False
		self.basePath      = getMainModulePath()
		self.dataPaths     = []
		self.config        = {}
		self.packageManager   = PackageManager()

		self.commandRegistry       = EditorCommandRegistry.get()
		self.remoteCommandRegistry = RemoteCommandRegistry.get()
		
		self.registerDataPath( self.getPath('data') )

		signals.connect( 'module.register', self.onModuleRegister )

	def onModuleRegister(self, m):		
		if self.running:
			logging.info('registered in runtime:'+m.getName())
			EditorModuleManager.get().loadModule(m)

	def init( self, **options ):
		if options.get( 'stop_other_instance', False ):
			if not checkSingleInstance():
				retryCount = 5
				logging.warning( 'running instance detected, trying to shut it down' )
				sendRemoteMsg( 'shut_down' )
				ready = False
				for i in range( retryCount ):
					time.sleep( 1 )
					if checkSingleInstance():
						ready = True
						break
				if not ready:
					logging.warning( 'timeout for shuting down other instance' )
					return False

		else:
			if not checkSingleInstance():
				logging.warning( 'running instance detected' )
				return False
		
		self.loadConfig()

		if self.initialized: return True
		self.openProject()
		
		#scan packages
		excludePackages = self.getProject().getConfig( 'excluded_packages' )
		self.packageManager.addExcludedPackage( excludePackages )

		if not self.packageManager.scanPackages( self.getPath( _GII_BUILTIN_PACKAGES_PATH ) ):
			return False

		if self.getProject().isLoaded():
			self.packageManager.scanPackages( self.getProject().envPackagePath )

		#modules
		EditorModuleManager.get().loadAllModules()
		signals.emitNow( 'module.loaded' ) #some pre app-ready activities
		signals.dispatchAll()

		self.getProject().loadAssetLibrary()

		self.initialized = True
		self.running     = True

		signals.connect( 'app.remote', self.onRemote )

		return True


	def run( self, **kwargs ):
		if not self.initialized: 
			if not self.init( **kwargs ):
				return False
		hasError = False
		self.resetMainLoopBudget()
		
		try:
			signals.emitNow('app.pre_start')

			EditorModuleManager.get().startAllModules()
			self.getProject().getAssetLibrary().scanProject()

			signals.emitNow('app.start')
			signals.dispatchAll()

			self.saveConfig()

			EditorModuleManager.get().tellAllModulesAppReady()
			signals.emit('app.ready')

			#main loop
			while self.running:
				self.doMainLoop()

		except Exception, e:
			#TODO: popup a alert window?
			logging.exception( e )
			hasError = True

		signals.emitNow('app.close')

		signals.dispatchAll()
		EditorModuleManager.get().stopAllModules()
		
		if not hasError:
			self.getProject().save()

		signals.dispatchAll()
		EditorModuleManager.get().unloadAllModules()
		return True