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)
65 go_utils.Async(self._on_delay_scroll).start()
67 @misc_utils.log_exception(_moduleLogger)
68 def _on_error(self, exception):
70 self._errorBanner.push_message(str(exception))
72 def _window_from_node(self, node):
73 sessionsWindow = ConferenceSessionsWindow(self._app, self._player, self._store, node)
74 sessionsWindow.window.set_modal(True)
75 sessionsWindow.window.set_transient_for(self._window)
76 sessionsWindow.window.set_default_size(*self._window.get_size())
77 sessionsWindow.connect("quit", self._on_quit)
78 sessionsWindow.connect("home", self._on_home)
79 sessionsWindow.connect("jump-to", self._on_jump)
84 gobject.type_register(ConferencesWindow)
87 class ConferenceSessionsWindow(windows._base.ListWindow):
89 def __init__(self, app, player, store, node):
90 windows._base.ListWindow.__init__(self, app, player, store, node)
91 self._window.set_title(self._node.title)
94 def _get_columns(cls):
95 yield gobject.TYPE_PYOBJECT, None
97 textrenderer = gtk.CellRendererText()
98 hildonize.set_cell_thumb_selectable(textrenderer)
99 column = gtk.TreeViewColumn("Session")
100 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
101 column.pack_start(textrenderer, expand=True)
102 column.add_attribute(textrenderer, "text", 1)
103 yield gobject.TYPE_STRING, column
106 windows._base.ListWindow._refresh(self)
107 self._node.get_children(
108 self._on_conference_sessions,
112 @misc_utils.log_exception(_moduleLogger)
113 def _on_conference_sessions(self, programs):
114 if self._isDestroyed:
115 _moduleLogger.info("Download complete but window destroyed")
119 for programNode in programs:
120 program = programNode.get_properties()
121 row = programNode, program["title"]
122 self._model.append(row)
125 go_utils.Async(self._on_delay_scroll).start()
127 @misc_utils.log_exception(_moduleLogger)
128 def _on_error(self, exception):
130 self._errorBanner.push_message(str(exception))
132 def _window_from_node(self, node):
133 sessionsWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
134 sessionsWindow.window.set_modal(True)
135 sessionsWindow.window.set_transient_for(self._window)
136 sessionsWindow.window.set_default_size(*self._window.get_size())
137 sessionsWindow.connect("quit", self._on_quit)
138 sessionsWindow.connect("home", self._on_home)
139 sessionsWindow.connect("jump-to", self._on_jump)
140 sessionsWindow.show()
141 return sessionsWindow
144 gobject.type_register(ConferenceSessionsWindow)
147 class ConferenceTalksWindow(windows._base.ListWindow):
149 def __init__(self, app, player, store, node):
150 windows._base.ListWindow.__init__(self, app, player, store, node)
151 self._window.set_title(self._node.title)
154 def _get_columns(cls):
155 yield gobject.TYPE_PYOBJECT, None
157 textrenderer = gtk.CellRendererText()
158 column = gtk.TreeViewColumn("Talk")
159 column.set_property("sizing", gtk.TREE_VIEW_COLUMN_FIXED)
160 column.pack_start(textrenderer, expand=True)
161 column.add_attribute(textrenderer, "markup", 1)
162 yield gobject.TYPE_STRING, column
165 windows._base.ListWindow._refresh(self)
166 self._node.get_children(
167 self._on_conference_talks,
171 @misc_utils.log_exception(_moduleLogger)
172 def _on_conference_talks(self, programs):
173 if self._isDestroyed:
174 _moduleLogger.info("Download complete but window destroyed")
178 for programNode in programs:
179 program = programNode.get_properties()
180 row = programNode, "%s\n<small>%s</small>" % (programNode.title, programNode.subtitle)
181 self._model.append(row)
184 go_utils.Async(self._on_delay_scroll).start()
186 @misc_utils.log_exception(_moduleLogger)
187 def _on_error(self, exception):
189 self._errorBanner.push_message(str(exception))
191 def _window_from_node(self, node):
192 sessionsWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
193 sessionsWindow.window.set_modal(True)
194 sessionsWindow.window.set_transient_for(self._window)
195 sessionsWindow.window.set_default_size(*self._window.get_size())
196 sessionsWindow.connect("quit", self._on_quit)
197 sessionsWindow.connect("home", self._on_home)
198 sessionsWindow.connect("jump-to", self._on_jump)
199 sessionsWindow.show()
200 return sessionsWindow
203 gobject.type_register(ConferenceTalksWindow)
206 class ConferenceTalkWindow(windows._base.PresenterWindow):
208 def __init__(self, app, player, store, node):
209 windows._base.PresenterWindow.__init__(self, app, player, store, node)
211 def _get_background(self):
212 return self._store.STORE_LOOKUP["conference_background"]
215 gobject.type_register(ConferenceTalkWindow)