7 import util.go_utils as go_utils
8 import util.misc as misc_utils
15 _moduleLogger = logging.getLogger(__name__)
18 class ConferencesWindow(windows._base.ListWindow):
20 def __init__(self, app, player, store, node):
21 windows._base.ListWindow.__init__(self, app, player, store, node)
22 self._window.set_title(self._node.title)
25 def _get_columns(cls):
26 yield gobject.TYPE_PYOBJECT, None
28 textrenderer = gtk.CellRendererText()
29 textrenderer.set_property("scale", 0.75)
30 column = gtk.TreeViewColumn("Date")
31 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
32 column.set_property("fixed-width", 96)
33 column.pack_start(textrenderer, expand=True)
34 column.add_attribute(textrenderer, "text", 1)
35 yield gobject.TYPE_STRING, column
37 textrenderer = gtk.CellRendererText()
38 hildonize.set_cell_thumb_selectable(textrenderer)
39 column = gtk.TreeViewColumn("Conference")
40 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
41 column.pack_start(textrenderer, expand=True)
42 column.add_attribute(textrenderer, "text", 2)
43 yield gobject.TYPE_STRING, column
46 windows._base.ListWindow._refresh(self)
47 self._node.get_children(
52 @misc_utils.log_exception(_moduleLogger)
53 def _on_conferences(self, programs):
55 _moduleLogger.info("Download complete but window destroyed")
59 for programNode in programs:
60 program = programNode.get_properties()
61 row = programNode, program["title"], program["full_title"]
62 self._model.append(row)
66 @misc_utils.log_exception(_moduleLogger)
67 def _on_error(self, exception):
69 self._errorBanner.push_message(str(exception))
71 def _window_from_node(self, node):
72 sessionsWindow = ConferenceSessionsWindow(self._app, self._player, self._store, node)
73 sessionsWindow.window.set_modal(True)
74 sessionsWindow.window.set_transient_for(self._window)
75 sessionsWindow.window.set_default_size(*self._window.get_size())
76 sessionsWindow.connect("quit", self._on_quit)
77 sessionsWindow.connect("home", self._on_home)
78 sessionsWindow.connect("jump-to", self._on_jump)
83 gobject.type_register(ConferencesWindow)
86 class ConferenceSessionsWindow(windows._base.ListWindow):
88 def __init__(self, app, player, store, node):
89 windows._base.ListWindow.__init__(self, app, player, store, node)
90 self._window.set_title(self._node.title)
93 def _get_columns(cls):
94 yield gobject.TYPE_PYOBJECT, None
96 textrenderer = gtk.CellRendererText()
97 hildonize.set_cell_thumb_selectable(textrenderer)
98 column = gtk.TreeViewColumn("Session")
99 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
100 column.pack_start(textrenderer, expand=True)
101 column.add_attribute(textrenderer, "text", 1)
102 yield gobject.TYPE_STRING, column
105 windows._base.ListWindow._refresh(self)
106 self._node.get_children(
107 self._on_conference_sessions,
111 @misc_utils.log_exception(_moduleLogger)
112 def _on_conference_sessions(self, programs):
113 if self._isDestroyed:
114 _moduleLogger.info("Download complete but window destroyed")
118 for programNode in programs:
119 program = programNode.get_properties()
120 row = programNode, program["title"]
121 self._model.append(row)
125 @misc_utils.log_exception(_moduleLogger)
126 def _on_error(self, exception):
128 self._errorBanner.push_message(str(exception))
130 def _window_from_node(self, node):
131 sessionsWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
132 sessionsWindow.window.set_modal(True)
133 sessionsWindow.window.set_transient_for(self._window)
134 sessionsWindow.window.set_default_size(*self._window.get_size())
135 sessionsWindow.connect("quit", self._on_quit)
136 sessionsWindow.connect("home", self._on_home)
137 sessionsWindow.connect("jump-to", self._on_jump)
138 sessionsWindow.show()
139 return sessionsWindow
142 gobject.type_register(ConferenceSessionsWindow)
145 class ConferenceTalksWindow(windows._base.ListWindow):
147 def __init__(self, app, player, store, node):
148 windows._base.ListWindow.__init__(self, app, player, store, node)
149 self._window.set_title(self._node.title)
152 def _get_columns(cls):
153 yield gobject.TYPE_PYOBJECT, None
155 textrenderer = gtk.CellRendererText()
156 column = gtk.TreeViewColumn("Talk")
157 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
158 column.pack_start(textrenderer, expand=True)
159 column.add_attribute(textrenderer, "markup", 1)
160 yield gobject.TYPE_STRING, column
163 windows._base.ListWindow._refresh(self)
164 self._node.get_children(
165 self._on_conference_talks,
169 @misc_utils.log_exception(_moduleLogger)
170 def _on_conference_talks(self, programs):
171 if self._isDestroyed:
172 _moduleLogger.info("Download complete but window destroyed")
176 for programNode in programs:
177 program = programNode.get_properties()
178 row = programNode, "%s\n<small>%s</small>" % (programNode.title, programNode.subtitle)
179 self._model.append(row)
183 @misc_utils.log_exception(_moduleLogger)
184 def _on_error(self, exception):
186 self._errorBanner.push_message(str(exception))
188 def _window_from_node(self, node):
189 sessionsWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
190 sessionsWindow.window.set_modal(True)
191 sessionsWindow.window.set_transient_for(self._window)
192 sessionsWindow.window.set_default_size(*self._window.get_size())
193 sessionsWindow.connect("quit", self._on_quit)
194 sessionsWindow.connect("home", self._on_home)
195 sessionsWindow.connect("jump-to", self._on_jump)
196 sessionsWindow.show()
197 return sessionsWindow
200 gobject.type_register(ConferenceTalksWindow)
203 class ConferenceTalkWindow(windows._base.PresenterWindow):
205 def __init__(self, app, player, store, node):
206 windows._base.PresenterWindow.__init__(self, app, player, store, node)
208 def _get_background(self):
209 return self._store.STORE_LOOKUP["conference_background"]
212 gobject.type_register(ConferenceTalkWindow)