Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2013-09-05 19:05:16 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2013-09-05 21:44:59 (GMT)
commitef8b57606d8f4d49354d5019317ecc649ecdf521 (patch)
tree4093b7a325c60aac3fda496f1cb6e31f7b31e5f7
parentfeefe95ad35f9d74afb2266d7111c1500f3b6ff2 (diff)
Don't crash if the book have bookmarks saved, but can't open the preview
If the preview can't be opened or created, create a image with a number showing the page number. Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r--linkbutton.py39
-rw-r--r--readactivity.py3
2 files changed, 41 insertions, 1 deletions
diff --git a/linkbutton.py b/linkbutton.py
index 3fd4579..075fdb3 100644
--- a/linkbutton.py
+++ b/linkbutton.py
@@ -50,7 +50,11 @@ class LinkButton(TrayButton, GObject.GObject):
# it as single byte string:
if isinstance(color, unicode):
color = str(color)
- self.set_image(buf, color.split(',')[1], color.split(',')[0])
+ if buf is not None:
+ self.set_image(buf, color.split(',')[1], color.split(',')[0])
+ else:
+ self.set_empty_image(page, color.split(',')[1],
+ color.split(',')[0])
self.page = int(page)
info = title + '\n' + owner
@@ -87,6 +91,39 @@ class LinkButton(TrayButton, GObject.GObject):
self.set_icon_widget(img)
img.show()
+ def set_empty_image(self, page, fill='#0000ff', stroke='#4d4c4f'):
+ img = Gtk.Image()
+
+ bg_width, bg_height = style.zoom(120), style.zoom(110)
+ bg_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, bg_width,
+ bg_height)
+ context = cairo.Context(bg_surface)
+ # draw a rectangle in the background with the selected colors
+ context.set_line_width(style.zoom(10))
+ context.set_source_rgba(*style.Color(fill).get_rgba())
+ context.rectangle(0, 0, bg_width, bg_height)
+ context.fill_preserve()
+ context.set_source_rgba(*style.Color(stroke).get_rgba())
+ context.stroke()
+
+ # add the page number
+ context.set_font_size(style.zoom(60))
+ text = str(page)
+ x, y = bg_width / 2, bg_height / 2
+
+ xbearing, ybearing, width, height, xadvance, yadvance = \
+ context.text_extents(text)
+ context.move_to(x - width / 2, y + height / 2)
+ context.show_text(text)
+ context.stroke()
+
+ pixbuf_bg = Gdk.pixbuf_get_from_surface(bg_surface, 0, 0,
+ bg_width, bg_height)
+
+ img.set_from_pixbuf(pixbuf_bg)
+ self.set_icon_widget(img)
+ img.show()
+
def setup_rollover_options(self, info):
palette = Palette(info, text_maxlen=50)
self.set_palette(palette)
diff --git a/readactivity.py b/readactivity.py
index 2714ccc..1aed546 100644
--- a/readactivity.py
+++ b/readactivity.py
@@ -1202,6 +1202,9 @@ class ReadActivity(activity.Activity):
return None
window = self.canvas.get_window()
+ if window is None:
+ return None
+
alloc = self.canvas.get_allocation()
dummy_cr = Gdk.cairo_create(window)