QDesignerPluginManager Class Reference

#include <pluginmanager_p.h>

Inheritance diagram for QDesignerPluginManager:

Inheritance graph
[legend]
Collaboration diagram for QDesignerPluginManager:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 46 of file pluginmanager_p.h.

Public Slots

bool syncSettings ()
void ensureInitialized ()

Public Member Functions

 QDesignerPluginManager (QDesignerFormEditorInterface *core)
virtual ~QDesignerPluginManager ()
QDesignerFormEditorInterfacecore () const
QObjectinstance (const QString &plugin) const
QStringList registeredPlugins () const
QStringList findPlugins (const QString &path)
QStringList pluginPaths () const
void setPluginPaths (const QStringList &plugin_paths)
QStringList disabledPlugins () const
void setDisabledPlugins (const QStringList &disabled_plugins)
QList< QObject * > instances () const
QList< QDesignerCustomWidgetInterface * > registeredCustomWidgets () const

Private Member Functions

void updateRegisteredPlugins ()
void registerPath (const QString &path)
void registerPlugin (const QString &plugin)
QStringList defaultPluginPaths () const

Private Attributes

QDesignerFormEditorInterfacem_core
QStringList m_pluginPaths
QStringList m_registeredPlugins
QStringList m_disabledPlugins
QList< QDesignerCustomWidgetInterface * > m_customWidgets


Constructor & Destructor Documentation

QDesignerPluginManager::QDesignerPluginManager ( QDesignerFormEditorInterface core  ) 

Definition at line 61 of file pluginmanager.cpp.

References QSettings::beginGroup(), defaultPluginPaths(), QSettings::endGroup(), m_disabledPlugins, m_pluginPaths, QVariant::toStringList(), unique(), updateRegisteredPlugins(), and QSettings::value().

00062     : QObject(core), m_core(core)
00063 {
00064     QSettings settings;
00065 
00066     settings.beginGroup(QLatin1String("PluginManager"));
00067 
00068     m_pluginPaths = defaultPluginPaths();
00069     m_disabledPlugins
00070         = unique(settings.value(QLatin1String("DisabledPlugins")).toStringList());
00071     updateRegisteredPlugins();
00072 
00073     settings.endGroup();
00074 }

Here is the call graph for this function:

QDesignerPluginManager::~QDesignerPluginManager (  )  [virtual]

Definition at line 76 of file pluginmanager.cpp.

References syncSettings().

00077 {
00078     syncSettings();
00079 }


Member Function Documentation

QDesignerFormEditorInterface * QDesignerPluginManager::core (  )  const

Definition at line 81 of file pluginmanager.cpp.

References m_core.

Referenced by ensureInitialized().

00082 {
00083     return m_core;
00084 }

QObject * QDesignerPluginManager::instance ( const QString plugin  )  const

Definition at line 130 of file pluginmanager.cpp.

References QStringList::contains(), QPluginLoader::instance(), and m_disabledPlugins.

Referenced by ensureInitialized(), instances(), and qdesigner_internal::WidgetDataBase::loadPlugins().

00131 {
00132     if (m_disabledPlugins.contains(plugin))
00133         return 0;
00134 
00135     QPluginLoader loader(plugin);
00136     return loader.instance();
00137 }

Here is the call graph for this function:

QStringList QDesignerPluginManager::registeredPlugins (  )  const

Definition at line 120 of file pluginmanager.cpp.

References m_registeredPlugins.

Referenced by ensureInitialized(), instances(), qdesigner_internal::WidgetDataBase::loadPlugins(), and PluginDialog::populateTreeWidget().

00121 {
00122     return m_registeredPlugins;
00123 }

QStringList QDesignerPluginManager::findPlugins ( const QString path  ) 

Definition at line 86 of file pluginmanager.cpp.

References QDir::absoluteFilePath(), QList< T >::append(), QDir::entryList(), QDir::exists(), QDir::Files, QLibrary::isLibrary(), QDir::NoSymLinks, and path.

Referenced by registerPath().

