diff --git a/picard/ui/options/plugins.py b/picard/ui/options/plugins.py
index 95b3152e2..825beebb5 100644
--- a/picard/ui/options/plugins.py
+++ b/picard/ui/options/plugins.py
@@ -63,6 +63,8 @@ class PluginsOptionsPage(OptionsPage):
self.ui.install_plugin.clicked.connect(self.open_plugins)
self.ui.folder_open.clicked.connect(self.open_plugin_dir)
self.tagger.pluginmanager.plugin_installed.connect(self.plugin_installed)
+ self.ui.plugins.header().setStretchLastSection(False)
+ self.ui.plugins.header().setResizeMode(0, QtGui.QHeaderView.Stretch)
def load(self):
self.ui.details.setText(""+ _("No plugins installed.") + "")
@@ -86,6 +88,8 @@ class PluginsOptionsPage(OptionsPage):
for plugin in sorted(self.tagger.pluginmanager.available_plugins, cmp=cmp_plugins):
if plugin.module_name not in installed:
plugin.flags = PluginFlags.CAN_BE_DOWNLOADED
+ item = self.add_plugin_item(plugin)
+
self.ui.plugins.setCurrentItem(self.ui.plugins.topLevelItem(0))
def plugin_installed(self, plugin):
@@ -118,7 +122,24 @@ class PluginsOptionsPage(OptionsPage):
else:
item.setCheckState(0, QtCore.Qt.Unchecked)
item.setText(1, plugin.version)
- item.setText(2, plugin.author)
+
+ label = None
+ if plugin.flags & PluginFlags.CAN_BE_UPDATED:
+ label = _("Update")
+ elif plugin.flags & PluginFlags.CAN_BE_DOWNLOADED:
+ label = _("Download")
+
+ if label is not None:
+ button = QtGui.QPushButton(label)
+ button.setMaximumHeight(button.fontMetrics().boundingRect(label).height() + 7)
+ self.ui.plugins.setItemWidget(item, 2, button)
+ def download_button_process():
+ self.ui.plugins.setCurrentItem(item)
+ button.released.connect(download_button_process)
+ else:
+ # Note: setText() don't work after it was set to a button
+ self.ui.plugins.setItemWidget(item, 2, QtGui.QLabel(_("Installed")))
+
self.ui.plugins.header().resizeSections(QtGui.QHeaderView.ResizeToContents)
self.items[item] = plugin
return item
diff --git a/picard/ui/ui_options_plugins.py b/picard/ui/ui_options_plugins.py
index 7e707cb50..6c38f9d24 100644
--- a/picard/ui/ui_options_plugins.py
+++ b/picard/ui/ui_options_plugins.py
@@ -119,7 +119,7 @@ class Ui_PluginsOptionsPage(object):
self.groupBox_2.setTitle(_("Plugins"))
self.plugins.headerItem().setText(0, _("Name"))
self.plugins.headerItem().setText(1, _("Version"))
- self.plugins.headerItem().setText(2, _("Author"))
+ self.plugins.headerItem().setText(2, _("Status"))
self.install_plugin.setText(_("Install plugin..."))
self.folder_open.setText(_("Open plugin folder"))
self.groupBox.setTitle(_("Details"))
diff --git a/ui/options_plugins.ui b/ui/options_plugins.ui
index 043729469..94ab31425 100644
--- a/ui/options_plugins.ui
+++ b/ui/options_plugins.ui
@@ -56,7 +56,7 @@
- Author
+ Status