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