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
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
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 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() self.loadSettings() 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 doMainLoop(self): budget = self.mainLoopBudget t0 = time.time() EditorModuleManager.get().updateAllModules() tx = time.time() if signals.dispatchAll(): rest = 0 else: t1 = time.time() elapsed = t1 - t0 rest = budget - elapsed if rest > 0: time.sleep(rest)
def doMainLoop( self ): budget = self.mainLoopBudget t0 = time.time() EditorModuleManager.get().updateAllModules() tx = time.time() if signals.dispatchAll(): rest = 0 else: t1 = time.time() elapsed = t1 - t0 rest = budget - elapsed if rest > 0: time.sleep( rest )
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