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 if not hildonize.IS_FREMANTLE_SUPPORTED:
73 sessionsWindow.window.set_modal(True)
74 sessionsWindow.window.set_transient_for(self._window)
75 if self._windowInFullscreen:
76 sessionsWindow.window.fullscreen()
78 sessionsWindow.window.unfullscreen()
79 sessionsWindow.connect_auto(sessionsWindow, "quit", self._on_quit)
80 sessionsWindow.connect_auto(sessionsWindow, "home", self._on_home)
81 sessionsWindow.connect_auto(sessionsWindow, "jump-to", self._on_jump)
82 sessionsWindow.connect_auto(sessionsWindow, "fullscreen", self._on_child_fullscreen)
87 gobject.type_register(ConferencesWindow)
90 class ConferenceSessionsWindow(windows._base.ListWindow):
92 def __init__(self, app, player, store, node):
93 windows._base.ListWindow.__init__(self, app, player, store, node)
94 self._window.set_title(self._node.title)
97 def _get_columns(cls):
98 yield gobject.TYPE_PYOBJECT, None
100 textrenderer = gtk.CellRendererText()
101 hildonize.set_cell_thumb_selectable(textrenderer)
102 column = gtk.TreeViewColumn("Session")
103 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
104 column.pack_start(textrenderer, expand=True)
105 column.add_attribute(textrenderer, "text", 1)
106 yield gobject.TYPE_STRING, column
109 windows._base.ListWindow._refresh(self)
110 self._node.get_children(
111 self._on_conference_sessions,
115 @misc_utils.log_exception(_moduleLogger)
116 def _on_conference_sessions(self, programs):
117 if self._isDestroyed:
118 _moduleLogger.info("Download complete but window destroyed")
122 for programNode in programs:
123 program = programNode.get_properties()
124 row = programNode, program["title"]
125 self._model.append(row)
128 go_utils.Async(self._on_delay_scroll).start()
130 @misc_utils.log_exception(_moduleLogger)
131 def _on_error(self, exception):
133 self._errorBanner.push_message(str(exception))
135 def _window_from_node(self, node):
136 sessionsWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
137 if not hildonize.IS_FREMANTLE_SUPPORTED:
138 sessionsWindow.window.set_modal(True)
139 sessionsWindow.window.set_transient_for(self._window)
140 if self._windowInFullscreen:
141 sessionsWindow.window.fullscreen()
143 sessionsWindow.window.unfullscreen()
144 sessionsWindow.connect_auto(sessionsWindow, "quit", self._on_quit)
145 sessionsWindow.connect_auto(sessionsWindow, "home", self._on_home)
146 sessionsWindow.connect_auto(sessionsWindow, "jump-to", self._on_jump)
147 sessionsWindow.connect_auto(sessionsWindow, "fullscreen", self._on_child_fullscreen)
148 sessionsWindow.show()
149 return sessionsWindow
152 gobject.type_register(ConferenceSessionsWindow)
155 class ConferenceTalksWindow(windows._base.ListWindow):
157 def __init__(self, app, player, store, node):
158 windows._base.ListWindow.__init__(self, app, player, store, node)
159 self._window.set_title(self._node.title)
162 def _get_columns(cls):
163 yield gobject.TYPE_PYOBJECT, None
165 textrenderer = gtk.CellRendererText()
166 column = gtk.TreeViewColumn("Talk")
167 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
168 column.pack_start(textrenderer, expand=True)
169 column.add_attribute(textrenderer, "markup", 1)
170 yield gobject.TYPE_STRING, column
173 windows._base.ListWindow._refresh(self)
174 self._node.get_children(
175 self._on_conference_talks,
179 @misc_utils.log_exception(_moduleLogger)
180 def _on_conference_talks(self, programs):
181 if self._isDestroyed:
182 _moduleLogger.info("Download complete but window destroyed")
186 for programNode in programs:
187 program = programNode.get_properties()
188 row = programNode, "%s\n<small>%s</small>" % (programNode.title, programNode.subtitle)
189 self._model.append(row)
192 go_utils.Async(self._on_delay_scroll).start()
194 @misc_utils.log_exception(_moduleLogger)
195 def _on_error(self, exception):
197 self._errorBanner.push_message(str(exception))
199 def _window_from_node(self, node):
200 sessionsWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
201 if not hildonize.IS_FREMANTLE_SUPPORTED:
202 sessionsWindow.window.set_modal(True)
203 sessionsWindow.window.set_transient_for(self._window)
204 if self._windowInFullscreen:
205 sessionsWindow.window.fullscreen()
207 sessionsWindow.window.unfullscreen()
208 sessionsWindow.connect_auto(sessionsWindow, "quit", self._on_quit)
209 sessionsWindow.connect_auto(sessionsWindow, "home", self._on_home)
210 sessionsWindow.connect_auto(sessionsWindow, "jump-to", self._on_jump)
211 sessionsWindow.connect_auto(sessionsWindow, "fullscreen", self._on_child_fullscreen)
212 sessionsWindow.show()
213 return sessionsWindow
216 gobject.type_register(ConferenceTalksWindow)
219 class ConferenceTalkWindow(windows._base.PresenterWindow):
221 def __init__(self, app, player, store, node):
222 windows._base.PresenterWindow.__init__(self, app, player, store, node)
224 def _get_background(self):
225 return self._store.STORE_LOOKUP["conference_background"]
228 gobject.type_register(ConferenceTalkWindow)