]> git.openstreetmap.org Git - osqa.git/blob - forum/modules/ui.py
114885b6999f56e59110777cd1bb03e62ff6f14f
[osqa.git] / forum / modules / ui.py
1
2
3 class Registry(list):
4     def add(self, item):
5         for i, r in enumerate(self):
6             if r.weight > item.weight:
7                 self.insert(i, item)
8                 return
9
10         self.append(item)
11
12     def find_by_name(self, name):
13         for i in self:
14             try:
15                 if i.name and (i.name == name):
16                     return i
17             except AttributeError:
18                 pass
19
20     def remove_by_name(self, name):
21         for i, r in enumerate(self):
22             try:
23                 if r.name and (r.name == name):
24                     return self.pop(i)
25             except AttributeError:
26                 pass
27
28
29 HEAD_CONTENT = 'HEAD_CONTENT'
30 HEADER_LINKS = 'HEADER_LINKS'
31 PAGE_TOP_TABS = 'PAGE_TOP_TABS'
32 FOOTER_LINKS = 'FOOTER_LINKS'
33 PROFILE_TABS = 'PROFILE_TABS'
34
35 USER_MENU = 'USER_MENU'
36
37
38 __CONTAINER = {
39     HEAD_CONTENT: Registry(),
40     HEADER_LINKS: Registry(),
41     PAGE_TOP_TABS: Registry(),
42     FOOTER_LINKS: Registry(),
43     PROFILE_TABS: Registry(),
44
45     USER_MENU: Registry(),
46 }
47
48
49 def register(registry, *ui_objects):
50     if not registry in __CONTAINER:
51         raise('unknown registry')
52
53     for ui_object in ui_objects:
54         __CONTAINER[registry].add(ui_object)
55
56 def get_registry_by_name(name):
57     name = name.upper()
58
59     if not name in __CONTAINER:
60         raise('unknown registry')
61
62     return __CONTAINER[name]
63
64
65
66 from ui_objects import *
67