Ejemplo n.º 1
0
Archivo: ui.py Proyecto: vuesig/calibre
 def load_book_data(self, calibre_book_data=None):
     self.current_book_data[
         'book_library_details'] = get_book_library_details(
             self.current_book_data['pathtoebook'])
     if calibre_book_data is not None:
         self.current_book_data['calibre_book_id'] = calibre_book_data[
             'book_id']
         self.current_book_data['calibre_book_uuid'] = calibre_book_data[
             'uuid']
         self.current_book_data['calibre_book_fmt'] = calibre_book_data[
             'fmt']
         self.current_book_data['calibre_library_id'] = calibre_book_data[
             'library_id']
     self.load_book_annotations(calibre_book_data)
     path = os.path.join(self.current_book_data['base'],
                         'calibre-book-manifest.json')
     with open(path, 'rb') as f:
         raw = f.read()
     self.current_book_data['manifest'] = manifest = json.loads(raw)
     toc = manifest.get('toc')
     self.toc_model = TOC(toc)
     self.toc.setModel(self.toc_model)
     self.bookmarks_widget.set_bookmarks(
         self.current_book_data['annotations_map']['bookmark'])
     self.current_book_data['metadata'] = set_book_path.parsed_metadata
     self.current_book_data['manifest'] = set_book_path.parsed_manifest
Ejemplo n.º 2
0
 def load_book_data(self):
     self.load_book_annotations()
     path = os.path.join(self.current_book_data['base'], 'calibre-book-manifest.json')
     with open(path, 'rb') as f:
         raw = f.read()
     self.current_book_data['manifest'] = manifest = json.loads(raw)
     toc = manifest.get('toc')
     self.toc_model = TOC(toc)
     self.toc.setModel(self.toc_model)
     self.bookmarks_widget.set_bookmarks(self.current_book_data['annotations_map']['bookmark'])
     self.current_book_data['metadata'] = set_book_path.parsed_metadata
     self.current_book_data['manifest'] = set_book_path.parsed_manifest
Ejemplo n.º 3
0
    def load_ebook(self, pathtoebook, open_at=None):
        if self.iterator is not None:
            self.save_current_position()
            self.iterator.__exit__()
        self.iterator = EbookIterator(pathtoebook)
        self.open_progress_indicator(_('Loading ebook...'))
        worker = Worker(target=partial(self.iterator.__enter__,
            extract_embedded_fonts_for_qt=True))
        worker.start()
        while worker.isAlive():
            worker.join(0.1)
            QApplication.processEvents()
        if worker.exception is not None:
            if isinstance(worker.exception, DRMError):
                from calibre.gui2.dialogs.drm_error import DRMErrorMessage
                DRMErrorMessage(self).exec_()
            else:
                r = getattr(worker.exception, 'reason', worker.exception)
                error_dialog(self, _('Could not open ebook'),
                        as_unicode(r) or _('Unknown error'),
                        det_msg=worker.traceback, show=True)
            self.close_progress_indicator()
        else:
            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:
                title = os.path.splitext(os.path.basename(pathtoebook))[0]
            if self.iterator.toc:
                self.toc_model = TOC(self.iterator.spine, self.iterator.toc)
                self.toc.setModel(self.toc_model)
                if self.show_toc_on_open:
                    self.action_table_of_contents.setChecked(True)
            else:
                self.toc_model = TOC(self.iterator.spine)
                self.toc.setModel(self.toc_model)
                self.action_table_of_contents.setChecked(False)
            if isbytestring(pathtoebook):
                pathtoebook = force_unicode(pathtoebook, filesystem_encoding)
            vh = vprefs.get('viewer_open_history', [])
            try:
                vh.remove(pathtoebook)
            except:
                pass
            vh.insert(0, pathtoebook)
            vprefs.set('viewer_open_history', vh[:50])
            self.build_recent_menu()

            self.action_table_of_contents.setDisabled(not self.iterator.toc)
            self.current_book_has_toc = bool(self.iterator.toc)
            self.current_title = title
            self.setWindowTitle(self.base_window_title+' - '+title +
                    ' [%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)
            self.vertical_scrollbar.setMaximum(100*sum(self.iterator.pages))
            self.vertical_scrollbar.setSingleStep(10)
            self.vertical_scrollbar.setPageStep(100)
            self.set_vscrollbar_value(1)
            self.current_index = -1
            QApplication.instance().alert(self, 5000)
            previous = self.set_bookmarks(self.iterator.bookmarks)
            if open_at is None and previous is not None:
                self.goto_bookmark(previous)
            else:
                if open_at is None:
                    self.next_document()
                else:
                    if open_at > self.pos.maximum():
                        open_at = self.pos.maximum()
                    if open_at < self.pos.minimum():
                        open_at = self.pos.minimum()
                    self.goto_page(open_at, loaded_check=False)