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
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
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)