Sophie

Sophie

distrib > Mandriva > current > i586 > media > main-updates > by-pkgid > b77dda48f87d4eda8cc559e40c49a652 > files > 301

python-kde4-doc-4.4.5-0.2mdv2010.2.i586.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
  <title>KPluginLoader</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <link rel="stylesheet" type="text/css" href="../common/doxygen.css" />
  <link rel="stylesheet" media="screen" type="text/css" title="KDE Colors" href="../common/kde.css" />
</head>
<body>
<div id="container">
<div id="header">
  <div id="header_top">
    <div>
      <div>
        <img alt ="" src="../common/top-kde.jpg"/>
        KDE 4.4 PyKDE API Reference
      </div>
    </div>
  </div>
  <div id="header_bottom">
    <div id="location">
      <ul>
        <li>KDE's Python API</li>
      </ul>
    </div>

    <div id="menu">
      <ul>
        <li><a href="../modules.html">Overview</a></li>
<li><a href="http://techbase.kde.org/Development/Languages/Python">PyKDE Home</a></li>
<li><a href="http://kde.org/family/">Sitemap</a></li>
<li><a href="http://kde.org/contact/">Contact Us</a></li>
</ul>
    </div>
  </div>
</div>

<div id="body_wrapper">
<div id="body">
<div id="right">
<div class="content">
<div id="main">
<div class="clearer">&nbsp;</div>

<h1>KPluginLoader Class Reference</h1>
<code>from PyKDE4.kdecore import *</code>
<p>
Inherits: <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qpluginloader.html">QPluginLoader</a> &#x2192; <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qobject.html">QObject</a><br />


<h2>Detailed Description</h2>

<p>\class KPluginLoader kpluginloader.h &lt;KPluginLoader&gt;
</p>
<p>
This class can be used to dynamically load a plugin library at runtime.
</p>
<p>
This class makes sure that the Qt and KDE versions used to compile this library aren't newer then
the ones currently used.
</p>
<p>
This class is reentrant, you can load plugins from different threads. You can also have multiple
PluginLoaders for one library without negative effects.
The object obtained with factory() or the inherited method QPluginLoader.instance() is
cached inside the library. If you call factory() or instance() multiple times, you will always get
the same object, even from different threads and different KPluginLoader instances.
You can delete this object easily, a new one will be created if factory() or instance() is called
afterwards. factory() uses instance() internally.
</p>
<p>
KPluginLoader inherits QPluginLoader.unload(). It safe to call this method if you loaded a plugin
and decide not to use it for some reason. But as soon as you start to use the factory from the plugin,
you should stay away from it. It's nearly impossible to keep track of all objects created directly or
indirectly from the plugin and all other pointers into plugin code. Using unload() in this case is asking
for trouble. If you really need to unload your plugins, you have to take care to convert the clipboard
content to text, because the plugin could have registered a custom mime source. You also have to delete
the factory of the plugin, otherwise you will create a leak.
The destructor of KPluginLoader doesn't call unload.
</p>
<p>
Sample code:
<pre class="fragment">
  KPluginLoader loader( ...library or kservice... );
  KPluginFactory* factory = loader.factory();
  if (!factory) {
      kWarning() &lt;&lt; "Error loading plugin:" &lt;&lt; loader.errorString();
  } else {
      MyInterface* obj = factory-&gt;create&lt;MyInterface&gt;();
      if (!obj) {
          kWarning() &lt;&lt; "Error creating object";
      }
  }
</pre>
</p>
<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd> KPluginFactory
</dd></dl> </p>
<p>

