Displaying build number to use
[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 if IS_HILDON:
107         def request_number(parent, title, range, default):
108                 spinner = hildon.NumberEditor(*range)
109                 spinner.set_value(default)
110
111                 dialog = gtk.Dialog(
112                         title,
113                         parent,
114                         gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT,
115                         (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL),
116                 )
117                 dialog.set_default_response(gtk.RESPONSE_CANCEL)
118                 dialog.get_child().add(spinner)
119
120                 try:
121                         dialog.show_all()
122                         response = dialog.run()
123                 finally:
124                         dialog.hide()
125
126                 if response == gtk.RESPONSE_OK:
127                         return spinner.get_value()
128                 elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT:
129                         raise RuntimeError("User cancelled request")
130                 else:
131                         raise RuntimeError("Unrecognized response %r", response)
132 else:
133         def request_number(parent, title, range, default):
134                 adjustment = gtk.Adjustment(default, range[0], range[1], 1, 5, 0)
135                 spinner = gtk.SpinButton(adjustment, 0, 0)
136                 spinner.set_wrap(False)
137
138                 dialog = gtk.Dialog(
139                         title,
140                         parent,
141                         gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT,
142                         (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL),
143                 )
144                 dialog.set_default_response(gtk.RESPONSE_CANCEL)
145                 dialog.get_child().add(spinner)
146
147                 try:
148                         dialog.show_all()
149                         response = dialog.run()
150                 finally:
151                         dialog.hide()
152
153                 if response == gtk.RESPONSE_OK:
154                         return spinner.get_value_as_int()
155                 elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT:
156                         raise RuntimeError("User cancelled request")
157                 else:
158                         raise RuntimeError("Unrecognized response %r", response)