Source code for hiero.ui.FnExportUIRegistry

import hiero.core
import hiero.core.log
import ui


[docs]class TaskUIRegistry ( ui.IExporterUIRegistry ): """ Registry/factory for ITaskUI and IProcessorUI objects. """ def __init__( self ): ui.IExporterUIRegistry.__init__(self) # _taskUIs[ str(type(TASK)) ] = TASKUI self._taskUIs = dict() # _processorUIs[ str(type(PROCESSOR)) ] = PROCESSORUI self._processorUIs = dict() self._instances = []
[docs] def registerTaskUI(self, taskPreset, taskUI): """Register an ITaskUI class and associate with an ITaskPreset class """ presetInstance = taskPreset("dummypreset", dict()) instance = taskUI(presetInstance) self._taskUIs[presetInstance.ident()] = instance hiero.core.log.debug( "Task UI Registered " + str(taskPreset) + " " + str(taskUI) )
[docs] def registerProcessorUI( self, processorPreset, processorUI): """Register IProcessorUI class and associate with IProcessorPreset class """ hiero.core.log.debug( "registerProcessorUI" ) presetInstance = processorPreset("dummypreset", dict()) instance = processorUI(presetInstance) self._processorUIs[presetInstance.ident()] = instance hiero.core.log.debug( "Processor UI Registered " + str(processorPreset) + " " + str(processorUI) )
[docs] def numTaskUIs( self ): """ Get the number of registered ITaskUI classes. """ return len(self._taskUIs)
[docs] def numProcessorUIs( self ): """ Get the number of registered IProcessorUI classes. """ return len(self._processorUIs)
[docs] def getTaskUI( self, index ): """ Return TaskUI registered at specified index """ # Note: This is indexing into a dict, which isn't ordered. Should it be? taskUI = list(self._taskUIs.values())[index] return taskUI
[docs] def getProcessorUI( self, index ): """ Return ProcessorUI registered at specified index """ # Note: This is indexing into a dict, which isn't ordered. Should it be? return self.processorUIByIndex(index)
[docs] def processorUIByIndex( self, index ): """Return ProcessorUI registered at specified index""" processorUI = list(self._processorUIs.values())[index] return processorUI
[docs] def getTaskUIForPreset( self, preset ): """ Return TaskUI object associated with the preset type. Note that this returns a stored instance of the preset, which is suitable for calling from C++ code. For actually constructing UIs, getNewTaskUIForPreset() should be called to create a new object.""" if preset.ident() in self._taskUIs: return self._taskUIs[preset.ident()] return None
[docs] def getNewTaskUIForPreset(self, preset): """ Get a new instance of the task UI class for the preset. """ ui = self.getTaskUIForPreset(preset) if ui: ui = type(ui)(preset) return ui
[docs] def getProcessorUIForPreset ( self, preset ): """ Return ProcessorUI object associated with the preset type. Note that this returns a stored instance of the preset. """ if preset.ident() in self._processorUIs: return self._processorUIs[preset.ident()] hiero.core.log.error("Could not find %s in %s" % (str(type(preset)), str(list(self._processorUIs.keys())))) return None
# wrap this in a try block, as some functionality is missing from Player try: taskUIRegistry = TaskUIRegistry() taskUIRegistry.registerme() except: pass