diff --git a/src/calibre/gui2/preferences/plugins.py b/src/calibre/gui2/preferences/plugins.py
index c98906e79a..246df79d8f 100644
--- a/src/calibre/gui2/preferences/plugins.py
+++ b/src/calibre/gui2/preferences/plugins.py
@@ -8,16 +8,16 @@ __docformat__ = 'restructuredtext en'
import textwrap, os
from collections import OrderedDict
-from PyQt4.Qt import Qt, QModelIndex, QAbstractItemModel, QVariant, QIcon, \
- QBrush
+from PyQt4.Qt import (Qt, QModelIndex, QAbstractItemModel, QVariant, QIcon,
+ QBrush)
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
from calibre.gui2.preferences.plugins_ui import Ui_Form
from calibre.customize.ui import (initialized_plugins, is_disabled, enable_plugin,
disable_plugin, plugin_customization, add_plugin,
remove_plugin, NameConflict)
-from calibre.gui2 import NONE, error_dialog, info_dialog, choose_files, \
- question_dialog, gprefs
+from calibre.gui2 import (NONE, error_dialog, info_dialog, choose_files,
+ question_dialog, gprefs)
from calibre.utils.search_query_parser import SearchQueryParser
from calibre.utils.icu import lower
@@ -218,6 +218,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.remove_plugin_button.clicked.connect(self.remove_plugin)
self.button_plugin_add.clicked.connect(self.add_plugin)
self.button_plugin_updates.clicked.connect(self.update_plugins)
+ self.button_plugin_new.clicked.connect(self.get_plugins)
self.search.initialize('plugin_search_history',
help_text=_('Search for plugin'))
self.search.search.connect(self.find)
@@ -354,9 +355,14 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
plugin.name + _(' cannot be removed. It is a '
'builtin plugin. Try disabling it instead.')).exec_()
- def update_plugins(self):
- from calibre.gui2.dialogs.plugin_updater import PluginUpdaterDialog
- d = PluginUpdaterDialog(self.gui)
+ def get_plugins(self):
+ self.update_plugins(not_installed=True)
+
+ def update_plugins(self, not_installed=False):
+ from calibre.gui2.dialogs.plugin_updater import (PluginUpdaterDialog,
+ FILTER_UPDATE_AVAILABLE, FILTER_NOT_INSTALLED)
+ mode = FILTER_NOT_INSTALLED if not_installed else FILTER_UPDATE_AVAILABLE
+ d = PluginUpdaterDialog(self.gui, initial_filter=mode)
d.exec_()
self._plugin_model.populate()
self._plugin_model.reset()
diff --git a/src/calibre/gui2/preferences/plugins.ui b/src/calibre/gui2/preferences/plugins.ui
index f67d1aa0e0..a3655df2b8 100644
--- a/src/calibre/gui2/preferences/plugins.ui
+++ b/src/calibre/gui2/preferences/plugins.ui
@@ -112,6 +112,13 @@
+ -
+
+
+ QFrame::HLine
+
+
+
-
-
@@ -128,7 +135,7 @@
-
- &Plugin updates
+ Check for &updated plugins
@@ -136,6 +143,17 @@
+ -
+
+
+ Get &new plugins
+
+
+
+ :/images/plugins/plugin_new.png:/images/plugins/plugin_new.png
+
+
+