<dl class="author" compact><dt><b>Author:</b></dt><dd> Bernhard Loos &lt;nhuh.put@web.de&gt; </dd></dl>
</p>
<table border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2"><br><h2>Methods</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#KPluginLoader">__init__</a> (self, <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qstring.html">QString</a> plugin, <a href="../kdecore/KComponentData.html">KComponentData</a> componentdata=KGlobal.mainComponent(), <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qobject.html">QObject</a> parent=0)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#KPluginLoader">__init__</a> (self, <a href="../kdecore/KService.html">KService</a> service, <a href="../kdecore/KComponentData.html">KComponentData</a> componentdata=KGlobal.mainComponent(), <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qobject.html">QObject</a> parent=0)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#KPluginLoader">__init__</a> (self, <a href="../kdecore/KPluginLoader.html">KPluginLoader</a> a0)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qstring.html">QString</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#errorString">errorString</a> (self)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a href="../kdecore/KPluginFactory.html">KPluginFactory</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#factory">factory</a> (self)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#isLoaded">isLoaded</a> (self)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#load">load</a> (self)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qstring.html">QString</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#pluginName">pluginName</a> (self)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="#pluginVersion">pluginVersion</a> (self)</td></tr>
</table>
<hr><h2>Method Documentation</h2><a class="anchor" name="KPluginLoader"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname">__init__</td>
<td>(</td>
<td class="paramtype">&nbsp;<em>self</em>, </td>
<td class="paramname"></td>
</tr><tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qstring.html">QString</a>&nbsp;</td>
<td class="paramname"><em>plugin</em>, </td>
</tr>
<tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="../kdecore/KComponentData.html">KComponentData</a>&nbsp;</td>
<td class="paramname"><em>componentdata=KGlobal.mainComponent()</em>, </td>
</tr>
<tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qobject.html">QObject</a>&nbsp;</td>
<td class="paramname"><em>parent=0</em></td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td>
<td></td>
<td width="100%"> </td>
</tr></table>
</div>
<div class="memdoc"><p>Used this constructor to load a plugin with a given library name. Plugin libraries shouldn't have a 'lib' prefix.
</p>
<p>
errorString() will be set if problems are encountered.
</p>
<p>
</p><dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign="top"><em>plugin</em>&nbsp;</td><td> The name of the plugin library.
</td></tr> </table></dl>
<p> </p><dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign="top"><em>componentdata</em>&nbsp;</td><td> The KStandardDirs object from componentdata is used to search the library.
</td></tr> </table></dl>
<p> </p><dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign="top"><em>parent</em>&nbsp;</td><td> A parent object.
</td></tr>
</table></dl>
<p>
</p></div></div><a class="anchor" name="KPluginLoader"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname">__init__</td>
<td>(</td>
<td class="paramtype">&nbsp;<em>self</em>, </td>
<td class="paramname"></td>
</tr><tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="../kdecore/KService.html">KService</a>&nbsp;</td>
<td class="paramname"><em>service</em>, </td>
</tr>
<tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="../kdecore/KComponentData.html">KComponentData</a>&nbsp;</td>
<td class="paramname"><em>componentdata=KGlobal.mainComponent()</em>, </td>
</tr>
<tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qobject.html">QObject</a>&nbsp;</td>
<td class="paramname"><em>parent=0</em></td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td>
<td></td>
<td width="100%"> </td>
</tr></table>
</div>
<div class="memdoc"><p>Used this constructor to load a plugin from a service. The service must contain a library.
</p>
<p>
errorString() will be set if problems are encountered.
</p>
<p>
</p><dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign="top"><em>service</em>&nbsp;</td><td> The service for which the library should be loaded.
</td></tr> </table></dl>
<p> </p><dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign="top"><em>componentdata</em>&nbsp;</td><td> The KStandardDirs object from componentdata is used to search the library.
</td></tr> </table></dl>
<p> </p><dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td></td><td valign="top"><em>parent</em>&nbsp;</td><td> A parent object.
</td></tr>
</table></dl>
<p>
</p></div></div><a class="anchor" name="KPluginLoader"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname">__init__</td>
<td>(</td>
<td class="paramtype">&nbsp;<em>self</em>, </td>
<td class="paramname"></td>
</tr><tr>
<td class="memname"></td>
<td></td>
<td class="paramtype"><a href="../kdecore/KPluginLoader.html">KPluginLoader</a>&nbsp;</td>
<td class="paramname"><em>a0</em></td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td>
<td></td>
<td width="100%"> </td>
</tr></table>
</div>
<div class="memdoc"></div></div><a class="anchor" name="errorString"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qstring.html">QString</a> errorString</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname"><em>self</em>&nbsp;)</td>
<td width="100%"> </td>
</tr>
</table>
</div>
<div class="memdoc"><p>Queries the last error.
<dl class="return" compact><dt><b>Returns:</b></dt><dd> The description of the last error.
</dd></dl>
</p></div></div><a class="anchor" name="factory"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname"><a href="../kdecore/KPluginFactory.html">KPluginFactory</a> factory</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname"><em>self</em>&nbsp;)</td>
<td width="100%"> </td>
</tr>
</table>
</div>
<div class="memdoc"><p>Used to obtain the factory object of the plugin. You have to give a class which inherits KPluginFactory
to K_EXPORT_PLUGIN to use this method.
</p>
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd> The factory of the plugin or 0 on error.
</dd></dl>
</p></div></div><a class="anchor" name="isLoaded"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname">bool isLoaded</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname"><em>self</em>&nbsp;)</td>
<td width="100%"> </td>
</tr>
</table>
</div>
<div class="memdoc"></div></div><a class="anchor" name="load"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname">bool load</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname"><em>self</em>&nbsp;)</td>
<td width="100%"> </td>
</tr>
</table>
</div>
<div class="memdoc"><p>Performs the loading of the plugin.
</p></div></div><a class="anchor" name="pluginName"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname"><a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qstring.html">QString</a> pluginName</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname"><em>self</em>&nbsp;)</td>
<td width="100%"> </td>
</tr>
</table>
</div>
<div class="memdoc"><p>The name of this plugin as given to the constructor.
<dl class="return" compact><dt><b>Returns:</b></dt><dd> the plugin name
</dd></dl>
</p></div></div><a class="anchor" name="pluginVersion"></a>
<div class="memitem">
<div class="memproto">
<table class="memname"><tr>
<td class="memname">long pluginVersion</td>
<td>(</td>
<td class="paramtype">&nbsp;</td>
<td class="paramname"><em>self</em>&nbsp;)</td>
<td width="100%"> </td>
</tr>
</table>
</div>
<div class="memdoc"><p>Queries the plugin version.
<dl class="return" compact><dt><b>Returns:</b></dt><dd> The version given to K_EXPORT_PLUGIN_VERSION or (quint32) -1 if not set.
</dd></dl>
</p></div></div>
</div>
</div>
</div>

