mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-06 16:44:06 +00:00
Add a button to reload available plugins list
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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"))
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user