Add a button to reload available plugins list

This commit is contained in:
Laurent Monin
2015-09-01 13:25:48 +02:00
parent 95720f94de
commit 33e245937f
4 changed files with 52 additions and 6 deletions

View File

@@ -21,6 +21,7 @@
from PyQt4 import QtCore
from collections import defaultdict
from functools import partial
import imp
import json
import os.path
@@ -366,18 +367,18 @@ class PluginManager(QtCore.QObject):
except (OSError, IOError):
log.warning("Unable to copy %s to plugin folder %s" % (path, USER_PLUGIN_DIR))
def query_available_plugins(self):
def query_available_plugins(self, callback=None):
self.tagger.xmlws.get(
PLUGINS_API['host'],
PLUGINS_API['port'],
PLUGINS_API['endpoint']['plugins'],
self._plugins_json_loaded,
partial(self._plugins_json_loaded, callback=callback),
xml=False,
priority=True,
important=True
)
def _plugins_json_loaded(self, response, reply, error):
def _plugins_json_loaded(self, response, reply, error, callback=None):
if error:
self.tagger.window.set_statusbar_message(
N_("Error loading plugins list: %(error)s"),
@@ -387,6 +388,8 @@ class PluginManager(QtCore.QObject):
else:
self._available_plugins = [PluginData(data, key) for key, data in
json.loads(response)['plugins'].items()]
if callback:
callback()
def enabled(self, name):
return True

View File

@@ -65,6 +65,7 @@ class PluginsOptionsPage(OptionsPage):
self.loader = "file://%s"
self.ui.install_plugin.clicked.connect(self.open_plugins)
self.ui.folder_open.clicked.connect(self.open_plugin_dir)
self.ui.reload_available_plugins.clicked.connect(self.reload_available_plugins)
self.tagger.pluginmanager.plugin_installed.connect(self.plugin_installed)
self.ui.plugins.header().setStretchLastSection(False)
self.ui.plugins.header().setResizeMode(0, QtGui.QHeaderView.Stretch)
@@ -94,6 +95,14 @@ class PluginsOptionsPage(OptionsPage):
self.ui.plugins.setCurrentItem(self.ui.plugins.topLevelItem(0))
def reload_available_plugins(self):
for i, p in self.items.items():
idx = self.ui.plugins.indexOfTopLevelItem(i)
item = self.ui.plugins.takeTopLevelItem(idx)
del item
self.items = {}
self.tagger.pluginmanager.query_available_plugins(callback=self.load)
def plugin_installed(self, plugin):
if not plugin.compatible:
msgbox = QtGui.QMessageBox(self)
@@ -159,7 +168,10 @@ class PluginsOptionsPage(OptionsPage):
config.setting["enabled_plugins"] = enabled_plugins
def change_details(self):
plugin = self.items[self.ui.plugins.selectedItems()[0]]
try:
plugin = self.items[self.ui.plugins.selectedItems()[0]]
except IndexError:
return
text = []
if plugin.new_version:
text.append("<b>" + _("New version available") + ": " + plugin.new_version + "</b>")

View File

@@ -8,7 +8,16 @@ from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_PluginsOptionsPage(object):
def setupUi(self, PluginsOptionsPage):
@@ -54,6 +63,14 @@ class Ui_PluginsOptionsPage(object):
self.folder_open.setSizePolicy(sizePolicy)
self.folder_open.setObjectName(_fromUtf8("folder_open"))
self.horizontalLayout.addWidget(self.folder_open)
self.reload_available_plugins = QtGui.QPushButton(self.groupBox_2)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.reload_available_plugins.sizePolicy().hasHeightForWidth())
self.reload_available_plugins.setSizePolicy(sizePolicy)
self.reload_available_plugins.setObjectName(_fromUtf8("reload_available_plugins"))
self.horizontalLayout.addWidget(self.reload_available_plugins)
self.vboxlayout1.addLayout(self.horizontalLayout)
self.groupBox = QtGui.QGroupBox(self.splitter)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
@@ -122,5 +139,6 @@ class Ui_PluginsOptionsPage(object):
self.plugins.headerItem().setText(2, _("Status"))
self.install_plugin.setText(_("Install plugin..."))
self.folder_open.setText(_("Open plugin folder"))
self.reload_available_plugins.setText(_("Reload available plugins"))
self.groupBox.setTitle(_("Details"))

View File

@@ -89,6 +89,19 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="reload_available_plugins">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reload available plugins</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@@ -141,7 +154,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>459</width>
<width>469</width>
<height>76</height>
</rect>
</property>