<div id="left">

<div class="menu_box">
<div class="nav_list">
<ul>
<li><a href="../allclasses.html">Full Index</a></li>
</ul>
</div>

<a name="cp-menu" /><div class="menutitle"><div>
  <h2 id="cp-menu-project">Modules</h2>
</div></div>
<div class="nav_list">
<ul><li><a href="../akonadi/index.html">akonadi</a></li>
<li><a href="../dnssd/index.html">dnssd</a></li>
<li><a href="../kdecore/index.html">kdecore</a></li>
<li><a href="../kdeui/index.html">kdeui</a></li>
<li><a href="../khtml/index.html">khtml</a></li>
<li><a href="../kio/index.html">kio</a></li>
<li><a href="../knewstuff/index.html">knewstuff</a></li>
<li><a href="../kparts/index.html">kparts</a></li>
<li><a href="../kutils/index.html">kutils</a></li>
<li><a href="../nepomuk/index.html">nepomuk</a></li>
<li><a href="../phonon/index.html">phonon</a></li>
<li><a href="../plasma/index.html">plasma</a></li>
<li><a href="../polkitqt/index.html">polkitqt</a></li>
<li><a href="../solid/index.html">solid</a></li>
<li><a href="../soprano/index.html">soprano</a></li>
</ul></div></div>

</div>

</div>
  <div class="clearer"/>
</div>

<div id="end_body"></div>
</div>
<div id="footer"><div id="footer_text">
This documentation is maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;simon&#64;simonzone&#46;com">Simon Edwards</a>.<br />
        KDE<sup>&#174;</sup> and <a href="../images/kde_gear_black.png">the K Desktop Environment<sup>&#174;</sup> logo</a> are registered trademarks of <a href="http://ev.kde.org/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
        <a href="http://www.kde.org/contact/impressum.php">Legal</a>
    </div></div>
</body>
</html>