00087 {
00088     QStringList result;
00089 
00090     QDir dir(path);
00091     if (!dir.exists())
00092         return result;
00093     QStringList candidates = dir.entryList(QDir::Files | QDir::NoSymLinks);
00094     foreach (QString plugin, candidates) {
00095         if (!QLibrary::isLibrary(plugin))
00096             continue;
00097         result.append(dir.absoluteFilePath(plugin));
00098     }
00099 
00100     return result;
00101 }

Here is the call graph for this function:

QStringList QDesignerPluginManager::pluginPaths (  )  const

Definition at line 125 of file pluginmanager.cpp.

References m_pluginPaths.

00126 {
00127     return m_pluginPaths;
00128 }

void QDesignerPluginManager::setPluginPaths ( const QStringList plugin_paths  ) 

Definition at line 109 of file pluginmanager.cpp.

References m_pluginPaths, and updateRegisteredPlugins().

00110 {
00111     m_pluginPaths = plugin_paths;
00112     updateRegisteredPlugins();
00113 }

Here is the call graph for this function:

QStringList QDesignerPluginManager::disabledPlugins (  )  const

Definition at line 115 of file pluginmanager.cpp.

References m_disabledPlugins.

00116 {
00117     return m_disabledPlugins;
00118 }

void QDesignerPluginManager::setDisabledPlugins ( const QStringList disabled_plugins  ) 

Definition at line 103 of file pluginmanager.cpp.

References m_disabledPlugins, and updateRegisteredPlugins().

00104 {
00105     m_disabledPlugins = disabled_plugins;
00106     updateRegisteredPlugins();
00107 }

Here is the call graph for this function:

QList< QObject * > QDesignerPluginManager::instances (  )  const

Definition at line 210 of file pluginmanager.cpp.

References QList< T >::append(), instance(), o, and registeredPlugins().

Referenced by QDesignerWorkbench::initializeCorePlugins(), and QDesignerActions::QDesignerActions().

00211 {
00212     QStringList plugins = registeredPlugins();
00213 
00214     QList<QObject*> lst;
00215     foreach (QString plugin, plugins) {
00216         if (QObject *o = instance(plugin))
00217             lst.append(o);
00218     }
00219 
00220     return lst;
00221 }

Here is the call graph for this function:

QList< QDesignerCustomWidgetInterface * > QDesignerPluginManager::registeredCustomWidgets (  )  const

Definition at line 204 of file pluginmanager.cpp.

References ensureInitialized(), and m_customWidgets.

Referenced by qdesigner_internal::WidgetBoxTreeView::loadCustomCategoryList(), and qdesigner_internal::WidgetFactory::loadPlugins().

00205 {
00206     const_cast<QDesignerPluginManager*>(this)->ensureInitialized();
00207     return m_customWidgets;
00208 }

bool QDesignerPluginManager::syncSettings (  )  [slot]

Definition at line 173 of file pluginmanager.cpp.

References QSettings::beginGroup(), QSettings::endGroup(), m_disabledPlugins, QSettings::NoError, QSettings::setValue(), and QSettings::status().

Referenced by ~QDesignerPluginManager().

00174 {
00175     QSettings settings;
00176     settings.beginGroup(QLatin1String("PluginManager"));
00177     settings.setValue(QLatin1String("DisabledPlugins"), m_disabledPlugins);
00178     settings.endGroup();
00179     return settings.status() == QSettings::NoError;
00180 }

void QDesignerPluginManager::ensureInitialized (  )  [slot]

Definition at line 182 of file pluginmanager.cpp.

References QList< T >::append(), c, QList< T >::clear(), core(), instance(), m_customWidgets, o, and registeredPlugins().

Referenced by qdesigner_internal::WidgetDataBase::loadPlugins(), and registeredCustomWidgets().

00183 {
00184     QStringList plugins = registeredPlugins();
00185 
00186     m_customWidgets.clear();
00187     foreach (QString plugin, plugins) {
00188         QObject *o = instance(plugin);
00189 
00190         if (QDesignerCustomWidgetInterface *c = qobject_cast<QDesignerCustomWidgetInterface*>(o)) {
00191             m_customWidgets.append(c);
00192         } else if (QDesignerCustomWidgetCollectionInterface *coll = qobject_cast<QDesignerCustomWidgetCollectionInterface*>(o)) {
00193             m_customWidgets += coll->customWidgets();
00194         }
00195     }
00196 
00197     foreach (QDesignerCustomWidgetInterface *c, m_customWidgets) {
00198         if (!c->isInitialized()) {
00199             c->initialize(core());
00200         }
00201     }
00202 }

