[gephex-devel] gephex--main--0.4--patch-1878

gephex at sonnenland.kexbox.org gephex at sonnenland.kexbox.org
Mon Apr 11 21:54:43 CEST 2005


Archive: gephex at gephex.org--2004
New revision: gephex--main--0.4--patch-1878

--
Revision: gephex--main--0.4--patch-1878
Archive: gephex at gephex.org--2004
Creator: The Gephex Source Archive <gephex at gephex.org>
Date: Mon Apr 11 21:51:36 CEST 2005
Standard-date: 2005-04-11 19:51:36 GMT
Removed-files: base/src/interfaces/.arch-ids/moduleclassloadercontrol.if.id
    base/src/interfaces/.arch-ids/typeclassloadercontrol.if.id
    base/src/interfaces/.arch-ids/typeclassname.if.id
    base/src/interfaces/moduleclassloadercontrol.if
    base/src/interfaces/typeclassloadercontrol.if
    base/src/interfaces/typeclassname.if
    qtgui/src/gui/dialogs/.arch-ids/dllselectordialog.cpp.id
    qtgui/src/gui/dialogs/.arch-ids/dllselectordialog.h.id
    qtgui/src/gui/dialogs/dllselectordialog.cpp
    qtgui/src/gui/dialogs/dllselectordialog.h
Modified-files: base/src/interfaces/Makefile.am
    base/src/netinterfaces/Makefile.am
    engine/src/dllloader/c_module.cpp
    engine/src/dllloader/c_module.h
    engine/src/dllloader/c_moduleclass.cpp
    engine/src/dllloader/c_moduleclass.h
    engine/src/dllloader/dllloader.cpp
    engine/src/dllloader/dllloader.h
    engine/src/dllloader/typedllloader.cpp
    engine/src/dllloader/typedllloader.h
    engine/src/engine/controller.cpp
    engine/src/engine/controller.h
    engine/src/renderer/renderer.h
    qtgui/src/gui/dialogs/Makefile.am
    qtgui/src/gui/vjmainwindow.cpp
    qtgui/src/gui/vjmainwindow.h
    qtgui/src/guimodel/enginewrapper.cpp
    qtgui/src/guimodel/enginewrapper.h
New-patches: gephex at gephex.org--2004/gephex--main--0.4--patch-1878
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-2
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-3
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-4
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-5
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-6
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-7
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-8
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-9
    martin at gephex.org--2004/gephex--frei0r--0.4--patch-10
Summary: [MERGE-REQUEST] refactor plugin handling
Keywords: 

Patches applied:

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-2
   tag of gephex at gephex.org--2004/gephex--main--0.4--patch-1877

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-3
   remove plugin manager dialog

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-4
   remove most plugin loading stuff from gui and controller

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-5
   syncronize on connect

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-6
   remove unused moduleclassname... code

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-7
   remove typeclassname interface

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-8
   refactor step dllloader

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-9
   move the plugin scanning code to dllloader

 * martin at gephex.org--2004/gephex--frei0r--0.4--patch-10
   remove segfault at exit

* removed files

    base/src/interfaces/.arch-ids/moduleclassloadercontrol.if.id
    base/src/interfaces/.arch-ids/typeclassloadercontrol.if.id
    base/src/interfaces/.arch-ids/typeclassname.if.id
    base/src/interfaces/moduleclassloadercontrol.if
    base/src/interfaces/typeclassloadercontrol.if
    base/src/interfaces/typeclassname.if
    qtgui/src/gui/dialogs/.arch-ids/dllselectordialog.cpp.id
    qtgui/src/gui/dialogs/.arch-ids/dllselectordialog.h.id
    qtgui/src/gui/dialogs/dllselectordialog.cpp
    qtgui/src/gui/dialogs/dllselectordialog.h

* added files

    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-10
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-2
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-3
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-4
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-5
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-6
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-7
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-8
    {arch}/gephex/gephex--frei0r/gephex--frei0r--0.4/martin at gephex.org--2004/patch-log/patch-9
    {arch}/gephex/gephex--main/gephex--main--0.4/gephex at gephex.org--2004/patch-log/patch-1878

* modified files

--- orig/base/src/interfaces/Makefile.am
+++ mod/base/src/interfaces/Makefile.am
@@ -7,7 +7,6 @@
 	modelstatus.if \
 	moduleclass.if \
 	moduleclassinfo.if \
-	moduleclassloadercontrol.if \
 	moduleclassname.if \
 	moduleclassspec.if \
 	moduleconstructiondumb.if \
@@ -21,9 +20,7 @@
 	serializedgraph.if \
 	smartcontrolvalue.if \
 	typeclass.if \
-	typeclassinfo.if \
-	typeclassloadercontrol.if \
-	typeclassname.if
+	typeclassinfo.if
 
 EXTRA_DIST = interfaces.dsp interfaces.mak interfaces.dep $(INTERFACE_FILES)
 


--- orig/base/src/netinterfaces/Makefile.am
+++ mod/base/src/netinterfaces/Makefile.am
@@ -7,15 +7,11 @@
 libnetinterfaces_a_SOURCES = \
 	enginecontrolsendernet.cpp \
 	enginecontrolreceivernet.cpp \
-	moduleclassloadercontrolsendernet.cpp \
-	moduleclassloadercontrolreceivernet.cpp \
 	renderercontrolreceivernet.cpp \
 	renderercontrolsendernet.cpp \
 	modelcontrolreceivernet.cpp \
 	moduledatareceivernet.cpp \
 	moduledatasendernet.cpp \
-	moduleclassnamereceivernet.cpp \
-	moduleclassnamesendernet.cpp \
 	moduleconstructiondumbreceivernet.cpp \
 	modelcontrolsendernet.cpp \
 	moduleconstructiondumbsendernet.cpp \
@@ -49,10 +45,6 @@
 	modelcontrolsendernet.h \
 	moduleclassinforeceivernet.h \
 	moduleclassinfosendernet.h \
-	moduleclassloadercontrolreceivernet.h \
-	moduleclassloadercontrolsendernet.h \
-	moduleclassnamereceivernet.h \
-	moduleclassnamesendernet.h \
 	moduleconstructiondumbreceivernet.h \
 	moduleconstructiondumbsendernet.h \
 	moduledatareceivernet.h \


--- orig/engine/src/dllloader/c_module.cpp
+++ mod/engine/src/dllloader/c_module.cpp
@@ -208,7 +208,7 @@
 		 CModuleVTable& vtable,
 		 const CModuleAttributes& attributes,
 		 const ITypeFactory& tfactory_,
-		 const std::vector<ITypePtr>& defaultInputTypes,
+		 const std::vector<IType*>& defaultInputTypes,
 		 const std::string& module_class_name)
   : IModule(-1), m_instance(instance), m_vtable(&vtable),
     inputs(attributes.inputs.size()),outputs(attributes.outputs.size()),


--- orig/engine/src/dllloader/c_module.h
+++ mod/engine/src/dllloader/c_module.h
@@ -42,7 +42,7 @@
 public:
   CModule(void* instance,CModuleVTable&,
 	  const CModuleAttributes& attributes,const ITypeFactory&,
-	  const std::vector<ITypePtr>& defaultInputTypes,
+	  const std::vector<IType*>& defaultInputTypes,
 	  const std::string& module_class_name);
 
   virtual ~CModule();


