python_plugin_can_uninstall.diff

Patch to provide the uninstall management functionality - Chris Crook, 2010-03-10 07:15 PM

Download (3.07 KB)

View differences:

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