Index: src/UIElements/Makefile.am
===================================================================
--- src/UIElements/Makefile.am	(revision 0932c2cf081d696ef9cc91e7a5183c13064994e0)
+++ src/UIElements/Makefile.am	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
@@ -172,4 +172,5 @@
   UIElements/Views/Qt4/QtHomologyList.cpp \
   UIElements/Views/Qt4/QtInfoBox.cpp \
+  UIElements/Views/Qt4/QtLogBox.cpp \
   UIElements/Views/Qt4/QtMoleculeList.cpp \
   UIElements/Views/Qt4/QtShapeController.cpp \
@@ -192,8 +193,10 @@
   UIElements/Qt4/Query/QtQuery.hpp \
   UIElements/Menu/Qt4/QtMenuPipe.hpp \
+  UIElements/Views/Qt4/QDebugStream.hpp \
   UIElements/Views/Qt4/QtElementList.hpp \
   UIElements/Views/Qt4/QtFragmentList.hpp \
   UIElements/Views/Qt4/QtHomologyList.hpp \
   UIElements/Views/Qt4/QtInfoBox.hpp \
+  UIElements/Views/Qt4/QtLogBox.hpp \
   UIElements/Views/Qt4/QtMoleculeList.hpp \
   UIElements/Views/Qt4/QtShapeController.hpp \
Index: src/UIElements/Qt4/QtMainWindow.cpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.cpp	(revision 0932c2cf081d696ef9cc91e7a5183c13064994e0)
+++ src/UIElements/Qt4/QtMainWindow.cpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
@@ -57,4 +57,5 @@
 #include "Views/Qt4/QtFragmentList.hpp"
 #include "Views/Qt4/QtHomologyList.hpp"
+#include "Views/Qt4/QtLogBox.hpp"
 #include "Views/Qt4/QtShapeController.hpp"
 #include "Views/Qt4/QtInfoBox.hpp"
@@ -98,4 +99,5 @@
   homologyList = new QtHomologyList(worldTab);
   fragmentList = new QtFragmentList(worldTab);
+  logBox = new QtLogBox(worldTab);
   shapeController = new QtShapeController(worldTab);
 
@@ -130,4 +132,5 @@
   worldTab->addTab(fragmentList, "All Fragments");
   worldTab->addTab(homologyList, "All Homologies");
+  worldTab->addTab(logBox, "Log");
 
   statusBar = new QtStatusBar(this);
Index: src/UIElements/Qt4/QtMainWindow.hpp
===================================================================
--- src/UIElements/Qt4/QtMainWindow.hpp	(revision 0932c2cf081d696ef9cc91e7a5183c13064994e0)
+++ src/UIElements/Qt4/QtMainWindow.hpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
@@ -23,8 +23,9 @@
 #include "Menu/Qt4/QtMenu.hpp"
 
+class QtElementList;
+class QtFragmentList;
+class QtHomologyList;
+class QtLogBox;
 class QtMoleculeList;
-class QtElementList;
-class QtHomologyList;
-class QtFragmentList;
 class QtShapeController;
 class StringView;
@@ -64,4 +65,5 @@
   QtToolBar *toolbar;
   QSlider *timeline;
+  QtLogBox *logBox;
 
 };
