Index: src/UIElements/Views/Qt4/QtGeometryList.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtGeometryList.cpp	(revision af78afe6d51863cb0db3ce69045752ab4f7668df)
+++ src/UIElements/Views/Qt4/QtGeometryList.cpp	(revision af78afe6d51863cb0db3ce69045752ab4f7668df)
@@ -0,0 +1,130 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2017 Frederik Heber. All rights reserved.
+ *
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * QtGeometryList.cpp
+ *
+ *  Created on: Mar 25, 2017
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Views/Qt4/QtGeometryList.hpp"
+
+#include <iostream>
+
+//#include "CodePatterns/MemDebug.hpp"
+
+#include "CodePatterns/Observer/Notification.hpp"
+#include "CodePatterns/toString.hpp"
+
+#include "Geometry/GeometryRegistry.hpp"
+
+#include <QAbstractItemView>
+
+using namespace std;
+
+const int QtGeometryList::COLUMNCOUNT = COLUMNTYPES_MAX;
+const char *QtGeometryList::COLUMNNAMES[QtGeometryList::COLUMNCOUNT]={"Name","Vector"};
+
+QtGeometryList::QtGeometryList(QWidget * _parent) :
+    QTreeWidget (_parent),
+    Observer("QtGeometryList")
+{
+  setColumnCount(COLUMNCOUNT);
+  setSelectionMode(QAbstractItemView::NoSelection);
+
+  QStringList header;
+	for(int i=0; i<COLUMNCOUNT;++i)
+	  header << COLUMNNAMES[i];
+	setHeaderLabels(header);
+
+	refill(NULL);
+
+	GeometryRegistry::getInstance().signOn(this);
+	GeometryRegistry::getInstance().signOn(this, GeometryRegistry::GeometryInserted);
+	GeometryRegistry::getInstance().signOn(this, GeometryRegistry::GeometryRemoved);
+}
+
+QtGeometryList::~QtGeometryList()
+{
+  GeometryRegistry::getInstance().signOff(this);
+  GeometryRegistry::getInstance().signOff(this, GeometryRegistry::GeometryInserted);
+  GeometryRegistry::getInstance().signOff(this, GeometryRegistry::GeometryRemoved);
+}
+
+void QtGeometryList::update(Observable *publisher) {}
+
+void QtGeometryList::recieveNotification(Observable *publisher, Notification_ptr notification)
+{
+  if (static_cast<GeometryRegistry*>(publisher) == GeometryRegistry::getPointer()) {
+    switch (notification->getChannelNo()) {
+      case GeometryRegistry::GeometryInserted:
+      {
+        refill(NULL);
+        break;
+      }
+      case GeometryRegistry::GeometryRemoved:
+      {
+        refill(GeometryRegistry::getInstance().lastChanged());
+        break;
+      }
+      default:
+        ASSERT(0, "QtGeometryList::recieveNotification() - we cannot get here.");
+        break;
+    }
+  }
+}
+
+void QtGeometryList::refill(::GeometryObject *ignore)
+{
+  clear();
+
+  GeometryRegistry &reg = GeometryRegistry::getInstance();
+
+  GeometryRegistry::const_iterator iter;
+  for (iter = reg.getBeginIter(); iter != reg.getEndIter(); iter ++){
+    ::GeometryObject *v = iter->second;
+    if (v == ignore)
+      continue;
+
+    QTreeWidgetItem *treeItem = new QTreeWidgetItem(this);
+    treeItem->setText(NAME, QString(v->getName().c_str()));
+    treeItem->setText(VECTOR, QString(toString(v->getVector()).c_str()));
+  }
+}
+
+#if 0
+void QtGeometryList::paintEvent(QPaintEvent * event)
+{
+  /*if (dirty)
+    refill(NULL);*/
+  QtGeometryList::paintEvent(event);
+}
+#endif
+
+void QtGeometryList::subjectKilled(Observable *publisher) {
+}
Index: src/UIElements/Views/Qt4/QtGeometryList.hpp
===================================================================
--- src/UIElements/Views/Qt4/QtGeometryList.hpp	(revision af78afe6d51863cb0db3ce69045752ab4f7668df)
+++ src/UIElements/Views/Qt4/QtGeometryList.hpp	(revision af78afe6d51863cb0db3ce69045752ab4f7668df)
@@ -0,0 +1,43 @@
+/*
+ * QtGeometryList.hpp
+ *
+ *  Created on: Mar 25, 2017
+ *      Author: heber
+ */
+
+#ifndef QTGEOMETRYLIST_H_
+#define QTGEOMETRYLIST_H_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <QtGui/QTreeWidget>
+#include "CodePatterns/Observer/Observer.hpp"
+
+class GeometryObject;
+
+class QtGeometryList: public QTreeWidget, public Observer
+{
+  Q_OBJECT
+
+public:
+  QtGeometryList(QWidget * _parent=0);
+  virtual ~QtGeometryList();
+
+protected:
+  virtual void update(Observable *publisher);
+  virtual void subjectKilled(Observable *publisher);
+  virtual void recieveNotification(Observable *publisher, Notification_ptr notification);
+  //virtual void paintEvent(QPaintEvent * event);
+  void refill(::GeometryObject *ignore);
+
+  static const int COLUMNCOUNT;
+  enum {NAME,VECTOR,COLUMNTYPES_MAX} COLUMNTYPES;
+  static const char *COLUMNNAMES[];
+
+};
+
+#endif /* QTGEOMETRYLIST_H_ */