--- orig/engine/src/dllloader/c_moduleclass.cpp
+++ mod/engine/src/dllloader/c_moduleclass.cpp
@@ -103,7 +103,7 @@
       for (unsigned int i = 0; i < defaultInputValues.size(); ++i)
 	{
 
-	  ITypePtr tmp(tFactory.buildNew(attributes->inputs[i]));
+	  IType* tmp(tFactory.buildNew(attributes->inputs[i]));
 
 	  //TODO
 	  const TypeAttributes* attr = attributes->fixedAttributes[i];


--- orig/engine/src/dllloader/c_moduleclass.h
+++ mod/engine/src/dllloader/c_moduleclass.h
@@ -59,8 +59,7 @@
 
 	CModuleFunctionTable* functionTable;
 	CModuleAttributes* attributes;
-	typedef utils::AutoPtr<IType> ITypePtr;
-	mutable std::vector<ITypePtr> defaultInputValues;
+	mutable std::vector<IType*> defaultInputValues;
 	std::string m_name;
 	frei0r_funs_t* m_frei0r;
         int m_frei0r_plugin_type;


--- orig/engine/src/dllloader/dllloader.cpp
+++ mod/engine/src/dllloader/dllloader.cpp
@@ -31,6 +31,7 @@
 #include <sstream>
 #include <stdexcept>
 #include <iostream>
+#include <list>
 
 #include "nameresolver.h"
 
@@ -49,6 +50,10 @@
 #include "utils/autoptr.h"
 #include "utils/sharedlibrary.h"
 #include "utils/ilogger.h"
+#include "utils/filesystem.h"
+#include "utils/stringtokenizer.h"
+
+
 
 #include "interfaces/imoduleclassreceiver.h"
 #include "interfaces/imoduleclassspecreceiver.h"
@@ -57,7 +62,6 @@
 
 #include "interfaces/itypeclassreceiver.h"
 #include "interfaces/itypeclassinforeceiver.h"
-#include "interfaces/itypeclassnamereceiver.h"
 
 #include "frei0rwrapper.h"
 
@@ -68,8 +72,6 @@
     void moduleLog(int level, const char* sender, const char* msg);
   };
 
-
-
   void readFrei0rFuns(DllLoader::SharedLibraryPtr sl, frei0r_funs_t& f0r)
   {
     f0r.init            = (f0r_init_t) sl->loadSymbol("f0r_init");
@@ -166,38 +168,127 @@
     }
 	
   }
-	
-  DllLoader::DllLoader(utils::AutoPtr<utils::ILogger>& logger)
-    : resolver(new NameResolver()), m_infoReceiver(0), m_classReceiver(0),
-      m_specReceiver(0), m_typeInfoReceiver(0), m_typeClassReceiver(0),
-	  m_logger(logger)
+
+  #if defined(OS_WIN32)
+  static const char* MODULE_ENDING = ".dll";
+  static const char* TYPE_ENDING   = ".dll";
+#elif defined(OS_POSIX)
+  static const char* MODULE_ENDING = ".so";
+  static const char* TYPE_ENDING   = ".so";
+#else
+#error "unknown OS"
+#endif
+
+  std::vector<std::string> getFilesInPath(const std::string& dirName,
+                                          const std::string& ending)
   {
-    s_logger = logger;
+    std::vector<std::string> fileNames;
+    
+    std::list<utils::DirEntry> entries;
+    utils::FileSystem::listDir(dirName, entries);
+    
+    for (std::list<utils::DirEntry>::const_iterator it = entries.begin();
+         it != entries.end(); ++it)
+      {
+        std::string name = it->getName();
+
+        if (name == "." || name == "..")
+          continue;
+      
+        if (it->getType() == utils::DirEntry::DIRECTORY)
+          {
+            std::vector<std::string> 
+              subfiles= getFilesInPath(name, ending);
+
+            fileNames.insert(fileNames.end(),
+                             subfiles.begin(), subfiles.end());
+          }
+        else
+          {
+            if (name.length() > ending.length() 
+                && name.substr(name.length()-ending.length(),
+                               ending.length()) == ending)
+              {
+                fileNames.push_back(dirName + name);
+              }
+          }
+      }
+    return fileNames;
   }
-	
-  DllLoader::~DllLoader()
+
+  /**
+   * Returns a vector of all files in a list of paths, that have a certain
+   * file ending.
+   * Files can be listed more than once if a path of the list is a subpath
+   * of another path in the list.
+   */
+  std::vector<std::string> getFilesInPathList(const std::string& pathList,
+					      const std::string& ending)
   {
-    delete resolver;
+    std::vector<std::string> files;
+
+    utils::StringTokenizer st(pathList);
+    std::string path;
+
+    while ((path = st.next(";")) != "")
+    try
+      {
+        std::vector<std::string> fs = getFilesInPath(path, ending);
+        files.insert(files.end(),fs.begin(), fs.end());
+      }
+    catch (...)
+      {
+        // we ignore all paths we cannot open
+      }
+
+    return files;
   }
 
-  void DllLoader::unloadAll()
+	
+  DllLoader::DllLoader(utils::AutoPtr<utils::ILogger>& logger,
+		       IModuleClassInfoReceiver& infoReceiver,
+		       IModuleClassSpecReceiver& specReceiver,
+		       IModuleClassReceiver& classReceiver,
+		       //		       ITypeClassInfoReceiver& typeInfoReceiver,
+		       ITypeClassReceiver& typeClassReceiver,
+		       const std::string& module_path,
+		       const std::string& type_path,
+		       const std::string& frei0r_path
+		       )
+    : resolver(new NameResolver()),
+      m_infoReceiver(infoReceiver),
+      m_classReceiver(classReceiver),
+      m_specReceiver(specReceiver),
+      //      m_typeInfoReceiver(typeInfoReceiver),
+      m_typeClassReceiver(typeClassReceiver), m_logger(logger)
   {
-    //unload all loaded modules
-    typedef std::vector<std::pair<std::string, void*> > Fotze;
-    Fotze names(m_moduleHandles.size());
+    s_logger = logger;
 
-    std::copy(m_moduleHandles.begin(), m_moduleHandles.end(),
-	      names.begin());	
+    // load stuff
+    std::vector<std::string> modules = getFilesInPathList(module_path,
+                                                          MODULE_ENDING);
+	
+    std::vector<std::string> types = getFilesInPathList(type_path,
+                                                        TYPE_ENDING);
+
+    std::vector<std::string> frei0rs;
+    if (frei0r_path != "")
+      frei0rs = getFilesInPathList(frei0r_path, MODULE_ENDING);
     
-    for (Fotze::const_iterator it = names.begin() ;it != names.end(); ++it)
-      {
-	std::string name = it->first;
-#if (ENGINE_VERBOSITY > 1)
-	std::cout << "Unloading " << name << std::endl;
-#endif
-	unloadModuleClass(name);
-      }
-    //TODO: unload type classes
+    std::cout << "Reading plugins...";
+    std::cout.flush();
+    readDlls(modules, types, frei0rs);
+    std::cout << "   done
";
+  }
+	
+  DllLoader::~DllLoader()
+  {
+    // TODO
+    //
+    // 1. call cleanup/deinit methods of all types/effects/plugins
+    // 2. release shared library
+    
+    delete resolver;
   }
 
   void DllLoader::readDlls(const std::vector<std::string>& modules,
@@ -212,14 +303,14 @@
 #if (ENGINE_VERBOSITY > 0)
 	    std::cout << "processing typ file: " << *it << std::endl;
 #endif
-	    processTypFile(*it);
+	    processTypeFile(*it);
 	  }
 	catch (std::runtime_error& e)
 	  {
 	    std::cerr << e.what() << std::endl;
 	  }
       }
