7 import util.go_utils as go_utils
8 import util.misc as misc_utils
13 _moduleLogger = logging.getLogger(__name__)
16 class ConferencesWindow(windows._base.ListWindow):
18 def __init__(self, app, player, store, node):
19 windows._base.ListWindow.__init__(self, app, player, store, node)
20 self._window.set_title(self._node.title)
23 def _get_columns(cls):
24 yield gobject.TYPE_PYOBJECT, None
26 textrenderer = gtk.CellRendererText()
27 textrenderer.set_property("scale", 0.75)
28 column = gtk.TreeViewColumn("Date")
29 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
30 column.set_property("fixed-width", 96)
31 column.pack_start(textrenderer, expand=True)
32 column.add_attribute(textrenderer, "text", 1)
33 yield gobject.TYPE_STRING, column
35 textrenderer = gtk.CellRendererText()
36 hildonize.set_cell_thumb_selectable(textrenderer)
37 column = gtk.TreeViewColumn("Conference")
38 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
39 column.pack_start(textrenderer, expand=True)
40 column.add_attribute(textrenderer, "text", 2)
41 yield gobject.TYPE_STRING, column
44 windows._base.ListWindow._refresh(self)
45 self._node.get_children(
50 @misc_utils.log_exception(_moduleLogger)
51 def _on_conferences(self, programs):
53 _moduleLogger.info("Download complete but window destroyed")
57 for programNode in programs:
58 program = programNode.get_properties()
59 row = programNode, program["title"], program["full_title"]
60 self._model.append(row)
63 go_utils.Async(self._on_delay_scroll).start()
65 @misc_utils.log_exception(_moduleLogger)
66 def _on_error(self, exception):
68 self._errorBanner.push_message(str(exception))
70 def _window_from_node(self, node):
71 sessionsWindow = ConferenceSessionsWindow(self._app, self._player, self._store, node)
72 sessionsWindow.window.set_modal(True)
73 sessionsWindow.window.set_transient_for(self._window)
74 if self._windowInFullscreen:
75 sessionsWindow.window.fullscreen()
77 sessionsWindow.window.unfullscreen()
78 sessionsWindow.connect_auto(sessionsWindow, "quit", self._on_quit)
79 sessionsWindow.connect_auto(sessionsWindow, "home", self._on_home)
80 sessionsWindow.connect_auto(sessionsWindow, "jump-to", self._on_jump)
81 sessionsWindow.connect_auto(sessionsWindow, "fullscreen", self._on_child_fullscreen)
86 gobject.type_register(ConferencesWindow)
89 class ConferenceSessionsWindow(windows._base.ListWindow):
91 def __init__(self, app, player, store, node):
92 windows._base.ListWindow.__init__(self, app, player, store, node)
93 self._window.set_title(self._node.title)
96 def _get_columns(cls):
97 yield gobject.TYPE_PYOBJECT, None
99 textrenderer = gtk.CellRendererText()
100 hildonize.set_cell_thumb_selectable(textrenderer)
101 column = gtk.TreeViewColumn("Session")
102 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
103 column.pack_start(textrenderer, expand=True)
104 column.add_attribute(textrenderer, "text", 1)
105 yield gobject.TYPE_STRING, column
108 windows._base.ListWindow._refresh(self)
109 self._node.get_children(
110 self._on_conference_sessions,
114 @misc_utils.log_exception(_moduleLogger)
115 def _on_conference_sessions(self, programs):
116 if self._isDestroyed:
117 _moduleLogger.info("Download complete but window destroyed")
121 for programNode in programs:
122 program = programNode.get_properties()
123 row = programNode, program["title"]
124 self._model.append(row)
127 go_utils.Async(self._on_delay_scroll).start()
129 @misc_utils.log_exception(_moduleLogger)
130 def _on_error(self, exception):
132 self._errorBanner.push_message(str(exception))
134 def _window_from_node(self, node):
135 sessionsWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
136 sessionsWindow.window.set_modal(True)
137 sessionsWindow.window.set_transient_for(self._window)
138 if self._windowInFullscreen:
139 sessionsWindow.window.fullscreen()
141 sessionsWindow.window.unfullscreen()
142 sessionsWindow.connect_auto(sessionsWindow, "quit", self._on_quit)
143 sessionsWindow.connect_auto(sessionsWindow, "home", self._on_home)
144 sessionsWindow.connect_auto(sessionsWindow, "jump-to", self._on_jump)
145 sessionsWindow.connect_auto(sessionsWindow, "fullscreen", self._on_child_fullscreen)
146 sessionsWindow.show()
147 return sessionsWindow
150 gobject.type_register(ConferenceSessionsWindow)
153 class ConferenceTalksWindow(windows._base.ListWindow):
155 def __init__(self, app, player, store, node):
156 windows._base.ListWindow.__init__(self, app, player, store, node)
157 self._window.set_title(self._node.title)
160 def _get_columns(cls):
161 yield gobject.TYPE_PYOBJECT, None
163 textrenderer = gtk.CellRendererText()
164 column = gtk.TreeViewColumn("Talk")
165 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
166 column.pack_start(textrenderer, expand=True)
167 column.add_attribute(textrenderer, "markup", 1)
168 yield gobject.TYPE_STRING, column
171 windows._base.ListWindow._refresh(self)
172 self._node.get_children(
173 self._on_conference_talks,
177 @misc_utils.log_exception(_moduleLogger)
178 def _on_conference_talks(self, programs):
179 if self._isDestroyed:
180 _moduleLogger.info("Download complete but window destroyed")
184 for programNode in programs:
185 program = programNode.get_properties()
186 row = programNode, "%s\n<small>%s</small>" % (programNode.title, programNode.subtitle)
187 self._model.append(row)
190 go_utils.Async(self._on_delay_scroll).start()
192 @misc_utils.log_exception(_moduleLogger)
193 def _on_error(self, exception):
195 self._errorBanner.push_message(str(exception))
197 def _window_from_node(self, node):
198 sessionsWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
199 sessionsWindow.window.set_modal(True)
200 sessionsWindow.window.set_transient_for(self._window)
201 if self._windowInFullscreen:
202 sessionsWindow.window.fullscreen()
204 sessionsWindow.window.unfullscreen()
205 sessionsWindow.connect_auto(sessionsWindow, "quit", self._on_quit)
206 sessionsWindow.connect_auto(sessionsWindow, "home", self._on_home)
207 sessionsWindow.connect_auto(sessionsWindow, "jump-to", self._on_jump)
208 sessionsWindow.connect_auto(sessionsWindow, "fullscreen", self._on_child_fullscreen)
209 sessionsWindow.show()
210 return sessionsWindow
213 gobject.type_register(ConferenceTalksWindow)
216 class ConferenceTalkWindow(windows._base.PresenterWindow):
218 def __init__(self, app, player, store, node):
219 windows._base.PresenterWindow.__init__(self, app, player, store, node)
221 def _get_background(self):
222 return self._store.STORE_LOOKUP["conference_background"]
225 gobject.type_register(ConferenceTalkWindow)