python_plugin_can_uninstall.diff
python/utils.py (working copy) | ||
---|---|---|
160 | 160 | |
161 | 161 |
return True |
162 | 162 | |
163 |
def canUninstallPlugin(packageName): |
|
164 |
""" Conform that a plugin can be uninstalled """ |
|
165 |
global plugins, active_plugins |
|
163 | 166 | |
167 |
if not plugins.has_key(packageName): return False |
|
168 |
if packageName not in active_plugins: return False |
|
169 | ||
170 |
try: |
|
171 |
metadata = plugins[packageName] |
|
172 |
if "canUninstall" not in dir(metadata): |
|
173 |
return True |
|
174 |
return bool(metadata.canUninstall()) |
|
175 |
except: |
|
176 |
return False |
|
177 | ||
178 | ||
164 | 179 |
def unloadPlugin(packageName): |
165 | 180 |
""" unload and delete plugin! """ |
166 | 181 |
global plugins, active_plugins |
src/app/qgspluginmanager.cpp (working copy) | ||
---|---|---|
407 | 407 |
{ |
408 | 408 |
if ( mPythonUtils && mPythonUtils->isEnabled() ) |
409 | 409 |
{ |
410 |
mPythonUtils->unloadPlugin( baseName ); |
|
411 |
//disable it to the qsettings file |
|
412 |
settings.setValue( "/PythonPlugins/" + baseName, false ); |
|
410 |
if( mPythonUtils->canUninstallPlugin( baseName ) ) |
|
411 |
{ |
|
412 |
mPythonUtils->unloadPlugin( baseName ); |
|
413 |
//disable it to the qsettings file |
|
414 |
settings.setValue( "/PythonPlugins/" + baseName, false ); |
|
415 |
} |
|
413 | 416 |
} |
414 | 417 |
} |
415 | 418 |
else // C++ plugin |
src/python/qgspythonutils.h (working copy) | ||
---|---|---|
82 | 82 |
virtual QString getPluginMetadata( QString pluginName, QString function ) = 0; |
83 | 83 | |
84 | 84 |
//! unload plugin |
85 |
virtual bool unloadPlugin( QString packageName ) = 0; |
|
86 |
}; |
|
85 |
virtual bool canUninstallPlugin( QString packageName ) = 0; |
|
87 | 86 | |
87 |
//! unload plugin |
|
88 |
virtual bool unloadPlugin( QString packageName ) = 0;}; |
|
89 | ||
88 | 90 |
#endif |
src/python/qgspythonutilsimpl.cpp (working copy) | ||
---|---|---|
423 | 423 |
} |
424 | 424 | |
425 | 425 | |
426 |
bool QgsPythonUtilsImpl::canUninstallPlugin( QString packageName ) |
|
427 |
{ |
|
428 |
QString output; |
|
429 |
evalString( "qgis.utils.canUninstallPlugin('" + packageName + "')", output ); |
|
430 |
return ( output == "True" ); |
|
431 |
} |
|
432 | ||
426 | 433 |
bool QgsPythonUtilsImpl::unloadPlugin( QString packageName ) |
427 | 434 |
{ |
428 | 435 |
QString output; |
src/python/qgspythonutilsimpl.h (working copy) | ||
---|---|---|
98 | 98 |
//! @param function one of these strings: name, tpye, version, description |
99 | 99 |
QString getPluginMetadata( QString pluginName, QString function ); |
100 | 100 | |
101 |
//! confirm it is ok to uninstall a plugin |
|
102 |
bool canUninstallPlugin( QString packageName ); |
|
103 | ||
101 | 104 |
//! unload plugin |
102 | 105 |
bool unloadPlugin( QString packageName ); |
103 | 106 |