예제 #1
0
 def copy_metadata(self):
     rows = self.gui.library_view.selectionModel().selectedRows()
     if not rows or len(rows) == 0:
         return error_dialog(self.gui,
                             _('Cannot copy metadata'),
                             _('No books selected'),
                             show=True)
     if len(rows) > 1:
         return error_dialog(
             self.gui,
             _('Cannot copy metadata'),
             _('Multiple books selected, can only copy from one book at a time.'
               ),
             show=True)
     db = self.gui.current_db
     book_id = db.id(rows[0].row())
     mi = db.new_api.get_metadata(book_id)
     md = QMimeData()
     md.setText(str(mi))
     md.setData('application/calibre-book-metadata',
                bytearray(metadata_to_opf(mi, default_lang='und')))
     img = db.new_api.cover(book_id, as_image=True)
     if img:
         md.setImageData(img)
     c = QApplication.clipboard()
     c.setMimeData(md)
예제 #2
0
 def copy_image(self, name):
     path = get_path_for_name(name)
     if not path:
         return error_dialog(self, _('Image not found'), _(
             "Failed to find the image {}").format(name), show=True)
     try:
         img = image_from_path(path)
     except Exception:
         return error_dialog(self, _('Invalid image'), _(
             "Failed to load the image {}").format(name), show=True)
     url = QUrl.fromLocalFile(path)
     md = QMimeData()
     md.setImageData(img)
     md.setUrls([url])
     QApplication.instance().clipboard().setMimeData(md)