void QDesignerPluginManager::updateRegisteredPlugins (  )  [private]

Definition at line 139 of file pluginmanager.cpp.

References QList< T >::clear(), m_pluginPaths, m_registeredPlugins, path, and registerPath().

Referenced by QDesignerPluginManager(), setDisabledPlugins(), and setPluginPaths().

00140 {
00141     m_registeredPlugins.clear();
00142     foreach (QString path,  m_pluginPaths)
00143         registerPath(path);
00144 }

Here is the call graph for this function:

void QDesignerPluginManager::registerPath ( const QString path  )  [private]

Definition at line 146 of file pluginmanager.cpp.

References findPlugins(), path, and registerPlugin().

Referenced by updateRegisteredPlugins().

00147 {
00148     QStringList candidates = findPlugins(path);
00149 
00150     foreach (QString plugin, candidates)
00151         registerPlugin(plugin);
00152 }

Here is the call graph for this function:

void QDesignerPluginManager::registerPlugin ( const QString plugin  )  [private]

Definition at line 154 of file pluginmanager.cpp.

References QStringList::contains(), QPluginLoader::errorString(), QPluginLoader::isLoaded(), QPluginLoader::load(), m_disabledPlugins, m_registeredPlugins, and qWarning().

Referenced by registerPath().

00155 {
00156     if (m_disabledPlugins.contains(plugin))
00157         return;
00158     if (m_registeredPlugins.contains(plugin))
00159         return;
00160 
00161     QPluginLoader loader(plugin);
00162     if (loader.load())
00163         m_registeredPlugins += plugin;
00164     if (!loader.isLoaded()) {
00165         qWarning("QDesignerPluginManager: failed to load plugin\n"
00166                  " - pluginName='%s'\n"
00167                  " - error='%s'\n",
00168                  qPrintable(plugin),
00169                  qPrintable(loader.errorString()));
00170     }
00171 }

Here is the call graph for this function:

QStringList QDesignerPluginManager::defaultPluginPaths (  )  const [private]

Definition at line 44 of file pluginmanager.cpp.

References QList< T >::append(), QDir::homePath(), QCoreApplication::libraryPaths(), path, and QDir::separator().

Referenced by QDesignerPluginManager().

00045 {
00046     QStringList result;
00047 
00048     QStringList path_list = QCoreApplication::libraryPaths();
00049     foreach (const QString &path, path_list)
00050         result.append(path + QDir::separator() + QLatin1String("designer"));
00051 
00052     result.append(QDir::homePath()
00053                     + QDir::separator()
00054                     + QLatin1String(".designer")
00055                     + QDir::separator()
00056                     + QLatin1String("plugins"));
00057 
00058     return result;
00059 }

Here is the call graph for this function:


Member Data Documentation

QDesignerFormEditorInterface* QDesignerPluginManager::m_core [private]

Definition at line 80 of file pluginmanager_p.h.

Referenced by core().

QStringList QDesignerPluginManager::m_pluginPaths [private]

Definition at line 81 of file pluginmanager_p.h.

Referenced by pluginPaths(), QDesignerPluginManager(), setPluginPaths(), and updateRegisteredPlugins().

QStringList QDesignerPluginManager::m_registeredPlugins [private]

Definition at line 82 of file pluginmanager_p.h.

Referenced by registeredPlugins(), registerPlugin(), and updateRegisteredPlugins().

QStringList QDesignerPluginManager::m_disabledPlugins [private]

Definition at line 83 of file pluginmanager_p.h.

Referenced by disabledPlugins(), instance(), QDesignerPluginManager(), registerPlugin(), setDisabledPlugins(), and syncSettings().

QList<QDesignerCustomWidgetInterface*> QDesignerPluginManager::m_customWidgets [private]

Definition at line 84 of file pluginmanager_p.h.

Referenced by ensureInitialized(), and registeredCustomWidgets().


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 17:18:28 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1