コード例 #1
0
 def files_dropped_on_book(self, event, paths, cid=None, do_confirm=True):
     accept = False
     if self.gui.current_view() is not self.gui.library_view:
         return
     db = self.gui.library_view.model().db
     cover_changed = False
     current_idx = self.gui.library_view.currentIndex()
     if cid is None:
         if not current_idx.isValid():
             return
         cid = db.id(current_idx.row()) if cid is None else cid
     formats = []
     from calibre.gui2.dnd import image_extensions
     image_exts = set(image_extensions()) - set(
         tweaks['cover_drop_exclude'])
     if iswindows:
         from calibre.gui2.add import resolve_windows_links
         paths = list(
             resolve_windows_links(paths,
                                   hwnd=int(self.gui.effectiveWinId())))
     for path in paths:
         ext = os.path.splitext(path)[1].lower()
         if ext:
             ext = ext[1:]
         if ext in image_exts:
             pmap = QPixmap()
             pmap.load(path)
             if not pmap.isNull():
                 accept = True
                 db.set_cover(cid, pmap)
                 cover_changed = True
         else:
             formats.append((ext, path))
             accept = True
     if accept and event is not None:
         event.accept()
     add_as_book = False
     if do_confirm and formats:
         ok, add_as_book = confirm(_(
             'You have dropped some files onto the book <b>%s</b>. This will'
             ' add or replace the files for this book. Do you want to proceed?'
         ) % db.title(cid, index_is_id=True),
                                   'confirm_drop_on_book',
                                   parent=self.gui,
                                   extra_button=ngettext(
                                       'Add as new book',
                                       'Add as new books', len(formats)))
         if ok and add_as_book:
             add_as_book = [path for ext, path in formats]
         if not ok or add_as_book:
             formats = []
     for ext, path in formats:
         db.add_format_with_hooks(cid, ext, path, index_is_id=True)
     if current_idx.isValid():
         self.gui.library_view.model().current_changed(
             current_idx, current_idx)
     if cover_changed:
         self.gui.refresh_cover_browser()
     if add_as_book:
         self.files_dropped(add_as_book)
コード例 #2
0
ファイル: plugin_updater.py プロジェクト: smdx023/calibre
 def __init__(self, parent, icon_name, title):
     QHBoxLayout.__init__(self)
     title_font = QFont()
     title_font.setPointSize(16)
     title_image_label = QLabel(parent)
     pixmap = QPixmap()
     pixmap.load(I(icon_name))
     if pixmap is None:
         error_dialog(parent, _('Restart required'),
                      _('You must restart calibre before using this plugin!'), show=True)
     else:
         title_image_label.setPixmap(pixmap)
     title_image_label.setMaximumSize(32, 32)
     title_image_label.setScaledContents(True)
     self.addWidget(title_image_label)
     shelf_label = QLabel(title, parent)
     shelf_label.setFont(title_font)
     self.addWidget(shelf_label)
     self.insertStretch(-1)
コード例 #3
0
 def bd_open_cover_with(self, book_id, entry):
     cpath = self.current_db.new_api.format_abspath(book_id,
                                                    '__COVER_INTERNAL__')
     if cpath:
         if entry is None:
             pm = QPixmap()
             pm.load(cpath)
             pm.setDevicePixelRatio(self.devicePixelRatioF())
             if pm.isNull():
                 open_local_file(cpath)
             else:
                 from calibre.gui2.image_popup import ImageView
                 iv = ImageView(QApplication.instance().focusWindow(),
                                pm,
                                QUrl.fromLocalFile(cpath),
                                geom_name='book_details_image_view')
                 iv(use_exec=True)
             return
         from calibre.gui2.open_with import run_program
         run_program(entry, cpath, self)
コード例 #4
0
 def view_image(self, name):
     path = get_path_for_name(name)
     if path:
         pmap = QPixmap()
         if pmap.load(path):
             self.image_popup.current_img = pmap
             self.image_popup.current_url = QUrl.fromLocalFile(path)
             self.image_popup()
         else:
             error_dialog(self, _('Invalid image'), _(
                 "Failed to load the image {}").format(name), show=True)
     else:
         error_dialog(self, _('Image not found'), _(
                 "Failed to find the image {}").format(name), show=True)
コード例 #5
0
ファイル: image_popup.py プロジェクト: zmshan2008/calibre
        self.current_url = QUrl()
        self.parent = parent
        self.dialogs = []

    def __call__(self):
        if self.current_img.isNull():
            return
        d = ImageView(self.parent, self.current_img, self.current_url)
        self.dialogs.append(d)
        d.finished.connect(self.cleanup,
                           type=Qt.ConnectionType.QueuedConnection)
        d()

    def cleanup(self):
        for d in tuple(self.dialogs):
            if not d.isVisible():
                self.dialogs.remove(d)


if __name__ == '__main__':
    import sys

    from calibre.gui2 import Application
    app = Application([])
    p = QPixmap()
    p.load(sys.argv[-1])
    u = QUrl.fromLocalFile(sys.argv[-1])
    d = ImageView(None, p, u)
    d()
    app.exec_()