[QGIS Commit] r13050 - in trunk/qgis: python src/app src/python

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Mar 12 02:58:49 EST 2010


Author: borysiasty
Date: 2010-03-12 02:58:48 -0500 (Fri, 12 Mar 2010)
New Revision: 13050

Modified:
   trunk/qgis/python/utils.py
   trunk/qgis/src/app/qgspluginmanager.cpp
   trunk/qgis/src/python/qgspythonutils.h
   trunk/qgis/src/python/qgspythonutilsimpl.cpp
   trunk/qgis/src/python/qgspythonutilsimpl.h
Log:
[FEATURE] Applied patch #2541 - initial implementing the canBeUninstalled python plugin method

Modified: trunk/qgis/python/utils.py
===================================================================
--- trunk/qgis/python/utils.py	2010-03-11 21:58:41 UTC (rev 13049)
+++ trunk/qgis/python/utils.py	2010-03-12 07:58:48 UTC (rev 13050)
@@ -161,6 +161,22 @@
   return True
 
 
+def canUninstallPlugin(packageName):
+  """ confirm that the plugin can be uninstalled """
+  global plugins, active_plugins
+
+  if not plugins.has_key(packageName): return False
+  if packageName not in active_plugins: return False
+
+  try:
+    metadata = plugins[packageName]
+    if "canBeUninstalled" not in dir(metadata):
+      return True
+    return bool(metadata.canBeUninstalled())
+  except:
+    return False
+
+
 def unloadPlugin(packageName):
   """ unload and delete plugin! """
   global plugins, active_plugins

Modified: trunk/qgis/src/app/qgspluginmanager.cpp
===================================================================
--- trunk/qgis/src/app/qgspluginmanager.cpp	2010-03-11 21:58:41 UTC (rev 13049)
+++ trunk/qgis/src/app/qgspluginmanager.cpp	2010-03-12 07:58:48 UTC (rev 13050)
@@ -407,9 +407,12 @@
       {
         if ( mPythonUtils && mPythonUtils->isEnabled() )
         {
-          mPythonUtils->unloadPlugin( baseName );
-          //disable it to the qsettings file
-          settings.setValue( "/PythonPlugins/" + baseName, false );
+          if( mPythonUtils->canUninstallPlugin( baseName ) )
+          {
+            mPythonUtils->unloadPlugin( baseName );
+            //disable it to the qsettings file
+            settings.setValue( "/PythonPlugins/" + baseName, false );
+          }
         }
       }
       else // C++ plugin

Modified: trunk/qgis/src/python/qgspythonutils.h
===================================================================
--- trunk/qgis/src/python/qgspythonutils.h	2010-03-11 21:58:41 UTC (rev 13049)
+++ trunk/qgis/src/python/qgspythonutils.h	2010-03-12 07:58:48 UTC (rev 13050)
@@ -81,6 +81,9 @@
     //! @param function one of these strings: name, tpye, version, description
     virtual QString getPluginMetadata( QString pluginName, QString function ) = 0;
 
+    //! confirm that the plugin can be uninstalled
+    virtual bool canUninstallPlugin( QString packageName ) = 0;
+
     //! unload plugin
     virtual bool unloadPlugin( QString packageName ) = 0;
 };

Modified: trunk/qgis/src/python/qgspythonutilsimpl.cpp
===================================================================
--- trunk/qgis/src/python/qgspythonutilsimpl.cpp	2010-03-11 21:58:41 UTC (rev 13049)
+++ trunk/qgis/src/python/qgspythonutilsimpl.cpp	2010-03-12 07:58:48 UTC (rev 13050)
@@ -406,7 +406,6 @@
   return res;
 }
 
-
 bool QgsPythonUtilsImpl::loadPlugin( QString packageName )
 {
   QString output;
@@ -414,7 +413,6 @@
   return ( output == "True" );
 }
 
-
 bool QgsPythonUtilsImpl::startPlugin( QString packageName )
 {
   QString output;
@@ -422,6 +420,12 @@
   return ( output == "True" );
 }
 
+bool QgsPythonUtilsImpl::canUninstallPlugin( QString packageName )
+{
+  QString output;
+  evalString( "qgis.utils.canUninstallPlugin('" + packageName + "')", output );
+  return ( output == "True" );
+}
 
 bool QgsPythonUtilsImpl::unloadPlugin( QString packageName )
 {

Modified: trunk/qgis/src/python/qgspythonutilsimpl.h
===================================================================
--- trunk/qgis/src/python/qgspythonutilsimpl.h	2010-03-11 21:58:41 UTC (rev 13049)
+++ trunk/qgis/src/python/qgspythonutilsimpl.h	2010-03-12 07:58:48 UTC (rev 13050)
@@ -98,6 +98,9 @@
     //! @param function one of these strings: name, tpye, version, description
     QString getPluginMetadata( QString pluginName, QString function );
 
+    //! confirm it is safe to uninstall the plugin
+    bool canUninstallPlugin( QString packageName );    
+
     //! unload plugin
     bool unloadPlugin( QString packageName );
 



More information about the QGIS-commit mailing list