-		
+
     for (std::vector<std::string>::const_iterator it = modules.begin();
 	 it != modules.end(); ++it)
       {	
@@ -244,9 +335,10 @@
 	  {
 	    std::cerr << e.what() << std::endl;
 	  }
-      }		
+      }
   }
-	
+
+  
   //TODO: Fehlerbehandlung!
   void DllLoader::loadModule(SharedLibraryPtr sl,
                              const std::string& moduleName)
@@ -315,137 +407,52 @@
       }
   }
 	
-  void DllLoader::loadModuleClass(const std::string& moduleName)
-  {		
-	  try 
-	  {
-		std::map<std::string,std::string>::const_iterator it = 
-		m_mod2fileName.find(moduleName);
-
-		if (it == m_mod2fileName.end())
-		{
-		  it = m_f0r2fileName.find(moduleName);
-
-		  if (it == m_f0r2fileName.end())
-		    throw std::runtime_error("ModuleClass gibts halt nicht");
-
-		  std::string filename = it->second;
-
-		  frei0r_funs_t f0r;
-		  SharedLibraryPtr sl = this->loadDll(filename);
-
-		  readFrei0rFuns(sl, f0r);
-
-		  loadFrei0r(f0r, sl, moduleName);
-		  return;
-		}
-		
-		std::string filename = it->second;
-		
-		SharedLibraryPtr sl = this->loadDll(filename);
-		if (sl->loadSymbol("update") != 0)
-		{
-			loadModule(sl, moduleName);	
-		}
-		else
-		{
-			throw std::runtime_error("Unbekannter Dll Type.");
-		}
-	  }
-	  catch (std::runtime_error& e)
-	  {
-		m_logger->error("LoadModuleClass", e.what());
-	  }
-  }
 	
-  void DllLoader::unloadModuleClass(const std::string& name)
-  {
-    std::map<std::string,SharedLibraryPtr>::iterator it 
-      = m_moduleHandles.find(name);
-    std::map<std::string,utils::AutoPtr<utils::Buffer> >::iterator 
-      it2 = m_moduleInfos.find(name);
-
-    if (it == m_moduleHandles.end() || it2 == m_moduleInfos.end())
-      {
-	throw std::runtime_error("unbekannte moduleclass "
-				 "bei unloadmoduleclass");
-      }
-
-    m_specReceiver->moduleClassUnloaded(name);
-    m_classReceiver->moduleClassUnloaded(name);
-    m_infoReceiver->moduleClassUnloaded(name);
-
-    SharedLibraryPtr sl = it->second;
-
-    // Call the shutdown function of the dll
-    shutDownT shutDown = (shutDownT) sl->loadSymbol("shutDown");
-
-    if (shutDown != 0)
-      shutDown();
-
-
-    m_moduleInfos.erase(it2);
-    m_moduleHandles.erase(it);
- 
-  }
-
   void DllLoader::synchronize()
   {
-    //TODO: bis jetzt wird nur der moduleClassNameReceiver
-    // und der moduleClassInfoReceiver benachrichtigt!
+    //TODO: bis jetzt wird nur moduleClassInfoReceiver benachrichtigt!
 
 #if (ENGINE_VERBOSITY > 0)
     std::cout << "sync dllloader" << std::endl;
 #endif
-    m_infoReceiver->syncStarted();
-//	m_nameReceiver->syncStarted();
-
-    for (std::map<std::string,std::string>::const_iterator nameIt 
-	   = m_mod2fileName.begin();
-	 nameIt != m_mod2fileName.end(); ++nameIt)
-      {
-     	m_nameReceiver->moduleClassNameExists(nameIt->first);       
-      }
-
-
-    for (std::map<std::string,std::string>::const_iterator nameIt 
-	   = m_f0r2fileName.begin();
-	 nameIt != m_f0r2fileName.end(); ++nameIt)
-      {
-     	m_nameReceiver->moduleClassNameExists(nameIt->first);       
-      }
+    m_infoReceiver.syncStarted();
 
     for (std::map<std::string,utils::AutoPtr<utils::Buffer> >::const_iterator
 	   modIt = m_moduleInfos.begin();
 	 modIt != m_moduleInfos.end(); ++modIt)
       {
-	m_infoReceiver->moduleClassLoaded(modIt->first, *modIt->second);
+	m_infoReceiver.moduleClassLoaded(modIt->first, *modIt->second);
       }
 
-	//m_nameReceiver->syncFinished();
-    m_infoReceiver->syncFinished();
+    m_infoReceiver.syncFinished();
   }
 	
