mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
02cf6db400
commit
b7955aa9cb
@ -6,7 +6,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import sys, cPickle, shutil, importlib
|
import cPickle, shutil, importlib
|
||||||
|
|
||||||
from PyQt4.Qt import QString, SIGNAL, QAbstractListModel, Qt, QVariant, QFont
|
from PyQt4.Qt import QString, SIGNAL, QAbstractListModel, Qt, QVariant, QFont
|
||||||
|
|
||||||
@ -36,17 +36,14 @@ class NoSupportedInputFormats(Exception):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def sort_formats_by_preference(formats, prefs):
|
def sort_formats_by_preference(formats, prefs):
|
||||||
def fcmp(x, y):
|
uprefs = [x.upper() for x in prefs]
|
||||||
|
def key(x):
|
||||||
try:
|
try:
|
||||||
x = prefs.index(x.upper())
|
return uprefs.index(x.upper())
|
||||||
except ValueError:
|
except ValueError:
|
||||||
x = sys.maxint
|
pass
|
||||||
try:
|
return len(prefs)
|
||||||
y = prefs.index(y.upper())
|
return sorted(formats, key=key)
|
||||||
except ValueError:
|
|
||||||
y = sys.maxint
|
|
||||||
return cmp(x, y)
|
|
||||||
return sorted(formats, cmp=fcmp)
|
|
||||||
|
|
||||||
class GroupModel(QAbstractListModel):
|
class GroupModel(QAbstractListModel):
|
||||||
|
|
||||||
@ -94,8 +91,19 @@ def get_supported_input_formats_for_book(db, book_id):
|
|||||||
|
|
||||||
|
|
||||||
def get_input_format_for_book(db, book_id, pref):
|
def get_input_format_for_book(db, book_id, pref):
|
||||||
|
'''
|
||||||
|
Return (preferred input format, list of available formats) for the book
|
||||||
|
identified by book_id. Raises an error if the book has no input formats.
|
||||||
|
|
||||||
|
:param pref: If None, the format used as input for the last conversion, if
|
||||||
|
any, on this book is used. If not None, should be a lowercase format like
|
||||||
|
'epub' or 'mobi'. If you do not want the last converted format to be used,
|
||||||
|
set pref=False.
|
||||||
|
'''
|
||||||
if pref is None:
|
if pref is None:
|
||||||
pref = get_preferred_input_format_for_book(db, book_id)
|
pref = get_preferred_input_format_for_book(db, book_id)
|
||||||
|
if hasattr(pref, 'lower'):
|
||||||
|
pref = pref.lower()
|
||||||
input_formats = get_supported_input_formats_for_book(db, book_id)
|
input_formats = get_supported_input_formats_for_book(db, book_id)
|
||||||
input_format = pref if pref in input_formats else \
|
input_format = pref if pref in input_formats else \
|
||||||
sort_formats_by_preference(input_formats, prefs['input_format_order'])[0]
|
sort_formats_by_preference(input_formats, prefs['input_format_order'])[0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user