Refactored out hildonization in hopes this will clean things up and make future hildo...
[gc-dialer] / src / hildonize.py
1 #!/usr/bin/env python
2
3
4 import gtk
5
6
7 class FakeHildonModule(object):
8         pass
9
10
11 try:
12         import hildon
13 except ImportError:
14         hildon = FakeHildonModule
15
16
17 IS_HILDON = hildon is not FakeHildonModule
18
19
20 class FakeHildonProgram(object):
21
22         pass
23
24
25 if IS_HILDON:
26         def get_app_class():
27                 return hildon.Program
28 else:
29         def get_app_class():
30                 return FakeHildonProgram
31
32
33 if IS_HILDON:
34         def set_application_title(window, title):
35                 pass
36 else:
37         def set_application_title(window, title):
38                 window.set_title(title)
39
40
41 if IS_HILDON:
42         def hildonize_window(app, window):
43                 oldWindow = window
44                 newWindow = hildon.Window()
45                 oldWindow.get_child().reparent(newWindow)
46                 app.add_window(newWindow)
47                 return newWindow
48 else:
49         def hildonize_window(app, window):
50                 return window
51
52
53 if IS_HILDON:
54         def hildonize_menu(window, gtkMenu):
55                 hildonMenu = gtk.Menu()
56                 for child in gtkMenu.get_children():
57                         child.reparent(hildonMenu)
58                 window.set_menu(hildonMenu)
59                 gtkMenu.destroy()
60                 return hildonMenu
61 else:
62         def hildonize_menu(window, gtkMenu):
63                 return gtkMenu
64
65
66 if IS_HILDON:
67         def set_cell_thumb_selectable(renderer):
68                 renderer.set_property(scale=1.5)
69 else:
70         def set_cell_thumb_selectable(renderer):
71                 pass
72
73
74 if IS_HILDON:
75         def hildonize_text_entry(textEntry):
76                 textEntry.set_property('hildon-input-mode', 7)
77 else:
78         def hildonize_text_entry(textEntry):
79                 pass
80
81
82 if IS_HILDON:
83         def hildonize_password_entry(textEntry):
84                 textEntry.set_property('hildon-input-mode', 7 | (1 << 29))
85 else:
86         def hildonize_password_entry(textEntry):
87                 pass
88
89
90 if IS_HILDON:
91         def hildonize_combo_entry(comboEntry):
92                 comboEntry.set_property('hildon-input-mode', 1 << 4)
93 else:
94         def hildonize_combo_entry(textEntry):
95                 pass
96
97
98 if IS_HILDON:
99         def set_thumb_scrollbar(scrolledWindow):
100                 hildon.hildon_helper_set_thumb_scrollbar(scrolledWindow, True)
101 else:
102         def set_thumb_scrollbar(scrolledWindow):
103                 pass
104
105
106 class WidgetSwapper(object):
107
108         def __init__(self, parentWidget, newWidget = None):
109                 self._parentWidget = parentWidget
110                 self._oldWidget = parentWidget.get_child()
111
112                 self._activeWidget = self._oldWidget
113                 self._widget = newWidget if newWidget is not None else self._oldWidget
114                 self._isEnabled = False
115
116         def enable(self):
117                 assert not self._isEnabled, "Internal Error"
118                 self._parentWidget.remove(self._oldWidget)
119                 self._parentWidget.add(self._widget)
120                 self._activeWidget = self.widget
121
122         def disable(self):
123                 assert self._isEnabled, "Internal Error"
124                 self._parentWidget.remove(self._widget)
125                 self._parentWidget.add(self._oldWidget)
126                 self._activeWidget = self._oldWidget
127
128         @property
129         def activeWidget(self):
130                 return self._activeWidget
131
132         @property
133         def widget(self):
134                 return self._widget
135
136
137 if IS_HILDON:
138         def create_number_swapper(parentWidget):
139                 return WidgetSwapper(parentWidget, hildon.NumberEditor())
140 else:
141         def create_number_swapper(parentWidget):
142                 return WidgetSwapper(parentWidget)