-  void DllLoader::loadTypeClass(const std::string& typeName)
+  void DllLoader::processTypeFile(const std::string& filename)
   {
-    // get the filename of the type
-    std::map<std::string,std::string>::const_iterator it = 
-      m_typ2fileName.find(typeName);
-    
-    if (it == m_typ2fileName.end())
+    std::string typeName = getDllName(filename);
+
+    std::map<std::string,std::string>::const_iterator 
+      it = m_typ2fileName.find(typeName);
+
+    if (it != m_typ2fileName.end())
       {
-	throw std::runtime_error("unknown type:" + typeName);
+	throw std::runtime_error("typname '" + typeName +"' doppelt bei processtypFile");
       }
 
-    std::string filename = it->second;
+    m_typ2fileName[typeName] = filename;
 
     // load the type and create class
-    CTypeFunctionTable ft = loadTypeDll(filename);
+    std::pair<CTypeFunctionTable,utils::AutoPtr<utils::SharedLibrary> > p
+      = loadTypeDll(filename);
 
+    CTypeFunctionTable ft= p.first;
+
+	
     // lets get the name of the type
     utils::StructReader spec(ft.getSpec());
     std::string name = spec.getStringValue("name");
 
+    
     // and the typeinfo
     int bufLen = ft.getInfo(0,0); // how big is it?
     char* data = new char[bufLen];
@@ -467,52 +474,7 @@
     CTypeClass tc(ft, name, id);
     
     // distribute the new typeclass to the typefactory
-    if ( m_typeClassReceiver != 0 )
-      m_typeClassReceiver->typeClassLoaded(id, tc);
-
-    // broadcast that there is a new type
-    if ( m_typeInfoReceiver != 0 )
-      m_typeInfoReceiver->typeClassLoaded(id,mi);
-  }
-	
-  void DllLoader::unloadTypeClass(const std::string& /*name*/)
-  {
-    //TODO
-  }
-	
-  void DllLoader::registerModuleClassInfoReceiver(IModuleClassInfoReceiver& r)
-  {
-    m_infoReceiver = &r;
-  }
-	
-  void DllLoader::registerModuleClassSpecReceiver(IModuleClassSpecReceiver& r)
-  {
-    m_specReceiver = &r;
-  }
-	
-  void DllLoader::registerModuleClassReceiver(IModuleClassReceiver& r)
-  {
-    m_classReceiver = &r;
-  }
-
-  void DllLoader::registerModuleClassNameReceiver(IModuleClassNameReceiver& r)
-  {
-    m_nameReceiver = &r;
-  }
-	
-  void DllLoader::registerTypeClassInfoReceiver(ITypeClassInfoReceiver& r)
-  {
-    m_typeInfoReceiver = &r;
-  }
-	
-  void DllLoader::registerTypeClassReceiver(ITypeClassReceiver& r)
-  {
-    m_typeClassReceiver = &r;
-  }
-
-  void DllLoader::registerTypeClassNameReceiver(ITypeClassNameReceiver& r)
-  {
-    m_typeNameReceiver = &r;
+    m_typeClassReceiver.typeClassLoaded(id, tc);
   }
 	
   void DllLoader::constructModuleClass(CModuleFunctionTable* fTable,
@@ -792,12 +754,12 @@
 		
 	m_moduleHandles[name] = sl;
 			
-	m_infoReceiver->moduleClassLoaded(name,mi);
+	m_infoReceiver.moduleClassLoaded(name,mi);
 
         CModuleClass cm(*fTable,attributes,name, frei0r, frei0r_plugin_type);
-	m_classReceiver->moduleClassLoaded(name, cm);
+	m_classReceiver.moduleClassLoaded(name, cm);
 
-	m_specReceiver->moduleClassLoaded(name,ModuleClassSpec(name,inputs,
+	m_specReceiver.moduleClassLoaded(name,ModuleClassSpec(name,inputs,
 							       defaultVals,
                                                                inputIDs,
 							       outputs,
@@ -877,7 +839,23 @@
 
     m_mod2fileName[name] = fname;
 
-    m_nameReceiver->moduleClassNameExists(name);
+    // and load it
+    try 
+      {
+	SharedLibraryPtr sl = this->loadDll(fname);
+	if (sl->loadSymbol("update") != 0)
+	  {
+	    loadModule(sl, name);	
+	  }
+	else
+	  {
+	    throw std::runtime_error("Unknown Dll Type.");
+	  }
+      }
+    catch (std::runtime_error& e)
+      {
+	m_logger->error("LoadModuleClass", e.what());
+      }
   }
 
 
@@ -912,24 +890,23 @@
 
     m_f0r2fileName[name] = fname;
 
-    m_nameReceiver->moduleClassNameExists(name);
-  }
-
-  void DllLoader::processTypFile(const std::string& fname)
-  {
-    std::string name = getDllName(fname);
-
-    std::map<std::string,std::string>::const_iterator 
-      it = m_typ2fileName.find(name);
-
-    if (it != m_typ2fileName.end())
+    // and load it
+    try 
+      {
+	frei0r_funs_t f0r;
+	SharedLibraryPtr sl = this->loadDll(fname);
+	
+	readFrei0rFuns(sl, f0r);
+	
+	loadFrei0r(f0r, sl, name);
+      }
+    catch (std::runtime_error& e)
       {
-	throw std::runtime_error("typname '" + name +"' doppelt bei processtypFile");
+	m_logger->error("LoadModuleClass", e.what());
       }
-
-    m_typ2fileName[name] = fname;
-
-    m_typeNameReceiver->typeClassNameExists(name);
   }
+
   
+
+
 }


--- orig/engine/src/dllloader/dllloader.h
+++ mod/engine/src/dllloader/dllloader.h
@@ -27,17 +27,13 @@
 #include <string>
 #include <stdexcept>
 #include <vector>
+#include <cassert>
 
-#include "interfaces/imoduleclassloadercontrolreceiver.h"
 #include "interfaces/imoduleclassinfosender.h"
 #include "interfaces/imoduleclasssender.h"
 #include "interfaces/imoduleclassspecsender.h"
-#include "interfaces/imoduleclassnamesender.h"
 
-#include "interfaces/itypeclassloadercontrolreceiver.h"
-#include "interfaces/itypeclassinfosender.h"
 #include "interfaces/itypeclasssender.h"
-#include "interfaces/itypeclassnamesender.h"
 
 #include "utils/autoptr.h"
 
@@ -62,15 +58,10 @@
    * von Typ und Modul dlls.
    */
   class DllLoader: 
-    public IModuleClassLoaderControlReceiver,
-    public ITypeClassLoaderControlReceiver,
     public IModuleClassInfoSender, 
     public IModuleClassSpecSender, 
     public IModuleClassSender, 
-    public ITypeClassInfoSender, 
-    public ITypeClassSender,
-    public IModuleClassNameSender,
-    public ITypeClassNameSender
+    public ITypeClassSender
     {
 
     public:
@@ -81,54 +72,57 @@
        * Erzeugt neuen DllLoader.
        * @param logger used for reporting errors
        */
-      DllLoader(utils::AutoPtr<utils::ILogger>& logger);
+      DllLoader(utils::AutoPtr<utils::ILogger>& logger,
+		IModuleClassInfoReceiver&,
+		IModuleClassSpecReceiver&,
+		IModuleClassReceiver&,
+		ITypeClassReceiver&,
+		const std::string& module_path,
+		const std::string& type_path,
+		const std::string& frei0r_path);
 
       virtual ~DllLoader();
 
+
       /**
-       * Liest und verarbeitet die module und die typ dateien.
-       * Davor sollte der ModuleClassNameReceiver registriert sein !!
+       * call this on connect of ModuleClassInfoReceiver
        */
-      void readDlls(const std::vector<std::string>& modules,
-		    const std::vector<std::string>& types,
-		    const std::vector<std::string>& frei0rs);
-
-      virtual void loadModuleClass(const std::string& name);
-      virtual void loadFrei0r(frei0r_funs_t&, SharedLibraryPtr sl,
-			      const std::string moduleName);
-      virtual void unloadModuleClass(const std::string& name);
-
-      //TODO: war mal const
       virtual void synchronize();
 
+
+      // TODO remove these functions from the public interfaces
+      void registerModuleClassInfoReceiver(IModuleClassInfoReceiver& r)
+	{assert(false);}
+      void registerModuleClassSpecReceiver(IModuleClassSpecReceiver& r)
+	{assert(false);}
+      void registerModuleClassReceiver(IModuleClassReceiver& r)
+	{assert(false);}
+      void registerTypeClassReceiver(ITypeClassReceiver&)
+	{assert(false);}
+      
+    private:
       /**
-       * Unloads all module and type dlls. Should be called before
-       * the listeners are destroyed.
+       * Liest und verarbeitet die module und die typ dateien.
        */
-      void unloadAll();
-  
-      virtual void registerModuleClassInfoReceiver(IModuleClassInfoReceiver&);
-      virtual void registerModuleClassSpecReceiver(IModuleClassSpecReceiver&);
-      virtual void registerModuleClassReceiver(IModuleClassReceiver&);
-      virtual void registerModuleClassNameReceiver(IModuleClassNameReceiver&);
-
-      virtual void loadTypeClass(const std::string& name);
-      virtual void unloadTypeClass(const std::string& name);
-      virtual void registerTypeClassInfoReceiver(ITypeClassInfoReceiver&);
-      virtual void registerTypeClassReceiver(ITypeClassReceiver&);
-      virtual void registerTypeClassNameReceiver(ITypeClassNameReceiver&);
+      void readDlls(const std::vector<std::string>& modules,
+		    const std::vector<std::string>& types,
+		    const std::vector<std::string>& frei0rs);
 
-    private:
+      
       SharedLibraryPtr loadDll(const std::string& filename);
       std::string getDllName(const std::string& filename);
 
+      void loadFrei0r(frei0r_funs_t&, SharedLibraryPtr sl,
+			      const std::string moduleName);
+
       void loadModule(SharedLibraryPtr,
                       const std::string& moduleName);
 
       void processModFile(const std::string&);
       void processFrei0rFile(const std::string&);
-      void processTypFile(const std::string&);
-	
+      void processTypeFile(const std::string& name);
+
+      
       void constructModuleClass(CModuleFunctionTable* fTable,
 				SharedLibraryPtr sl,
                                 const std::string& moduleName,
@@ -136,14 +130,10 @@
 
       NameResolver* resolver;
 
-      IModuleClassInfoReceiver* m_infoReceiver;
-      IModuleClassReceiver* m_classReceiver;
-      IModuleClassSpecReceiver* m_specReceiver;
-      IModuleClassNameReceiver* m_nameReceiver;
-
-      ITypeClassInfoReceiver* m_typeInfoReceiver;
-      ITypeClassReceiver* m_typeClassReceiver;
-      ITypeClassNameReceiver* m_typeNameReceiver;
+      IModuleClassInfoReceiver& m_infoReceiver;
+      IModuleClassReceiver& m_classReceiver;
+      IModuleClassSpecReceiver& m_specReceiver;
+      ITypeClassReceiver& m_typeClassReceiver;
 
       std::map<std::string,std::string> m_mod2fileName;
       std::map<std::string,std::string> m_typ2fileName;
@@ -152,11 +142,8 @@
       std::map<std::string,SharedLibraryPtr> m_moduleHandles;
       std::map<std::string,utils::AutoPtr<utils::Buffer> > m_moduleInfos;
 
-      //std::map<std::string,SharedLibraryPtr> m_typeHandles;
-
       utils::AutoPtr<utils::ILogger> m_logger;
     };
-
 }
 
 #endif


--- orig/engine/src/dllloader/typedllloader.cpp
+++ mod/engine/src/dllloader/typedllloader.cpp
@@ -64,7 +64,8 @@
     }
   }
 
-  CTypeFunctionTable loadTypeDll(const std::string& filename)
+  std::pair<CTypeFunctionTable,utils::AutoPtr<utils::SharedLibrary> >
+  loadTypeDll(const std::string& filename)
   {
     // load shared library file
     typedef utils::AutoPtr<utils::SharedLibrary> SharedLibraryPtr;
@@ -125,6 +126,6 @@
       throw std::runtime_error("symbol deSerialize  missing");
 
     // all symbols are defined
-    return ft;
+    return std::make_pair(ft,sl);
   }
 }


--- orig/engine/src/dllloader/typedllloader.h
+++ mod/engine/src/dllloader/typedllloader.h
@@ -28,7 +28,8 @@
 
 namespace dllloader
 {
-  CTypeFunctionTable loadTypeDll(const std::string& filename);
+  std::pair<CTypeFunctionTable,utils::AutoPtr<utils::SharedLibrary> >
+    loadTypeDll(const std::string& filename);
 }
 
 #endif


--- orig/engine/src/engine/controller.cpp
+++ mod/engine/src/engine/controller.cpp
@@ -35,8 +35,6 @@
 
 #include "netlogger.h"
 #include "buffer.h"
-#include "filesystem.h"
-#include "stringtokenizer.h"
 
 namespace engine
 {
@@ -53,46 +51,6 @@
     net::ISocket** m_socket;
   };
   
-  /**
-   * Just a hack to automatically load all types that exist.
-   */
-  class AutoTypeLoader : public ITypeClassNameReceiver
-  {
-  public:
-    AutoTypeLoader(ITypeClassLoaderControlReceiver& typLoader)
-      : m_typLoader(typLoader)
-    {
-    }
-  
-    void typeClassNameExists(const std::string& name)
-    {
-      m_typLoader.loadTypeClass(name);
-    }
-  private:
-    ITypeClassLoaderControlReceiver& m_typLoader;
-  };
-
-
-/**
-   * Just a hack to automatically load all types that exist.
-   */
-  class AutoModuleLoader : public IModuleClassNameReceiver
-  {
-  public:
-    AutoModuleLoader(IModuleClassLoaderControlReceiver& moduleLoader)
-      : m_moduleLoader(moduleLoader)
-    {
-    }
-  
-    void moduleClassNameExists(const std::string& name)
-    {
-      m_moduleLoader.loadModuleClass(name);
-    }
-  private:
-    IModuleClassLoaderControlReceiver& m_moduleLoader;
-  };
-
-
   auto_stop_task::auto_stop_task(Controller* ctrl, unsigned int ttl)
     : m_ctrl(ctrl), m_ttl(ttl), m_time(0)
   {
@@ -112,14 +70,6 @@
 
 
 
-  /**
-   * Returns a vector of all files in a list of paths, that have a certain
-   * file ending.
-   * Files can be listed more than once if a path of the list is a subpath
-   * of another path in the list.
-   */
-  std::vector<std::string> getFilesInPathList(const std::string& dirName,
-                                              const std::string& ending);
 
   // connect a porttagger and a commandtagger with their receiving
   // and sending objects
@@ -127,74 +77,6 @@
                    net::Protocol& protocol,
                    PortDispatcher& portDispatcher, int port);
 
