4 gtk.HILDON_SIZE_AUTO = -1
5 gtk.HILDON_SIZE_AUTO_WIDTH = -1
6 gtk.HILDON_SIZE_FINGER_HEIGHT = 32
7 gtk.HILDON_SIZE_THUMB_HEIGHT = 48
9 BUTTON_ARRANGEMENT_VERTICAL = 1
11 def hildon_gtk_window_set_progress_indicator(wnd, onoff):
14 def transparent_expose(widget, event):
17 background, mask = gtk.gdk.pixbuf_new_from_file(bgimg).render_pixmap_and_mask()
19 widget.window.set_back_pixmap(background, False)
20 #widget.window.clear()
21 #cr = widget.window.cairo_create()
22 #cr.set_operator(cairo.OPERATOR_CLEAR)
23 # Ugly but we don't have event.region
24 #region = gtk.gdk.region_rectangle(event.area)
29 class Program(gtk.Window):
33 gtk.Window.__init__(self, type=gtk.WINDOW_TOPLEVEL)
34 self.set_app_paintable(True)
35 self._vbox = gtk.VBox()
36 self._title = gtk.Label("Jamaendo")
37 self._title.set_alignment(0.1, 0.5)
38 self._backbtn = gtk.Button("Quit")
39 self._backbtn.set_alignment(1.0, 0.5)
40 self._hbox = gtk.HBox()
41 self._hbox.pack_start(self._title, True)
42 self._hbox.pack_start(self._backbtn, False)
43 self._notebook = gtk.Notebook()
44 self._notebook.set_size_request(800, 445)
45 self._notebook.set_show_tabs(False)
46 self._notebook.set_app_paintable(True)
47 self._notebook.connect("expose-event", transparent_expose)
48 self._vbox.pack_start(self._hbox, False)
49 self._vbox.pack_start(self._notebook, True)
52 Program.instance = self
53 self._backbtn.connect('clicked', self.on_back)
57 background, mask = gtk.gdk.pixbuf_new_from_file(bgimg).render_pixmap_and_mask()
58 self.set_app_paintable(True)
60 self.window.set_back_pixmap(background, False)
65 def add_window(self, wnd):
68 def push_stackable(self, wnd):
69 while self._notebook.get_n_pages() > 0:
70 p = self._notebook.get_nth_page(0)
72 self._notebook.remove_page(0)
75 idx = self._notebook.append_page(wnd)
76 self._notebook.set_current_page(idx)
80 self._backbtn.set_label("<<<")
82 self._backbtn.set_label("Quit")
83 self._notebook.window.clear()
85 def popped_stackable(self, wnd=None):
88 def pop_stackable(self):
89 while self._notebook.get_n_pages() > 0:
90 p = self._notebook.get_nth_page(0)
91 self._notebook.remove_page(0)
94 tail = self._stack.pop()
95 self.push_stackable(tail)
97 def on_back(self, *args):
100 self._backbtn.set_label("<<<")
102 self._backbtn.set_label("Quit")
103 if self._notebook.get_n_pages() == 0:
107 return len(self._stack)+1
110 ret = [x for x in self._stack] + [self._notebook.get_nth_page(0)]
115 def push_list(self, windows):
116 for window in windows:
117 self.push_stackable(window)
119 # windows = stack.pop(sz)
120 # windows.remove(player)
121 # windows.append(player)
122 # stack.push_list(windows)
125 class StackableWindow(gtk.EventBox):
127 gtk.EventBox.__init__(self)
128 self.set_app_paintable(True)
129 #self.connect("expose-event", transparent_expose)
131 Program.instance.push_stackable(self)
132 self.connect('destroy', self.on_destroy)
133 def set_app_menu(self, menu):
136 def set_title(self, title):
137 Program.instance._title.set_text(title)#_notebook.set_tab_label_text(self, title)
139 def on_destroy(self, *args):
140 Program.instance.popped_stackable(self)
143 return Program.instance
145 class AppMenu(object):
149 def append(self, widget):
155 class GtkButton(gtk.Button):
156 def __init__(self, size):
157 gtk.Button.__init__(self)
160 class Button(gtk.Button):
161 def __init__(self, size, layout):
162 gtk.Button.__init__(self)
164 def set_text(self, title, subtitle):
165 self.set_label(title)
167 class PannableArea(gtk.ScrolledWindow):
169 gtk.ScrolledWindow.__init__(self)
170 self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)