[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdevelop
From:       Jens Dagerbo <jens.dagerbo () swipnet ! se>
Date:       2005-01-23 2:32:27
Message-ID: 20050123023227.8EC3A1D1AB () office ! kde ! org
[Download RAW message or body]

CVS commit by dagerbo: 

KDevPluginController update. Added loadPlugin() and unloadPlugin().


  M +12 -0     lib/interfaces/kdevplugincontroller.h   1.4
  M +30 -1     src/plugincontroller.cpp   1.45
  M +4 -0      src/plugincontroller.h   1.25


--- kdevelop/lib/interfaces/kdevplugincontroller.h  #1.3:1.4
@@ -41,4 +41,16 @@ class KDevPluginController: public QObje
 public:
     
+    /**
+     * Returns a uniquely specified plugin. If it isn't already loaded, it will be. 
+     * Use with caution! See extension for parameter details.
+     */
+    virtual KDevPlugin * loadPlugin( const QString & serviceType, const QString & constraint ) = 0;
+
+    /**
+     * Unloads the plugin specified by @p plugin
+     * @param plugin The plugin desktopEntryName of the plugin to unload
+     */
+    virtual void unloadPlugin( const QString & plugin ) = 0;
+
     /**Unloads plugins specified by @p list.
     @param list The list of plugin names to unload. plugin name corresponds

--- kdevelop/src/plugincontroller.cpp  #1.44:1.45
@@ -273,4 +273,34 @@ KDevPlugin * PluginController::extension
 }
 
+KDevPlugin * PluginController::loadPlugin( const QString & serviceType, const QString & constraint )
+{
+        KTrader::OfferList offers = KDevPluginController::query( serviceType, constraint );
+        if ( !offers.size() == 1 ) return 0;
+
+        KTrader::OfferList::const_iterator it = offers.constBegin();
+        QString name = (*it)->desktopEntryName();
+        
+        KDevPlugin * plugin = 0;
+        if ( plugin = m_parts[ name ] )
+        {
+                return plugin;
+        }
+        
+        if ( plugin = loadPlugin( *it ) )
+        {
+                m_parts.insert( name, plugin );
+                integratePart( plugin );
+        }
+        
+        return plugin;
+}
+
+void PluginController::unloadPlugin( const QString & plugin )
+{
+        QStringList pluginList;
+        pluginList << plugin;
+        unloadPlugins( pluginList );
+}
+
 KURL::List PluginController::profileResources(const QString &nameFilter)
 {

--- kdevelop/src/plugincontroller.h  #1.24:1.25
@@ -32,4 +32,8 @@ public:
   static QStringList argumentsFromService( const KService::Ptr &service );
 
+  
+  virtual KDevPlugin * loadPlugin( const QString & serviceType, const QString & constraint );
+  virtual void unloadPlugin( const QString & plugin );
+  
   QString currentProfile() const { return m_profile; }
   


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic