From fccf9ac5d00e326a9b66f314524fde69e438e7e9 Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Sun, 7 Oct 2012 19:50:52 +0300 Subject: [PATCH] mark experimental plugins in installer (fix #5980) --- .../plugins/plugin_installer/installer_gui.py | 55 ++++++++++++------ .../plugin_installer/pluginExperimental.png | Bin 0 -> 1027 bytes .../qgsplugininstallerbase.ui | 7 ++- python/plugins/plugin_installer/resources.qrc | 1 + 4 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 python/plugins/plugin_installer/pluginExperimental.png diff --git a/python/plugins/plugin_installer/installer_gui.py b/python/plugins/plugin_installer/installer_gui.py index 3e792501c37e..5777edb90877 100755 --- a/python/plugins/plugin_installer/installer_gui.py +++ b/python/plugins/plugin_installer/installer_gui.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- + """ Copyright (C) 2007-2008 Matthew Perry Copyright (C) 2008-2010 Borys Jurgiel @@ -12,17 +13,20 @@ * * ***************************************************************************/ """ - +import sys +import time from PyQt4.QtCore import * from PyQt4.QtGui import * + from qgis.core import QgsApplication, QgsContextHelp -import sys, time + from ui_qgsplugininstallerfetchingbase import Ui_QgsPluginInstallerFetchingDialogBase from ui_qgsplugininstallerinstallingbase import Ui_QgsPluginInstallerInstallingDialogBase from ui_qgsplugininstallerrepositorybase import Ui_QgsPluginInstallerRepositoryDetailsDialogBase from ui_qgsplugininstallerpluginerrorbase import Ui_QgsPluginInstallerPluginErrorDialogBase from ui_qgsplugininstallerbase import Ui_QgsPluginInstallerDialogBase + from installer_data import * try: @@ -475,16 +479,22 @@ def addItem(p): repository = self.tr("only locally available") else: repository = p["repository"] - a = QTreeWidgetItem(self.treePlugins) + a = QgsPluginTreeItem(self.treePlugins) + if p["experimental"]: + a.setIcon(0, QIcon(":/plugins/installer/pluginExperimental.png")) + a.setToolTip(0, self.tr("Experimental plugin. Use at own risk")) + a.setData(0, Qt.UserRole, QVariant(0)) + else: + a.setData(0, Qt.UserRole, QVariant(1)) if p["error"]: - a.setText(0,statuses[p["error"]]) + a.setText(1,statuses[p["error"]]) else: - a.setText(0,statuses[p["status"]]) - a.setToolTip(0,statusTip) - a.setText(1,p["name"]) - a.setText(2,ver) - a.setToolTip(2,verTip) - a.setText(3,desc) + a.setText(1,statuses[p["status"]]) + a.setToolTip(1,statusTip) + a.setText(2,p["name"]) + a.setText(3,ver) + a.setToolTip(3,verTip) + a.setText(4,desc) # split the tooltip into multiple lines when they are too long tmp = "" splitTip = "" @@ -494,16 +504,16 @@ def addItem(p): else: splitTip += tmp + "\n" tmp = word - a.setToolTip(3, splitTip+tmp) - a.setText(4,p["author"]) + a.setToolTip(4, splitTip+tmp) + a.setText(5,p["author"]) if p["homepage"]: - a.setToolTip(4,p["homepage"]) + a.setToolTip(5,p["homepage"]) else: - a.setToolTip(4,"") - a.setText(5,repository) - a.setToolTip(5,p["url"]) + a.setToolTip(6,"") + a.setText(6,repository) + a.setToolTip(6,p["url"]) # set fonts and colors - for i in [0,1,2,3,4,5]: + for i in [0,1,2,3,4,5,6]: if p["error"]: a.setForeground(i,QBrush(QColor(Qt.red))) if p["status"] in ["new","upgradeable"] or p["error"]: @@ -922,3 +932,14 @@ def reject(self): plugins.updateSeenPluginsList() QDialog.reject(self) # --- /class QgsPluginInstallerDialog ------------------------------------------------------------------------ # + +class QgsPluginTreeItem(QTreeWidgetItem): + def __init__(self, parent=None): + QTreeWidgetItem.__init__(self, parent) + + def __lt__(self, otherItem): + column = self.treeWidget().sortColumn() + if column == 0: + return self.data(column, Qt.UserRole).toInt()[0] < otherItem.data(column, Qt.UserRole).toInt()[0] + else: + return self.text(column) < otherItem.text(column) diff --git a/python/plugins/plugin_installer/pluginExperimental.png b/python/plugins/plugin_installer/pluginExperimental.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2a0b76f6f5f1e12f2c5d44ded73945c11d4dab GIT binary patch literal 1027 zcmV+e1pNDnP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iyt< z3jsL$zgM>a00VF#NT;n-TA>(Gn$i*k1Y%+n zTwqw31~1LqqaA8*a+7m&Z+I&8Q{1L;Q6>9pZXy|e7vn}Esx4Fd>UWIHx@ zyy?0w)oK-^TETYW(RJ6@t5)K%x;hf|^-6&Xhe9}!h`Daq6guroiRbxL+zOUyA`DT# zZdm9b6$BC)1gJowg+Tc-39xJT{Q|# z+V%d2C$|HPUc7W~@X+^T^zPdUz~Ms&`1E*Ki75;~{q6t%^`Ny&_qJAbc6hAq>Wujou{!(H3yb32 z)3=!`8w}s7aO#%=6N{c`Y>49)baV3l179A0asSO7eeW?l@%g`(LWl?eKm1hb3q_+* zX$TgIRVaDl!Pb;0N+r-rEW197D?TmFabwfQ++l#RPmZo$*7j9V`wd=A|C46)xEc|X7ff*e;rD9?4y*(noB_j-$_&Uv^aHH zYQk|qpoGD)X^RVYLRPtAP`-3Nvf4Hh0L-g076R!hrhT>*T6KLBABd(v9{egFUf002ovPDHLkV1iFL-{}AV literal 0 HcmV?d00001 diff --git a/python/plugins/plugin_installer/qgsplugininstallerbase.ui b/python/plugins/plugin_installer/qgsplugininstallerbase.ui index 3d3df9e6be6c..c633aae0bbc6 100644 --- a/python/plugins/plugin_installer/qgsplugininstallerbase.ui +++ b/python/plugins/plugin_installer/qgsplugininstallerbase.ui @@ -8,7 +8,7 @@ 0 0 799 - 382 + 409 @@ -203,6 +203,11 @@ true + + + State + + Status diff --git a/python/plugins/plugin_installer/resources.qrc b/python/plugins/plugin_installer/resources.qrc index f2c384493e3b..4725ef1eebc6 100644 --- a/python/plugins/plugin_installer/resources.qrc +++ b/python/plugins/plugin_installer/resources.qrc @@ -5,5 +5,6 @@ repoDisabled.png repoUnavailable.png repoConnected.png + pluginExperimental.png