+ def _on_conferences(self, programs):
+ if self._isDestroyed:
+ _moduleLogger.info("Download complete but window destroyed")
+ return
+
+ self._hide_loading()
+ for programNode in programs:
+ program = programNode.get_properties()
+ row = programNode, program["title"], program["full_title"]
+ self._model.append(row)
+
+ path = (self._get_current_row(), )
+ self._treeView.scroll_to_cell(path)
+ self._treeView.get_selection().select_path(path)
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_error(self, exception):
+ self._hide_loading()
+ self._errorBanner.push_message(str(exception))
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_row_activated(self, view, path, column):
+ itr = self._model.get_iter(path)
+ node = self._model.get_value(itr, 0)
+
+ sessionsWindow = ConferenceSessionsWindow(self._player, self._store, node)
+ sessionsWindow.window.set_modal(True)
+ sessionsWindow.window.set_transient_for(self._window)
+ sessionsWindow.window.set_default_size(*self._window.get_size())
+ sessionsWindow.connect("quit", self._on_quit)
+ sessionsWindow.connect("home", self._on_home)
+ sessionsWindow.show()
+
+
+gobject.type_register(ConferencesWindow)
+
+
+class ConferenceSessionsWindow(ListWindow):
+
+ def __init__(self, player, store, node):
+ ListWindow.__init__(self, player, store, node)
+ self._window.set_title(self._node.title)
+
+ @classmethod
+ def _get_columns(cls):
+ yield gobject.TYPE_PYOBJECT, None
+
+ textrenderer = gtk.CellRendererText()
+ column = gtk.TreeViewColumn("Session")
+ column.pack_start(textrenderer, expand=True)
+ column.add_attribute(textrenderer, "text", 1)
+ yield gobject.TYPE_STRING, column
+
+ def _get_current_row(self):
+ # @todo Not implemented yet
+ return 0
+
+ def _refresh(self):
+ ListWindow._refresh(self)
+ self._node.get_children(
+ self._on_conference_sessions,
+ self._on_error,
+ )
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_conference_sessions(self, programs):
+ if self._isDestroyed:
+ _moduleLogger.info("Download complete but window destroyed")
+ return
+
+ self._hide_loading()
+ for programNode in programs:
+ program = programNode.get_properties()
+ row = programNode, program["title"]
+ self._model.append(row)
+
+ path = (self._get_current_row(), )
+ self._treeView.scroll_to_cell(path)
+ self._treeView.get_selection().select_path(path)
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_error(self, exception):
+ self._hide_loading()
+ self._errorBanner.push_message(str(exception))
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_row_activated(self, view, path, column):
+ itr = self._model.get_iter(path)
+ node = self._model.get_value(itr, 0)
+
+ sessionsWindow = ConferenceTalksWindow(self._player, self._store, node)
+ sessionsWindow.window.set_modal(True)
+ sessionsWindow.window.set_transient_for(self._window)
+ sessionsWindow.window.set_default_size(*self._window.get_size())
+ sessionsWindow.connect("quit", self._on_quit)
+ sessionsWindow.connect("home", self._on_home)
+ sessionsWindow.show()
+
+
+gobject.type_register(ConferenceSessionsWindow)
+
+
+class ConferenceTalksWindow(ListWindow):
+
+ def __init__(self, player, store, node):
+ ListWindow.__init__(self, player, store, node)
+ self._window.set_title(self._node.title)
+
+ @classmethod
+ def _get_columns(cls):
+ yield gobject.TYPE_PYOBJECT, None
+
+ textrenderer = gtk.CellRendererText()
+ column = gtk.TreeViewColumn("Talk")
+ column.pack_start(textrenderer, expand=True)
+ column.add_attribute(textrenderer, "text", 1)
+ yield gobject.TYPE_STRING, column
+
+ def _get_current_row(self):
+ # @todo Not implemented yet
+ return 0
+
+ def _refresh(self):
+ ListWindow._refresh(self)
+ self._node.get_children(
+ self._on_conference_talks,
+ self._on_error,
+ )
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_conference_talks(self, programs):
+ if self._isDestroyed:
+ _moduleLogger.info("Download complete but window destroyed")
+ return
+
+ self._hide_loading()
+ for programNode in programs:
+ program = programNode.get_properties()
+ row = programNode, "%s\n%s" % (program["title"], program["speaker"])
+ self._model.append(row)
+
+ path = (self._get_current_row(), )
+ self._treeView.scroll_to_cell(path)
+ self._treeView.get_selection().select_path(path)
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_error(self, exception):