From 27d4e293e7381d5ce575af00904a0d420ef2e479 Mon Sep 17 00:00:00 2001 From: Lucian Branescu Mihaila Date: Mon, 19 Jul 2010 23:19:35 +0000 Subject: Port most of readactivity.py to libevview 2.30. set_screen_dpi disabled for now. Avoid crash if HAL dbus service is not available. --- diff --git a/readactivity.py b/readactivity.py index 48cc1cd..d17d6cd 100644 --- a/readactivity.py +++ b/readactivity.py @@ -767,7 +767,7 @@ class ReadActivity(activity.Activity): def _setup_evince_viewer(self): self._view = evince.View() - self._view.set_screen_dpi(_get_screen_dpi()) + #self._view.set_screen_dpi(_get_screen_dpi()) self._view.connect('notify::has-selection', self._view_notify_has_selection_cb) @@ -798,7 +798,11 @@ class ReadActivity(activity.Activity): else: self._setup_evince_viewer() try: - self._document = evince.factory_get_document(filepath) + try: # assume libevview <=2.28 + self._document = evince.factory_get_document(filepath) + except AttributeError: # must be on libevview >=2.30 + self._document = evince.document_factory_get_document( + filepath) except GError, e: _logger.error('Can not load document: %s', e) return @@ -807,7 +811,14 @@ class ReadActivity(activity.Activity): self._edit_toolbar.set_view(self._view) self._want_document = False - self._view.set_document(self._document) + + try: # assume libevview <=2.28 + self._view.set_document(self._document) + except AttributeError: #must be on libevview >=2.30 + self._model = evince.DocumentModel() + self._model.set_document(self._document) + selv._view.set_model(self._model) + self._edit_toolbar.set_document(self._document) self._topbar.set_document(self._document) diff --git a/readtopbar.py b/readtopbar.py index 3f338f5..936fff0 100644 --- a/readtopbar.py +++ b/readtopbar.py @@ -18,6 +18,7 @@ import gtk, gobject import dbus +import logging from sugar.graphics import style from sugar.graphics.icon import Icon, get_icon_state @@ -134,17 +135,22 @@ class _TopBar(gtk.HBox): self._completion_level = 0 self._progressbar = None - bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM) - proxy = bus.get_object('org.freedesktop.Hal', - '/org/freedesktop/Hal/Manager') - hal_manager = dbus.Interface(proxy, 'org.freedesktop.Hal.Manager') - udis = hal_manager.FindDeviceByCapability('battery') - if len(udis) > 0: - self._battery = BattMan(udis[0]) # TODO: Support more than one battery - self._battery.connect('notify::level', \ - self._battery_level_changed_cb) - else: + try: + bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM) + proxy = bus.get_object('org.freedesktop.Hal', + '/org/freedesktop/Hal/Manager') + hal_manager = dbus.Interface(proxy, 'org.freedesktop.Hal.Manager') + udis = hal_manager.FindDeviceByCapability('battery') + if len(udis) > 0: + self._battery = BattMan(udis[0]) # TODO: Support more than one battery + self._battery.connect('notify::level', \ + self._battery_level_changed_cb) + else: + self._battery = None + except dbus.exceptions.DBusException: self._battery = None + logging.warning("HAL dbus service not found, disabling power \ + management during reading.") self._icon = None -- cgit v0.9.1