[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