def dropEvent(self, event): event.setDropAction(Qt.CopyAction) md = event.mimeData() image_exts = set(image_extensions()) - set(tweaks['cover_drop_exclude']) x, y = dnd_get_image(md, image_exts) if x is not None: # We have an image, set cover event.accept() if y is None: # Local image self.cover_view.paste_from_clipboard(x) self.update_layout() else: self.remote_file_dropped.emit(x, y) # We do not support setting cover *and* adding formats for # a remote drop, anyway, so return return # Now look for ebook files urls, filenames = dnd_get_files(md, BOOK_EXTENSIONS, allow_all_extensions=True, filter_exts=image_exts) if not urls: # Nothing found return if not filenames: # Local files self.files_dropped.emit(event, urls) else: # Remote files, use the first file self.remote_file_dropped.emit(urls[0], filenames[0]) event.accept()
def dropEvent(self, event): event.setDropAction(Qt.DropAction.CopyAction) md = event.mimeData() image_exts = set(image_extensions()) - set(tweaks['cover_drop_exclude']) x, y = dnd_get_image(md, image_exts) if x is not None: # We have an image, set cover event.accept() if y is None: # Local image self.cover_view.paste_from_clipboard(x) self.update_layout() else: self.remote_file_dropped.emit(x, y) # We do not support setting cover *and* adding formats for # a remote drop, anyway, so return return # Now look for ebook files urls, filenames = dnd_get_files(md, BOOK_EXTENSIONS, allow_all_extensions=True, filter_exts=image_exts) if not urls: # Nothing found return if not filenames: # Local files self.files_dropped.emit(event, urls) else: # Remote files, use the first file self.remote_file_dropped.emit(urls[0], filenames[0]) event.accept()
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)
def choose_images(window, name, title, select_only_single_file=True, formats=None): if formats is None: from calibre.gui2.dnd import image_extensions formats = image_extensions() file_types = [(_("Images"), list(formats))] return choose_files(window, name, title, select_only_single_file=select_only_single_file, filters=file_types)
def zenity_choose_images(window, name, title, select_only_single_file=True, formats=None): return zenity_choose_files(window, name, title, select_only_single_file=select_only_single_file, all_files=False, filters=[(_('Images'), list(formats or image_extensions()))])
def choose_images(window, name, title, select_only_single_file=True, formats=None): if formats is None: from calibre.gui2.dnd import image_extensions formats = image_extensions() file_types = [(_('Images'), list(formats))] return choose_files(window, name, title, select_only_single_file=select_only_single_file, filters=file_types)
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 for path in paths: ext = os.path.splitext(path)[1].lower() if ext: ext = ext[1:] if ext in image_extensions(): 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() if do_confirm and formats: if not 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): 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()
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']) 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() if do_confirm and formats: if not 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): 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()
def image_extensions(): from calibre.gui2.dnd import image_extensions return image_extensions()
def dragEnterEvent(self, event): md = event.mimeData() if dnd_has_extension(md, image_extensions() + BOOK_EXTENSIONS, allow_all_extensions=True, allow_remote=True) or \ dnd_has_image(md): event.acceptProposedAction()
def dragEnterEvent(self, event): md = event.mimeData() exts = self.DROPABBLE_EXTENSIONS or image_extensions() if dnd_has_extension(md, exts) or \ dnd_has_image(md): event.acceptProposedAction()
def dragEnterEvent(self, event): md = event.mimeData() if dnd_has_extension(md, image_extensions()) or dnd_has_image(md): event.acceptProposedAction()
def zenity_choose_images(window, name, title, select_only_single_file=True, formats=None): return zenity_choose_files( window, name, title, select_only_single_file=select_only_single_file, all_files=False, filters=[(_('Images'), list(formats or image_extensions()))])
def dragEnterEvent(self, event): md = event.mimeData() if dnd_has_extension(md, image_extensions() + BOOK_EXTENSIONS, allow_all_extensions=True) or \ dnd_has_image(md): event.acceptProposedAction()