First try at starting on the UI
[watersofshiloah] / src / windows.py
1 import gtk
2
3 import banners
4 import playcontrol
5
6
7 class SourceSelector(object):
8
9         def __init__(self, player, store):
10                 self._player = player
11                 self._store = store
12
13                 self._errorBanner = banners.StackingBanner()
14
15                 self._radioButton = self._create_button("radio", "Radio")
16                 self._radioWrapper = gtk.VBox()
17                 self._radioWrapper.pack_start(self._radioButton, False, True)
18                 self._conferenceButton = self._create_button("conferences", "Conferences")
19                 self._conferenceWrapper = gtk.VBox()
20                 self._conferenceWrapper.pack_start(self._conferenceButton, False, True)
21                 self._magazineButton = self._create_button("magazines", "Magazines")
22                 self._magazineWrapper = gtk.VBox()
23                 self._magazineWrapper.pack_start(self._magazineButton, False, True)
24                 self._scriptureButton = self._create_button("scriptures", "Scriptures")
25                 self._scriptureWrapper = gtk.VBox()
26                 self._scriptureWrapper.pack_start(self._scriptureButton, False, True)
27
28                 self._buttonLayout = gtk.VBox(True, 5)
29                 self._buttonLayout.set_property("border-width", 5)
30                 self._buttonLayout.pack_start(self._radioWrapper, True, True)
31                 self._buttonLayout.pack_start(self._conferenceWrapper, True, True)
32                 self._buttonLayout.pack_start(self._magazineWrapper, True, True)
33                 self._buttonLayout.pack_start(self._scriptureWrapper, True, True)
34
35                 self._playcontrol = playcontrol.PlayControl(player, store)
36
37                 self._layout = gtk.VBox()
38                 self._layout.pack_start(self._errorBanner.toplevel, False, True)
39                 self._layout.pack_start(self._buttonLayout, True, True)
40                 self._layout.pack_start(self._playcontrol.toplevel, False, True)
41
42                 self._layout.show_all()
43                 self._errorBanner.toplevel.hide()
44                 self._playcontrol.toplevel.hide()
45
46         @property
47         def toplevel(self):
48                 return self._layout
49
50         def _create_button(self, icon, message):
51                 image = self._store.get_image_from_store(self._store.STORE_LOOKUP[icon])
52
53                 label = gtk.Label()
54                 label.set_text(message)
55
56                 buttonLayout = gtk.HBox(False, 5)
57                 buttonLayout.pack_start(image, False, False)
58                 buttonLayout.pack_start(label, False, True)
59                 button = gtk.Button()
60                 button.add(buttonLayout)
61
62                 return button