]>
Commit | Line | Data |
---|---|---|
db50981b | 1 | import sys |
2 | ||
3 | modules = {} | |
4 | ||
5 | def isloaded(modname): return modname in modules | |
6 | def modhas(modname, attname): return getattr(self.modules[modname], attname, None) is not None | |
7 | ||
8 | def load(parent, modname): | |
9 | if not isloaded(modname): | |
10 | mod = __import__(modname) | |
11 | modules[modname] = mod | |
12 | ret = mod.modstart(parent) | |
13 | if not ret: | |
14 | del modules[modname] | |
15 | return ret | |
16 | else: | |
17 | return -1 | |
18 | ||
19 | def unload(parent, modname): | |
20 | if isloaded(modname): | |
21 | self.modules[modname].modstop(parent) | |
22 | else: | |
23 | return -1 | |
24 | ||
25 | def reloadmod(parent, modname): | |
26 | if isloaded(modname): | |
27 | if modhas(modname, 'modrestart'): self.modules[modname].modrestart(parent) | |
28 | else: self.modules[modname].modstop(parent) | |
29 | ||
30 | reload(self.modules[modname]) | |
31 | ||
32 | if modhas(modname, 'modrestarted'): self.modules[modname].modrestarted(parent) | |
33 | else: self.modules[modname].modstart(parent) | |
34 | ||
35 | else: | |
36 | load(parent, modname) | |
37 | ||
38 | def loadall(parent, modlist): | |
39 | for m in modlist: load(parent, m) | |
40 | def unloadall(parent, modlist): | |
41 | for m in modlist: unload(parent, m) | |
42 | def reloadall(parent, modlist): | |
43 | for m in modlist: reloadmod(parent, m) | |
44 | ||
45 | sys.path.append('modules') |