-#if defined(OS_WIN32)
-  static const char* MODULE_ENDING = ".dll";
-  static const char* TYPE_ENDING   = ".dll";
-#elif defined(OS_POSIX)
-  static const char* MODULE_ENDING = ".so";
-  static const char* TYPE_ENDING   = ".so";
-#else
-#error "unknown OS"
-#endif
-
-  std::vector<std::string> getFilesInPath(const std::string& dirName,
-                                          const std::string& ending)
-  {
-    std::vector<std::string> fileNames;
-    
-    std::list<utils::DirEntry> entries;
-    utils::FileSystem::listDir(dirName, entries);
-    
-    for (std::list<utils::DirEntry>::const_iterator it = entries.begin();
-         it != entries.end(); ++it)
-      {
-        std::string name = it->getName();
-
-        if (name == "." || name == "..")
-          continue;
-      
-        if (it->getType() == utils::DirEntry::DIRECTORY)
-          {
-            std::vector<std::string> 
-              subfiles= getFilesInPath(name, ending);
-
-            fileNames.insert(fileNames.end(),
-                             subfiles.begin(), subfiles.end());
-          }
-        else
-          {
-            if (name.length() > ending.length() 
-                && name.substr(name.length()-ending.length(),
-                               ending.length()) == ending)
-              {
-                fileNames.push_back(dirName + name);
-              }
-          }
-      }
-    return fileNames;
-  }
-  
-std::vector<std::string> getFilesInPathList(const std::string& pathList,
-                                            const std::string& ending)
-  {
-    std::vector<std::string> files;
-
-    utils::StringTokenizer st(pathList);
-    std::string path;
-
-    while ((path = st.next(";")) != "")
-    try
-      {
-        std::vector<std::string> fs = getFilesInPath(path, ending);
-        files.insert(files.end(),fs.begin(), fs.end());
-      }
-    catch (...)
-      {
-        // we ignore all paths we cannot open
-      }
-
-    return files;
-  }
   
   void initTaggers(PortTagger& portTagger, CommandTagger& commandTagger,
                    net::Protocol& protocol,
@@ -216,7 +98,6 @@
       tagger3(engineControlSender),
       tagger4(modelControlSender),
       tagger5(modelControlSender),
-      tagger6(moduleClassLoaderControlSender),
       tagger7(modelControlSender),
 
       tagger10(modelControlSender),
@@ -236,7 +117,6 @@
       graphDataReceiver(tagger15),
       controlValueReceiver(tagger4),
       moduleStatisticsReceiver(tagger5),
-      moduleClassNameReceiver(tagger6),
       graphNameReceiver(tagger7),      
 
       errorReceiver(tagger10),
@@ -248,12 +128,10 @@
 
       pModel(config.get_string_param("graph_path"), logger),
       pRenderer(logger),
-      pDllLoader(logger),
       first_time(true),
       ttl(config.get_int_param("ttl")),
       auto_stop(this,ttl)
   {
-    
     net::IServerSocket* serverSocket;
 
     std::string ipcType = config.get_string_param("ipc_type");
@@ -308,7 +186,6 @@
     initTaggers(portTagger3, tagger3, protocol, portDispatcher, m_port+2);
     initTaggers(portTagger4, tagger4, protocol, portDispatcher, m_port+3);
     initTaggers(portTagger5, tagger5, protocol, portDispatcher, m_port+4);
-    initTaggers(portTagger6, tagger6, protocol, portDispatcher, m_port+5);
     initTaggers(portTagger7, tagger7, protocol, portDispatcher, m_port+6);
     initTaggers(portTagger10, tagger10, protocol, portDispatcher, m_port+9);
     initTaggers(portTagger13, tagger13, protocol, portDispatcher, m_port+12);
@@ -330,22 +207,8 @@
     pRenderer.registerModuleStatisticsSmartReceiver(pModel);
     pRenderer.registerRendererStatusReceiver(rendererStatusReceiver);
 		
-    pDllLoader.registerModuleClassReceiver(pRenderer);
-    pDllLoader.registerModuleClassSpecReceiver(pModel);
-    pDllLoader.registerModuleClassInfoReceiver(moduleClassInfoReceiver);
-    pDllLoader.registerTypeClassReceiver(pRenderer);
-		
     modelControlSender.registerModelControlReceiver(pModel);
     rendererControlSender.registerRendererControlReceiver(pRenderer);
-    moduleClassLoaderControlSender.registerModuleClassLoaderControlReceiver(pDllLoader);
-
-    sf = utils::AutoPtr<AutoTypeLoader>(new AutoTypeLoader(pDllLoader));
-
-    aml=utils::AutoPtr<AutoModuleLoader>(new AutoModuleLoader(pDllLoader));
-    pDllLoader.registerModuleClassNameReceiver(*aml);
-
-    pDllLoader.registerTypeClassNameReceiver(*sf);
-
 
     engineControlSender.registerEngineControlReceiver(*this);
 
@@ -365,29 +228,17 @@
     
     scheduler.addTask(*augmented_render_task,rendererInterval);
 
-	
-    // load stuff
-    std::string module_path = config.get_string_param("module_path");
-    std::vector<std::string> modules = getFilesInPathList(module_path,
-                                                          MODULE_ENDING);
-	
-    std::string type_path = config.get_string_param("type_path");
-    std::vector<std::string> types = getFilesInPathList(type_path,
-                                                        TYPE_ENDING);
-
-
-    std::string frei0r_path = config.get_string_param("frei0r_path");
-    std::vector<std::string> frei0rs;
-    if (frei0r_path != "")
-      frei0rs = getFilesInPathList(frei0r_path, MODULE_ENDING);
+    // load plugins
+    pDllLoader= utils::AutoPtr<dllloader::DllLoader>
+      (new dllloader::DllLoader(logger,
+		     moduleClassInfoReceiver,
+		     pModel,
+		     pRenderer,
+		     pRenderer,
+		     config.get_string_param("module_path"),
+		     config.get_string_param("type_path"),
+		     config.get_string_param("frei0r_path")));
     
-    std::cout << "Reading plugins...";
-    std::cout.flush();
-    pDllLoader.readDlls(modules, types, frei0rs);
-    std::cout << "   done
";
-
-    pDllLoader.registerModuleClassNameReceiver(moduleClassNameReceiver);
-	
     std::cout << "Reading graphs...";
     std::cout.flush();
     pModel.updateFileSystem();
@@ -429,7 +280,6 @@
   {
     try
       {
-	this->pDllLoader.unloadAll();
 	disconnect();
       }
     catch (std::runtime_error& e)
@@ -496,6 +346,9 @@
 			  
             connection_down = false;			  
             first_time = false;
+
+	    // announce loaded plugins
+	    pDllLoader->synchronize();
           }
 
         if (connection_down && !first_time)


--- orig/engine/src/engine/controller.h
+++ mod/engine/src/engine/controller.h
@@ -24,8 +24,6 @@
 #define INCLUDED_CONTROLLER_H
 
 #include "ienginecontrolreceiver.h"
-#include "itypeclassnamereceiver.h"
-#include "imoduleclassnamereceiver.h"
 #include "itask.h"
 #include "isocket.h"
 
@@ -35,7 +33,6 @@
 #include "graphdatareceivernet.h"
 #include "controlvaluereceivernet.h"
 #include "modulestatisticsreceivernet.h"
-#include "moduleclassnamereceivernet.h"
 #include "modelstatusreceivernet.h"
 #include "graphnamereceivernet.h"
 #include "errorreceivernet.h"
@@ -51,7 +48,6 @@
 
 #include "modelcontrolsendernet.h"
 #include "renderercontrolsendernet.h"
-#include "moduleclassloadercontrolsendernet.h"
 #include "enginecontrolsendernet.h"
 
 #include "autoptr.h"
@@ -76,8 +72,6 @@
   typedef net::Tagger<uint_32, net::UInt32TagUtil> PortTagger;
   typedef net::TagDispatcher<uint_32> PortDispatcher;
 
-  class AutoTypeLoader;
-  class AutoModuleLoader;
   class Acceptor;
   class Controller;
 
@@ -128,7 +122,6 @@
       CommandTagger tagger3;
       CommandTagger tagger4;
       CommandTagger tagger5;
-      CommandTagger tagger6;
       CommandTagger tagger7;
       
       CommandTagger tagger10;
@@ -166,7 +159,6 @@
 	
       ModelControlSenderNet modelControlSender;
       RendererControlSenderNet rendererControlSender;
-      ModuleClassLoaderControlSenderNet moduleClassLoaderControlSender;
       EngineControlSenderNet engineControlSender;
     
       ModuleConstructionDumbReceiverNet moduleReceiver;
@@ -175,7 +167,6 @@
       GraphDataReceiverNet graphDataReceiver;
       ControlValueReceiverNet controlValueReceiver;
       ModuleStatisticsReceiverNet moduleStatisticsReceiver;
-      ModuleClassNameReceiverNet moduleClassNameReceiver;
 	
       GraphNameReceiverNet graphNameReceiver;
 	
@@ -187,11 +178,10 @@
       utils::AutoPtr<utils::ILogger> logger;
 
       model::Model pModel;
+
+      utils::AutoPtr<dllloader::DllLoader> pDllLoader;
       renderer::Renderer pRenderer;
-      dllloader::DllLoader pDllLoader;
-	
-      utils::AutoPtr<AutoTypeLoader> sf;
-      utils::AutoPtr<AutoModuleLoader> aml;
+      
       utils::AutoPtr<synced_tasks> augmented_render_task;
       engine::Scheduler scheduler;
 


--- orig/engine/src/renderer/renderer.h
+++ mod/engine/src/renderer/renderer.h
@@ -124,13 +124,8 @@
 	void synchronize();
 
   private:
-    typedef std::map<const std::string,utils::AutoPtr<RuntimeSystem> > RuntimeSystemMap;
-    RuntimeSystemMap graphs;
-
-    bool isStarted;
-
-    utils::AutoPtr<RuntimeSystem> activeGraph;
-    std::string activeGraphName; //TODO
+	bool isStarted;
+	std::string activeGraphName; //TODO
 
     ISmartControlValueReceiver* cvr;
     IModuleStatisticsSmartReceiver* msr;
@@ -143,6 +138,11 @@
     utils::AutoPtr<RuntimeSystem> find(const std::string& graphID) const;
 
     utils::AutoPtr<utils::ILogger> m_logger;
+
+    typedef std::map<const std::string,utils::AutoPtr<RuntimeSystem> > RuntimeSystemMap;
+    RuntimeSystemMap graphs;
+    
+    utils::AutoPtr<RuntimeSystem> activeGraph;
   };
 
 }


