mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
String changes
This commit is contained in:
parent
495f5ddd45
commit
b67684b6b8
@ -161,7 +161,7 @@ some of the advanced features
|
|||||||
`html-demo.zip <https://calibre-ebook.com/downloads/html-demo.zip>`_
|
`html-demo.zip <https://calibre-ebook.com/downloads/html-demo.zip>`_
|
||||||
|
|
||||||
|
|
||||||
Device Integration
|
Device integration
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
.. contents:: Contents
|
.. contents:: Contents
|
||||||
|
@ -49,7 +49,7 @@ basis of a virtual library. The virtual library will contain only the
|
|||||||
books matched by that search. First, type in the search you want to use
|
books matched by that search. First, type in the search you want to use
|
||||||
in the search bar or build a search using the :guilabel:`Tag Browser`.
|
in the search bar or build a search using the :guilabel:`Tag Browser`.
|
||||||
When you are happy with the returned results, click the Virtual library
|
When you are happy with the returned results, click the Virtual library
|
||||||
button, choose Create Library and enter a name for the new virtual
|
button, choose :guilabel:`Create library` and enter a name for the new virtual
|
||||||
library. The virtual library will then be created based on the search
|
library. The virtual library will then be created based on the search
|
||||||
you just typed in. Searches are very powerful, for examples of the kinds
|
you just typed in. Searches are very powerful, for examples of the kinds
|
||||||
of things you can do with them, see :ref:`search_interface`.
|
of things you can do with them, see :ref:`search_interface`.
|
||||||
|
@ -484,7 +484,7 @@ save_original_format = True
|
|||||||
save_original_format_when_polishing = True
|
save_original_format_when_polishing = True
|
||||||
|
|
||||||
#: Number of recently viewed books to show
|
#: Number of recently viewed books to show
|
||||||
# Right-clicking the View button shows a list of recently viewed books. Control
|
# Right-clicking the "View" button shows a list of recently viewed books. Control
|
||||||
# how many should be shown, here.
|
# how many should be shown, here.
|
||||||
gui_view_history_size = 15
|
gui_view_history_size = 15
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ def _config(): # {{{
|
|||||||
c.add_opt('disable_tray_notification', default=False,
|
c.add_opt('disable_tray_notification', default=False,
|
||||||
help=_('Disable notifications from the system tray icon'))
|
help=_('Disable notifications from the system tray icon'))
|
||||||
c.add_opt('default_send_to_device_action', default=None,
|
c.add_opt('default_send_to_device_action', default=None,
|
||||||
help=_('Default action to perform when send to device button is '
|
help=_('Default action to perform when the "Send to device" button is '
|
||||||
'clicked'))
|
'clicked'))
|
||||||
c.add_opt('asked_library_thing_password', default=False,
|
c.add_opt('asked_library_thing_password', default=False,
|
||||||
help='Asked library thing password at least once.')
|
help='Asked library thing password at least once.')
|
||||||
|
@ -79,7 +79,7 @@ class MultiDeleter(QObject): # {{{
|
|||||||
if self.failures:
|
if self.failures:
|
||||||
msg = ['==> '+x[1]+'\n'+x[2] for x in self.failures]
|
msg = ['==> '+x[1]+'\n'+x[2] for x in self.failures]
|
||||||
error_dialog(self.gui, _('Failed to delete'),
|
error_dialog(self.gui, _('Failed to delete'),
|
||||||
_('Failed to delete some books, click the Show Details button'
|
_('Failed to delete some books, click the "Show details" button'
|
||||||
' for details.'), det_msg='\n\n'.join(msg), show=True)
|
' for details.'), det_msg='\n\n'.join(msg), show=True)
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ class Tester(TesterBase):
|
|||||||
DIALOG_TITLE = _('Test filename filter rules')
|
DIALOG_TITLE = _('Test filename filter rules')
|
||||||
PREFS_NAME = 'test-file-filter-rules'
|
PREFS_NAME = 'test-file-filter-rules'
|
||||||
LABEL = _('Enter a filename to test:')
|
LABEL = _('Enter a filename to test:')
|
||||||
PLACEHOLDER = _('Enter filename and click the Test button')
|
PLACEHOLDER = _('Enter filename and click the "Test" button')
|
||||||
EMPTY_RESULT = '<p> </p>'
|
EMPTY_RESULT = '<p> </p>'
|
||||||
|
|
||||||
def do_test(self):
|
def do_test(self):
|
||||||
@ -141,6 +141,7 @@ class RulesDialog(RulesDialogBase):
|
|||||||
TesterClass = Tester
|
TesterClass = Tester
|
||||||
PREFS_OBJECT = add_filters
|
PREFS_OBJECT = add_filters
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app = Application([])
|
app = Application([])
|
||||||
d = RulesDialog()
|
d = RulesDialog()
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Line &Un-Wrapping Factor:</string>
|
<string>Line &un-Wrapping factor:</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="buddy">
|
||||||
<cstring>opt_unwrap_factor</cstring>
|
<cstring>opt_unwrap_factor</cstring>
|
||||||
@ -53,7 +53,7 @@
|
|||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QCheckBox" name="opt_no_images">
|
<widget class="QCheckBox" name="opt_no_images">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>No &Images</string>
|
<string>No &images</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -215,7 +215,7 @@ class RegexEdit(QWidget, Ui_Edit):
|
|||||||
|
|
||||||
def builder(self):
|
def builder(self):
|
||||||
if self.db is None:
|
if self.db is None:
|
||||||
self.doc_cache = _('Click the Open button below to open a '
|
self.doc_cache = _('Click the "Open" button below to open a '
|
||||||
'ebook to use for testing.')
|
'ebook to use for testing.')
|
||||||
bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self)
|
bld = RegexBuilder(self.db, self.book_id, self.edit.text(), self.doc_cache, self)
|
||||||
if bld.cancelled:
|
if bld.cancelled:
|
||||||
|
@ -187,7 +187,7 @@ class Rules(RulesBase): # {{{
|
|||||||
RuleItemClass = RuleItem
|
RuleItemClass = RuleItem
|
||||||
RuleEditDialogClass = RuleEditDialog
|
RuleEditDialogClass = RuleEditDialog
|
||||||
|
|
||||||
MSG = _('You can specify rules to transform styles here. Click the "Add Rule" button'
|
MSG = _('You can specify rules to transform styles here. Click the "Add rule" button'
|
||||||
' below to get started.')
|
' below to get started.')
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ class Tester(Dialog): # {{{
|
|||||||
self.la = la = QLabel(self.LABEL)
|
self.la = la = QLabel(self.LABEL)
|
||||||
l.addWidget(la)
|
l.addWidget(la)
|
||||||
self.css = t = TextEdit(self)
|
self.css = t = TextEdit(self)
|
||||||
t.load_text('/* %s */\n' % _('Enter CSS rules below and click the Test button'), 'css')
|
t.load_text('/* %s */\n' % _('Enter CSS rules below and click the "Test" button'), 'css')
|
||||||
la.setBuddy(t)
|
la.setBuddy(t)
|
||||||
c = t.textCursor()
|
c = t.textCursor()
|
||||||
c.movePosition(c.End)
|
c.movePosition(c.End)
|
||||||
@ -332,6 +332,7 @@ class RulesWidget(QWidget, SaveLoadMixin): # {{{
|
|||||||
self.rules_widget.rules = []
|
self.rules_widget.rules = []
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from calibre.gui2 import Application
|
from calibre.gui2 import Application
|
||||||
app = Application([])
|
app = Application([])
|
||||||
|
@ -504,7 +504,7 @@ class SendError(QDialog):
|
|||||||
'folder is currently ignored by calibre when scanning the '
|
'folder is currently ignored by calibre when scanning the '
|
||||||
'device. You have to tell calibre you want this folder scanned '
|
'device. You have to tell calibre you want this folder scanned '
|
||||||
'in order to be able to send books to it. Click the '
|
'in order to be able to send books to it. Click the '
|
||||||
'<b>configure</b> button below to send books to it.')%error.folder)
|
'<b>Configure</b> button below to send books to it.')%error.folder)
|
||||||
la.setWordWrap(True)
|
la.setWordWrap(True)
|
||||||
la.setMinimumWidth(500)
|
la.setMinimumWidth(500)
|
||||||
l.addWidget(la)
|
l.addWidget(la)
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Number of Colors:</string>
|
<string>&Number of colors:</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="buddy">
|
<property name="buddy">
|
||||||
<cstring>opt_colors</cstring>
|
<cstring>opt_colors</cstring>
|
||||||
@ -97,7 +97,7 @@
|
|||||||
<item row="6" column="0">
|
<item row="6" column="0">
|
||||||
<widget class="QCheckBox" name="opt_dont_sharpen">
|
<widget class="QCheckBox" name="opt_dont_sharpen">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Disable &Sharpening</string>
|
<string>Disable &sharpening</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -149,7 +149,7 @@
|
|||||||
<item row="7" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QCheckBox" name="opt_disable_trim">
|
<widget class="QCheckBox" name="opt_disable_trim">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Disable &Trimming</string>
|
<string>Disable &trimming</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -283,7 +283,7 @@ class EximDialog(Dialog):
|
|||||||
if g.iactions['Connect Share'].content_server_is_running:
|
if g.iactions['Connect Share'].content_server_is_running:
|
||||||
error_dialog(self, _('Content Server running'), _(
|
error_dialog(self, _('Content Server running'), _(
|
||||||
'Cannot import while the content server is running, shut it down first by clicking the'
|
'Cannot import while the content server is running, shut it down first by clicking the'
|
||||||
' Connect/share button on the calibre toolbar'), show=True)
|
' "Connect/share" button on the calibre toolbar'), show=True)
|
||||||
return False
|
return False
|
||||||
if self.import_panel.stack.currentIndex() == 0:
|
if self.import_panel.stack.currentIndex() == 0:
|
||||||
error_dialog(self, _('No folder selected'), _(
|
error_dialog(self, _('No folder selected'), _(
|
||||||
|
@ -589,8 +589,8 @@ class MetadataSingleDialogBase(QDialog):
|
|||||||
'There are still {} more books to edit in this set.', num).format(num)
|
'There are still {} more books to edit in this set.', num).format(num)
|
||||||
if not question_dialog(
|
if not question_dialog(
|
||||||
self, _('Are you sure?'), pm + _(
|
self, _('Are you sure?'), pm + _(
|
||||||
' Are you sure you want to stop? Use the Next button'
|
' Are you sure you want to stop? Use the "Next" button'
|
||||||
' instead of the OK button to move through books in the set.'),
|
' instead of the "OK" button to move through books in the set.'),
|
||||||
yes_text=_('&Stop editing'), no_text=_('&Continue editing'),
|
yes_text=_('&Stop editing'), no_text=_('&Continue editing'),
|
||||||
yes_icon='dot_red.png', no_icon='dot_green.png',
|
yes_icon='dot_red.png', no_icon='dot_green.png',
|
||||||
default_yes=False, skip_dialog_name='edit-metadata-single-confirm-ok-on-multiple'):
|
default_yes=False, skip_dialog_name='edit-metadata-single-confirm-ok-on-multiple'):
|
||||||
|
@ -75,7 +75,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
self.field_metadata = db.field_metadata
|
self.field_metadata = db.field_metadata
|
||||||
|
|
||||||
self.opt_columns.setColumnCount(4)
|
self.opt_columns.setColumnCount(4)
|
||||||
item = QTableWidgetItem(_('Column Header'))
|
item = QTableWidgetItem(_('Column header'))
|
||||||
self.opt_columns.setHorizontalHeaderItem(0, item)
|
self.opt_columns.setHorizontalHeaderItem(0, item)
|
||||||
item = QTableWidgetItem(_('Lookup name'))
|
item = QTableWidgetItem(_('Lookup name'))
|
||||||
self.opt_columns.setHorizontalHeaderItem(1, item)
|
self.opt_columns.setHorizontalHeaderItem(1, item)
|
||||||
|
@ -269,7 +269,7 @@
|
|||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="label_19">
|
<widget class="QLabel" name="label_19">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Control the cover grid view. You can enable this view by clicking the grid button in the bottom right corner of the main calibre window.</string>
|
<string>Control the cover grid view. You can enable this view by clicking the "Cover Grid" button in the bottom right corner of the main calibre window.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Here you can control how calibre will save your books when you click the Save to Disk button:</string>
|
<string>Here you can control how calibre will save your books when you click the "Save to disk" button:</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -507,7 +507,7 @@ class ConfigWidget(ConfigWidgetBase):
|
|||||||
import traceback
|
import traceback
|
||||||
error_dialog(self.gui, _('Failed'),
|
error_dialog(self.gui, _('Failed'),
|
||||||
_('There was a syntax error in your tweak. Click '
|
_('There was a syntax error in your tweak. Click '
|
||||||
'the show details button for details.'),
|
'the "Show details" button for details.'),
|
||||||
det_msg=traceback.format_exc(), show=True)
|
det_msg=traceback.format_exc(), show=True)
|
||||||
return
|
return
|
||||||
self.tweaks.update_tweak(idx, l)
|
self.tweaks.update_tweak(idx, l)
|
||||||
@ -575,5 +575,3 @@ if __name__ == '__main__':
|
|||||||
# Tweaks()
|
# Tweaks()
|
||||||
# test_widget
|
# test_widget
|
||||||
test_widget('Advanced', 'Tweaks')
|
test_widget('Advanced', 'Tweaks')
|
||||||
|
|
||||||
|
|
||||||
|
@ -437,7 +437,7 @@ class SearchBoxMixin(object): # {{{
|
|||||||
|
|
||||||
def init_search_box_mixin(self):
|
def init_search_box_mixin(self):
|
||||||
self.search.initialize('main_search_history', colorize=True,
|
self.search.initialize('main_search_history', colorize=True,
|
||||||
help_text=_('Search (For Advanced Search click the button to the left)'))
|
help_text=_('Search (For Advanced search click the button to the left)'))
|
||||||
self.search.cleared.connect(self.search_box_cleared)
|
self.search.cleared.connect(self.search_box_cleared)
|
||||||
# Queued so that search.current_text will be correct
|
# Queued so that search.current_text will be correct
|
||||||
self.search.changed.connect(self.search_box_changed,
|
self.search.changed.connect(self.search_box_changed,
|
||||||
@ -569,4 +569,3 @@ class SavedSearchBoxMixin(object): # {{{
|
|||||||
self.saved_search.clear()
|
self.saved_search.clear()
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
@ -215,6 +215,7 @@ class RuleEditDialog(Dialog):
|
|||||||
if self.edit_widget.validate():
|
if self.edit_widget.validate():
|
||||||
Dialog.accept(self)
|
Dialog.accept(self)
|
||||||
|
|
||||||
|
|
||||||
DATA_ROLE = Qt.UserRole
|
DATA_ROLE = Qt.UserRole
|
||||||
RENDER_ROLE = DATA_ROLE + 1
|
RENDER_ROLE = DATA_ROLE + 1
|
||||||
|
|
||||||
@ -269,7 +270,7 @@ class Rules(QWidget):
|
|||||||
RuleEditDialogClass = RuleEditDialog
|
RuleEditDialogClass = RuleEditDialog
|
||||||
changed = pyqtSignal()
|
changed = pyqtSignal()
|
||||||
|
|
||||||
MSG = _('You can specify rules to filter/transform tags here. Click the "Add Rule" button'
|
MSG = _('You can specify rules to filter/transform tags here. Click the "Add rule" button'
|
||||||
' below to get started. The rules will be processed in order for every tag until either a'
|
' below to get started. The rules will be processed in order for every tag until either a'
|
||||||
' "remove" or a "keep" rule matches.')
|
' "remove" or a "keep" rule matches.')
|
||||||
|
|
||||||
@ -384,7 +385,7 @@ class Tester(Dialog):
|
|||||||
DIALOG_TITLE = _('Test tag mapper rules')
|
DIALOG_TITLE = _('Test tag mapper rules')
|
||||||
PREFS_NAME = 'test-tag-mapper-rules'
|
PREFS_NAME = 'test-tag-mapper-rules'
|
||||||
LABEL = _('Enter a comma separated list of &tags to test:')
|
LABEL = _('Enter a comma separated list of &tags to test:')
|
||||||
PLACEHOLDER = _('Enter tags and click the Test button')
|
PLACEHOLDER = _('Enter tags and click the "Test" button')
|
||||||
EMPTY_RESULT = '<p> <br> </p>'
|
EMPTY_RESULT = '<p> <br> </p>'
|
||||||
|
|
||||||
def __init__(self, rules, parent=None):
|
def __init__(self, rules, parent=None):
|
||||||
@ -508,6 +509,7 @@ class RulesDialog(Dialog, SaveLoadMixin):
|
|||||||
def test_rules(self):
|
def test_rules(self):
|
||||||
self.TesterClass(self.rules, self).exec_()
|
self.TesterClass(self.rules, self).exec_()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app = Application([])
|
app = Application([])
|
||||||
d = RulesDialog()
|
d = RulesDialog()
|
||||||
|
@ -786,7 +786,7 @@ class CharSelect(Dialog):
|
|||||||
l.addWidget(la, 2, 0, 1, 3)
|
l.addWidget(la, 2, 0, 1, 3)
|
||||||
|
|
||||||
self.rearrange_msg = la = QLabel(_(
|
self.rearrange_msg = la = QLabel(_(
|
||||||
'Drag and drop characters to re-arrange them. Click the re-arrange button again when you are done.'))
|
'Drag and drop characters to re-arrange them. Click the Re-arrange button again when you are done.'))
|
||||||
la.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
la.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
||||||
la.setVisible(False)
|
la.setVisible(False)
|
||||||
l.addWidget(la, 3, 0, 1, 3)
|
l.addWidget(la, 3, 0, 1, 3)
|
||||||
|
@ -931,7 +931,7 @@ class FilterCSS(Dialog): # {{{
|
|||||||
|
|
||||||
def __init__(self, current_name=None, parent=None):
|
def __init__(self, current_name=None, parent=None):
|
||||||
self.current_name = current_name
|
self.current_name = current_name
|
||||||
Dialog.__init__(self, _('Filter Style Information'), 'filter-css', parent=parent)
|
Dialog.__init__(self, _('Filter style information'), 'filter-css', parent=parent)
|
||||||
|
|
||||||
def setup_ui(self):
|
def setup_ui(self):
|
||||||
from calibre.gui2.convert.look_and_feel_ui import Ui_Form
|
from calibre.gui2.convert.look_and_feel_ui import Ui_Form
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><p>calibre can automatically send books by email to your Kindle. To do that you have to setup email delivery below. The easiest way is to setup a free <a href="https://gmx.com">GMX account</a> and click the Use GMX button below. You will also have to register your email address in your Amazon account.</string>
|
<string><p>calibre can automatically send books by email to your Kindle. To do that you have to setup email delivery below. The easiest way is to setup a free <a href="https://gmx.com">GMX account</a> and click the "Use GMX" button below. You will also have to register your email address in your Amazon account.</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user