Index: src/UIElements/Views/Qt4/QDebugStream.hpp
===================================================================
--- src/UIElements/Views/Qt4/QDebugStream.hpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
+++ src/UIElements/Views/Qt4/QDebugStream.hpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
@@ -0,0 +1,86 @@
+/*
+ * QDebugStream.hpp
+ *
+ *  Created on: Jun 19, 2014
+ *      Author: heber
+ */
+
+#ifndef QDEBUGSTREAM_HPP_
+#define QDEBUGSTREAM_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <QTextEdit>
+
+#include <ostream>
+#include <streambuf>
+#include <string>
+
+/** This class connects an output stream, such as std::cout, and a QTextEdit.
+ *
+ * It works by overriding certain streambuf functions such as xsputn() and
+ * overflow().
+ *
+ * This code is copied from the questions posted here
+ * http://stackoverflow.com/questions/10308425/redirect-stdcout-to-a-qtextedit
+ * which worked right away.
+ */
+class QDebugStream : public std::basic_streambuf<char>
+{
+public:
+  QDebugStream(std::ostream &stream, QTextEdit* text_edit) : m_stream(stream)
+  {
+    log_window = text_edit;
+    m_old_buf = stream.rdbuf();
+    stream.rdbuf(this);
+  }
+  ~QDebugStream()
+  {
+    // output anything that is left
+    if (!m_string.empty())
+      log_window->append(m_string.c_str());
+
+    m_stream.rdbuf(m_old_buf);
+  }
+
+protected:
+  virtual int_type overflow(int_type v)
+  {
+    if (v == '\n') {
+      log_window->append(m_string.c_str());
+      m_string.erase(m_string.begin(), m_string.end());
+    } else
+      m_string += v;
+
+    return v;
+  }
+
+  virtual std::streamsize xsputn(const char *p, std::streamsize n)
+  {
+    m_string.append(p, p + n);
+
+    size_t pos = 0;
+    while (pos != std::string::npos) {
+      pos = m_string.find('\n');
+      if (pos != std::string::npos) {
+        std::string tmp(m_string.begin(), m_string.begin() + pos);
+        log_window->append(tmp.c_str());
+        m_string.erase(m_string.begin(), m_string.begin() + pos + 1);
+      }
+    }
+
+  return n;
+  }
+
+private:
+  std::ostream &m_stream;
+  std::streambuf *m_old_buf;
+  std::string m_string;
+
+  QTextEdit* log_window;
+};
+
+#endif /* QDEBUGSTREAM_HPP_ */
Index: src/UIElements/Views/Qt4/QtLogBox.cpp
===================================================================
--- src/UIElements/Views/Qt4/QtLogBox.cpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
+++ src/UIElements/Views/Qt4/QtLogBox.cpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
@@ -0,0 +1,55 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2014 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/>.
+ */
+
+/*
+ * QtLogBox.cpp
+ *
+ *  Created on: Jun 19, 2014
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "QtLogBox.hpp"
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <boost/bind.hpp>
+#include <ios>
+
+#include "CodePatterns/Log.hpp"
+
+QtLogBox::QtLogBox(QWidget * _parent) :
+    QTextEdit (_parent),
+    logbuf(std::cout, this)
+{
+  // don't edit the log
+  setReadOnly(true);
+//  setTextFormat(Qt::LogText);
+
+}
+
+QtLogBox::~QtLogBox()
+{}
Index: src/UIElements/Views/Qt4/QtLogBox.hpp
===================================================================
--- src/UIElements/Views/Qt4/QtLogBox.hpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
+++ src/UIElements/Views/Qt4/QtLogBox.hpp	(revision e0b5f07b569ad48c9e5c6ed53968f1e215c43d1b)
@@ -0,0 +1,38 @@
+/*
+ * QtLogBox.hpp
+ *
+ *  Created on: Jun 19, 2014
+ *      Author: heber
+ */
+
+#ifndef QTLOGBOX_HPP_
+#define QTLOGBOX_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <QTextEdit>
+
+#include "UIElements/Views/Qt4/QDebugStream.hpp"
+
+/** This widget displays the log and allows for clicking on the names of atoms
+ * which (un)selects them for highlighting.
+ *
+ */
+class QtLogBox : public QTextEdit
+{
+  Q_OBJECT
+
+public:
+  QtLogBox(QWidget * _parent=0);
+  virtual ~QtLogBox();
+
+private:
+  //!> streambuffer to connect ostream and QTextEdit
+  QDebugStream logbuf;
+};
+
+
+#endif /* QTLOGBOX_HPP_ */
