From 9bb9ad53f1f7492cc69860064df80095fdf61740 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 3 Apr 2012 17:40:03 +0530 Subject: [PATCH] E-book viewer: When reading a MOBI file that is actually a KF8 book, show the format as being KF8 --- src/calibre/ebooks/conversion/plugins/mobi_input.py | 2 ++ src/calibre/ebooks/oeb/iterator.py | 4 ++++ src/calibre/gui2/viewer/main.py | 5 +++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/conversion/plugins/mobi_input.py b/src/calibre/ebooks/conversion/plugins/mobi_input.py index 49a57cbde1..0e12dd5db7 100644 --- a/src/calibre/ebooks/conversion/plugins/mobi_input.py +++ b/src/calibre/ebooks/conversion/plugins/mobi_input.py @@ -32,6 +32,7 @@ class MOBIInput(InputFormatPlugin): def convert(self, stream, options, file_ext, log, accelerators): + self.is_kf8 = False if os.environ.get('USE_MOBIUNPACK', None) is not None: pos = stream.tell() @@ -62,6 +63,7 @@ class MOBIInput(InputFormatPlugin): mr = Mobi8Reader(mr, log) opf = os.path.abspath(mr()) self.encrypted_fonts = mr.encrypted_fonts + self.is_kf8 = True return opf raw = parse_cache.pop('calibre_raw_mobi_markup', False) diff --git a/src/calibre/ebooks/oeb/iterator.py b/src/calibre/ebooks/oeb/iterator.py index 3f2f7584c0..03e96f425f 100644 --- a/src/calibre/ebooks/oeb/iterator.py +++ b/src/calibre/ebooks/oeb/iterator.py @@ -217,6 +217,10 @@ class EbookIterator(object): if hasattr(self.pathtoopf, 'manifest'): self.pathtoopf = write_oebbook(self.pathtoopf, self.base) + self.book_format = os.path.splitext(self.pathtoebook)[1][1:].upper() + if getattr(plumber.input_plugin, 'is_kf8', False): + self.book_format = 'KF8' + self.opf = getattr(plumber.input_plugin, 'optimize_opf_parsing', None) if self.opf is None: self.opf = OPF(self.pathtoopf, os.path.dirname(self.pathtoopf)) diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index a0ea6ed914..c22603cee5 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -822,7 +822,8 @@ class EbookViewer(MainWindow, Ui_EbookViewer): as_unicode(r), det_msg=worker.traceback, show=True) self.close_progress_indicator() else: - self.metadata.show_opf(self.iterator.opf, os.path.splitext(pathtoebook)[1][1:]) + self.metadata.show_opf(self.iterator.opf, + self.iterator.book_format) self.view.current_language = self.iterator.language title = self.iterator.opf.title if not title: @@ -849,7 +850,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.current_book_has_toc = bool(self.iterator.toc) self.current_title = title self.setWindowTitle(self.base_window_title+' - '+title + - ' [%s]'%os.path.splitext(pathtoebook)[1][1:].upper()) + ' [%s]'%self.iterator.book_format) self.pos.setMaximum(sum(self.iterator.pages)) self.pos.setSuffix(' / %d'%sum(self.iterator.pages)) self.vertical_scrollbar.setMinimum(100)