def _get_columns(cls):
yield gobject.TYPE_PYOBJECT, None
+ pixrenderer = gtk.CellRendererPixbuf()
+ column = gtk.TreeViewColumn("Covers")
+ column.pack_start(pixrenderer, expand=True)
+ column.add_attribute(pixrenderer, "pixbuf", 1)
+ yield gobject.TYPE_OBJECT, column
+
textrenderer = gtk.CellRendererText()
column = gtk.TreeViewColumn("Magazine")
column.pack_start(textrenderer, expand=True)
- column.add_attribute(textrenderer, "text", 1)
+ column.add_attribute(textrenderer, "text", 2)
yield gobject.TYPE_STRING, column
def _refresh(self):
return
self._hide_loading()
- for programNode in programs:
+ for i, programNode in enumerate(programs):
program = programNode.get_properties()
- row = programNode, program["title"]
+ img = self._store.get_pixbuf_from_store(self._store.STORE_LOOKUP["nomagazineimage"])
+ row = programNode, img, program["title"]
self._model.append(row)
+ programNode.get_children(self._create_on_issues(i), self._on_error)
+
self._select_row()
+ def _create_on_issues(self, row):
+ return lambda issues: self._on_issues(row, issues)
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_issues(self, row, issues):
+ for issue in issues:
+ self._store.get_pixbuf_from_url(
+ issue.get_properties()["pictureURL"],
+ lambda pix: self._on_image(row, pix),
+ self._on_error,
+ )
+ break
+ else:
+ _moduleLogger.info("No issues for magazine %s" % row)
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_image(self, row, pix):
+ treeiter = self._model.iter_nth_child(None, row)
+ self._model.set_value(treeiter, 1, pix)
+ treeiter = self._model.iter_nth_child(None, row)
+ self._model.row_changed((row, ), treeiter)
+
@misc_utils.log_exception(_moduleLogger)
def _on_error(self, exception):
self._hide_loading()
def _get_columns(cls):
yield gobject.TYPE_PYOBJECT, None
+ pixrenderer = gtk.CellRendererPixbuf()
+ column = gtk.TreeViewColumn("Covers")
+ column.pack_start(pixrenderer, expand=True)
+ column.add_attribute(pixrenderer, "pixbuf", 1)
+ yield gobject.TYPE_OBJECT, column
+
textrenderer = gtk.CellRendererText()
column = gtk.TreeViewColumn("Issue")
column.pack_start(textrenderer, expand=True)
- column.add_attribute(textrenderer, "text", 1)
+ column.add_attribute(textrenderer, "text", 2)
yield gobject.TYPE_STRING, column
def _refresh(self):
self._hide_loading()
for programNode in programs:
program = programNode.get_properties()
- row = programNode, program["title"]
+ img = self._store.get_pixbuf_from_store(self._store.STORE_LOOKUP["nomagazineimage"])
+ row = programNode, img, program["title"]
self._model.append(row)
+ self._store.get_pixbuf_from_url(
+ program["pictureURL"],
+ self._create_on_image(programNode),
+ self._on_error,
+ )
+
self._select_row()
@misc_utils.log_exception(_moduleLogger)
self._hide_loading()
self._errorBanner.push_message(str(exception))
+ def _create_on_image(self, programNode):
+ return lambda pix: self._on_image(programNode, pix)
+
+ @misc_utils.log_exception(_moduleLogger)
+ def _on_image(self, childNode, pix):
+ for i, row in enumerate(self._model):
+ if row[0] is childNode:
+ break
+ else:
+ raise RuntimeError("Could not find %r" % childNode)
+ treeiter = self._model.iter_nth_child(None, i)
+ self._model.set_value(treeiter, 1, pix)
+ treeiter = self._model.iter_nth_child(None, i)
+ self._model.row_changed((i, ), treeiter)
+
def _window_from_node(self, node):
issuesWindow = MagazineArticlesWindow(self._player, self._store, node)
issuesWindow.window.set_modal(True)
@misc_utils.log_exception(_moduleLogger)
def _on_player_update_seek(self):
+ if self._isDestroyed:
+ return False
self._seekbar.set_value(self._player.percent_elapsed * 100)
- return True if not self._isDestroyed else False
+ return True
@misc_utils.log_exception(_moduleLogger)
def _on_player_state_change(self, player, newState):
self._updateSeek.start(seconds=1)
else:
self._seekbar.hide()
- self._updateSeek.cancel()
- self._updateSeek = None
+ if self._updateSeek is not None:
+ self._updateSeek.cancel()
+ self._updateSeek = None
if not self._presenterNavigation.is_active():
self._set_context(newState)