diff options
Diffstat (limited to 'epubview')
-rw-r--r-- | epubview/__init__.py | 4 | ||||
-rw-r--r-- | epubview/epubview.py | 85 | ||||
-rw-r--r-- | epubview/jobs.py | 37 | ||||
-rw-r--r-- | epubview/navmap.py | 12 | ||||
-rw-r--r-- | epubview/widgets.py | 7 |
5 files changed, 78 insertions, 67 deletions
diff --git a/epubview/__init__.py b/epubview/__init__.py index 5051bdf..adff032 100644 --- a/epubview/__init__.py +++ b/epubview/__init__.py @@ -15,9 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gobject +from gi.repository import GObject -gobject.threads_init() +GObject.threads_init() from epub import _Epub as Epub from epubview import _View as EpubView diff --git a/epubview/epubview.py b/epubview/epubview.py index c4b3df0..56334f6 100644 --- a/epubview/epubview.py +++ b/epubview/epubview.py @@ -15,8 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gtk -import gobject +from gi.repository import Gtk +from gi.repository import GObject +from gi.repository import Gdk import widgets import os.path @@ -34,23 +35,23 @@ LOADING_HTML = ''' ''' -class _View(gtk.HBox): +class _View(Gtk.HBox): __gproperties__ = { - 'scale': (gobject.TYPE_FLOAT, 'the zoom level', + 'scale': (GObject.TYPE_FLOAT, 'the zoom level', 'the zoom level of the widget', - 0.5, 4.0, 1.0, gobject.PARAM_READWRITE), + 0.5, 4.0, 1.0, GObject.PARAM_READWRITE), } __gsignals__ = { - 'page-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + 'page-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, ([int, int])), - 'selection-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + 'selection-changed': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, ([])), } def __init__(self): - gobject.threads_init() - gtk.HBox.__init__(self) + GObject.threads_init() + Gtk.HBox.__init__(self) self.connect("destroy", self._destroy_cb) @@ -70,7 +71,7 @@ class _View(gtk.HBox): self.__in_search = False self.__search_fwd = True - self._sw = gtk.ScrolledWindow() + self._sw = Gtk.ScrolledWindow() self._view = widgets._WebView() self._view.load_string(LOADING_HTML, 'text/html', 'utf-8', '/') settings = self._view.get_settings() @@ -88,27 +89,29 @@ class _View(gtk.HBox): self._view_populate_popup_cb) self._sw.add(self._view) - self._sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER) + self._sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER) self._v_vscrollbar = self._sw.get_vscrollbar() self._v_scrollbar_value_changed_cb_id = \ self._v_vscrollbar.connect('value-changed', \ self._v_scrollbar_value_changed_cb) - self._scrollbar = gtk.VScrollbar() - self._scrollbar.set_update_policy(gtk.UPDATE_DISCONTINUOUS) + self._scrollbar = Gtk.VScrollbar() + # TODO + # self._scrollbar.set_update_policy(Gtk.UPDATE_DISCONTINUOUS) self._scrollbar_change_value_cb_id = \ self._scrollbar.connect('change-value', \ self._scrollbar_change_value_cb) - self.pack_start(self._sw, expand=True, fill=True) - self.pack_start(self._scrollbar, expand=False, fill=False) + self.pack_start(self._sw, True, True, 0) + self.pack_start(self._scrollbar, False, False, 0) - self._view.set_flags(gtk.CAN_DEFAULT | gtk.CAN_FOCUS) + self._view.set_can_default(True) + self._view.set_can_focus(True) def set_document(self, epubdocumentinstance): ''' Sets document (should be a Epub instance) ''' self._epub = epubdocumentinstance - gobject.idle_add(self._paginate) + GObject.idle_add(self._paginate) def do_get_property(self, property): if property.name == 'has-selection': @@ -248,36 +251,36 @@ class _View(gtk.HBox): Scrolls through the pages. Scrolling is horizontal if horizontal is set to True Valid scrolltypes are: - gtk.SCROLL_PAGE_BACKWARD, gtk.SCROLL_PAGE_FORWARD, - gtk.SCROLL_STEP_BACKWARD, gtk.SCROLL_STEP_FORWARD - gtk.SCROLL_STEP_START and gtk.SCROLL_STEP_STOP + Gtk.ScrollType.PAGE_BACKWARD, Gtk.ScrollType.PAGE_FORWARD, + Gtk.ScrollType.STEP_BACKWARD, Gtk.ScrollType.STEP_FORWARD + Gtk.ScrollType.STEP_START and Gtk.ScrollType.STEP_STOP ''' - if scrolltype == gtk.SCROLL_PAGE_BACKWARD: + if scrolltype == Gtk.ScrollType.PAGE_BACKWARD: self.__going_back = True self.__going_fwd = False if not self._do_page_transition(): - self._view.move_cursor(gtk.MOVEMENT_PAGES, -1) - elif scrolltype == gtk.SCROLL_PAGE_FORWARD: + self._view.move_cursor(Gtk.MovementStep.PAGES, -1) + elif scrolltype == Gtk.ScrollType.PAGE_FORWARD: self.__going_back = False self.__going_fwd = True if not self._do_page_transition(): - self._view.move_cursor(gtk.MOVEMENT_PAGES, 1) - elif scrolltype == gtk.SCROLL_STEP_BACKWARD: + self._view.move_cursor(Gtk.MovementStep.PAGES, 1) + elif scrolltype == Gtk.ScrollType.STEP_BACKWARD: self.__going_fwd = False self.__going_back = True if not self._do_page_transition(): - self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, -1) - elif scrolltype == gtk.SCROLL_STEP_FORWARD: + self._view.move_cursor(Gtk.MovementStep.DISPLAY_LINES, -1) + elif scrolltype == Gtk.ScrollType.STEP_FORWARD: self.__going_fwd = True self.__going_back = False if not self._do_page_transition(): - self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, 1) - elif scrolltype == gtk.SCROLL_START: + self._view.move_cursor(Gtk.MovementStep.DISPLAY_LINES, 1) + elif scrolltype == Gtk.ScrollType.START: self.__going_back = True self.__going_fwd = False if not self._do_page_transition(): self.set_current_page(1) - elif scrolltype == gtk.SCROLL_END: + elif scrolltype == Gtk.ScrollType.END: self.__going_back = False self.__going_fwd = True if not self._do_page_transition(): @@ -360,7 +363,7 @@ class _View(gtk.HBox): | view.can_cut_clipboard()) def _view_keypress_event_cb(self, view, event): - name = gtk.gdk.keyval_name(event.keyval) + name = Gdk.keyval_name(event.keyval) if name == 'Page_Down' or name == 'Down': self.__going_back = False self.__going_fwd = True @@ -371,10 +374,10 @@ class _View(gtk.HBox): self._do_page_transition() def _view_scroll_event_cb(self, view, event): - if event.direction == gtk.gdk.SCROLL_DOWN: + if event.direction == Gdk.ScrollDirection.DOWN: self.__going_back = False self.__going_fwd = True - elif event.direction == gtk.gdk.SCROLL_UP: + elif event.direction == Gdk.ScrollDirection.UP: self.__going_back = True self.__going_fwd = False @@ -398,7 +401,7 @@ class _View(gtk.HBox): def _view_load_finished_cb(self, v, frame): # Normally the line below would not be required - ugly workaround for # possible Webkit bug. See : https://bugs.launchpad.net/bugs/483231 - self._sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER) + self._sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER) filename = self._view.props.uri.replace('file://', '') if os.path.exists(filename.replace('xhtml', 'xml')): @@ -626,19 +629,19 @@ class _View(gtk.HBox): self._load_page(pageno) def _scrollbar_change_value_cb(self, range, scrolltype, value): - if scrolltype == gtk.SCROLL_STEP_FORWARD: + if scrolltype == Gtk.ScrollType.STEP_FORWARD: self.__going_fwd = True self.__going_back = False if not self._do_page_transition(): - self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, 1) - elif scrolltype == gtk.SCROLL_STEP_BACKWARD: + self._view.move_cursor(Gtk.MovementStep.DISPLAY_LINES, 1) + elif scrolltype == Gtk.ScrollType.STEP_BACKWARD: self.__going_fwd = False self.__going_back = True if not self._do_page_transition(): - self._view.move_cursor(gtk.MOVEMENT_DISPLAY_LINES, -1) - elif scrolltype == gtk.SCROLL_JUMP or \ - scrolltype == gtk.SCROLL_PAGE_FORWARD or \ - scrolltype == gtk.SCROLL_PAGE_BACKWARD: + self._view.move_cursor(Gtk.MovementStep.DISPLAY_LINES, -1) + elif scrolltype == Gtk.ScrollType.JUMP or \ + scrolltype == Gtk.ScrollType.PAGE_FORWARD or \ + scrolltype == Gtk.ScrollType.PAGE_BACKWARD: if value > self._scrollbar.props.adjustment.props.upper: self._load_page(self._pagecount) else: diff --git a/epubview/jobs.py b/epubview/jobs.py index a0b6771..ba28396 100644 --- a/epubview/jobs.py +++ b/epubview/jobs.py @@ -16,8 +16,9 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -import gobject -import gtk +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import Gdk import widgets import cairo @@ -60,10 +61,10 @@ class SearchThread(threading.Thread): self.obj._matchfilelist.append(entry) f.close() - gtk.gdk.threads_enter() + Gdk.threads_enter() self.obj._finished = True self.obj.emit('updated') - gtk.gdk.threads_leave() + Gdk.threads_leave() return False @@ -85,14 +86,14 @@ class SearchThread(threading.Thread): self.stopthread.set() -class _JobPaginator(gobject.GObject): +class _JobPaginator(GObject.GObject): __gsignals__ = { - 'paginated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), + 'paginated': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, ([])), } def __init__(self, filelist): - gobject.GObject.__init__(self) + GObject.GObject.__init__(self) self._filelist = filelist self._filedict = {} @@ -102,7 +103,9 @@ class _JobPaginator(gobject.GObject): self._count = 0 self._pagecount = 0 - self._screen = gtk.gdk.screen_get_default() + #TODO + """ + self._screen = Gdk.Screen.get_default() self._old_fontoptions = self._screen.get_font_options() options = cairo.FontOptions() options.set_hint_style(cairo.HINT_STYLE_MEDIUM) @@ -110,8 +113,9 @@ class _JobPaginator(gobject.GObject): options.set_subpixel_order(cairo.SUBPIXEL_ORDER_DEFAULT) options.set_hint_metrics(cairo.HINT_METRICS_DEFAULT) self._screen.set_font_options(options) + """ - self._temp_win = gtk.Window() + self._temp_win = Gtk.Window() self._temp_view = widgets._WebView() settings = self._temp_view.get_settings() @@ -127,8 +131,8 @@ class _JobPaginator(gobject.GObject): settings.props.default_monospace_font_size = 10 settings.props.default_encoding = 'utf-8' - sw = gtk.ScrolledWindow() - sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER) + sw = Gtk.ScrolledWindow() + sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER) self._dpi = 96 sw.set_size_request(_mm_to_pixel(PAGE_WIDTH, self._dpi), _mm_to_pixel(PAGE_HEIGHT, self._dpi)) @@ -164,7 +168,8 @@ class _JobPaginator(gobject.GObject): if self._count + 1 >= len(self._filelist): self._temp_win.destroy() - self._screen.set_font_options(self._old_fontoptions) + # TODO + #self._screen.set_font_options(self._old_fontoptions) self.emit('paginated') else: self._count += 1 @@ -224,15 +229,15 @@ class _JobPaginator(gobject.GObject): return self._bookheight -class _JobFind(gobject.GObject): +class _JobFind(GObject.GObject): __gsignals__ = { - 'updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])), + 'updated': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, ([])), } def __init__(self, document, start_page, n_pages, text, case_sensitive=False): - gobject.GObject.__init__(self) - gtk.gdk.threads_init() + GObject.GObject.__init__(self) + Gdk.threads_init() self._finished = False self._document = document diff --git a/epubview/navmap.py b/epubview/navmap.py index 612f2d1..fa3713b 100644 --- a/epubview/navmap.py +++ b/epubview/navmap.py @@ -1,5 +1,6 @@ from lxml import etree -import gtk +from gi.repository import Gtk +import logging class NavPoint(object): @@ -25,7 +26,7 @@ class NavMap(object): self._opffile = opffile self._tree = etree.parse(ncxfile) self._root = self._tree.getroot() - self._gtktreestore = gtk.TreeStore(str, str) + self._gtktreestore = Gtk.TreeStore(str, str) self._flattoc = [] self._populate_flattoc() @@ -62,8 +63,11 @@ class NavMap(object): def _getcontent(self, navpoint): text = navpoint.find( - './{http://www.daisy.org/z3986/2005/ncx/}content/') - return self._basepath + text.get('src') + './{http://www.daisy.org/z3986/2005/ncx/}content') + if text is not None: + return self._basepath + text.get('src') + else: + return "" def _process_navpoint(self, navpoint, parent=None): title = self._gettitle(navpoint) diff --git a/epubview/widgets.py b/epubview/widgets.py index a603c34..39c52ce 100644 --- a/epubview/widgets.py +++ b/epubview/widgets.py @@ -1,10 +1,9 @@ -import webkit -import gtk +from gi.repository import WebKit -class _WebView(webkit.WebView): +class _WebView(WebKit.WebView): def __init__(self): - webkit.WebView.__init__(self) + WebKit.WebView.__init__(self) def get_page_height(self): ''' |