mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
GUI: Convert, remove old default config functions.
This commit is contained in:
parent
c956f5fa30
commit
970430c40f
@ -36,9 +36,7 @@ from calibre.gui2.dialogs.metadata_single import MetadataSingleDialog
|
|||||||
from calibre.gui2.dialogs.metadata_bulk import MetadataBulkDialog
|
from calibre.gui2.dialogs.metadata_bulk import MetadataBulkDialog
|
||||||
from calibre.gui2.dialogs.jobs import JobsDialog
|
from calibre.gui2.dialogs.jobs import JobsDialog
|
||||||
from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog
|
from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog
|
||||||
from calibre.gui2.tools import convert_single_ebook, convert_bulk_ebooks, \
|
from calibre.gui2.tools import convert_single_ebook, fetch_scheduled_recipe
|
||||||
set_conversion_defaults, fetch_scheduled_recipe, \
|
|
||||||
auto_convert_ebook
|
|
||||||
from calibre.gui2.dialogs.config import ConfigDialog
|
from calibre.gui2.dialogs.config import ConfigDialog
|
||||||
from calibre.gui2.dialogs.search import SearchDialog
|
from calibre.gui2.dialogs.search import SearchDialog
|
||||||
from calibre.gui2.dialogs.choose_format import ChooseFormatDialog
|
from calibre.gui2.dialogs.choose_format import ChooseFormatDialog
|
||||||
@ -233,18 +231,11 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
cm = QMenu()
|
cm = QMenu()
|
||||||
cm.addAction(_('Convert individually'))
|
cm.addAction(_('Convert individually'))
|
||||||
cm.addAction(_('Bulk convert'))
|
cm.addAction(_('Bulk convert'))
|
||||||
cm.addSeparator()
|
|
||||||
cm.addAction(_('Set defaults for conversion'))
|
|
||||||
cm.addAction(_('Set defaults for conversion of comics'))
|
|
||||||
self.action_convert.setMenu(cm)
|
self.action_convert.setMenu(cm)
|
||||||
QObject.connect(cm.actions()[0],
|
QObject.connect(cm.actions()[0],
|
||||||
SIGNAL('triggered(bool)'), self.convert_single)
|
SIGNAL('triggered(bool)'), self.convert_single)
|
||||||
QObject.connect(cm.actions()[1],
|
QObject.connect(cm.actions()[1],
|
||||||
SIGNAL('triggered(bool)'), self.convert_bulk)
|
SIGNAL('triggered(bool)'), self.convert_bulk)
|
||||||
QObject.connect(cm.actions()[3],
|
|
||||||
SIGNAL('triggered(bool)'), self.set_conversion_defaults)
|
|
||||||
QObject.connect(cm.actions()[4],
|
|
||||||
SIGNAL('triggered(bool)'), self.set_comic_conversion_defaults)
|
|
||||||
QObject.connect(self.action_convert,
|
QObject.connect(self.action_convert,
|
||||||
SIGNAL('triggered(bool)'), self.convert_single)
|
SIGNAL('triggered(bool)'), self.convert_single)
|
||||||
self.convert_menu = cm
|
self.convert_menu = cm
|
||||||
@ -1024,12 +1015,6 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
|
|||||||
self.library_view.model().resort(reset=False)
|
self.library_view.model().resort(reset=False)
|
||||||
self.library_view.model().research()
|
self.library_view.model().research()
|
||||||
|
|
||||||
def set_conversion_defaults(self, checked):
|
|
||||||
set_conversion_defaults(False, self, self.library_view.model().db)
|
|
||||||
|
|
||||||
def set_comic_conversion_defaults(self, checked):
|
|
||||||
set_conversion_defaults(True, self, self.library_view.model().db)
|
|
||||||
|
|
||||||
def convert_single(self, checked):
|
def convert_single(self, checked):
|
||||||
row_ids = self.get_books_for_conversion()
|
row_ids = self.get_books_for_conversion()
|
||||||
if row_ids is None: return
|
if row_ids is None: return
|
||||||
|
@ -56,7 +56,9 @@ def convert_single_ebook(parent, db, row_ids, auto_conversion=False):
|
|||||||
return jobs, changed
|
return jobs, changed
|
||||||
|
|
||||||
|
|
||||||
def convert_bulk(fmt, parent, db, comics, others):
|
def convert_bulk_ebooks(*args):
|
||||||
|
pass
|
||||||
|
#(fmt, parent, db, comics, others):
|
||||||
if others:
|
if others:
|
||||||
d = get_dialog(fmt)(parent, db)
|
d = get_dialog(fmt)(parent, db)
|
||||||
if d.exec_() != QDialog.Accepted:
|
if d.exec_() != QDialog.Accepted:
|
||||||
@ -158,117 +160,6 @@ def convert_bulk(fmt, parent, db, comics, others):
|
|||||||
|
|
||||||
return jobs, False
|
return jobs, False
|
||||||
|
|
||||||
|
|
||||||
def convert_bulk_lrf(parent, db, comics, others):
|
|
||||||
if others:
|
|
||||||
d = LRFBulkDialog(parent)
|
|
||||||
if d.exec_() != QDialog.Accepted:
|
|
||||||
others = []
|
|
||||||
if comics:
|
|
||||||
comic_opts = ComicConf.get_bulk_conversion_options(parent)
|
|
||||||
if not comic_opts:
|
|
||||||
comics = []
|
|
||||||
bad_rows = []
|
|
||||||
jobs = []
|
|
||||||
total = sum(map(len, (others, comics)))
|
|
||||||
if total == 0:
|
|
||||||
return
|
|
||||||
parent.status_bar.showMessage(_('Starting Bulk conversion of %d books')%total, 2000)
|
|
||||||
|
|
||||||
for i, row in enumerate(others+comics):
|
|
||||||
row_id = db.id(row)
|
|
||||||
if row in others:
|
|
||||||
cmdline = list(d.cmdline)
|
|
||||||
mi = db.get_metadata(row)
|
|
||||||
if mi.title:
|
|
||||||
cmdline.extend(['--title', mi.title])
|
|
||||||
if mi.authors:
|
|
||||||
cmdline.extend(['--author', ','.join(mi.authors)])
|
|
||||||
if mi.publisher:
|
|
||||||
cmdline.extend(['--publisher', mi.publisher])
|
|
||||||
if mi.comments:
|
|
||||||
cmdline.extend(['--comment', mi.comments])
|
|
||||||
data = None
|
|
||||||
for fmt in LRF_PREFERRED_SOURCE_FORMATS:
|
|
||||||
try:
|
|
||||||
data = db.format(row, fmt.upper())
|
|
||||||
if data is not None:
|
|
||||||
break
|
|
||||||
except:
|
|
||||||
continue
|
|
||||||
if data is None:
|
|
||||||
bad_rows.append(row)
|
|
||||||
continue
|
|
||||||
pt = PersistentTemporaryFile('.'+fmt.lower())
|
|
||||||
pt.write(data)
|
|
||||||
pt.close()
|
|
||||||
of = PersistentTemporaryFile('.lrf')
|
|
||||||
of.close()
|
|
||||||
cover = db.cover(row)
|
|
||||||
cf = None
|
|
||||||
if cover:
|
|
||||||
cf = PersistentTemporaryFile('.jpeg')
|
|
||||||
cf.write(cover)
|
|
||||||
cf.close()
|
|
||||||
cmdline.extend(['--cover', cf.name])
|
|
||||||
cmdline.extend(['-o', of.name])
|
|
||||||
cmdline.append(pt.name)
|
|
||||||
desc = _('Convert book %d of %d (%s)')%(i+1, total, repr(mi.title))
|
|
||||||
temp_files = [cf] if cf is not None else []
|
|
||||||
temp_files.extend([pt, of])
|
|
||||||
jobs.append(('any2lrf', [cmdline], desc, 'LRF', row_id, temp_files))
|
|
||||||
else:
|
|
||||||
options = comic_opts.copy()
|
|
||||||
mi = db.get_metadata(row)
|
|
||||||
if mi.title:
|
|
||||||
options.title = mi.title
|
|
||||||
if mi.authors:
|
|
||||||
options.author = ','.join(mi.authors)
|
|
||||||
data = None
|
|
||||||
for fmt in ['cbz', 'cbr']:
|
|
||||||
try:
|
|
||||||
data = db.format(row, fmt.upper())
|
|
||||||
if data is not None:
|
|
||||||
break
|
|
||||||
except:
|
|
||||||
continue
|
|
||||||
|
|
||||||
pt = PersistentTemporaryFile('.'+fmt.lower())
|
|
||||||
pt.write(data)
|
|
||||||
pt.close()
|
|
||||||
of = PersistentTemporaryFile('.lrf')
|
|
||||||
of.close()
|
|
||||||
setattr(options, 'output', of.name)
|
|
||||||
options.verbose = 1
|
|
||||||
args = [pt.name, options]
|
|
||||||
desc = _('Convert book %d of %d (%s)')%(i+1, total, repr(mi.title))
|
|
||||||
jobs.append(('comic2lrf', args, desc, 'LRF', row_id, [pt, of]))
|
|
||||||
|
|
||||||
if bad_rows:
|
|
||||||
res = []
|
|
||||||
for row in bad_rows:
|
|
||||||
title = db.title(row)
|
|
||||||
res.append('<li>%s</li>'%title)
|
|
||||||
|
|
||||||
msg = _('<p>Could not convert %d of %d books, because no suitable source format was found.<ul>%s</ul>')%(len(res), total, '\n'.join(res))
|
|
||||||
warning_dialog(parent, _('Could not convert some books'), msg).exec_()
|
|
||||||
|
|
||||||
return jobs, False
|
|
||||||
|
|
||||||
def set_conversion_defaults_lrf(comic, parent, db):
|
|
||||||
if comic:
|
|
||||||
ComicConf.set_conversion_defaults(parent)
|
|
||||||
else:
|
|
||||||
LRFSingleDialog(parent, None, None).exec_()
|
|
||||||
|
|
||||||
def _set_conversion_defaults(dialog, comic, parent, db):
|
|
||||||
if comic:
|
|
||||||
ComicConf.set_conversion_defaults(parent)
|
|
||||||
else:
|
|
||||||
d = dialog(parent, db)
|
|
||||||
d.setWindowTitle(_('Set conversion defaults'))
|
|
||||||
d.exec_()
|
|
||||||
|
|
||||||
def _fetch_news(data, fmt):
|
def _fetch_news(data, fmt):
|
||||||
pt = PersistentTemporaryFile(suffix='_feeds2%s.%s'%(fmt.lower(), fmt.lower()))
|
pt = PersistentTemporaryFile(suffix='_feeds2%s.%s'%(fmt.lower(), fmt.lower()))
|
||||||
pt.close()
|
pt.close()
|
||||||
@ -278,7 +169,7 @@ def _fetch_news(data, fmt):
|
|||||||
if data['password']:
|
if data['password']:
|
||||||
args.extend(['--password', data['password']])
|
args.extend(['--password', data['password']])
|
||||||
args.append(data['script'] if data['script'] else data['title'])
|
args.append(data['script'] if data['script'] else data['title'])
|
||||||
return 'feeds2'+fmt.lower(), [args], _('Fetch news from ')+data['title'], fmt.upper(), [pt]
|
return 'fconvert_bulk_ebookseeds2'+fmt.lower(), [args], _('Fetch news from ')+data['title'], fmt.upper(), [pt]
|
||||||
|
|
||||||
|
|
||||||
def fetch_scheduled_recipe(recipe, script):
|
def fetch_scheduled_recipe(recipe, script):
|
||||||
@ -295,20 +186,6 @@ def fetch_scheduled_recipe(recipe, script):
|
|||||||
args.append(script)
|
args.append(script)
|
||||||
return 'feeds2'+fmt, [args], _('Fetch news from ')+recipe.title, fmt.upper(), [pt]
|
return 'feeds2'+fmt, [args], _('Fetch news from ')+recipe.title, fmt.upper(), [pt]
|
||||||
|
|
||||||
def convert_bulk_ebooks(*args):
|
|
||||||
fmt = prefs['output_format'].lower()
|
|
||||||
if fmt == 'lrf':
|
|
||||||
return convert_bulk_lrf(*args)
|
|
||||||
elif fmt in ('epub', 'mobi'):
|
|
||||||
return convert_bulk(fmt, *args)
|
|
||||||
|
|
||||||
def set_conversion_defaults(comic, parent, db):
|
|
||||||
fmt = prefs['output_format'].lower()
|
|
||||||
if fmt == 'lrf':
|
|
||||||
return set_conversion_defaults_lrf(comic, parent, db)
|
|
||||||
elif fmt in ('epub', 'mobi'):
|
|
||||||
return _set_conversion_defaults(get_dialog(fmt), comic, parent, db)
|
|
||||||
|
|
||||||
def fetch_news(data):
|
def fetch_news(data):
|
||||||
fmt = prefs['output_format'].lower()
|
fmt = prefs['output_format'].lower()
|
||||||
return _fetch_news(data, fmt)
|
return _fetch_news(data, fmt)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user