Display Update or Download buttons for each plugin installed or available

Actions not yet implemented
This commit is contained in:
Laurent Monin
2015-08-31 21:22:19 +02:00
parent 961e3866e0
commit fe5400b4aa
3 changed files with 24 additions and 3 deletions

View File

@@ -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("<b>"+ _("No plugins installed.") + "</b>")
@@ -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

View File

@@ -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"))

View File

@@ -56,7 +56,7 @@
</column>
<column>
<property name="text">
<string>Author</string>
<string>Status</string>
</property>
</column>
</widget>