--- orig/qtgui/src/gui/dialogs/Makefile.am
+++ mod/qtgui/src/gui/dialogs/Makefile.am
@@ -11,7 +11,6 @@
 	changesdialog.cpp \
 	changesdialog.h \
 	changesdialog_h_moc.cpp \
-	dllselectordialog_h_moc.cpp \
 	newgraphdialog_h_moc.cpp
 
 libdialogs_a_SOURCES = \
@@ -21,8 +20,6 @@
 	changesdialog.ui \
 	changesdialogimpl.cpp \
 	changesdialogimpl.h \
-	dllselectordialog.cpp \
-	dllselectordialog.h \
 	newgraphdialog.cpp \
 	newgraphdialog.h
 


--- orig/qtgui/src/gui/vjmainwindow.cpp
+++ mod/qtgui/src/gui/vjmainwindow.cpp
@@ -45,8 +45,6 @@
 
 #include "picswitch.h"
 
-#include "dialogs/dllselectordialog.h"
-
 #include "dialogs/aboutdialogimpl.h"
 #include "dialogs/changesdialogimpl.h"
 #include "dialogs/newgraphdialog.h"
@@ -127,7 +125,6 @@
       m_kbManager(0),
       m_conf_base_dir(conf_base_dir)
   {
-    createWindows();
     createActions();
 
     buildMenuBar();
@@ -206,7 +203,6 @@
   void VJMainWindow::connectToRealEngine() throw (std::runtime_error)
   {
     engineWrapper->connect();
-    showPlugInManagerAction->setEnabled(true);
     
     rendererStateAction->setEnabled(true);
     //keyGrabStateAction->setEnabled(true);
@@ -222,7 +218,6 @@
   void VJMainWindow::disconnectFromRealEngine() throw (std::runtime_error)
   {
     engineWrapper->disconnect();
-    showPlugInManagerAction->setEnabled(false);
     
     rendererStateAction->setEnabled(false);
     //    keyGrabStateAction->setEnabled(false);
@@ -252,14 +247,6 @@
     newGraphAction->setEnabled(false);
     connect(newGraphAction,SIGNAL(activated()),this,SLOT(newGraph()));
 
-    showPlugInManagerAction= new QAction(this,"ShowPlugInManagerAction",false);
-    showPlugInManagerAction->setText("PlugIn Manager");
-    showPlugInManagerAction->setToolTip ("show the plugin-manager dialog");
-    showPlugInManagerAction->setEnabled(false);
-    showPlugInManagerAction->setToggleAction ( true );
-    connect(showPlugInManagerAction,SIGNAL(toggled(bool)),
-	    m_dllSelector,SLOT(setShown ( bool )));  
-    
     rendererStateAction= new QAction(this,"RendererStateAction",false);
     rendererStateAction->setText("start/stop rendering");
     rendererStateAction->setToolTip ("starts and stops the renderer");
@@ -320,23 +307,6 @@
     connect(changesAction,SIGNAL(activated()),this,SLOT(changesSlot()));
   }
   
-  
-  void VJMainWindow::createWindows()
-  {
-    m_dllSelector = 
-      new DllSelectorDialog(this,"PlugIn Manager Dialog",0,
-			    engineWrapper->moduleClassLoaderControlReceiver(),
-			    true);
-
-    connect(m_dllSelector, SIGNAL(status(const std::string&)),
-            this, SLOT(displayStatusText(const std::string&)));
-
-    connect(m_dllSelector, SIGNAL(closed()),
-            this, SLOT(dll_selector_closed()));
-    
-  }
-
-  
   void VJMainWindow::buildMenuBar(void)
   {
     QPopupMenu* file = new QPopupMenu(this);
@@ -364,10 +334,6 @@
       menuBar()->insertItem("Keyboard", keyboard,4,4);
       keyGrabStateAction->addTo(keyboard);*/
 
-    windows = new QPopupMenu(this);
-    menuBar()->insertItem("Windows",windows,5,5);
-    showPlugInManagerAction->addTo(windows);    
-
     effectMenue = new QPopupMenu(this);
     menuBar()->insertItem("Effects",effectMenue,6,6);
 
@@ -386,28 +352,22 @@
   
     moduleClassView = new ModuleClassView(effectMenue);
 
-
-    engineWrapper->moduleClassNameSender().registerModuleClassNameReceiver(*m_dllSelector);
-
     // moduleClassView->show();
     engineWrapper->moduleClassModel().registerModuleClassView(*moduleClassView);
-    engineWrapper->moduleClassModel().registerModuleClassView(*m_dllSelector);
     //engineWrapper->moduleClassModel().registerModuleClassView(*moduleClassTabView);
   }
 
   void VJMainWindow::unbuildModuleBar()
   {
-    // the dllselector and effectmenue clear themselves
+    // the effectmenue clears itself
     // when they receive the syncStarted call
     engineWrapper->moduleClassModel().unregisterModuleClassViews();	
     
     //engineWrapper->moduleClassNameSender().unregisterModuleClassNameReceiver(); //TODO der wird beim naechsten register automatisch ueberschrieben
     
-    //delete m_dllSelector;
     //delete effectMenue;
     
     effectMenue->clear();
-    m_dllSelector->clear();
   }
 
   void VJMainWindow::buildSceleton()
@@ -700,11 +660,6 @@
     dlg->show();
   }
 
-  void VJMainWindow::dll_selector_closed()
-  {
-    showPlugInManagerAction->setOn(false);
-  }
-
   void VJMainWindow::shutDown()
   {
     if (connected)


--- orig/qtgui/src/gui/vjmainwindow.h
+++ mod/qtgui/src/gui/vjmainwindow.h
@@ -55,7 +55,6 @@
   class PropertyView;
   class IPropertyDescription;
   class EditorWidget;
-  class DllSelectorDialog;  
   class LogWindow;  
   class KeyboardManager;
 
@@ -108,12 +107,10 @@
       void shutDown();
       void synchronize();
       void aboutSlot();
-	  void changesSlot();
-      void dll_selector_closed();
+      void changesSlot();
 	
     private:
       void createActions(void);
-      void createWindows();
       void buildMenuBar(void);
       void buildModuleBar(void);
       void buildSceleton(void);
@@ -127,7 +124,6 @@
       
       // Actions
       QAction* quitAction;
-      QAction* showPlugInManagerAction;
       
       QAction* newGraphAction;
       QAction* rendererStateAction;
@@ -161,7 +157,7 @@
 
       enum {CONNECT_ENGINE, 
 	    DISCONNECT_ENGINE, SHUTDOWN_ENGINE, SYNCHRONIZE_ENGINE,
-	    STARTSTOP_ENGINE, WINDOW_DLL_SELECTOR,
+	    STARTSTOP_ENGINE,
 	    KEYGRAB_ON, KEYGRAB_OFF};
 	
       QPopupMenu* effectMenue;
@@ -170,13 +166,10 @@
 
       PropertyView* propertyView;
 	
-      QPopupMenu* windows;
-	  QPopupMenu* help;
+      QPopupMenu* help;
 
       int propertyTabID;
 
-      DllSelectorDialog* m_dllSelector;
-
       const utils::ConfigManager& m_config;
 
       KeyboardManager* m_kbManager;


--- orig/qtgui/src/guimodel/enginewrapper.cpp
+++ mod/qtgui/src/guimodel/enginewrapper.cpp
@@ -28,7 +28,6 @@
 
 #include "netinterfaces/controlvaluesendernet.h"
 #include "netinterfaces/modulestatisticssendernet.h"
-#include "netinterfaces/moduleclassnamesendernet.h"
 #include "netinterfaces/moduleclassinfosendernet.h"
 #include "netinterfaces/moduledatasendernet.h"
 #include "netinterfaces/graphdatasendernet.h"
@@ -42,7 +41,6 @@
 #include "netinterfaces/modelcontrolreceivernet.h"
 #include "netinterfaces/modelcontrolreceivernet.h"
 #include "netinterfaces/renderercontrolreceivernet.h"
-#include "netinterfaces/moduleclassloadercontrolreceivernet.h"
 #include "netinterfaces/enginecontrolreceivernet.h"
 
 #include "net/isocket.h"
@@ -78,7 +76,6 @@
       gdsn(new GraphDataSenderNet()),
       cvsn(new ControlValueSenderNet()),
       mssn(new ModuleStatisticsSenderNet()),
-      mcnsn(new ModuleClassNameSenderNet()),
       gnsn(new GraphNameSenderNet()),
       esn(new ErrorSenderNet()),
       mstsn(new ModelStatusSenderNet()),
@@ -89,7 +86,6 @@
       tagger3(new CommandTagger(*mdsn)),
       tagger4(new CommandTagger(*cvsn)),
       tagger5(new CommandTagger(*mssn)),
-      tagger6(new CommandTagger(*mcnsn)),
       tagger7(new CommandTagger(*gnsn)),
       tagger10(new CommandTagger(*esn)),      
       tagger13(new CommandTagger(*mstsn)),
@@ -102,7 +98,6 @@
       portTagger3(new PortTagger()),
       portTagger4(new PortTagger()),
       portTagger5(new PortTagger()),
-      portTagger6(new PortTagger()),
       portTagger7(new PortTagger()),
       portTagger10(new PortTagger()),      
       portTagger13(new PortTagger()),
@@ -118,7 +113,6 @@
 
       mcrn(new ModelControlReceiverNet(*tagger1)),
       rcrn(new RendererControlReceiverNet(*tagger2)),
-      mclcrn(new ModuleClassLoaderControlReceiverNet(*tagger6)),
       ecrn(new EngineControlReceiverNet(*tagger3)),
       
       gModel(new GraphModel(*mcrn)), 
@@ -135,7 +129,6 @@
     initTaggers(*portTagger3, *tagger3, *protocol, *portDispatcher, m_port+2);
     initTaggers(*portTagger4, *tagger4, *protocol, *portDispatcher, m_port+3);
     initTaggers(*portTagger5, *tagger5, *protocol, *portDispatcher, m_port+4);
-    initTaggers(*portTagger6, *tagger6, *protocol, *portDispatcher, m_port+5);
     initTaggers(*portTagger7, *tagger7, *protocol, *portDispatcher, m_port+6);
     initTaggers(*portTagger10,*tagger10,*protocol, *portDispatcher, m_port+9);
     initTaggers(*portTagger13,*tagger13,*protocol, *portDispatcher, m_port+12);
@@ -226,7 +219,6 @@
 
   void EngineWrapper::synchronize() const
   {
-    mclcrn->synchronize();
     mcrn->synchronize();
     rcrn->synchronize();
   }
@@ -236,11 +228,6 @@
     return *cvsn;
   }
 	
-  IModuleClassNameSender& EngineWrapper::moduleClassNameSender()
-  {
-    return *mcnsn;
-  }
-	
   IModuleStatisticsSender& EngineWrapper::moduleStatisticsSender()
   {
     return *mssn;
@@ -267,13 +254,6 @@
     return *rssn;
   }
 
-  
-  IModuleClassLoaderControlReceiver&
-  EngineWrapper::moduleClassLoaderControlReceiver()
-  {
-    return *mclcrn;
-  }
-
   IRendererControlReceiver& EngineWrapper::rendererControlReceiver()
   {
     return *rcrn;


--- orig/qtgui/src/guimodel/enginewrapper.h
+++ mod/qtgui/src/guimodel/enginewrapper.h
@@ -27,7 +27,6 @@
 
 //#include "interfaces/icontrolvaluesender.h"
 //#include "interfaces/imodulestatisticssender.h"
-//#include "interfaces/imoduleclassnamesender.h"
 
 #include "utils/autoptr.h"
 
@@ -39,7 +38,6 @@
 class GraphDataSenderNet;
 class ControlValueSenderNet;
 class ModuleStatisticsSenderNet;
-class ModuleClassNameSenderNet;
 class GraphNameSenderNet;
 
 class ErrorSenderNet;
@@ -49,11 +47,9 @@
 
 class ModelControlReceiverNet;
 class RendererControlReceiverNet;
-class ModuleClassLoaderControlReceiverNet;
 class EngineControlReceiverNet;
 
 class IControlValueSender;
-class IModuleClassNameSender;
 class IModuleStatisticsSender;
 class IGraphNameSender;
 
@@ -62,7 +58,6 @@
 
 class IRendererStatusSender;
 
-class IModuleClassLoaderControlReceiver;
 class IRendererControlReceiver;
 class IEngineControlReceiver;
 
@@ -115,7 +110,6 @@
       void synchronize() const;
 		
       IControlValueSender& controlValueSender();
-      IModuleClassNameSender& moduleClassNameSender();
       IModuleStatisticsSender& moduleStatisticsSender();
       IGraphNameSender& graphNameSender();
 
@@ -123,7 +117,6 @@
       IModelStatusSender& modelStatusSender();
       IRendererStatusSender& rendererStatusSender();
 		
-      IModuleClassLoaderControlReceiver& moduleClassLoaderControlReceiver();
       IRendererControlReceiver& rendererControlReceiver();
       IEngineControlReceiver& engineControlReceiver();
 
@@ -145,7 +138,6 @@
       utils::AutoPtr<GraphDataSenderNet> gdsn;
       utils::AutoPtr<ControlValueSenderNet> cvsn;
       utils::AutoPtr<ModuleStatisticsSenderNet> mssn;
-      utils::AutoPtr<ModuleClassNameSenderNet> mcnsn;
       utils::AutoPtr<GraphNameSenderNet> gnsn;
 
       utils::AutoPtr<ErrorSenderNet> esn;
@@ -192,7 +184,6 @@
 		
       utils::AutoPtr<ModelControlReceiverNet> mcrn;
       utils::AutoPtr<RendererControlReceiverNet> rcrn;
-      utils::AutoPtr<ModuleClassLoaderControlReceiverNet> mclcrn;
       utils::AutoPtr<EngineControlReceiverNet> ecrn;
 		
       utils::AutoPtr<GraphModel> gModel;



More information about the gephex-devel mailing list