mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Preferred input format: User orderable list of input formats to prefer.
This commit is contained in:
parent
00bfb182ea
commit
74dc8d5b1d
@ -276,6 +276,13 @@ def plugin_for_input_format(fmt):
|
||||
if fmt.lower() in plugin.file_types:
|
||||
return plugin
|
||||
|
||||
def all_input_formats():
|
||||
formats = set([])
|
||||
for plugin in input_format_plugins():
|
||||
for format in plugin.file_types:
|
||||
formats.add(format)
|
||||
return formats
|
||||
|
||||
def available_input_formats():
|
||||
formats = set([])
|
||||
for plugin in input_format_plugins():
|
||||
|
@ -11,6 +11,7 @@ ORG_NAME = 'KovidsBrain'
|
||||
APP_UID = 'libprs500'
|
||||
from calibre import islinux, iswindows
|
||||
from calibre.startup import get_lang
|
||||
from calibre.customize.ui import all_input_formats
|
||||
from calibre.utils.config import Config, ConfigProxy, dynamic
|
||||
import calibre.resources as resources
|
||||
from calibre.ebooks.metadata.meta import get_metadata, metadata_from_formats
|
||||
@ -48,9 +49,11 @@ def _config():
|
||||
help=_('Defaults for conversion to LRF'))
|
||||
c.add_opt('LRF_ebook_viewer_options', default=None,
|
||||
help=_('Options for the LRF ebook viewer'))
|
||||
c.add_opt('internally_viewed_formats', default=['LRF', 'EPUB', 'LIT',
|
||||
'MOBI', 'PRC', 'HTML', 'FB2', 'PDB', 'RB'],
|
||||
c.add_opt('internally_viewed_formats', default=all_input_formats(),
|
||||
help=_('Formats that are viewed using the internal viewer'))
|
||||
c.add_opt('input_format_order', default=['EPUB', 'MOBI', 'PRC', 'LIT',
|
||||
'HTML', 'FB2', 'PDB', 'RB'],
|
||||
help=_('Order list of formats to prefer for input.'))
|
||||
c.add_opt('column_map', default=ALL_COLUMNS,
|
||||
help=_('Columns to be displayed in the book list'))
|
||||
c.add_opt('autolaunch_server', default=False, help=_('Automatically launch content server on application startup'))
|
||||
|
@ -22,7 +22,8 @@ from calibre.library import server_config
|
||||
from calibre.customize.ui import initialized_plugins, is_disabled, enable_plugin, \
|
||||
disable_plugin, customize_plugin, \
|
||||
plugin_customization, add_plugin, \
|
||||
remove_plugin, input_format_plugins, \
|
||||
remove_plugin, all_input_formats, \
|
||||
input_format_plugins, \
|
||||
output_format_plugins, available_output_formats
|
||||
from calibre.utils.smtp import config as smtp_prefs
|
||||
from calibre.gui2.convert.look_and_feel import LookAndFeelWidget
|
||||
@ -337,6 +338,18 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
||||
self.connect(self.browse_button, SIGNAL('clicked(bool)'), self.browse)
|
||||
self.connect(self.compact_button, SIGNAL('clicked(bool)'), self.compact)
|
||||
|
||||
input_map = config['input_format_order']
|
||||
all_formats = set()
|
||||
for fmt in all_input_formats():
|
||||
all_formats.add(fmt.upper())
|
||||
for format in input_map + list(all_formats.difference(input_map)):
|
||||
item = QListWidgetItem(format, self.input_order)
|
||||
item.setData(Qt.UserRole, QVariant(format))
|
||||
item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
|
||||
|
||||
self.connect(self.input_up, SIGNAL('clicked()'), self.up_input)
|
||||
self.connect(self.input_down, SIGNAL('clicked()'), self.down_input)
|
||||
|
||||
dirs = config['frequently_used_directories']
|
||||
rn = config['use_roman_numerals_for_series_number']
|
||||
self.timeout.setValue(prefs['network_timeout'])
|
||||
@ -553,6 +566,17 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
||||
plugin.name + _(' cannot be removed. It is a '
|
||||
'builtin plugin. Try disabling it instead.')).exec_()
|
||||
|
||||
def up_input(self):
|
||||
idx = self.input_order.currentRow()
|
||||
if idx > 0:
|
||||
self.input_order.insertItem(idx-1, self.input_order.takeItem(idx))
|
||||
self.input_order.setCurrentRow(idx-1)
|
||||
|
||||
def down_input(self):
|
||||
idx = self.input_order.currentRow()
|
||||
if idx < self.input_order.count()-1:
|
||||
self.input_order.insertItem(idx+1, self.input_order.takeItem(idx))
|
||||
self.input_order.setCurrentRow(idx+1)
|
||||
|
||||
def up_column(self):
|
||||
idx = self.columns.currentRow()
|
||||
@ -656,6 +680,8 @@ class ConfigDialog(QDialog, Ui_Dialog):
|
||||
config['new_version_notification'] = bool(self.new_version_notification.isChecked())
|
||||
prefs['network_timeout'] = int(self.timeout.value())
|
||||
path = qstring_to_unicode(self.location.text())
|
||||
input_cols = [unicode(self.input_order.item(i).data(Qt.UserRole).toString()) for i in range(self.input_order.count())]
|
||||
config['input_format_order'] = input_cols
|
||||
cols = [unicode(self.columns.item(i).data(Qt.UserRole).toString()) for i in range(self.columns.count()) if self.columns.item(i).checkState()==Qt.Checked]
|
||||
if not cols:
|
||||
cols = ['title']
|
||||
|
@ -232,6 +232,68 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_5">
|
||||
<property name="title">
|
||||
<string>Preferred &input format order:</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_11">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||
<item>
|
||||
<widget class="QListWidget" name="input_order">
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||
<item>
|
||||
<widget class="QToolButton" name="input_up">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/arrow-up.svg</normaloff>:/images/arrow-up.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="input_down">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../images.qrc">
|
||||
<normaloff>:/images/arrow-down.svg</normaloff>:/images/arrow-down.svg</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="dirs_box">
|
||||
<property name="title">
|
||||
|
Loading…
x
Reference in New Issue
Block a user