mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Edit metadata dialog: When trying to download metadata, if there are multiple matches indicate which matches have a cover and summary in the list. Also add an option to automatically download the cover of the selected match.
This commit is contained in:
parent
d43af28fcf
commit
2ed1365eb1
@ -123,6 +123,8 @@ def _config():
|
|||||||
help=_('Download social metadata (tags/rating/etc.)'))
|
help=_('Download social metadata (tags/rating/etc.)'))
|
||||||
c.add_opt('overwrite_author_title_metadata', default=True,
|
c.add_opt('overwrite_author_title_metadata', default=True,
|
||||||
help=_('Overwrite author and title with new metadata'))
|
help=_('Overwrite author and title with new metadata'))
|
||||||
|
c.add_opt('auto_download_cover', default=False,
|
||||||
|
help=_('Automatically download the cover, if available'))
|
||||||
c.add_opt('enforce_cpu_limit', default=True,
|
c.add_opt('enforce_cpu_limit', default=True,
|
||||||
help=_('Limit max simultaneous jobs to number of CPUs'))
|
help=_('Limit max simultaneous jobs to number of CPUs'))
|
||||||
c.add_opt('tag_browser_hidden_categories', default=set(),
|
c.add_opt('tag_browser_hidden_categories', default=set(),
|
||||||
|
@ -9,7 +9,7 @@ from threading import Thread
|
|||||||
|
|
||||||
from PyQt4.QtCore import Qt, QObject, SIGNAL, QVariant, pyqtSignal, \
|
from PyQt4.QtCore import Qt, QObject, SIGNAL, QVariant, pyqtSignal, \
|
||||||
QAbstractTableModel, QCoreApplication, QTimer
|
QAbstractTableModel, QCoreApplication, QTimer
|
||||||
from PyQt4.QtGui import QDialog, QItemSelectionModel
|
from PyQt4.QtGui import QDialog, QItemSelectionModel, QIcon
|
||||||
|
|
||||||
from calibre.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata
|
from calibre.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata
|
||||||
from calibre.gui2 import error_dialog, NONE, info_dialog, config
|
from calibre.gui2 import error_dialog, NONE, info_dialog, config
|
||||||
@ -42,13 +42,14 @@ class Matches(QAbstractTableModel):
|
|||||||
|
|
||||||
def __init__(self, matches):
|
def __init__(self, matches):
|
||||||
self.matches = matches
|
self.matches = matches
|
||||||
|
self.yes_icon = QVariant(QIcon(I('ok.png')))
|
||||||
QAbstractTableModel.__init__(self)
|
QAbstractTableModel.__init__(self)
|
||||||
|
|
||||||
def rowCount(self, *args):
|
def rowCount(self, *args):
|
||||||
return len(self.matches)
|
return len(self.matches)
|
||||||
|
|
||||||
def columnCount(self, *args):
|
def columnCount(self, *args):
|
||||||
return 6
|
return 8
|
||||||
|
|
||||||
def headerData(self, section, orientation, role):
|
def headerData(self, section, orientation, role):
|
||||||
if role != Qt.DisplayRole:
|
if role != Qt.DisplayRole:
|
||||||
@ -61,6 +62,8 @@ class Matches(QAbstractTableModel):
|
|||||||
elif section == 3: text = _("Publisher")
|
elif section == 3: text = _("Publisher")
|
||||||
elif section == 4: text = _("ISBN")
|
elif section == 4: text = _("ISBN")
|
||||||
elif section == 5: text = _("Published")
|
elif section == 5: text = _("Published")
|
||||||
|
elif section == 6: text = _("Has Cover")
|
||||||
|
elif section == 7: text = _("Has Summary")
|
||||||
|
|
||||||
return QVariant(text)
|
return QVariant(text)
|
||||||
else:
|
else:
|
||||||
@ -71,8 +74,8 @@ class Matches(QAbstractTableModel):
|
|||||||
|
|
||||||
def data(self, index, role):
|
def data(self, index, role):
|
||||||
row, col = index.row(), index.column()
|
row, col = index.row(), index.column()
|
||||||
if role == Qt.DisplayRole:
|
|
||||||
book = self.matches[row]
|
book = self.matches[row]
|
||||||
|
if role == Qt.DisplayRole:
|
||||||
res = None
|
res = None
|
||||||
if col == 0:
|
if col == 0:
|
||||||
res = book.title
|
res = book.title
|
||||||
@ -90,6 +93,11 @@ class Matches(QAbstractTableModel):
|
|||||||
if not res:
|
if not res:
|
||||||
return NONE
|
return NONE
|
||||||
return QVariant(res)
|
return QVariant(res)
|
||||||
|
elif role == Qt.DecorationRole:
|
||||||
|
if col == 6 and book.has_cover:
|
||||||
|
return self.yes_icon
|
||||||
|
if col == 7 and book.comments:
|
||||||
|
return self.yes_icon
|
||||||
return NONE
|
return NONE
|
||||||
|
|
||||||
class FetchMetadata(QDialog, Ui_FetchMetadata):
|
class FetchMetadata(QDialog, Ui_FetchMetadata):
|
||||||
@ -131,7 +139,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
|
|||||||
self.fetch_metadata()
|
self.fetch_metadata()
|
||||||
self.opt_get_social_metadata.setChecked(config['get_social_metadata'])
|
self.opt_get_social_metadata.setChecked(config['get_social_metadata'])
|
||||||
self.opt_overwrite_author_title_metadata.setChecked(config['overwrite_author_title_metadata'])
|
self.opt_overwrite_author_title_metadata.setChecked(config['overwrite_author_title_metadata'])
|
||||||
|
self.opt_auto_download_cover.setChecked(config['auto_download_cover'])
|
||||||
|
|
||||||
def show_summary(self, current, *args):
|
def show_summary(self, current, *args):
|
||||||
row = current.row()
|
row = current.row()
|
||||||
@ -213,6 +221,12 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
|
|||||||
_hung_fetchers.add(self.fetcher)
|
_hung_fetchers.add(self.fetcher)
|
||||||
if hasattr(self, '_hangcheck') and self._hangcheck.isActive():
|
if hasattr(self, '_hangcheck') and self._hangcheck.isActive():
|
||||||
self._hangcheck.stop()
|
self._hangcheck.stop()
|
||||||
|
# Save value of auto_download_cover, since this is the only place it can
|
||||||
|
# be set. The values of the other options can be set in
|
||||||
|
# Preferences->Behavior and should not be set here as they affect bulk
|
||||||
|
# downloading as well.
|
||||||
|
if self.opt_auto_download_cover.isChecked() != config['auto_download_cover']:
|
||||||
|
config.set('auto_download_cover', self.opt_auto_download_cover.isChecked())
|
||||||
|
|
||||||
def __enter__(self, *args):
|
def __enter__(self, *args):
|
||||||
return self
|
return self
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>830</width>
|
<width>890</width>
|
||||||
<height>642</height>
|
<height>642</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -109,6 +109,13 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="opt_overwrite_author_title_metadata">
|
||||||
|
<property name="text">
|
||||||
|
<string>Overwrite author and title with author and title of selected book</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="opt_get_social_metadata">
|
<widget class="QCheckBox" name="opt_get_social_metadata">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -117,9 +124,9 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="opt_overwrite_author_title_metadata">
|
<widget class="QCheckBox" name="opt_auto_download_cover">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Overwrite author and title with author and title of selected book</string>
|
<string>Automatically download the cover, if available</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -760,8 +760,8 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
|||||||
if book.publisher: self.publisher.setEditText(book.publisher)
|
if book.publisher: self.publisher.setEditText(book.publisher)
|
||||||
if book.isbn: self.isbn.setText(book.isbn)
|
if book.isbn: self.isbn.setText(book.isbn)
|
||||||
if book.pubdate:
|
if book.pubdate:
|
||||||
d = book.pubdate
|
dt = book.pubdate
|
||||||
self.pubdate.setDate(QDate(d.year, d.month, d.day))
|
self.pubdate.setDate(QDate(dt.year, dt.month, dt.day))
|
||||||
summ = book.comments
|
summ = book.comments
|
||||||
if summ:
|
if summ:
|
||||||
prefix = unicode(self.comments.toPlainText())
|
prefix = unicode(self.comments.toPlainText())
|
||||||
@ -777,7 +777,10 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
|
|||||||
self.series.setText(book.series)
|
self.series.setText(book.series)
|
||||||
if book.series_index is not None:
|
if book.series_index is not None:
|
||||||
self.series_index.setValue(book.series_index)
|
self.series_index.setValue(book.series_index)
|
||||||
# Needed because of Qt focus bug on OS X
|
if book.has_cover:
|
||||||
|
if d.opt_auto_download_cover.isChecked() and book.has_cover:
|
||||||
|
self.fetch_cover()
|
||||||
|
else:
|
||||||
self.fetch_cover_button.setFocus(Qt.OtherFocusReason)
|
self.fetch_cover_button.setFocus(Qt.OtherFocusReason)
|
||||||
else:
|
else:
|
||||||
error_dialog(self, _('Cannot fetch metadata'),
|
error_dialog(self, _('Cannot fetch metadata'),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user