示例#1
0
    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()
示例#2
0
    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()
示例#3
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)
示例#4
0
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)
示例#5
0
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()))])
示例#6
0
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)
示例#7
0
文件: add.py 项目: pazthor/calibre
 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()
示例#8
0
文件: add.py 项目: MarioJC/calibre
 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()
示例#9
0
def image_extensions():
    from calibre.gui2.dnd import image_extensions
    return image_extensions()
示例#10
0
 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()
示例#11
0
 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()
示例#12
0
 def dragEnterEvent(self, event):
     md = event.mimeData()
     if dnd_has_extension(md, image_extensions()) or dnd_has_image(md):
         event.acceptProposedAction()
示例#13
0
 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()
示例#14
0
 def dragEnterEvent(self, event):
     md = event.mimeData()
     if dnd_has_extension(md, image_extensions()) or dnd_has_image(md):
         event.acceptProposedAction()
示例#15
0
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()))])
示例#16
0
def image_extensions():
    from calibre.gui2.dnd import image_extensions
    return image_extensions()
示例#17
0
 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()