00001 /* $Id: nnetplugin.h,v 1.12 2003/10/15 18:20:25 ndiin Exp $ 00002 * 00003 * nnetplugin.h NNet Plugin Handler 00004 * 00005 * Written by Eric Andresen 00006 * 00007 * Copyright 2002-2003 Eric Andresen 00008 * See COPYING for license information 00009 */ 00010 00011 #ifndef NNETPLUGIN_H 00012 #define NNETPLUGIN_H 00013 00014 #include <qlibrary.h> 00015 #include <qdict.h> 00016 #include <qmap.h> 00017 00018 class QWidget; 00019 class NNet; 00020 class nvemSettings; 00021 class nvemOptionsWidget; 00022 00026 class NNetPluginManager 00027 { 00028 public: 00032 struct moduleInfo { 00033 QString prefix; 00034 QString name; 00035 QString desc; 00036 }; 00037 00041 class NNetPlugin : public QLibrary 00042 { 00043 public: 00045 NNetPlugin(const QString &modulename); 00046 00048 virtual ~NNetPlugin(); 00049 00051 int init_module(char **prefix, char **name, char **desc, int *version); 00052 00054 NNet* getObject(int id); 00055 00057 nvemOptionsWidget* getOptionsWidget(); 00058 }; 00059 00061 static void init(); 00062 00064 static int scanPlugins(QString dir); 00065 00067 static NNet* getObject(const QString &modulename, int id); 00068 00070 static nvemOptionsWidget* getOptionsWidget(const QString &modulename); 00071 00073 static QMap<QString, NNetPluginManager::moduleInfo> getList(); 00074 00075 private: 00077 static int load_module(const QString &modulename); 00078 00080 static QDict<NNetPlugin> n_dict; 00081 00083 static QMap<QString, NNetPluginManager::moduleInfo> n_map; 00084 00086 NNetPluginManager(); 00087 }; 00088 00089 #endif // NNETPLUGIN_H