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 childWindow = ConferenceSessionsWindow(self._app, self._player, self._store, node)
72 self._configure_child(childWindow)
77 gobject.type_register(ConferencesWindow)
80 class ConferenceSessionsWindow(windows._base.ListWindow):
82 def __init__(self, app, player, store, node):
83 windows._base.ListWindow.__init__(self, app, player, store, node)
84 self._window.set_title(self._node.title)
87 def _get_columns(cls):
88 yield gobject.TYPE_PYOBJECT, None
90 textrenderer = gtk.CellRendererText()
91 hildonize.set_cell_thumb_selectable(textrenderer)
92 column = gtk.TreeViewColumn("Session")
93 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
94 column.pack_start(textrenderer, expand=True)
95 column.add_attribute(textrenderer, "text", 1)
96 yield gobject.TYPE_STRING, column
99 windows._base.ListWindow._refresh(self)
100 self._node.get_children(
101 self._on_conference_sessions,
105 @misc_utils.log_exception(_moduleLogger)
106 def _on_conference_sessions(self, programs):
107 if self._isDestroyed:
108 _moduleLogger.info("Download complete but window destroyed")
112 for programNode in programs:
113 program = programNode.get_properties()
114 row = programNode, program["title"]
115 self._model.append(row)
118 go_utils.Async(self._on_delay_scroll).start()
120 @misc_utils.log_exception(_moduleLogger)
121 def _on_error(self, exception):
123 self._errorBanner.push_message(str(exception))
125 def _window_from_node(self, node):
126 childWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
127 self._configure_child(childWindow)
132 gobject.type_register(ConferenceSessionsWindow)
135 class ConferenceTalksWindow(windows._base.ListWindow):
137 def __init__(self, app, player, store, node):
138 windows._base.ListWindow.__init__(self, app, player, store, node)
139 self._window.set_title(self._node.title)
142 def _get_columns(cls):
143 yield gobject.TYPE_PYOBJECT, None
145 textrenderer = gtk.CellRendererText()
146 column = gtk.TreeViewColumn("Talk")
147 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
148 column.pack_start(textrenderer, expand=True)
149 column.add_attribute(textrenderer, "markup", 1)
150 yield gobject.TYPE_STRING, column
153 windows._base.ListWindow._refresh(self)
154 self._node.get_children(
155 self._on_conference_talks,
159 @misc_utils.log_exception(_moduleLogger)
160 def _on_conference_talks(self, programs):
161 if self._isDestroyed:
162 _moduleLogger.info("Download complete but window destroyed")
166 for programNode in programs:
167 program = programNode.get_properties()
168 row = programNode, "%s\n<small>%s</small>" % (programNode.title, programNode.subtitle)
169 self._model.append(row)
172 go_utils.Async(self._on_delay_scroll).start()
174 @misc_utils.log_exception(_moduleLogger)
175 def _on_error(self, exception):
177 self._errorBanner.push_message(str(exception))
179 def _window_from_node(self, node):
180 childWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
181 self._configure_child(childWindow)
186 gobject.type_register(ConferenceTalksWindow)
189 class ConferenceTalkWindow(windows._base.PresenterWindow):
191 def __init__(self, app, player, store, node):
192 windows._base.PresenterWindow.__init__(self, app, player, store, node)
194 def _get_background(self, orientation):
195 if orientation == gtk.ORIENTATION_VERTICAL:
196 return self._store.STORE_LOOKUP["conference_background"]
197 elif orientation == gtk.ORIENTATION_HORIZONTAL:
198 return self._store.STORE_LOOKUP["conference_background_landscape"]
200 raise NotImplementedError("Unknown orientation %s" % orientation)
203 gobject.type_register(ConferenceTalkWindow)