def install_idlex_manager(): """ install IDLEX extension manager into IDLE """ # 2011-11-15 Bugfix - change the user config file names for IdleX # to avoid a problem on Windows where pythonw.exe refuses to run # idle.pyw when an error occurs. However python.exe runs idle.py just fine. # See http://bugs.python.org/issue13582 u = idleConf.userCfg for key, value in list(u.items()): # add "idlex-" to user config file names fullfile = value.file directory, filename = os.path.split(fullfile) if filename.startswith('idlex-'): new_filename = filename else: new_filename = 'idlex-' + filename new_fullfile = os.path.join(directory, new_filename) value.file = new_fullfile value.Load() mod = extensionManager.load_extension('idlexManager') mod.extensionManager = extensionManager mod.version = version mod.update_globals() # add idlex to the extension list e = idleConf.userCfg['extensions'] if not e.has_section('idlexManager'): e.add_section('idlexManager') e.set('idlexManager', 'enable', '1')
def load_idlex_extension(self, name): # import from idlex mod = extensionManager.load_extension(name) if mod is None: print("\nFailed to import IDLEX extension: %s" % name) return cls = getattr(mod, name) keydefs = idleConf.GetExtensionBindings(name) if hasattr(cls, "menudefs"): self.fill_menus(cls.menudefs, keydefs) ins = cls(self) self.extensions[name] = ins if keydefs: self.apply_bindings(keydefs) for vevent in keydefs.keys(): methodname = vevent.replace("-", "_") while methodname[:1] == '<': methodname = methodname[1:] while methodname[-1:] == '>': methodname = methodname[:-1] methodname = methodname + "_event" if hasattr(ins, methodname): self.text.bind(vevent, getattr(ins, methodname))