diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 6a14e85382..5d0f51315b 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -83,6 +83,8 @@ def _config(): help='Search history for the LRF viewer') c.add_opt('scheduler_search_history', default=[], help='Search history for the recipe scheduler') + c.add_opt('worker_limit', default=6, + help=_('Maximum number of waiting worker processes')) return ConfigProxy(c) diff --git a/src/calibre/gui2/dialogs/config/__init__.py b/src/calibre/gui2/dialogs/config/__init__.py index 915219ee11..b419b3afd1 100644 --- a/src/calibre/gui2/dialogs/config/__init__.py +++ b/src/calibre/gui2/dialogs/config/__init__.py @@ -457,6 +457,7 @@ class ConfigDialog(QDialog, Ui_Dialog): self.connect(self.sync_news, SIGNAL('toggled(bool)'), self.delete_news.setEnabled) self.setup_conversion_options() + self.opt_worker_limit.setValue(config['worker_limit']) def create_symlinks(self): from calibre.utils.osx_symlinks import create_symlinks @@ -696,6 +697,12 @@ class ConfigDialog(QDialog, Ui_Dialog): return if not self.add_save.save_settings(): return + wl = self.opt_worker_limit.value() + if wl%2 != 0: + wl += 1 + config['worker_limit'] = wl + + config['use_roman_numerals_for_series_number'] = bool(self.roman_numerals.isChecked()) config['new_version_notification'] = bool(self.new_version_notification.isChecked()) prefs['network_timeout'] = int(self.timeout.value()) diff --git a/src/calibre/gui2/dialogs/config/config.ui b/src/calibre/gui2/dialogs/config/config.ui index dc180edba7..0ceeb78686 100644 --- a/src/calibre/gui2/dialogs/config/config.ui +++ b/src/calibre/gui2/dialogs/config/config.ui @@ -682,50 +682,43 @@ - - - - - Qt::Horizontal + + + + + &Maximum number of waiting worker processes (needs restart): - - - 154 - 20 - + + opt_worker_limit - + - - - - - - &Check database integrity - - - - - - - &Install command line tools - - - - + + + + 2 + + + 10000 + + + 2 + + - - - - Qt::Horizontal + + + + &Check database integrity - - - 153 - 20 - + + + + + + &Install command line tools - + diff --git a/src/calibre/gui2/jobs.py b/src/calibre/gui2/jobs.py index e4406447d1..2cd25e1b4e 100644 --- a/src/calibre/gui2/jobs.py +++ b/src/calibre/gui2/jobs.py @@ -15,7 +15,7 @@ from PyQt4.Qt import QAbstractTableModel, QVariant, QModelIndex, Qt, \ from calibre.utils.ipc.server import Server from calibre.utils.ipc.job import ParallelJob -from calibre.gui2 import Dispatcher, error_dialog, NONE +from calibre.gui2 import Dispatcher, error_dialog, NONE, config from calibre.gui2.device import DeviceJob from calibre.gui2.dialogs.jobs_ui import Ui_JobsDialog from calibre import __appname__ @@ -31,7 +31,7 @@ class JobManager(QAbstractTableModel): self.jobs = [] self.add_job = Dispatcher(self._add_job) - self.server = Server() + self.server = Server(limit=int(config['worker_limit']/2.0)) self.changed_queue = Queue() self.timer = QTimer(self) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index e87e6a4a04..2c43906778 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -530,7 +530,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self._sync_menu.trigger_default) def add_spare_server(self, *args): - self.spare_servers.append(Server()) + self.spare_servers.append(Server(limit=int(config['worker_limit']/2.0))) @property def spare_server(self): diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot index c405fd1042..85a30131d5 100644 --- a/src/calibre/translations/calibre.pot +++ b/src/calibre/translations/calibre.pot @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: calibre 0.6.11\n" -"POT-Creation-Date: 2009-09-10 20:58+MDT\n" -"PO-Revision-Date: 2009-09-10 20:58+MDT\n" +"POT-Creation-Date: 2009-09-10 21:29+MDT\n" +"PO-Revision-Date: 2009-09-10 21:29+MDT\n" "Last-Translator: Automatically generated\n" "Language-Team: LANGUAGE\n" "MIME-Version: 1.0\n" @@ -94,8 +94,8 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/ebooks/pdf/writer.py:29 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:139 #: /home/kovid/work/calibre/src/calibre/ebooks/rtf/input.py:141 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:261 -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:268 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:263 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:270 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:111 #: /home/kovid/work/calibre/src/calibre/gui2/add.py:118 #: /home/kovid/work/calibre/src/calibre/gui2/convert/__init__.py:21 @@ -1848,7 +1848,7 @@ msgid "Add a tab at the beginning of each paragraph." msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:27 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 msgid "Frequently used directories" msgstr "" @@ -1936,16 +1936,20 @@ msgstr "" msgid "Default action to perform when send to device button is clicked" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:123 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:87 +msgid "Maximum number of waiting worker processes" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:125 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:397 msgid "Copied" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Copy" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:152 +#: /home/kovid/work/calibre/src/calibre/gui2/__init__.py:154 msgid "Copy to Clipboard" msgstr "" @@ -2143,14 +2147,14 @@ msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/convert/xexp_edit_ui.py:44 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:61 #: /home/kovid/work/calibre/src/calibre/gui2/device_drivers/configwidget_ui.py:62 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:507 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:560 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:343 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:348 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/metadata_single_ui.py:362 @@ -3179,126 +3183,126 @@ msgstr "" msgid "new email address" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:465 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:798 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:805 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:140 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:1004 #: /home/kovid/work/calibre/src/calibre/utils/ipc/job.py:52 msgid "Error" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:466 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:467 msgid "Failed to install command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:469 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470 msgid "Command line tools installed" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:470 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471 msgid "Command line tools installed in" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:471 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:472 msgid "If you move calibre.app, you have to re-install the command line tools." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523 msgid "No valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:524 msgid "%s is not a valid plugin path" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:526 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:527 msgid "Choose plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 msgid "Plugin cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:540 msgid "The plugin: %s cannot be disabled" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549 msgid "Plugin not customizable" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:549 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:550 msgid "Plugin: %s does not need customization" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:573 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:574 msgid "Customize %s" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:583 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584 msgid "Cannot remove builtin plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:584 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:585 msgid " cannot be removed. It is a builtin plugin. Try disabling it instead." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:617 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:618 msgid "Error log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:624 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:625 msgid "Access log:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:649 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:650 #: /home/kovid/work/calibre/src/calibre/gui2/main.py:573 msgid "Failed to start content server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:673 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:674 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/__init__.py:470 msgid "Select location for books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:690 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691 msgid "Invalid size" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:691 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:692 msgid "The size %s is invalid. must be of the form widthxheight" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:735 -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:740 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:742 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:747 msgid "Invalid database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:736 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:743 msgid "Invalid database location " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:737 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:744 msgid "
Must be a directory." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:741 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:748 msgid "Invalid database location.
Cannot write to " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:779 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:786 msgid "Checking database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:799 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:806 msgid "Failed to check database integrity" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:804 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:811 msgid "Some inconsistencies found" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:805 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/__init__.py:812 msgid "The following books had formats listed in the database that are not actually available. The entries for the formats have been removed. You should check them manually. This can happen if you manipulate the files in the library folder directly." msgstr "" @@ -3382,256 +3386,260 @@ msgstr "" msgid "&Saving books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:488 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:491 #: /home/kovid/work/calibre/src/calibre/gui2/main_ui.py:367 #: /home/kovid/work/calibre/src/calibre/gui2/viewer/main_ui.py:173 msgid "Preferences" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:489 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492 msgid "&Location of ebooks (The ebooks are stored in folders sorted by author and metadata is stored in the file metadata.db)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:490 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493 msgid "Browse for the new database location" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:492 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495 msgid "Show notification when &new version is available" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:493 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496 msgid "Default network &timeout:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:494 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497 msgid "Set the default timeout for network fetches (i.e. anytime we go out to the internet to get information)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:495 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498 msgid " seconds" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:496 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499 msgid "Choose &language (requires restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:497 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500 msgid "Normal" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:498 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 msgid "High" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:499 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 msgid "Low" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:500 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:503 msgid "Job &priority:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:501 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:504 msgid "Preferred &output format:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:502 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:505 msgid "Preferred &input format order:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:506 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:509 msgid "Add a directory to the frequently used directories list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:508 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 msgid "Remove a directory from the frequently used directories list" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:510 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 msgid "Use &Roman numerals for series number" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:511 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 msgid "Enable system &tray icon (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:512 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 msgid "Show ¬ifications in system tray" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:513 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 msgid "Show cover &browser in a separate window (needs restart)" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:514 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 msgid "Search as you type" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:515 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 msgid "Automatically send downloaded &news to ebook reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:516 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 msgid "&Delete news from library when it is automatically sent to reader" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:517 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 msgid "&Number of covers to show in browse mode (needs restart):" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:518 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 msgid "Toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:519 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 msgid "Large" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:520 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 msgid "Medium" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:521 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 msgid "Small" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:522 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:525 msgid "&Button size in toolbar" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:523 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:526 msgid "Show &text in toolbar buttons" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:524 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 msgid "Select visible &columns in library view" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:527 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 msgid "Use internal &viewer for:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:528 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 msgid "Add an email address to which to send books" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:529 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 msgid "&Add email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:530 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 msgid "Make &default" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:531 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 msgid "&Remove email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:532 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 msgid "calibre can send your books to you (or your reader) by email" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:533 -msgid "&Check database integrity" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:534 -msgid "&Install command line tools" -msgstr "" - -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:535 -msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart." -msgstr "" - #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:536 -msgid "Server &port:" +msgid "&Maximum number of waiting worker processes (needs restart):" msgstr "" #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:537 +msgid "&Check database integrity" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +msgid "&Install command line tools" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +msgid "calibre contains a network server that allows you to access your book collection using a browser from anywhere in the world. Any changes to the settings will only take effect after a server restart." +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +msgid "Server &port:" +msgstr "" + +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:58 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:178 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:117 msgid "&Username:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:538 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:59 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:179 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/send_email_ui.py:119 msgid "&Password:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:539 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 msgid "If you leave the password blank, anyone will be able to access your book collection using the web interface." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:540 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/password_ui.py:60 #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/scheduler_ui.py:180 msgid "&Show password" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:541 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 msgid "The maximum size (widthxheight) for displayed covers. Larger covers are resized. " msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:542 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 msgid "Max. &cover size:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:543 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 msgid "&Start Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:544 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 msgid "St&op Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:545 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:549 msgid "&Test Server" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:546 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 msgid "Run server &automatically on startup" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:547 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 msgid "View &server logs" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:548 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 #: /home/kovid/work/calibre/src/calibre/gui2/wizard/stanza_ui.py:46 msgid "" "

Remember to leave calibre running as the server only runs as long as calibre is running.\n" "

Stanza should see your calibre collection automatically. If not, try adding the URL http://myhostname:8080 as a new catalog in the Stanza reader on your iPhone. Here myhostname should be the fully qualified hostname or the IP address of the computer calibre is running on." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:550 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 msgid "Here you can customize the behavior of Calibre by controlling what plugins it uses." msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:551 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 msgid "Enable/&Disable plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:552 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:556 msgid "&Customize plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:553 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 msgid "&Remove plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:554 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:558 msgid "Add new plugin" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:555 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:559 msgid "Plugin &file:" msgstr "" -#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:557 +#: /home/kovid/work/calibre/src/calibre/gui2/dialogs/config/config_ui.py:561 msgid "&Add" msgstr "" diff --git a/src/calibre/utils/ipc/server.py b/src/calibre/utils/ipc/server.py index f8bed4ce2d..c00f2479c9 100644 --- a/src/calibre/utils/ipc/server.py +++ b/src/calibre/utils/ipc/server.py @@ -6,7 +6,7 @@ __license__ = 'GPL v3' __copyright__ = '2009, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import os, cPickle, time, tempfile +import sys, os, cPickle, time, tempfile from math import ceil from threading import Thread, RLock from Queue import Queue, Empty @@ -83,14 +83,16 @@ class CriticalError(Exception): class Server(Thread): - def __init__(self, notify_on_job_done=lambda x: x, pool_size=None): + def __init__(self, notify_on_job_done=lambda x: x, pool_size=None, + limit=sys.maxint): Thread.__init__(self) self.daemon = True global _counter self.id = _counter+1 _counter += 1 - self.pool_size = cpu_count() if pool_size is None else pool_size + limit = min(limit, cpu_count()) + self.pool_size = limit if pool_size is None else pool_size self.notify_on_job_done = notify_on_job_done self.auth_key = os.urandom(32) self.address = arbitrary_address('AF_PIPE' if iswindows else 'AF_UNIX')