def FromModuleInfo(cls, moduleInfo): self = cls.__new__(cls) self.__dict__.update(moduleInfo.__dict__) pathname = join(self.path, "__init__.py") if not exists(pathname): eg.PrintError("File %s does not exist" % pathname) return None if self.path.startswith(eg.corePluginDir): moduleName = "eg.CorePluginModule." + self.pluginName else: moduleName = "eg.UserPluginModule." + self.pluginName try: if moduleName in sys.modules: module = sys.modules[moduleName] else: module = __import__(moduleName, None, None, ['']) except: eg.PrintTraceback( "Error while loading plugin-file %s." % self.path, 1 ) return None pluginCls = module.__pluginCls__ self.module = module self.pluginCls = pluginCls englishText = pluginCls.text if englishText is None: englishText = ClassType("EmptyDefaultText", (), {}) englishText.name = self.englishName englishText.description = self.englishDescription # TODO: the text class should be referenced by the GUID instead of # pluginCls.__name__ translatedText = getattr(eg.text.Plugin, pluginCls.__name__, None) if translatedText is None: setattr(eg.text.Plugin, pluginCls.__name__, englishText) text = englishText else: SetDefault(translatedText, englishText) text = translatedText pluginCls.text = text pluginCls.name = text.name pluginCls.description = text.description return self
def FromModuleInfo(cls, moduleInfo): self = cls.__new__(cls) self.__dict__.update(moduleInfo.__dict__) pathname = join(self.path, "__init__.py") if not exists(pathname): eg.PrintError("File %s does not exist" % pathname) return None if self.path.startswith(eg.corePluginDir): moduleName = "eg.CorePluginModule." + self.pluginName else: moduleName = "eg.UserPluginModule." + self.pluginName try: if moduleName in sys.modules: module = sys.modules[moduleName] else: module = __import__(moduleName, None, None, ['']) except: eg.PrintTraceback( eg.text.Error.pluginLoadError % self.path, 1 ) raise eg.Exceptions.PluginLoadError() pluginCls = module.__pluginCls__ self.module = module self.pluginCls = pluginCls englishText = pluginCls.text if englishText is None: englishText = ClassType("EmptyDefaultText", (), {}) englishText.name = self.englishName englishText.description = self.englishDescription # TODO: the text class should be referenced by the GUID instead of # pluginCls.__name__ translatedText = getattr(eg.text.Plugin, pluginCls.__name__, None) if translatedText is None: setattr(eg.text.Plugin, pluginCls.__name__, englishText) text = englishText else: SetDefault(translatedText, englishText) text = translatedText pluginCls.text = text pluginCls.name = text.name pluginCls.description = text.description return self
def Translate(self, plugin, actionCls, actionClsName): defaultText = actionCls.text if defaultText is None: defaultText = ClassType(actionClsName, (), {}) translatedText = getattr(plugin.text, actionClsName, None) if translatedText is None: translatedText = ClassType(actionClsName, (), {}) setattr(plugin.text, actionClsName, translatedText) SetDefault(translatedText, defaultText) if not hasattr(translatedText, "name"): name = actionCls.name translatedText.name = actionClsName if name is None else name if not hasattr(translatedText, "description"): description = actionCls.description translatedText.description = (translatedText.name if description is None else description) return translatedText
def Translate(self, plugin, actionCls, actionClsName): defaultText = actionCls.text if defaultText is None: defaultText = ClassType(actionClsName, (), {}) translatedText = getattr(plugin.text, actionClsName, None) if translatedText is None: translatedText = ClassType(actionClsName, (), {}) setattr(plugin.text, actionClsName, translatedText) SetDefault(translatedText, defaultText) if not hasattr(translatedText, "name"): name = actionCls.name translatedText.name = actionClsName if name is None else name if not hasattr(translatedText, "description"): description = actionCls.description translatedText.description = ( translatedText.name if description is None else description ) return translatedText