Added bugtracker info
[jamaendo] / helldon / __init__.py
1 import gtk
2 import cairo
3
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
8
9 BUTTON_ARRANGEMENT_VERTICAL = 1
10
11 def hildon_gtk_window_set_progress_indicator(wnd, onoff):
12     pass
13
14 def transparent_expose(widget, event):
15     bgimg = 'data/bg.png'
16     if bgimg:
17         background, mask = gtk.gdk.pixbuf_new_from_file(bgimg).render_pixmap_and_mask()
18         #self.realize()
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)
25     #cr.region(region)
26     #cr.fill()
27     return False
28
29 class Program(gtk.Window):
30     instance = None
31
32     def __init__(self):
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)
50         self.add(self._vbox)
51         self.show_all()
52         Program.instance = self
53         self._backbtn.connect('clicked', self.on_back)
54
55         bgimg = 'data/bg.png'
56         if bgimg:
57             background, mask = gtk.gdk.pixbuf_new_from_file(bgimg).render_pixmap_and_mask()
58             self.set_app_paintable(True)
59             self.realize()
60             self.window.set_back_pixmap(background, False)
61             self.window.clear()
62
63         self._stack = []
64
65     def add_window(self, wnd):
66         pass
67
68     def push_stackable(self, wnd):
69         while self._notebook.get_n_pages() > 0:
70             p = self._notebook.get_nth_page(0)
71             self._stack.append(p)
72             self._notebook.remove_page(0)
73             p.hide()
74
75         idx = self._notebook.append_page(wnd)
76         self._notebook.set_current_page(idx)
77         wnd.show_all()
78         wnd._nb_index = idx
79         if self._stack:
80             self._backbtn.set_label("<<<")
81         else:
82             self._backbtn.set_label("Quit")
83         self._notebook.window.clear()
84
85     def popped_stackable(self, wnd=None):
86         pass
87
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)
92             p.hide()
93         if len(self._stack):
94             tail = self._stack.pop()
95             self.push_stackable(tail)
96
97     def on_back(self, *args):
98         self.pop_stackable()
99         if self._stack:
100             self._backbtn.set_label("<<<")
101         else:
102             self._backbtn.set_label("Quit")
103         if self._notebook.get_n_pages() == 0:
104             gtk.main_quit()
105
106     def size(self):
107         return len(self._stack)+1
108
109     def pop(self, sz):
110         ret = [x for x in self._stack] + [self._notebook.get_nth_page(0)]
111         while self._stack:
112             self.pop_stackable()
113         return ret
114
115     def push_list(self, windows):
116         for window in windows:
117             self.push_stackable(window)
118
119     #        windows = stack.pop(sz)
120     #    windows.remove(player)
121     #    windows.append(player)
122     #    stack.push_list(windows)
123
124
125 class StackableWindow(gtk.EventBox):
126     def __init__(self):
127         gtk.EventBox.__init__(self)
128         self.set_app_paintable(True)
129         #self.connect("expose-event", transparent_expose)
130         self._nb_index = 0
131         Program.instance.push_stackable(self)
132         self.connect('destroy', self.on_destroy)
133     def set_app_menu(self, menu):
134         pass
135
136     def set_title(self, title):
137         Program.instance._title.set_text(title)#_notebook.set_tab_label_text(self, title)
138
139     def on_destroy(self, *args):
140         Program.instance.popped_stackable(self)
141
142     def get_stack(self):
143         return Program.instance
144
145 class AppMenu(object):
146     def __init__(self):
147         pass
148
149     def append(self, widget):
150         pass
151
152     def show_all(self):
153         pass
154
155 class GtkButton(gtk.Button):
156     def __init__(self, size):
157         gtk.Button.__init__(self)
158
159
160 class Button(gtk.Button):
161     def __init__(self, size, layout):
162         gtk.Button.__init__(self)
163
164     def set_text(self, title, subtitle):
165         self.set_label(title)
166
167 class PannableArea(gtk.ScrolledWindow):
168     def __init__(self):
169         gtk.ScrolledWindow.__init__(self)
170         self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)