本文整理汇总了Python中calibre.ebooks.oeb.iterator.book.EbookIterator.__exit__方法的典型用法代码示例。如果您正苦于以下问题:Python EbookIterator.__exit__方法的具体用法?Python EbookIterator.__exit__怎么用?Python EbookIterator.__exit__使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类calibre.ebooks.oeb.iterator.book.EbookIterator
的用法示例。
在下文中一共展示了EbookIterator.__exit__方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: EbookViewer
# 需要导入模块: from calibre.ebooks.oeb.iterator.book import EbookIterator [as 别名]
# 或者: from calibre.ebooks.oeb.iterator.book.EbookIterator import __exit__ [as 别名]
#.........这里部分代码省略.........
return current_page
def set_bookmarks(self, bookmarks):
self.bookmarks.set_bookmarks(bookmarks)
return self.build_bookmarks_menu(bookmarks)
@property
def current_page_bookmark(self):
bm = self.view.bookmark()
bm['spine'] = self.current_index
bm['title'] = 'calibre_current_page_bookmark'
return bm
def save_current_position(self, no_copy_to_file=False):
if not self.view.document.remember_current_page:
return
if hasattr(self, 'current_index'):
try:
self.iterator.add_bookmark(self.current_page_bookmark, no_copy_to_file=no_copy_to_file)
except:
traceback.print_exc()
def another_instance_wants_to_talk(self, msg):
try:
path, open_at = msg
except Exception:
return
self.load_ebook(path, open_at=open_at)
self.raise_()
def load_ebook(self, pathtoebook, open_at=None, reopen_at=None):
if self.iterator is not None:
self.save_current_position()
self.iterator.__exit__()
self.iterator = EbookIterator(pathtoebook, copy_bookmarks_to_file=self.view.document.copy_bookmarks_to_file)
self.history.clear()
self.open_progress_indicator(_('Loading ebook...'))
worker = Worker(target=partial(self.iterator.__enter__, view_kepub=True))
worker.path_to_ebook = pathtoebook
worker.start()
while worker.isAlive():
worker.join(0.1)
QApplication.processEvents()
if worker.exception is not None:
tb = worker.traceback.strip()
if tb and tb.splitlines()[-1].startswith('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=tb, 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)
示例2: EbookViewer
# 需要导入模块: from calibre.ebooks.oeb.iterator.book import EbookIterator [as 别名]
# 或者: from calibre.ebooks.oeb.iterator.book.EbookIterator import __exit__ [as 别名]
#.........这里部分代码省略.........
current_page = bm
else:
self.existing_bookmarks.append(bm['title'])
self.bookmarks_menu.addAction(bm['title'], partial(self.goto_bookmark, bm))
return current_page
def manage_bookmarks(self):
bmm = BookmarkManager(self, self.iterator.bookmarks)
if bmm.exec_() != BookmarkManager.Accepted:
return
bookmarks = bmm.get_bookmarks()
if bookmarks != self.iterator.bookmarks:
self.iterator.set_bookmarks(bookmarks)
self.iterator.save_bookmarks()
self.set_bookmarks(bookmarks)
def save_current_position(self):
if not self.get_remember_current_page_opt():
return
if hasattr(self, 'current_index'):
try:
bm = self.view.bookmark()
bm['spine'] = self.current_index
bm['title'] = 'calibre_current_page_bookmark'
self.iterator.add_bookmark(bm)
except:
traceback.print_exc()
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)
示例3: EbookViewer
# 需要导入模块: from calibre.ebooks.oeb.iterator.book import EbookIterator [as 别名]
# 或者: from calibre.ebooks.oeb.iterator.book.EbookIterator import __exit__ [as 别名]
#.........这里部分代码省略.........
self.existing_bookmarks = []
for bm in bookmarks:
if bm["title"] == "calibre_current_page_bookmark":
if self.get_remember_current_page_opt():
current_page = bm
else:
self.existing_bookmarks.append(bm["title"])
self.bookmarks_menu.addAction(bm["title"], partial(self.goto_bookmark, bm))
return current_page
def set_bookmarks(self, bookmarks):
self.bookmarks.set_bookmarks(bookmarks)
return self.build_bookmarks_menu(bookmarks)
@property
def current_page_bookmark(self):
bm = self.view.bookmark()
bm["spine"] = self.current_index
bm["title"] = "calibre_current_page_bookmark"
return bm
def save_current_position(self):
if not self.get_remember_current_page_opt():
return
if hasattr(self, "current_index"):
try:
self.iterator.add_bookmark(self.current_page_bookmark)
except:
traceback.print_exc()
def load_ebook(self, pathtoebook, open_at=None, reopen_at=None):
if self.iterator is not None:
self.save_current_position()
self.iterator.__exit__()
self.iterator = EbookIterator(pathtoebook)
self.history.clear()
self.open_progress_indicator(_("Loading ebook..."))
worker = Worker(target=partial(self.iterator.__enter__, view_kepub=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)