Index: /trunk/FACT++/gui/CheckBoxDelegate.cc
===================================================================
--- /trunk/FACT++/gui/CheckBoxDelegate.cc	(revision 10394)
+++ /trunk/FACT++/gui/CheckBoxDelegate.cc	(revision 10394)
@@ -0,0 +1,70 @@
+#include "CheckBoxDelegate.h"
+
+#include <QtGui/QPainter>
+#include <QtGui/QApplication>
+
+void CheckBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    //---  QColumnViewDelegate
+    const bool reverse = (option.direction == Qt::RightToLeft);
+    const int  width   = (option.rect.height() * 2) / 3;
+
+
+    // Modify the options to give us room to add an arrow
+    QStyleOptionViewItemV4 opt = option;
+    if (reverse)
+        opt.rect.adjust(width,0,0,0);
+    else
+        opt.rect.adjust(0,0,-width,0);
+
+    if (!(index.model()->flags(index) & Qt::ItemIsEnabled))
+    {
+        opt.showDecorationSelected = true;
+        opt.state |= QStyle::State_Selected;
+    }
+
+
+    QStyledItemDelegate::paint(painter, opt, index);
+
+
+    if (reverse)
+        opt.rect = QRect(option.rect.x(), option.rect.y(),
+                         width, option.rect.height());
+    else
+        opt.rect = QRect(option.rect.x() + option.rect.width() - width, option.rect.y(),
+                         width, option.rect.height());
+
+    // Draw >
+    if (index.model()->hasChildren(index))
+    {
+        const QWidget *view = opt.widget;
+
+        QStyle *style = view ? view->style() : qApp->style();
+        style->drawPrimitive(QStyle::PE_IndicatorColumnViewArrow, &opt,
+                             painter, view);
+    }
+}
+
+
+bool CheckBoxDelegate::editorEvent(QEvent *evt, QAbstractItemModel *model, const QStyleOptionViewItem &option,
+                                   const QModelIndex &index)
+{
+    QStandardItemModel *it = dynamic_cast<QStandardItemModel*>(model);
+    if (!it)
+        return QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const QStandardItem *item = it->itemFromIndex(index);
+    if (!item)
+        return QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const Qt::CheckState before = item->checkState();
+
+    const bool rc = QStyledItemDelegate::editorEvent(evt, model, option, index);
+
+    const Qt::CheckState after = item->checkState();
+
+    if (before!=after)
+        QApplication::sendEvent(it->parent(), new CheckBoxEvent(*item));
+
+    return rc;
+}
Index: /trunk/FACT++/gui/CheckBoxDelegate.h
===================================================================
--- /trunk/FACT++/gui/CheckBoxDelegate.h	(revision 10394)
+++ /trunk/FACT++/gui/CheckBoxDelegate.h	(revision 10394)
@@ -0,0 +1,40 @@
+#ifndef FACT_CheckBoxDelegate
+#define FACT_CheckBoxDelegate
+
+#include <QtCore/QEvent>
+#include <QtGui/QStandardItem>
+
+using namespace std;
+
+class CheckBoxEvent : public QEvent
+{
+public:
+    const QStandardItem &item;
+
+    CheckBoxEvent(const QStandardItem &i)
+        : QEvent((QEvent::Type)QEvent::registerEventType()),
+    item(i) { }
+};
+
+
+#include <QtGui/QStyledItemDelegate>
+
+class CheckBoxDelegate : public QStyledItemDelegate
+{
+    Q_OBJECT;
+
+public:
+    CheckBoxDelegate(QObject *p=0) : QStyledItemDelegate(p)
+    {
+    }
+
+    void paint(QPainter *painter,
+               const QStyleOptionViewItem &option,
+               const QModelIndex &index) const;
+
+    bool editorEvent(QEvent *evt, QAbstractItemModel *model,
+                     const QStyleOptionViewItem &option,
+                     const QModelIndex &index);
+};
+
+#endif
Index: /trunk/FACT++/gui/DockWindow.cc
===================================================================
--- /trunk/FACT++/gui/DockWindow.cc	(revision 10394)
+++ /trunk/FACT++/gui/DockWindow.cc	(revision 10394)
@@ -0,0 +1,43 @@
+#include "DockWindow.h"
+
+#include <QtGui/QDockWidget>
+
+#include <stdexcept>
+
+using namespace std;
+
+DockWindow::DockWindow(QDockWidget *d, const QString &name)
+    : fDockWidget(d), fGeometry(d->geometry())
+{
+    QObject *w0 = d->parent();   // QWidget
+    if (!w0)
+        throw runtime_error("1st parent of QDockWidget is NULL");
+
+    QObject *w1 = w0->parent();  // QWidget
+    if (!w1)
+        throw runtime_error("2nd parent of QDockWidget is NULL");
+
+    QObject *w2 = w1->parent();  // QWidget
+    if (!w2)
+            throw runtime_error("3rd parent of QDockWidget is NULL");
+
+    fTabWidget = dynamic_cast<QTabWidget*>(w2);
+    if (!fTabWidget)
+        throw runtime_error("3rd parent of QDockWidget is not a QTabWidget");
+
+    setGeometry(fGeometry);
+    addDockWidget(Qt::LeftDockWidgetArea, fDockWidget);
+    setWindowTitle(name);
+}
+
+void DockWindow::closeEvent(QCloseEvent *)
+{
+    QWidget *w = new QWidget;
+
+    fTabWidget->addTab(w, windowTitle());
+
+    fDockWidget->setParent(w);
+    fDockWidget->setGeometry(fGeometry);
+
+    fTabWidget->setTabsClosable(true);
+}
Index: /trunk/FACT++/gui/DockWindow.h
===================================================================
--- /trunk/FACT++/gui/DockWindow.h	(revision 10394)
+++ /trunk/FACT++/gui/DockWindow.h	(revision 10394)
@@ -0,0 +1,26 @@
+#ifndef FACT_DockWindow
+#define FACT_DockWindow
+
+#include <QtGui/QMainWindow>
+
+class QDockWidget;
+class QTabWidget;
+class QCloseEvent;
+
+class DockWindow : public QMainWindow
+{
+    Q_OBJECT;
+
+    QDockWidget  *fDockWidget;
+    QTabWidget   *fTabWidget;
+    const QRect   fGeometry;
+
+public:
+
+    DockWindow(QDockWidget *d, const QString &name);
+
+protected:
+    void closeEvent(QCloseEvent *);
+};
+
+#endif
Index: /trunk/FACT++/gui/FactGui.cc
===================================================================
--- /trunk/FACT++/gui/FactGui.cc	(revision 10394)
+++ /trunk/FACT++/gui/FactGui.cc	(revision 10394)
@@ -0,0 +1,2 @@
+#include "gui/MainWindow.h"
+
Index: /trunk/FACT++/gui/FactGui.h
===================================================================
--- /trunk/FACT++/gui/FactGui.h	(revision 10394)
+++ /trunk/FACT++/gui/FactGui.h	(revision 10394)
@@ -0,0 +1,610 @@
+#ifndef FACT_FactGui
+#define FACT_FactGui
+
+#include "MainWindow.h"
+
+#include <iomanip>
+
+#include <boost/bind.hpp>
+
+#include <QtGui/QStandardItemModel>
+
+#include "CheckBoxDelegate.h"
+
+#include "src/Converter.h"
+#include "src/HeadersFTM.h"
+#include "src/DimNetwork.h"
+
+using namespace std;
+
+class FactGui : public MainWindow, public DimNetwork
+{
+private:
+    class FunctionEvent : public QEvent
+    {
+    public:
+        boost::function<void(const QEvent &)> fFunction;
+
+        FunctionEvent(const boost::function<void(const QEvent &)> &f)
+            : QEvent((QEvent::Type)QEvent::registerEventType()),
+            fFunction(f) { }
+
+        bool Exec() { fFunction(*this); return true; }
+    };
+
+    DimInfo fDimDNS;
+    map<string, DimInfo*> fServices;
+
+    // ======================================================================
+
+    QStandardItem *AddServiceItem(const std::string &server, const std::string &service, bool iscmd)
+    {
+        QListView *servers     = iscmd ? fDimCmdServers     : fDimSvcServers;
+        QListView *services    = iscmd ? fDimCmdCommands    : fDimSvcServices;
+        QListView *description = iscmd ? fDimCmdDescription : fDimSvcDescription;
+
+        QStandardItemModel *m = dynamic_cast<QStandardItemModel*>(servers->model());
+        if (!m)
+        {
+            m = new QStandardItemModel(this);
+            servers->setModel(m);
+            services->setModel(m);
+            description->setModel(m);
+        }
+
+        QList<QStandardItem*> l = m->findItems(server.c_str());
+
+        if (l.size()>1)
+        {
+            cout << "hae" << endl;
+            return 0;
+        }
+
+        QStandardItem *col = l.size()==0 ? NULL : l[0];
+
+        if (!col)
+        {
+            col = new QStandardItem(server.c_str());
+            m->appendRow(col);
+
+            if (!services->rootIndex().isValid())
+            {
+                services->setRootIndex(col->index());
+                servers->setCurrentIndex(col->index());
+            }
+        }
+
+        QStandardItem *item = 0;
+        for (int i=0; i<col->rowCount(); i++)
+        {
+            QStandardItem *coli = col->child(i);
+            if (coli->text().toStdString()==service)
+                return coli;
+        }
+
+        item = new QStandardItem(service.c_str());
+        col->appendRow(item);
+
+        if (!description->rootIndex().isValid())
+        {
+            description->setRootIndex(item->index());
+            services->setCurrentIndex(item->index());
+        }
+
+        if (!iscmd)
+            item->setCheckable(true);
+
+        return item;
+    }
+
+    void AddDescription(QStandardItem *item, const vector<Description> &vec)
+    {
+        if (!item)
+            return;
+        if (vec.size()==0)
+            return;
+
+        item->setToolTip(vec[0].comment.c_str());
+
+        const string str = Description::GetHtmlDescription(vec);
+
+        QStandardItem *desc = new QStandardItem(str.c_str());
+        desc->setSelectable(false);
+        item->setChild(0, 0, desc);
+    }
+
+    // ======================================================================
+
+    void handleAddServer(const std::string &server)
+    {
+        const State s = GetState(server, GetCurrentState(server));
+        handleStateChanged(Time(), server, s);
+    }
+
+    void handleRemoveServer(const string &server)
+    {
+        handleStateOffline(server);
+        handleRemoveAllServices(server);
+    }
+
+    void handleRemoveAllServers()
+    {
+        QStandardItemModel *m = 0;
+        if ((m=dynamic_cast<QStandardItemModel*>(fDimCmdServers->model())))
+            m->removeRows(0, m->rowCount());
+
+        if ((m = dynamic_cast<QStandardItemModel*>(fDimSvcServers->model())))
+            m->removeRows(0, m->rowCount());
+    }
+
+    void handleAddService(const std::string &server, const std::string &service, const std::string &/*fmt*/, bool iscmd)
+    {
+        QStandardItem *item = AddServiceItem(server, service, iscmd);
+        const vector<Description> v = GetDescription(server, service);
+        AddDescription(item, v);
+    }
+
+    void handleRemoveService(const std::string &server, const std::string &service, bool iscmd)
+    {
+        QListView *servers = iscmd ? fDimCmdServers : fDimSvcServers;
+
+        QStandardItemModel *m = dynamic_cast<QStandardItemModel*>(servers->model());
+        if (!m)
+            return;
+
+        QList<QStandardItem*> l = m->findItems(server.c_str());
+        if (l.size()!=1)
+            return;
+
+        for (int i=0; i<l[0]->rowCount(); i++)
+        {
+            QStandardItem *row = l[0]->child(i);
+            if (row->text().toStdString()==service)
+            {
+                l[0]->removeRow(row->index().row());
+                return;
+            }
+        }
+    }
+
+    void handleRemoveAllServices(const std::string &server)
+    {
+        QStandardItemModel *m = 0;
+        if ((m=dynamic_cast<QStandardItemModel*>(fDimCmdServers->model())))
+        {
+            QList<QStandardItem*> l = m->findItems(server.c_str());
+            if (l.size()==1)
+                m->removeRow(l[0]->index().row());
+        }
+
+        if ((m = dynamic_cast<QStandardItemModel*>(fDimSvcServers->model())))
+        {
+            QList<QStandardItem*> l = m->findItems(server.c_str());
+            if (l.size()==1)
+                m->removeRow(l[0]->index().row());
+        }
+    }
+
+    void handleAddDescription(const std::string &server, const std::string &service, const vector<Description> &vec)
+    {
+        const bool iscmd = IsCommand(server, service)==true;
+
+        QStandardItem *item = AddServiceItem(server, service, iscmd);
+        AddDescription(item, vec);
+    }
+
+    void handleStateChanged(const Time &/*time*/, const std::string &server,
+                            const State &s)
+    {
+        // FIXME: Prefix tooltip with time
+        if (server=="FTM_CONTROL")
+        {
+            fStatusFTMLabel->setText(s.name.c_str());
+            fStatusFTMLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<FTM::kDisconnected) // No Dim connection
+            {
+                fStatusFTMLed_1->setEnabled(false);
+                fStatusFTMLed_2->setEnabled(false);
+                fStatusFTMLed_3->setEnabled(false);
+            }
+            if (s.index==FTM::kDisconnected) // Dim connection / FTM disconnected
+            {
+                fStatusFTMLed_1->setEnabled(true);
+                fStatusFTMLed_2->setEnabled(false);
+                fStatusFTMLed_3->setEnabled(false);
+            }
+            if (s.index==FTM::kConnected) // Dim connection / FTM connected
+            {
+                fStatusFTMLed_1->setEnabled(false);
+                fStatusFTMLed_2->setEnabled(true);
+                fStatusFTMLed_3->setEnabled(false);
+            }
+        }
+
+        if (server=="FAD_CONTROL")
+        {
+            fStatusFADLabel->setText(s.name.c_str());
+            fStatusFADLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<FTM::kDisconnected) // No Dim connection
+            {
+                fStatusFADLed_1->setEnabled(false);
+                fStatusFADLed_2->setEnabled(false);
+                fStatusFADLed_3->setEnabled(false);
+            }
+            if (s.index==FTM::kDisconnected) // Dim connection / FTM disconnected
+            {
+                fStatusFADLed_1->setEnabled(true);
+                fStatusFADLed_2->setEnabled(false);
+                fStatusFADLed_3->setEnabled(false);
+            }
+            if (s.index==FTM::kConnected) // Dim connection / FTM connected
+            {
+                fStatusFADLed_1->setEnabled(false);
+                fStatusFADLed_2->setEnabled(true);
+                fStatusFADLed_3->setEnabled(false);
+            }
+        }
+
+        if (server=="DATA_LOGGER")
+        {
+            fStatusLoggerLabel->setText(s.name.c_str());
+            fStatusLoggerLabel->setToolTip(s.comment.c_str());
+
+            if (s.index<-1 || s.index>=0x100) // Error
+            {
+                fStatusLoggerLed_1->setEnabled(false);
+                fStatusLoggerLed_2->setEnabled(false);
+                fStatusLoggerLed_3->setEnabled(false);
+            }
+            if (s.index<=30)   // Waiting
+            {
+                fStatusLoggerLed_1->setEnabled(false);
+                fStatusLoggerLed_2->setEnabled(true);
+                fStatusLoggerLed_3->setEnabled(false);
+            }
+            if (s.index==40)   // Logging
+            {
+                fStatusLoggerLed_1->setEnabled(false);
+                fStatusLoggerLed_2->setEnabled(false);
+                fStatusLoggerLed_3->setEnabled(true);
+            }
+        }
+
+        if (server=="CHAT")
+        {
+            fStatusChatLabel->setText(s.name.c_str());
+
+            if (s.index==FTM::kConnected) // Dim connection / FTM connected
+                fStatusChatLed_3->setEnabled(true);
+            else
+                fStatusChatLed_3->setEnabled(false);
+        }
+    }
+
+    void handleStateOffline(const string &server)
+    {
+        handleStateChanged(Time(), server, State(-2, "Offline", "No connection via DIM."));
+    }
+
+    void handleWrite(const Time &time, const string &text, int qos)
+    {
+        stringstream out;
+
+        if (text.substr(0, 6)=="CHAT: ")
+        {
+            out << "<font size='-1' color='navy'>[<B>";
+            out << Time::fmt("%H:%M:%S") << time << "</B>]</FONT>  ";
+            out << text.substr(6);
+            fChatText->append(out.str().c_str());
+            return;
+        }
+
+
+        out << "<font color=";
+
+        switch (qos)
+        {
+        case kMessage: out << "'black'>"   ""; break;
+        case kInfo:    out << "'green'>"   ""; break;
+        case kWarn:    out << "'#FF6600'>" ""; break;
+        case kError:   out << "'maroon'>"  ""; break;
+        case kFatal:   out << "'maroon'>"  ""; break;
+        case kDebug:   out << "'navy'>"    ""; break;
+        default:       out << "'navy'>"    ""; break;
+        }
+        out << time.GetAsStr() << " - " << text << "</font>";
+
+        fLogText->append(out.str().c_str());
+
+        if (qos>=kWarn)
+            fTextEdit->append(out.str().c_str());
+    }
+
+    void handleDimService(const string &txt)
+    {
+        fDimSvcText->append(txt.c_str());
+    }
+
+    void handleDimDNS(int version)
+    {
+        ostringstream str;
+        str << "DIM V" << version/100 << 'r' << version%100;
+
+        fStatusDNSLed_3->setEnabled(version!=0);
+        fStatusDNSLabel->setText(version==0?"Offline":str.str().c_str());
+        fStatusDNSLabel->setToolTip(version==0?"No connection to DIM DNS.":"Connection to DIM DNS established.");
+    }
+
+    // ======================================================================
+
+    void AddServer(const std::string &s)
+    {
+        DimNetwork::AddServer(s);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleAddServer, this, s)));
+    }
+
+    void RemoveServer(const std::string &s)
+    {
+        UnsubscribeServer(s);
+
+        DimNetwork::RemoveServer(s);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleRemoveServer, this, s)));
+    }
+
+    void RemoveAllServers()
+    {
+        UnsubscribeAllServers();
+
+        vector<string> v = GetServerList();
+        for (vector<string>::iterator i=v.begin(); i<v.end(); i++)
+            QApplication::postEvent(this,
+                                    new FunctionEvent(boost::bind(&FactGui::handleStateOffline, this, *i)));
+
+        DimNetwork::RemoveAllServers();
+
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleRemoveAllServers, this)));
+    }
+
+    void AddService(const std::string &server, const std::string &service, const std::string &fmt, bool iscmd)
+    {
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleAddService, this, server, service, fmt, iscmd)));
+    }
+
+    void RemoveService(const std::string &server, const std::string &service, bool iscmd)
+    {
+        if (fServices.find(server+'/'+service)!=fServices.end())
+            UnsubscribeService(server+'/'+service);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleRemoveService, this, server, service, iscmd)));
+    }
+
+    void RemoveAllServices(const std::string &server)
+    {
+        UnsubscribeServer(server);
+
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleRemoveAllServices, this, server)));
+    }
+
+    void AddDescription(const std::string &server, const std::string &service, const vector<Description> &vec)
+    {
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleAddDescription, this, server, service, vec)));
+    }
+
+
+    void IndicateStateChange(const Time &time, const std::string &server)
+    {
+        const State s = GetState(server, GetCurrentState(server));
+
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleStateChanged, this, time, server, s)));
+    }
+
+    int Write(const Time &time, const string &txt, int qos)
+    {
+        QApplication::postEvent(this,
+           new FunctionEvent(boost::bind(&FactGui::handleWrite, this, time, txt, qos)));
+
+        return 0;
+    }
+
+    void infoHandler(DimInfo &info)
+    {
+        const string fmt = string("DIS_DNS/SERVER_INFO")==info.getName() ? "C" : info.getFormat();
+
+        stringstream dummy;
+        const Converter conv(dummy, fmt, false);
+
+        const Time tm(info.getTimestamp(), info.getTimestampMillisecs());
+
+        stringstream out;
+        out << Time::fmt("%H:%M:%S.%f") << tm << "   <B>" << info.getName() << "</B> - ";
+
+        bool iserr = false;
+        if (!conv)
+        {
+            out << "Compilation of format string '" << fmt << "' failed!";
+            iserr = true;
+        }
+        else
+        {
+            try
+            {
+                const string dat = conv.GetString(info.getData(), info.getSize());
+                out << dat;
+            }
+            catch (const runtime_error &e)
+            {
+                out << "Conversion to string failed!<pre>" << e.what() << "</pre>";
+                iserr = true;
+            }
+        }
+
+        // srand(hash<string>()(string(info.getName())));
+        // int bg = rand()&0xffffff;
+
+        int bg = hash<string>()(string(info.getName()));
+
+        int r = bg&0x1f0000;
+        int g = bg&0x001f00;
+        int b = bg&0x00001f;
+
+        bg = ~(b|g|r)&0xffffff;
+
+        if (iserr)
+            bg = 0xffffff;
+
+        stringstream bgcol;
+        bgcol << hex << setfill('0') << setw(6) << bg;
+
+        const string col = iserr ? "red" : "black";
+        const string str = "<table width='100%' bgcolor=#"+bgcol.str()+"><tr><td><font color='"+col+"'>"+out.str()+"</font></td></tr></table>";
+
+        QApplication::postEvent(this,
+                                new FunctionEvent(boost::bind(&FactGui::handleDimService, this, str)));
+    }
+
+    void infoHandler()
+    {
+        if (getInfo()==&fDimDNS)
+        {
+            QApplication::postEvent(this,
+                                    new FunctionEvent(boost::bind(&FactGui::handleDimDNS, this, getInfo()->getInt())));
+            return;
+        }
+
+        for (map<string,DimInfo*>::iterator i=fServices.begin(); i!=fServices.end(); i++)
+            if (i->second==getInfo())
+            {
+                infoHandler(*i->second);
+                return;
+            }
+
+        DimNetwork::infoHandler();
+    }
+
+    // ======================================================================
+
+
+    void SubscribeService(const string &service)
+    {
+        if (fServices.find(service)!=fServices.end())
+        {
+            cout << "ERROR - We are already subscribed to " << service << endl;
+            return;
+        }
+
+        fServices[service] = new DimStampedInfo(service.c_str(), (void*)NULL, 0, this);
+    }
+
+    void UnsubscribeService(const string &service)
+    {
+        const map<string,DimInfo*>::iterator i=fServices.find(service);
+
+        if (i==fServices.end())
+        {
+            cout << "ERROR - We are not subscribed to " << service << endl;
+            return;
+        }
+
+        delete i->second;
+
+        fServices.erase(i);
+    }
+
+    void UnsubscribeServer(const string &server)
+    {
+        for (map<string,DimInfo*>::iterator i=fServices.begin();
+             i!=fServices.end(); i++)
+            if (i->first.substr(0, server.length()+1)==server+'/')
+            {
+                delete i->second;
+                fServices.erase(i);
+            }
+    }
+
+    void UnsubscribeAllServers()
+    {
+        for (map<string,DimInfo*>::iterator i=fServices.begin();
+             i!=fServices.end(); i++)
+            delete i->second;
+
+        fServices.clear();
+    }
+
+    // ======================================================================
+
+    bool event(QEvent *evt)
+    {
+        if (dynamic_cast<FunctionEvent*>(evt))
+            return static_cast<FunctionEvent*>(evt)->Exec();
+
+        if (dynamic_cast<CheckBoxEvent*>(evt))
+        {
+            const QStandardItem &item = static_cast<CheckBoxEvent*>(evt)->item;
+            const QStandardItem *par  = item.parent();
+            if (par)
+            {
+                const QString server  = par->text();
+                const QString service = item.text();
+
+                const string s = (server+'/'+service).toStdString();
+
+                if (item.checkState()==Qt::Checked)
+                    SubscribeService(s);
+                else
+                    UnsubscribeService(s);
+            }
+        }
+
+        return MainWindow::event(evt); // unrecognized
+    }
+
+    void on_fDimCmdSend_clicked(bool)
+    {
+        const QString server    = fDimCmdServers->currentIndex().data().toString();
+        const QString command   = fDimCmdCommands->currentIndex().data().toString();
+        const QString arguments = fDimCmdLineEdit->displayText();
+
+        // FIXME: Sending a command exactly when the info Handler changes
+        //        the list it might lead to confusion.
+        try
+        {
+            SendDimCommand(server.toStdString(), command.toStdString()+" "+arguments.toStdString());
+            fTextEdit->append("<font color='green'>Command '"+server+'/'+command+"' successfully emitted.</font>");
+            fDimCmdLineEdit->clear();
+        }
+        catch (const runtime_error &e)
+        {
+            stringstream txt;
+            txt << e.what();
+
+            string buffer;
+            while (getline(txt, buffer, '\n'))
+                fTextEdit->append(("<font color='red'><pre>"+buffer+"</pre></font>").c_str());
+        }
+    }
+
+public:
+    FactGui() : fDimDNS("DIS_DNS/VERSION_NUMBER", 1, int(0), this)
+    {
+        DimClient::sendCommand("CHAT/MSG", "GUI online.");
+        // + MessageDimRX
+    }
+    ~FactGui()
+    {
+        UnsubscribeAllServers();
+    }
+};
+
+#endif
Index: /trunk/FACT++/gui/HtmlDelegate.cc
===================================================================
--- /trunk/FACT++/gui/HtmlDelegate.cc	(revision 10394)
+++ /trunk/FACT++/gui/HtmlDelegate.cc	(revision 10394)
@@ -0,0 +1,18 @@
+#include "HtmlDelegate.h"
+
+#include <QtGui/QPainter>
+#include <QtGui/QTextDocument>
+
+void HtmlDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QTextDocument doc;
+    doc.setHtml(index.data().toString());
+    doc.drawContents(painter, option.rect);
+}
+
+QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
+{
+    QTextDocument doc;
+    doc.setHtml(index.data().toString());
+    return doc.size().toSize();
+}
Index: /trunk/FACT++/gui/HtmlDelegate.h
===================================================================
--- /trunk/FACT++/gui/HtmlDelegate.h	(revision 10394)
+++ /trunk/FACT++/gui/HtmlDelegate.h	(revision 10394)
@@ -0,0 +1,25 @@
+#ifndef FACT_HtmlDelegate
+#define FACT_HtmlDelegate
+
+#include <QtGui/QStyledItemDelegate>
+
+using namespace std;
+
+class HtmlDelegate : public QStyledItemDelegate
+{
+    Q_OBJECT;
+
+public:
+    HtmlDelegate(QObject *p=0) : QStyledItemDelegate(p)
+    {
+    }
+
+    void paint(QPainter *painter,
+               const QStyleOptionViewItem &option,
+               const QModelIndex &index) const;
+
+    QSize sizeHint(const QStyleOptionViewItem &option,
+                   const QModelIndex &index) const;
+};
+
+#endif
Index: /trunk/FACT++/gui/MainWindow.cc
===================================================================
--- /trunk/FACT++/gui/MainWindow.cc	(revision 10394)
+++ /trunk/FACT++/gui/MainWindow.cc	(revision 10394)
@@ -0,0 +1,75 @@
+#include "MainWindow.h"
+
+#include "dic.hxx"
+
+#include "DockWindow.h"
+#include "HtmlDelegate.h"
+#include "CheckBoxDelegate.h"
+
+using namespace std;
+
+MainWindow::MainWindow(QWidget *p) : QMainWindow(p)
+{
+    // setupUi MUST be called before the DimNetwork is initilized
+    // In this way it can be ensured that nothing from the
+    // DimNetwork arrives before all graphical elements are
+    // initialized. This is a simple but very powerfull trick.
+    setupUi(this);
+
+    // Now here we can do further setup which should be done
+    // before the gui is finally displayed.
+    fDimCmdServers->setItemDelegate(new CheckBoxDelegate);
+    fDimCmdCommands->setItemDelegate(new CheckBoxDelegate);
+    fDimCmdDescription->setItemDelegate(new HtmlDelegate);
+
+    fDimSvcServers->setItemDelegate(new CheckBoxDelegate);
+    fDimSvcServices->setItemDelegate(new CheckBoxDelegate);
+    fDimSvcDescription->setItemDelegate(new HtmlDelegate);
+
+    fStatusBar->showMessage("FACT++");
+}
+
+
+void MainWindow::on_fTabWidget_tabCloseRequested(int which)
+{
+    QWidget *w = fTabWidget->widget(which);
+    if (!w)
+        return;
+
+    QDockWidget *d = w->findChild<QDockWidget*>();
+    if (!d)
+        return;
+
+    DockWindow *mw = new DockWindow(d, fTabWidget->tabText(which));
+    fTabWidget->removeTab(which);
+    mw->show();
+
+    if (fTabWidget->count()==1)
+        fTabWidget->setTabsClosable(false);
+}
+
+
+void MainWindow::on_fChatSend_clicked(bool)
+{
+    DimClient::sendCommand("CHAT/MSG", fChatMessage->displayText().toStdString().c_str());
+    fChatMessage->clear();
+}
+
+
+void MainWindow::on_fShutdown_clicked(bool)
+{
+    DimClient::sendCommand("DIS_DNS/KILL_SERVERS", NULL, 0);
+}
+
+
+void MainWindow::on_fShutdownAll_clicked(bool)
+{
+    DimClient::sendCommand("DIS_DNS/KILL_SERVERS", NULL, 0);
+    DimClient::sendCommand("DIS_DNS/EXIT",         1);
+}
+
+
+void MainWindow::on_fStatusFTMEnable_stateChanged(int/* state*/)
+{
+
+}
Index: /trunk/FACT++/gui/MainWindow.h
===================================================================
--- /trunk/FACT++/gui/MainWindow.h	(revision 10394)
+++ /trunk/FACT++/gui/MainWindow.h	(revision 10394)
@@ -0,0 +1,26 @@
+#ifndef FACT_MainWindow
+#define FACT_MainWindow
+
+#include "design.h"
+
+#include <QtGui/QMainWindow>
+
+class MainWindow : public QMainWindow, protected Ui::MainWindow
+{
+    Q_OBJECT;
+
+public:
+    MainWindow(QWidget *p=0);
+
+private slots:
+    /// Needs access to DimNetwork thus it is implemented in the derived class
+    virtual void on_fDimCmdSend_clicked(bool) { }
+
+    void on_fTabWidget_tabCloseRequested(int which);
+    void on_fChatSend_clicked(bool);
+    void on_fShutdown_clicked(bool);
+    void on_fShutdownAll_clicked(bool);
+    void on_fStatusFTMEnable_stateChanged(int state);
+};
+
+#endif
Index: /trunk/FACT++/gui/design.h
===================================================================
--- /trunk/FACT++/gui/design.h	(revision 10394)
+++ /trunk/FACT++/gui/design.h	(revision 10394)
@@ -0,0 +1,1044 @@
+/********************************************************************************
+** Form generated from reading UI file 'design.ui'
+**
+** Created: Mon Apr 18 15:55:38 2011
+**      by: Qt User Interface Compiler version 4.7.0
+**
+** WARNING! All changes made in this file will be lost when recompiling UI file!
+********************************************************************************/
+
+#ifndef DESIGN_H
+#define DESIGN_H
+
+#include <QtCore/QVariant>
+#include <QtGui/QAction>
+#include <QtGui/QApplication>
+#include <QtGui/QButtonGroup>
+#include <QtGui/QCheckBox>
+#include <QtGui/QDockWidget>
+#include <QtGui/QFrame>
+#include <QtGui/QGridLayout>
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QHeaderView>
+#include <QtGui/QLabel>
+#include <QtGui/QLineEdit>
+#include <QtGui/QListView>
+#include <QtGui/QMainWindow>
+#include <QtGui/QMenu>
+#include <QtGui/QMenuBar>
+#include <QtGui/QPushButton>
+#include <QtGui/QSpacerItem>
+#include <QtGui/QStatusBar>
+#include <QtGui/QTabWidget>
+#include <QtGui/QTextEdit>
+#include <QtGui/QVBoxLayout>
+#include <QtGui/QWidget>
+
+QT_BEGIN_NAMESPACE
+
+class Ui_MainWindow
+{
+public:
+    QAction *fMenuLogSaveAs;
+    QAction *actionTest;
+    QWidget *fCentralWidget;
+    QGridLayout *gridLayout;
+    QTabWidget *fTabWidget;
+    QWidget *tab;
+    QGridLayout *gridLayout_3;
+    QDockWidget *fDimSvcDock;
+    QWidget *fDimSvcWidget;
+    QGridLayout *gridLayout_10;
+    QHBoxLayout *horizontalLayout_7;
+    QListView *fDimSvcServers;
+    QListView *fDimSvcServices;
+    QListView *fDimSvcDescription;
+    QTextEdit *fDimSvcText;
+    QWidget *tab_2;
+    QWidget *fDimCmdTab;
+    QGridLayout *gridLayout_2;
+    QDockWidget *fDimCmdDock;
+    QWidget *fDimCmdWidget;
+    QGridLayout *gridLayout_7;
+    QHBoxLayout *horizontalLayout_5;
+    QListView *fDimCmdServers;
+    QListView *fDimCmdCommands;
+    QListView *fDimCmdDescription;
+    QHBoxLayout *horizontalLayout_6;
+    QLabel *label_2;
+    QLineEdit *fDimCmdLineEdit;
+    QPushButton *fDimCmdSend;
+    QWidget *fLogTab;
+    QGridLayout *gridLayout_4;
+    QDockWidget *fLogDock;
+    QWidget *fLogWidget;
+    QGridLayout *gridLayout_5;
+    QHBoxLayout *horizontalLayout_2;
+    QSpacerItem *horizontalSpacer_2;
+    QPushButton *fLogClear;
+    QSpacerItem *horizontalSpacer_3;
+    QPushButton *fLogFontPlus;
+    QPushButton *fLogFontMinus;
+    QTextEdit *fLogText;
+    QFrame *line_3;
+    QWidget *fChatTab;
+    QGridLayout *gridLayout_9;
+    QDockWidget *fChatDock;
+    QWidget *fChatWidget;
+    QGridLayout *gridLayout_8;
+    QHBoxLayout *horizontalLayout_3;
+    QSpacerItem *horizontalSpacer_5;
+    QPushButton *fChatClear;
+    QSpacerItem *horizontalSpacer_6;
+    QPushButton *fChatFontPlus;
+    QPushButton *fChatFontMinus;
+    QTextEdit *fChatText;
+    QHBoxLayout *horizontalLayout_4;
+    QLineEdit *fChatMessage;
+    QPushButton *fChatSend;
+    QMenuBar *fMenuBar;
+    QMenu *fMenuLog;
+    QMenu *menuFile;
+    QStatusBar *fStatusBar;
+    QDockWidget *dockWidget_2;
+    QWidget *dockWidgetContents_2;
+    QVBoxLayout *verticalLayout_3;
+    QVBoxLayout *verticalLayout_2;
+    QHBoxLayout *horizontalLayout;
+    QLabel *label;
+    QSpacerItem *horizontalSpacer;
+    QPushButton *fTextClear;
+    QSpacerItem *horizontalSpacer_4;
+    QPushButton *fTextFontPlus;
+    QPushButton *fTextFontMinus;
+    QTextEdit *fTextEdit;
+    QDockWidget *fStatusDock;
+    QWidget *fStatusContent;
+    QVBoxLayout *verticalLayout;
+    QGridLayout *gridLayout_11;
+    QLabel *fStatusDNSLabel;
+    QPushButton *fStatusDNSLed_3;
+    QLabel *fStatusFTMLabel;
+    QPushButton *fStatusFTMLed_3;
+    QPushButton *fStatusFTMLed_2;
+    QPushButton *fStatusFTMLed_1;
+    QCheckBox *fStatusFTMEnable;
+    QLabel *fStatusFTM;
+    QLabel *fStatusDNS;
+    QLabel *fStatusFADLabel;
+    QPushButton *fStatusFADLed_3;
+    QPushButton *fStatusFADLed_2;
+    QPushButton *fStatusFADLed_1;
+    QCheckBox *fStatusFADEnable;
+    QLabel *fStatusFAD;
+    QLabel *fStatusChatLabel;
+    QPushButton *fStatusChatLed_3;
+    QCheckBox *fStatusChatEnable;
+    QLabel *fStatusChat;
+    QLabel *fStatusLogger;
+    QCheckBox *fStatusLoggerEnable;
+    QPushButton *fStatusLoggerLed_1;
+    QPushButton *fStatusLoggerLed_2;
+    QPushButton *fStatusLoggerLed_3;
+    QLabel *fStatusLoggerLabel;
+    QPushButton *fShutdown;
+    QPushButton *fShutdownAll;
+
+    void setupUi(QMainWindow *MainWindow)
+    {
+        if (MainWindow->objectName().isEmpty())
+            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
+        MainWindow->resize(1024, 768);
+        QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+        sizePolicy.setHorizontalStretch(1);
+        sizePolicy.setVerticalStretch(1);
+        sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth());
+        MainWindow->setSizePolicy(sizePolicy);
+        MainWindow->setDockNestingEnabled(false);
+        fMenuLogSaveAs = new QAction(MainWindow);
+        fMenuLogSaveAs->setObjectName(QString::fromUtf8("fMenuLogSaveAs"));
+        actionTest = new QAction(MainWindow);
+        actionTest->setObjectName(QString::fromUtf8("actionTest"));
+        fCentralWidget = new QWidget(MainWindow);
+        fCentralWidget->setObjectName(QString::fromUtf8("fCentralWidget"));
+        gridLayout = new QGridLayout(fCentralWidget);
+        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
+        fTabWidget = new QTabWidget(fCentralWidget);
+        fTabWidget->setObjectName(QString::fromUtf8("fTabWidget"));
+        QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
+        sizePolicy1.setHorizontalStretch(0);
+        sizePolicy1.setVerticalStretch(0);
+        sizePolicy1.setHeightForWidth(fTabWidget->sizePolicy().hasHeightForWidth());
+        fTabWidget->setSizePolicy(sizePolicy1);
+        fTabWidget->setMouseTracking(true);
+        fTabWidget->setDocumentMode(false);
+        fTabWidget->setTabsClosable(true);
+        fTabWidget->setMovable(true);
+        tab = new QWidget();
+        tab->setObjectName(QString::fromUtf8("tab"));
+        gridLayout_3 = new QGridLayout(tab);
+        gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
+        fDimSvcDock = new QDockWidget(tab);
+        fDimSvcDock->setObjectName(QString::fromUtf8("fDimSvcDock"));
+        sizePolicy1.setHeightForWidth(fDimSvcDock->sizePolicy().hasHeightForWidth());
+        fDimSvcDock->setSizePolicy(sizePolicy1);
+        fDimSvcDock->setFeatures(QDockWidget::NoDockWidgetFeatures);
+        fDimSvcDock->setAllowedAreas(Qt::AllDockWidgetAreas);
+        fDimSvcWidget = new QWidget();
+        fDimSvcWidget->setObjectName(QString::fromUtf8("fDimSvcWidget"));
+        sizePolicy1.setHeightForWidth(fDimSvcWidget->sizePolicy().hasHeightForWidth());
+        fDimSvcWidget->setSizePolicy(sizePolicy1);
+        gridLayout_10 = new QGridLayout(fDimSvcWidget);
+        gridLayout_10->setObjectName(QString::fromUtf8("gridLayout_10"));
+        horizontalLayout_7 = new QHBoxLayout();
+        horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
+        horizontalLayout_7->setContentsMargins(-1, 0, -1, -1);
+        fDimSvcServers = new QListView(fDimSvcWidget);
+        fDimSvcServers->setObjectName(QString::fromUtf8("fDimSvcServers"));
+        QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Expanding);
+        sizePolicy2.setHorizontalStretch(3);
+        sizePolicy2.setVerticalStretch(0);
+        sizePolicy2.setHeightForWidth(fDimSvcServers->sizePolicy().hasHeightForWidth());
+        fDimSvcServers->setSizePolicy(sizePolicy2);
+        fDimSvcServers->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        fDimSvcServers->setProperty("showDropIndicator", QVariant(false));
+        fDimSvcServers->setAlternatingRowColors(true);
+        fDimSvcServers->setMovement(QListView::Static);
+        fDimSvcServers->setResizeMode(QListView::Fixed);
+        fDimSvcServers->setSelectionRectVisible(true);
+
+        horizontalLayout_7->addWidget(fDimSvcServers);
+
+        fDimSvcServices = new QListView(fDimSvcWidget);
+        fDimSvcServices->setObjectName(QString::fromUtf8("fDimSvcServices"));
+        QSizePolicy sizePolicy3(QSizePolicy::Expanding, QSizePolicy::Expanding);
+        sizePolicy3.setHorizontalStretch(5);
+        sizePolicy3.setVerticalStretch(0);
+        sizePolicy3.setHeightForWidth(fDimSvcServices->sizePolicy().hasHeightForWidth());
+        fDimSvcServices->setSizePolicy(sizePolicy3);
+        fDimSvcServices->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        fDimSvcServices->setProperty("showDropIndicator", QVariant(false));
+        fDimSvcServices->setAlternatingRowColors(true);
+        fDimSvcServices->setMovement(QListView::Static);
+        fDimSvcServices->setResizeMode(QListView::Fixed);
+
+        horizontalLayout_7->addWidget(fDimSvcServices);
+
+        fDimSvcDescription = new QListView(fDimSvcWidget);
+        fDimSvcDescription->setObjectName(QString::fromUtf8("fDimSvcDescription"));
+        QSizePolicy sizePolicy4(QSizePolicy::Expanding, QSizePolicy::Expanding);
+        sizePolicy4.setHorizontalStretch(8);
+        sizePolicy4.setVerticalStretch(0);
+        sizePolicy4.setHeightForWidth(fDimSvcDescription->sizePolicy().hasHeightForWidth());
+        fDimSvcDescription->setSizePolicy(sizePolicy4);
+        fDimSvcDescription->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        fDimSvcDescription->setProperty("showDropIndicator", QVariant(false));
+        fDimSvcDescription->setSelectionMode(QAbstractItemView::NoSelection);
+        fDimSvcDescription->setMovement(QListView::Static);
+        fDimSvcDescription->setProperty("isWrapping", QVariant(false));
+        fDimSvcDescription->setResizeMode(QListView::Fixed);
+
+        horizontalLayout_7->addWidget(fDimSvcDescription);
+
+
+        gridLayout_10->addLayout(horizontalLayout_7, 2, 0, 1, 1);
+
+        fDimSvcText = new QTextEdit(fDimSvcWidget);
+        fDimSvcText->setObjectName(QString::fromUtf8("fDimSvcText"));
+        fDimSvcText->setTextInteractionFlags(Qt::TextSelectableByMouse);
+
+        gridLayout_10->addWidget(fDimSvcText, 3, 0, 1, 1);
+
+        fDimSvcDock->setWidget(fDimSvcWidget);
+
+        gridLayout_3->addWidget(fDimSvcDock, 0, 0, 1, 1);
+
+        fTabWidget->addTab(tab, QString());
+        tab_2 = new QWidget();
+        tab_2->setObjectName(QString::fromUtf8("tab_2"));
+        fTabWidget->addTab(tab_2, QString());
+        fDimCmdTab = new QWidget();
+        fDimCmdTab->setObjectName(QString::fromUtf8("fDimCmdTab"));
+        sizePolicy1.setHeightForWidth(fDimCmdTab->sizePolicy().hasHeightForWidth());
+        fDimCmdTab->setSizePolicy(sizePolicy1);
+        gridLayout_2 = new QGridLayout(fDimCmdTab);
+        gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
+        fDimCmdDock = new QDockWidget(fDimCmdTab);
+        fDimCmdDock->setObjectName(QString::fromUtf8("fDimCmdDock"));
+        sizePolicy1.setHeightForWidth(fDimCmdDock->sizePolicy().hasHeightForWidth());
+        fDimCmdDock->setSizePolicy(sizePolicy1);
+        fDimCmdDock->setFeatures(QDockWidget::NoDockWidgetFeatures);
+        fDimCmdDock->setAllowedAreas(Qt::AllDockWidgetAreas);
+        fDimCmdWidget = new QWidget();
+        fDimCmdWidget->setObjectName(QString::fromUtf8("fDimCmdWidget"));
+        sizePolicy1.setHeightForWidth(fDimCmdWidget->sizePolicy().hasHeightForWidth());
+        fDimCmdWidget->setSizePolicy(sizePolicy1);
+        gridLayout_7 = new QGridLayout(fDimCmdWidget);
+        gridLayout_7->setObjectName(QString::fromUtf8("gridLayout_7"));
+        horizontalLayout_5 = new QHBoxLayout();
+        horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
+        horizontalLayout_5->setContentsMargins(-1, 0, -1, -1);
+        fDimCmdServers = new QListView(fDimCmdWidget);
+        fDimCmdServers->setObjectName(QString::fromUtf8("fDimCmdServers"));
+        sizePolicy2.setHeightForWidth(fDimCmdServers->sizePolicy().hasHeightForWidth());
+        fDimCmdServers->setSizePolicy(sizePolicy2);
+        fDimCmdServers->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        fDimCmdServers->setProperty("showDropIndicator", QVariant(false));
+        fDimCmdServers->setAlternatingRowColors(true);
+        fDimCmdServers->setMovement(QListView::Static);
+        fDimCmdServers->setResizeMode(QListView::Fixed);
+        fDimCmdServers->setSelectionRectVisible(true);
+
+        horizontalLayout_5->addWidget(fDimCmdServers);
+
+        fDimCmdCommands = new QListView(fDimCmdWidget);
+        fDimCmdCommands->setObjectName(QString::fromUtf8("fDimCmdCommands"));
+        sizePolicy3.setHeightForWidth(fDimCmdCommands->sizePolicy().hasHeightForWidth());
+        fDimCmdCommands->setSizePolicy(sizePolicy3);
+        fDimCmdCommands->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        fDimCmdCommands->setProperty("showDropIndicator", QVariant(false));
+        fDimCmdCommands->setAlternatingRowColors(true);
+        fDimCmdCommands->setMovement(QListView::Static);
+        fDimCmdCommands->setResizeMode(QListView::Fixed);
+
+        horizontalLayout_5->addWidget(fDimCmdCommands);
+
+        fDimCmdDescription = new QListView(fDimCmdWidget);
+        fDimCmdDescription->setObjectName(QString::fromUtf8("fDimCmdDescription"));
+        sizePolicy4.setHeightForWidth(fDimCmdDescription->sizePolicy().hasHeightForWidth());
+        fDimCmdDescription->setSizePolicy(sizePolicy4);
+        fDimCmdDescription->setEditTriggers(QAbstractItemView::NoEditTriggers);
+        fDimCmdDescription->setProperty("showDropIndicator", QVariant(false));
+        fDimCmdDescription->setSelectionMode(QAbstractItemView::NoSelection);
+        fDimCmdDescription->setMovement(QListView::Static);
+        fDimCmdDescription->setProperty("isWrapping", QVariant(false));
+        fDimCmdDescription->setResizeMode(QListView::Fixed);
+
+        horizontalLayout_5->addWidget(fDimCmdDescription);
+
+
+        gridLayout_7->addLayout(horizontalLayout_5, 2, 0, 1, 1);
+
+        horizontalLayout_6 = new QHBoxLayout();
+        horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
+        horizontalLayout_6->setContentsMargins(-1, 0, -1, -1);
+        label_2 = new QLabel(fDimCmdWidget);
+        label_2->setObjectName(QString::fromUtf8("label_2"));
+
+        horizontalLayout_6->addWidget(label_2);
+
+        fDimCmdLineEdit = new QLineEdit(fDimCmdWidget);
+        fDimCmdLineEdit->setObjectName(QString::fromUtf8("fDimCmdLineEdit"));
+
+        horizontalLayout_6->addWidget(fDimCmdLineEdit);
+
+        fDimCmdSend = new QPushButton(fDimCmdWidget);
+        fDimCmdSend->setObjectName(QString::fromUtf8("fDimCmdSend"));
+
+        horizontalLayout_6->addWidget(fDimCmdSend);
+
+
+        gridLayout_7->addLayout(horizontalLayout_6, 4, 0, 1, 1);
+
+        fDimCmdDock->setWidget(fDimCmdWidget);
+
+        gridLayout_2->addWidget(fDimCmdDock, 0, 0, 1, 1);
+
+        fTabWidget->addTab(fDimCmdTab, QString());
+        fLogTab = new QWidget();
+        fLogTab->setObjectName(QString::fromUtf8("fLogTab"));
+        sizePolicy1.setHeightForWidth(fLogTab->sizePolicy().hasHeightForWidth());
+        fLogTab->setSizePolicy(sizePolicy1);
+        gridLayout_4 = new QGridLayout(fLogTab);
+        gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4"));
+        fLogDock = new QDockWidget(fLogTab);
+        fLogDock->setObjectName(QString::fromUtf8("fLogDock"));
+        sizePolicy1.setHeightForWidth(fLogDock->sizePolicy().hasHeightForWidth());
+        fLogDock->setSizePolicy(sizePolicy1);
+        fLogDock->setFeatures(QDockWidget::NoDockWidgetFeatures);
+        fLogWidget = new QWidget();
+        fLogWidget->setObjectName(QString::fromUtf8("fLogWidget"));
+        sizePolicy1.setHeightForWidth(fLogWidget->sizePolicy().hasHeightForWidth());
+        fLogWidget->setSizePolicy(sizePolicy1);
+        gridLayout_5 = new QGridLayout(fLogWidget);
+        gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5"));
+        horizontalLayout_2 = new QHBoxLayout();
+        horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
+        horizontalLayout_2->setContentsMargins(-1, 0, -1, -1);
+        horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+        horizontalLayout_2->addItem(horizontalSpacer_2);
+
+        fLogClear = new QPushButton(fLogWidget);
+        fLogClear->setObjectName(QString::fromUtf8("fLogClear"));
+
+        horizontalLayout_2->addWidget(fLogClear);
+
+        horizontalSpacer_3 = new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
+
+        horizontalLayout_2->addItem(horizontalSpacer_3);
+
+        fLogFontPlus = new QPushButton(fLogWidget);
+        fLogFontPlus->setObjectName(QString::fromUtf8("fLogFontPlus"));
+
+        horizontalLayout_2->addWidget(fLogFontPlus);
+
+        fLogFontMinus = new QPushButton(fLogWidget);
+        fLogFontMinus->setObjectName(QString::fromUtf8("fLogFontMinus"));
+
+        horizontalLayout_2->addWidget(fLogFontMinus);
+
+
+        gridLayout_5->addLayout(horizontalLayout_2, 1, 1, 1, 1);
+
+        fLogText = new QTextEdit(fLogWidget);
+        fLogText->setObjectName(QString::fromUtf8("fLogText"));
+        fLogText->setFrameShape(QFrame::StyledPanel);
+        fLogText->setFrameShadow(QFrame::Sunken);
+        fLogText->setAutoFormatting(QTextEdit::AutoNone);
+        fLogText->setUndoRedoEnabled(false);
+        fLogText->setReadOnly(true);
+        fLogText->setTextInteractionFlags(Qt::TextSelectableByMouse);
+
+        gridLayout_5->addWidget(fLogText, 2, 1, 1, 1);
+
+        line_3 = new QFrame(fLogWidget);
+        line_3->setObjectName(QString::fromUtf8("line_3"));
+        line_3->setFrameShape(QFrame::VLine);
+        line_3->setFrameShadow(QFrame::Sunken);
+
+        gridLayout_5->addWidget(line_3, 0, 1, 1, 1);
+
+        fLogDock->setWidget(fLogWidget);
+
+        gridLayout_4->addWidget(fLogDock, 0, 0, 1, 1);
+
+        fTabWidget->addTab(fLogTab, QString());
+        fChatTab = new QWidget();
+        fChatTab->setObjectName(QString::fromUtf8("fChatTab"));
+        gridLayout_9 = new QGridLayout(fChatTab);
+        gridLayout_9->setObjectName(QString::fromUtf8("gridLayout_9"));
+        fChatDock = new QDockWidget(fChatTab);
+        fChatDock->setObjectName(QString::fromUtf8("fChatDock"));
+        sizePolicy1.setHeightForWidth(fChatDock->sizePolicy().hasHeightForWidth());
+        fChatDock->setSizePolicy(sizePolicy1);
+        fChatDock->setFeatures(QDockWidget::NoDockWidgetFeatures);
+        fChatWidget = new QWidget();
+        fChatWidget->setObjectName(QString::fromUtf8("fChatWidget"));
+        sizePolicy1.setHeightForWidth(fChatWidget->sizePolicy().hasHeightForWidth());
+        fChatWidget->setSizePolicy(sizePolicy1);
+        gridLayout_8 = new QGridLayout(fChatWidget);
+        gridLayout_8->setObjectName(QString::fromUtf8("gridLayout_8"));
+        horizontalLayout_3 = new QHBoxLayout();
+        horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
+        horizontalLayout_3->setContentsMargins(-1, 0, -1, -1);
+        horizontalSpacer_5 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+        horizontalLayout_3->addItem(horizontalSpacer_5);
+
+        fChatClear = new QPushButton(fChatWidget);
+        fChatClear->setObjectName(QString::fromUtf8("fChatClear"));
+
+        horizontalLayout_3->addWidget(fChatClear);
+
+        horizontalSpacer_6 = new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
+
+        horizontalLayout_3->addItem(horizontalSpacer_6);
+
+        fChatFontPlus = new QPushButton(fChatWidget);
+        fChatFontPlus->setObjectName(QString::fromUtf8("fChatFontPlus"));
+
+        horizontalLayout_3->addWidget(fChatFontPlus);
+
+        fChatFontMinus = new QPushButton(fChatWidget);
+        fChatFontMinus->setObjectName(QString::fromUtf8("fChatFontMinus"));
+
+        horizontalLayout_3->addWidget(fChatFontMinus);
+
+
+        gridLayout_8->addLayout(horizontalLayout_3, 0, 1, 1, 1);
+
+        fChatText = new QTextEdit(fChatWidget);
+        fChatText->setObjectName(QString::fromUtf8("fChatText"));
+        fChatText->setFrameShape(QFrame::StyledPanel);
+        fChatText->setFrameShadow(QFrame::Sunken);
+        fChatText->setAutoFormatting(QTextEdit::AutoNone);
+        fChatText->setUndoRedoEnabled(false);
+        fChatText->setReadOnly(true);
+        fChatText->setTextInteractionFlags(Qt::TextSelectableByMouse);
+
+        gridLayout_8->addWidget(fChatText, 1, 1, 1, 1);
+
+        horizontalLayout_4 = new QHBoxLayout();
+        horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
+        horizontalLayout_4->setContentsMargins(-1, 0, -1, -1);
+        fChatMessage = new QLineEdit(fChatWidget);
+        fChatMessage->setObjectName(QString::fromUtf8("fChatMessage"));
+        fChatMessage->setFrame(false);
+        fChatMessage->setDragEnabled(false);
+
+        horizontalLayout_4->addWidget(fChatMessage);
+
+        fChatSend = new QPushButton(fChatWidget);
+        fChatSend->setObjectName(QString::fromUtf8("fChatSend"));
+
+        horizontalLayout_4->addWidget(fChatSend);
+
+
+        gridLayout_8->addLayout(horizontalLayout_4, 2, 1, 1, 1);
+
+        fChatDock->setWidget(fChatWidget);
+
+        gridLayout_9->addWidget(fChatDock, 0, 0, 1, 1);
+
+        fTabWidget->addTab(fChatTab, QString());
+
+        gridLayout->addWidget(fTabWidget, 0, 0, 1, 1);
+
+        MainWindow->setCentralWidget(fCentralWidget);
+        fMenuBar = new QMenuBar(MainWindow);
+        fMenuBar->setObjectName(QString::fromUtf8("fMenuBar"));
+        fMenuBar->setGeometry(QRect(0, 0, 1024, 21));
+        fMenuLog = new QMenu(fMenuBar);
+        fMenuLog->setObjectName(QString::fromUtf8("fMenuLog"));
+        menuFile = new QMenu(fMenuBar);
+        menuFile->setObjectName(QString::fromUtf8("menuFile"));
+        MainWindow->setMenuBar(fMenuBar);
+        fStatusBar = new QStatusBar(MainWindow);
+        fStatusBar->setObjectName(QString::fromUtf8("fStatusBar"));
+        MainWindow->setStatusBar(fStatusBar);
+        dockWidget_2 = new QDockWidget(MainWindow);
+        dockWidget_2->setObjectName(QString::fromUtf8("dockWidget_2"));
+        QSizePolicy sizePolicy5(QSizePolicy::Preferred, QSizePolicy::Preferred);
+        sizePolicy5.setHorizontalStretch(0);
+        sizePolicy5.setVerticalStretch(0);
+        sizePolicy5.setHeightForWidth(dockWidget_2->sizePolicy().hasHeightForWidth());
+        dockWidget_2->setSizePolicy(sizePolicy5);
+        dockWidget_2->setMinimumSize(QSize(290, 260));
+        dockWidget_2->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable);
+        dockWidget_2->setAllowedAreas(Qt::BottomDockWidgetArea|Qt::TopDockWidgetArea);
+        dockWidgetContents_2 = new QWidget();
+        dockWidgetContents_2->setObjectName(QString::fromUtf8("dockWidgetContents_2"));
+        sizePolicy1.setHeightForWidth(dockWidgetContents_2->sizePolicy().hasHeightForWidth());
+        dockWidgetContents_2->setSizePolicy(sizePolicy1);
+        verticalLayout_3 = new QVBoxLayout(dockWidgetContents_2);
+        verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));
+        verticalLayout_2 = new QVBoxLayout();
+        verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
+        horizontalLayout = new QHBoxLayout();
+        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
+        horizontalLayout->setSizeConstraint(QLayout::SetDefaultConstraint);
+        horizontalLayout->setContentsMargins(-1, 0, -1, -1);
+        label = new QLabel(dockWidgetContents_2);
+        label->setObjectName(QString::fromUtf8("label"));
+
+        horizontalLayout->addWidget(label);
+
+        horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+        horizontalLayout->addItem(horizontalSpacer);
+
+        fTextClear = new QPushButton(dockWidgetContents_2);
+        fTextClear->setObjectName(QString::fromUtf8("fTextClear"));
+
+        horizontalLayout->addWidget(fTextClear);
+
+        horizontalSpacer_4 = new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
+
+        horizontalLayout->addItem(horizontalSpacer_4);
+
+        fTextFontPlus = new QPushButton(dockWidgetContents_2);
+        fTextFontPlus->setObjectName(QString::fromUtf8("fTextFontPlus"));
+
+        horizontalLayout->addWidget(fTextFontPlus);
+
+        fTextFontMinus = new QPushButton(dockWidgetContents_2);
+        fTextFontMinus->setObjectName(QString::fromUtf8("fTextFontMinus"));
+
+        horizontalLayout->addWidget(fTextFontMinus);
+
+
+        verticalLayout_2->addLayout(horizontalLayout);
+
+        fTextEdit = new QTextEdit(dockWidgetContents_2);
+        fTextEdit->setObjectName(QString::fromUtf8("fTextEdit"));
+        QSizePolicy sizePolicy6(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+        sizePolicy6.setHorizontalStretch(0);
+        sizePolicy6.setVerticalStretch(0);
+        sizePolicy6.setHeightForWidth(fTextEdit->sizePolicy().hasHeightForWidth());
+        fTextEdit->setSizePolicy(sizePolicy6);
+        fTextEdit->setUndoRedoEnabled(false);
+        fTextEdit->setReadOnly(true);
+
+        verticalLayout_2->addWidget(fTextEdit);
+
+
+        verticalLayout_3->addLayout(verticalLayout_2);
+
+        dockWidget_2->setWidget(dockWidgetContents_2);
+        MainWindow->addDockWidget(static_cast<Qt::DockWidgetArea>(8), dockWidget_2);
+        fStatusDock = new QDockWidget(MainWindow);
+        fStatusDock->setObjectName(QString::fromUtf8("fStatusDock"));
+        QSizePolicy sizePolicy7(QSizePolicy::Minimum, QSizePolicy::Preferred);
+        sizePolicy7.setHorizontalStretch(0);
+        sizePolicy7.setVerticalStretch(0);
+        sizePolicy7.setHeightForWidth(fStatusDock->sizePolicy().hasHeightForWidth());
+        fStatusDock->setSizePolicy(sizePolicy7);
+        fStatusDock->setMinimumSize(QSize(207, 237));
+        fStatusDock->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable);
+        fStatusDock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
+        fStatusContent = new QWidget();
+        fStatusContent->setObjectName(QString::fromUtf8("fStatusContent"));
+        verticalLayout = new QVBoxLayout(fStatusContent);
+        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
+        gridLayout_11 = new QGridLayout();
+        gridLayout_11->setObjectName(QString::fromUtf8("gridLayout_11"));
+        fStatusDNSLabel = new QLabel(fStatusContent);
+        fStatusDNSLabel->setObjectName(QString::fromUtf8("fStatusDNSLabel"));
+
+        gridLayout_11->addWidget(fStatusDNSLabel, 0, 5, 1, 1);
+
+        fStatusDNSLed_3 = new QPushButton(fStatusContent);
+        fStatusDNSLed_3->setObjectName(QString::fromUtf8("fStatusDNSLed_3"));
+        fStatusDNSLed_3->setEnabled(false);
+        QSizePolicy sizePolicy8(QSizePolicy::Fixed, QSizePolicy::Minimum);
+        sizePolicy8.setHorizontalStretch(0);
+        sizePolicy8.setVerticalStretch(0);
+        sizePolicy8.setHeightForWidth(fStatusDNSLed_3->sizePolicy().hasHeightForWidth());
+        fStatusDNSLed_3->setSizePolicy(sizePolicy8);
+        fStatusDNSLed_3->setMaximumSize(QSize(18, 16777215));
+        QIcon icon;
+        icon.addFile(QString::fromUtf8("../icons/green circle 1.png"), QSize(), QIcon::Normal, QIcon::Off);
+        icon.addFile(QString::fromUtf8("../icons/green circle 1.png"), QSize(), QIcon::Normal, QIcon::On);
+        icon.addFile(QString::fromUtf8("../icons/gray circle 1.png"), QSize(), QIcon::Disabled, QIcon::Off);
+        fStatusDNSLed_3->setIcon(icon);
+        fStatusDNSLed_3->setIconSize(QSize(16, 16));
+        fStatusDNSLed_3->setCheckable(true);
+        fStatusDNSLed_3->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusDNSLed_3, 0, 4, 1, 1);
+
+        fStatusFTMLabel = new QLabel(fStatusContent);
+        fStatusFTMLabel->setObjectName(QString::fromUtf8("fStatusFTMLabel"));
+
+        gridLayout_11->addWidget(fStatusFTMLabel, 1, 5, 1, 1);
+
+        fStatusFTMLed_3 = new QPushButton(fStatusContent);
+        fStatusFTMLed_3->setObjectName(QString::fromUtf8("fStatusFTMLed_3"));
+        fStatusFTMLed_3->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusFTMLed_3->sizePolicy().hasHeightForWidth());
+        fStatusFTMLed_3->setSizePolicy(sizePolicy8);
+        fStatusFTMLed_3->setMaximumSize(QSize(18, 16777215));
+        fStatusFTMLed_3->setIcon(icon);
+        fStatusFTMLed_3->setIconSize(QSize(16, 16));
+        fStatusFTMLed_3->setCheckable(true);
+        fStatusFTMLed_3->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusFTMLed_3, 1, 4, 1, 1);
+
+        fStatusFTMLed_2 = new QPushButton(fStatusContent);
+        fStatusFTMLed_2->setObjectName(QString::fromUtf8("fStatusFTMLed_2"));
+        fStatusFTMLed_2->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusFTMLed_2->sizePolicy().hasHeightForWidth());
+        fStatusFTMLed_2->setSizePolicy(sizePolicy8);
+        fStatusFTMLed_2->setMaximumSize(QSize(18, 16777215));
+        QIcon icon1;
+        icon1.addFile(QString::fromUtf8("../icons/yellow circle 1.png"), QSize(), QIcon::Normal, QIcon::Off);
+        icon1.addFile(QString::fromUtf8("../icons/green circle 1.png"), QSize(), QIcon::Normal, QIcon::On);
+        icon1.addFile(QString::fromUtf8("../icons/gray circle 1.png"), QSize(), QIcon::Disabled, QIcon::Off);
+        fStatusFTMLed_2->setIcon(icon1);
+        fStatusFTMLed_2->setIconSize(QSize(16, 16));
+        fStatusFTMLed_2->setCheckable(true);
+        fStatusFTMLed_2->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusFTMLed_2, 1, 3, 1, 1);
+
+        fStatusFTMLed_1 = new QPushButton(fStatusContent);
+        fStatusFTMLed_1->setObjectName(QString::fromUtf8("fStatusFTMLed_1"));
+        fStatusFTMLed_1->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusFTMLed_1->sizePolicy().hasHeightForWidth());
+        fStatusFTMLed_1->setSizePolicy(sizePolicy8);
+        fStatusFTMLed_1->setMaximumSize(QSize(18, 16777215));
+        QIcon icon2;
+        icon2.addFile(QString::fromUtf8("../icons/red circle 1.png"), QSize(), QIcon::Normal, QIcon::Off);
+        icon2.addFile(QString::fromUtf8("../icons/green circle 1.png"), QSize(), QIcon::Normal, QIcon::On);
+        icon2.addFile(QString::fromUtf8("../icons/gray circle 1.png"), QSize(), QIcon::Disabled, QIcon::Off);
+        fStatusFTMLed_1->setIcon(icon2);
+        fStatusFTMLed_1->setIconSize(QSize(16, 16));
+        fStatusFTMLed_1->setCheckable(true);
+        fStatusFTMLed_1->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusFTMLed_1, 1, 2, 1, 1);
+
+        fStatusFTMEnable = new QCheckBox(fStatusContent);
+        fStatusFTMEnable->setObjectName(QString::fromUtf8("fStatusFTMEnable"));
+        QSizePolicy sizePolicy9(QSizePolicy::Minimum, QSizePolicy::Minimum);
+        sizePolicy9.setHorizontalStretch(0);
+        sizePolicy9.setVerticalStretch(0);
+        sizePolicy9.setHeightForWidth(fStatusFTMEnable->sizePolicy().hasHeightForWidth());
+        fStatusFTMEnable->setSizePolicy(sizePolicy9);
+        fStatusFTMEnable->setMaximumSize(QSize(20, 16777215));
+        fStatusFTMEnable->setChecked(true);
+
+        gridLayout_11->addWidget(fStatusFTMEnable, 1, 1, 1, 1);
+
+        fStatusFTM = new QLabel(fStatusContent);
+        fStatusFTM->setObjectName(QString::fromUtf8("fStatusFTM"));
+        QSizePolicy sizePolicy10(QSizePolicy::Fixed, QSizePolicy::Preferred);
+        sizePolicy10.setHorizontalStretch(0);
+        sizePolicy10.setVerticalStretch(0);
+        sizePolicy10.setHeightForWidth(fStatusFTM->sizePolicy().hasHeightForWidth());
+        fStatusFTM->setSizePolicy(sizePolicy10);
+
+        gridLayout_11->addWidget(fStatusFTM, 1, 0, 1, 1);
+
+        fStatusDNS = new QLabel(fStatusContent);
+        fStatusDNS->setObjectName(QString::fromUtf8("fStatusDNS"));
+        sizePolicy10.setHeightForWidth(fStatusDNS->sizePolicy().hasHeightForWidth());
+        fStatusDNS->setSizePolicy(sizePolicy10);
+
+        gridLayout_11->addWidget(fStatusDNS, 0, 0, 1, 1);
+
+        fStatusFADLabel = new QLabel(fStatusContent);
+        fStatusFADLabel->setObjectName(QString::fromUtf8("fStatusFADLabel"));
+
+        gridLayout_11->addWidget(fStatusFADLabel, 2, 5, 1, 1);
+
+        fStatusFADLed_3 = new QPushButton(fStatusContent);
+        fStatusFADLed_3->setObjectName(QString::fromUtf8("fStatusFADLed_3"));
+        fStatusFADLed_3->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusFADLed_3->sizePolicy().hasHeightForWidth());
+        fStatusFADLed_3->setSizePolicy(sizePolicy8);
+        fStatusFADLed_3->setMaximumSize(QSize(18, 16777215));
+        fStatusFADLed_3->setIcon(icon);
+        fStatusFADLed_3->setIconSize(QSize(16, 16));
+        fStatusFADLed_3->setCheckable(true);
+        fStatusFADLed_3->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusFADLed_3, 2, 4, 1, 1);
+
+        fStatusFADLed_2 = new QPushButton(fStatusContent);
+        fStatusFADLed_2->setObjectName(QString::fromUtf8("fStatusFADLed_2"));
+        fStatusFADLed_2->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusFADLed_2->sizePolicy().hasHeightForWidth());
+        fStatusFADLed_2->setSizePolicy(sizePolicy8);
+        fStatusFADLed_2->setMaximumSize(QSize(18, 16777215));
+        fStatusFADLed_2->setIcon(icon1);
+        fStatusFADLed_2->setIconSize(QSize(16, 16));
+        fStatusFADLed_2->setCheckable(true);
+        fStatusFADLed_2->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusFADLed_2, 2, 3, 1, 1);
+
+        fStatusFADLed_1 = new QPushButton(fStatusContent);
+        fStatusFADLed_1->setObjectName(QString::fromUtf8("fStatusFADLed_1"));
+        fStatusFADLed_1->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusFADLed_1->sizePolicy().hasHeightForWidth());
+        fStatusFADLed_1->setSizePolicy(sizePolicy8);
+        fStatusFADLed_1->setMaximumSize(QSize(18, 16777215));
+        fStatusFADLed_1->setIcon(icon2);
+        fStatusFADLed_1->setIconSize(QSize(16, 16));
+        fStatusFADLed_1->setCheckable(true);
+        fStatusFADLed_1->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusFADLed_1, 2, 2, 1, 1);
+
+        fStatusFADEnable = new QCheckBox(fStatusContent);
+        fStatusFADEnable->setObjectName(QString::fromUtf8("fStatusFADEnable"));
+        sizePolicy9.setHeightForWidth(fStatusFADEnable->sizePolicy().hasHeightForWidth());
+        fStatusFADEnable->setSizePolicy(sizePolicy9);
+        fStatusFADEnable->setMaximumSize(QSize(20, 16777215));
+        fStatusFADEnable->setChecked(true);
+
+        gridLayout_11->addWidget(fStatusFADEnable, 2, 1, 1, 1);
+
+        fStatusFAD = new QLabel(fStatusContent);
+        fStatusFAD->setObjectName(QString::fromUtf8("fStatusFAD"));
+        sizePolicy10.setHeightForWidth(fStatusFAD->sizePolicy().hasHeightForWidth());
+        fStatusFAD->setSizePolicy(sizePolicy10);
+
+        gridLayout_11->addWidget(fStatusFAD, 2, 0, 1, 1);
+
+        fStatusChatLabel = new QLabel(fStatusContent);
+        fStatusChatLabel->setObjectName(QString::fromUtf8("fStatusChatLabel"));
+
+        gridLayout_11->addWidget(fStatusChatLabel, 4, 5, 1, 1);
+
+        fStatusChatLed_3 = new QPushButton(fStatusContent);
+        fStatusChatLed_3->setObjectName(QString::fromUtf8("fStatusChatLed_3"));
+        fStatusChatLed_3->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusChatLed_3->sizePolicy().hasHeightForWidth());
+        fStatusChatLed_3->setSizePolicy(sizePolicy8);
+        fStatusChatLed_3->setMaximumSize(QSize(18, 16777215));
+        fStatusChatLed_3->setIcon(icon);
+        fStatusChatLed_3->setIconSize(QSize(16, 16));
+        fStatusChatLed_3->setCheckable(true);
+        fStatusChatLed_3->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusChatLed_3, 4, 4, 1, 1);
+
+        fStatusChatEnable = new QCheckBox(fStatusContent);
+        fStatusChatEnable->setObjectName(QString::fromUtf8("fStatusChatEnable"));
+        sizePolicy9.setHeightForWidth(fStatusChatEnable->sizePolicy().hasHeightForWidth());
+        fStatusChatEnable->setSizePolicy(sizePolicy9);
+        fStatusChatEnable->setMaximumSize(QSize(20, 16777215));
+        fStatusChatEnable->setChecked(true);
+
+        gridLayout_11->addWidget(fStatusChatEnable, 4, 1, 1, 1);
+
+        fStatusChat = new QLabel(fStatusContent);
+        fStatusChat->setObjectName(QString::fromUtf8("fStatusChat"));
+        sizePolicy10.setHeightForWidth(fStatusChat->sizePolicy().hasHeightForWidth());
+        fStatusChat->setSizePolicy(sizePolicy10);
+
+        gridLayout_11->addWidget(fStatusChat, 4, 0, 1, 1);
+
+        fStatusLogger = new QLabel(fStatusContent);
+        fStatusLogger->setObjectName(QString::fromUtf8("fStatusLogger"));
+        sizePolicy10.setHeightForWidth(fStatusLogger->sizePolicy().hasHeightForWidth());
+        fStatusLogger->setSizePolicy(sizePolicy10);
+
+        gridLayout_11->addWidget(fStatusLogger, 3, 0, 1, 1);
+
+        fStatusLoggerEnable = new QCheckBox(fStatusContent);
+        fStatusLoggerEnable->setObjectName(QString::fromUtf8("fStatusLoggerEnable"));
+        sizePolicy9.setHeightForWidth(fStatusLoggerEnable->sizePolicy().hasHeightForWidth());
+        fStatusLoggerEnable->setSizePolicy(sizePolicy9);
+        fStatusLoggerEnable->setMaximumSize(QSize(20, 16777215));
+        fStatusLoggerEnable->setChecked(true);
+
+        gridLayout_11->addWidget(fStatusLoggerEnable, 3, 1, 1, 1);
+
+        fStatusLoggerLed_1 = new QPushButton(fStatusContent);
+        fStatusLoggerLed_1->setObjectName(QString::fromUtf8("fStatusLoggerLed_1"));
+        fStatusLoggerLed_1->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusLoggerLed_1->sizePolicy().hasHeightForWidth());
+        fStatusLoggerLed_1->setSizePolicy(sizePolicy8);
+        fStatusLoggerLed_1->setMaximumSize(QSize(18, 16777215));
+        fStatusLoggerLed_1->setIcon(icon2);
+        fStatusLoggerLed_1->setIconSize(QSize(16, 16));
+        fStatusLoggerLed_1->setCheckable(true);
+        fStatusLoggerLed_1->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusLoggerLed_1, 3, 2, 1, 1);
+
+        fStatusLoggerLed_2 = new QPushButton(fStatusContent);
+        fStatusLoggerLed_2->setObjectName(QString::fromUtf8("fStatusLoggerLed_2"));
+        fStatusLoggerLed_2->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusLoggerLed_2->sizePolicy().hasHeightForWidth());
+        fStatusLoggerLed_2->setSizePolicy(sizePolicy8);
+        fStatusLoggerLed_2->setMaximumSize(QSize(18, 16777215));
+        fStatusLoggerLed_2->setIcon(icon1);
+        fStatusLoggerLed_2->setIconSize(QSize(16, 16));
+        fStatusLoggerLed_2->setCheckable(true);
+        fStatusLoggerLed_2->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusLoggerLed_2, 3, 3, 1, 1);
+
+        fStatusLoggerLed_3 = new QPushButton(fStatusContent);
+        fStatusLoggerLed_3->setObjectName(QString::fromUtf8("fStatusLoggerLed_3"));
+        fStatusLoggerLed_3->setEnabled(false);
+        sizePolicy8.setHeightForWidth(fStatusLoggerLed_3->sizePolicy().hasHeightForWidth());
+        fStatusLoggerLed_3->setSizePolicy(sizePolicy8);
+        fStatusLoggerLed_3->setMaximumSize(QSize(18, 16777215));
+        fStatusLoggerLed_3->setIcon(icon);
+        fStatusLoggerLed_3->setIconSize(QSize(16, 16));
+        fStatusLoggerLed_3->setCheckable(true);
+        fStatusLoggerLed_3->setFlat(true);
+
+        gridLayout_11->addWidget(fStatusLoggerLed_3, 3, 4, 1, 1);
+
+        fStatusLoggerLabel = new QLabel(fStatusContent);
+        fStatusLoggerLabel->setObjectName(QString::fromUtf8("fStatusLoggerLabel"));
+
+        gridLayout_11->addWidget(fStatusLoggerLabel, 3, 5, 1, 1);
+
+
+        verticalLayout->addLayout(gridLayout_11);
+
+        fShutdown = new QPushButton(fStatusContent);
+        fShutdown->setObjectName(QString::fromUtf8("fShutdown"));
+        QIcon icon3;
+        icon3.addFile(QString::fromUtf8("../icons/warning 1.png"), QSize(), QIcon::Normal, QIcon::On);
+        fShutdown->setIcon(icon3);
+
+        verticalLayout->addWidget(fShutdown);
+
+        fShutdownAll = new QPushButton(fStatusContent);
+        fShutdownAll->setObjectName(QString::fromUtf8("fShutdownAll"));
+        fShutdownAll->setIcon(icon3);
+
+        verticalLayout->addWidget(fShutdownAll);
+
+        fStatusDock->setWidget(fStatusContent);
+        MainWindow->addDockWidget(static_cast<Qt::DockWidgetArea>(1), fStatusDock);
+
+        fMenuBar->addAction(fMenuLog->menuAction());
+        fMenuBar->addAction(menuFile->menuAction());
+        fMenuLog->addAction(fMenuLogSaveAs);
+        menuFile->addAction(actionTest);
+
+        retranslateUi(MainWindow);
+        QObject::connect(fTextClear, SIGNAL(clicked()), fTextEdit, SLOT(clear()));
+        QObject::connect(fLogClear, SIGNAL(clicked()), fLogText, SLOT(clear()));
+        QObject::connect(fTextFontPlus, SIGNAL(clicked()), fTextEdit, SLOT(zoomIn()));
+        QObject::connect(fTextFontMinus, SIGNAL(clicked()), fTextEdit, SLOT(zoomOut()));
+        QObject::connect(fLogFontPlus, SIGNAL(clicked()), fLogText, SLOT(zoomIn()));
+        QObject::connect(fLogFontMinus, SIGNAL(clicked()), fLogText, SLOT(zoomOut()));
+        QObject::connect(fChatMessage, SIGNAL(returnPressed()), fChatSend, SLOT(animateClick()));
+        QObject::connect(fChatClear, SIGNAL(clicked()), fChatText, SLOT(clear()));
+        QObject::connect(fChatFontPlus, SIGNAL(clicked()), fChatText, SLOT(zoomIn()));
+        QObject::connect(fChatFontMinus, SIGNAL(clicked()), fChatText, SLOT(zoomOut()));
+        QObject::connect(fDimCmdServers, SIGNAL(activated(QModelIndex)), fDimCmdCommands, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimCmdCommands, SIGNAL(activated(QModelIndex)), fDimCmdDescription, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimCmdLineEdit, SIGNAL(returnPressed()), fDimCmdSend, SLOT(animateClick()));
+        QObject::connect(fDimCmdServers, SIGNAL(clicked(QModelIndex)), fDimCmdCommands, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimCmdCommands, SIGNAL(clicked(QModelIndex)), fDimCmdDescription, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimSvcServers, SIGNAL(clicked(QModelIndex)), fDimSvcServices, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimSvcServices, SIGNAL(clicked(QModelIndex)), fDimSvcDescription, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimSvcServers, SIGNAL(activated(QModelIndex)), fDimSvcServices, SLOT(setRootIndex(QModelIndex)));
+        QObject::connect(fDimSvcServices, SIGNAL(activated(QModelIndex)), fDimSvcDescription, SLOT(setRootIndex(QModelIndex)));
+
+        fTabWidget->setCurrentIndex(1);
+
+
+        QMetaObject::connectSlotsByName(MainWindow);
+    } // setupUi
+
+    void retranslateUi(QMainWindow *MainWindow)
+    {
+        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
+        fMenuLogSaveAs->setText(QApplication::translate("MainWindow", "Save as...", 0, QApplication::UnicodeUTF8));
+        actionTest->setText(QApplication::translate("MainWindow", "Test", 0, QApplication::UnicodeUTF8));
+        fDimSvcDock->setWindowTitle(QApplication::translate("MainWindow", "Dim service overview", 0, QApplication::UnicodeUTF8));
+        fTabWidget->setTabText(fTabWidget->indexOf(tab), QApplication::translate("MainWindow", "Services", 0, QApplication::UnicodeUTF8));
+        fTabWidget->setTabText(fTabWidget->indexOf(tab_2), QApplication::translate("MainWindow", "Page", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_ACCESSIBILITY
+        fDimCmdTab->setAccessibleName(QString());
+#endif // QT_NO_ACCESSIBILITY
+        fDimCmdDock->setWindowTitle(QApplication::translate("MainWindow", "Dim command overview", 0, QApplication::UnicodeUTF8));
+        label_2->setText(QApplication::translate("MainWindow", "Arguments", 0, QApplication::UnicodeUTF8));
+        fDimCmdSend->setText(QApplication::translate("MainWindow", "Send", 0, QApplication::UnicodeUTF8));
+        fTabWidget->setTabText(fTabWidget->indexOf(fDimCmdTab), QApplication::translate("MainWindow", "Commands", 0, QApplication::UnicodeUTF8));
+        fLogDock->setWindowTitle(QApplication::translate("MainWindow", "Logging of MESSAGE services", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fLogClear->setToolTip(QApplication::translate("MainWindow", "Clear the contents of the log-window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fLogClear->setText(QApplication::translate("MainWindow", "Clear", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fLogFontPlus->setToolTip(QApplication::translate("MainWindow", "Increase font size of the log-window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fLogFontPlus->setText(QApplication::translate("MainWindow", "+", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fLogFontMinus->setToolTip(QApplication::translate("MainWindow", "Decrease font size of the log-window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fLogFontMinus->setText(QApplication::translate("MainWindow", "-", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fLogText->setToolTip(QString());
+#endif // QT_NO_TOOLTIP
+        fLogText->setDocumentTitle(QString());
+        fTabWidget->setTabText(fTabWidget->indexOf(fLogTab), QApplication::translate("MainWindow", "Log", 0, QApplication::UnicodeUTF8));
+        fChatDock->setWindowTitle(QApplication::translate("MainWindow", "Chat Window", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fChatClear->setToolTip(QApplication::translate("MainWindow", "Clear the contents of the chat-window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fChatClear->setText(QApplication::translate("MainWindow", "Clear", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fChatFontPlus->setToolTip(QApplication::translate("MainWindow", "Increase font size of the chat-window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fChatFontPlus->setText(QApplication::translate("MainWindow", "+", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fChatFontMinus->setToolTip(QApplication::translate("MainWindow", "Decrease font size of the chat-window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fChatFontMinus->setText(QApplication::translate("MainWindow", "-", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fChatText->setToolTip(QString());
+#endif // QT_NO_TOOLTIP
+        fChatText->setDocumentTitle(QString());
+        fChatText->setHtml(QApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:'Ubuntu'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">FIXME: Notice when new message arrived.</p></body></html>", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fChatMessage->setToolTip(QApplication::translate("MainWindow", "Entry field for a chat message.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+#ifndef QT_NO_TOOLTIP
+        fChatSend->setToolTip(QApplication::translate("MainWindow", "Send a chat message.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fChatSend->setText(QApplication::translate("MainWindow", "Send", 0, QApplication::UnicodeUTF8));
+        fTabWidget->setTabText(fTabWidget->indexOf(fChatTab), QApplication::translate("MainWindow", "Chat", 0, QApplication::UnicodeUTF8));
+        fMenuLog->setTitle(QApplication::translate("MainWindow", "Log", 0, QApplication::UnicodeUTF8));
+        menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_STATUSTIP
+        fStatusBar->setStatusTip(QString());
+#endif // QT_NO_STATUSTIP
+#ifndef QT_NO_WHATSTHIS
+        fStatusBar->setWhatsThis(QString());
+#endif // QT_NO_WHATSTHIS
+        label->setText(QApplication::translate("MainWindow", "Warnings and Errors", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fTextClear->setToolTip(QApplication::translate("MainWindow", "Clear contents of the error message window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fTextClear->setText(QApplication::translate("MainWindow", "Clear", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fTextFontPlus->setToolTip(QApplication::translate("MainWindow", "Increase font size of the error message window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fTextFontPlus->setText(QApplication::translate("MainWindow", "+", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fTextFontMinus->setToolTip(QApplication::translate("MainWindow", "Decrease font size of the error message window.", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fTextFontMinus->setText(QApplication::translate("MainWindow", "-", 0, QApplication::UnicodeUTF8));
+        fStatusDNSLabel->setText(QApplication::translate("MainWindow", "Offline", 0, QApplication::UnicodeUTF8));
+        fStatusDNSLed_3->setText(QString());
+        fStatusFTMLabel->setText(QApplication::translate("MainWindow", "Offline", 0, QApplication::UnicodeUTF8));
+        fStatusFTMLed_3->setText(QString());
+        fStatusFTMLed_2->setText(QString());
+        fStatusFTMLed_1->setText(QString());
+        fStatusFTMEnable->setText(QString());
+#ifndef QT_NO_TOOLTIP
+        fStatusFTM->setToolTip(QApplication::translate("MainWindow", "Trigger Master", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fStatusFTM->setText(QApplication::translate("MainWindow", "FTM", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fStatusDNS->setToolTip(QApplication::translate("MainWindow", "DIM Domain Name Servcer (DNS)", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fStatusDNS->setText(QApplication::translate("MainWindow", "DNS", 0, QApplication::UnicodeUTF8));
+        fStatusFADLabel->setText(QApplication::translate("MainWindow", "Offline", 0, QApplication::UnicodeUTF8));
+        fStatusFADLed_3->setText(QString());
+        fStatusFADLed_2->setText(QString());
+        fStatusFADLed_1->setText(QString());
+        fStatusFADEnable->setText(QString());
+#ifndef QT_NO_TOOLTIP
+        fStatusFAD->setToolTip(QApplication::translate("MainWindow", "Data acquisition (DRS4 readou)", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fStatusFAD->setText(QApplication::translate("MainWindow", "FAD", 0, QApplication::UnicodeUTF8));
+        fStatusChatLabel->setText(QApplication::translate("MainWindow", "Offline", 0, QApplication::UnicodeUTF8));
+        fStatusChatLed_3->setText(QString());
+        fStatusChatEnable->setText(QString());
+#ifndef QT_NO_TOOLTIP
+        fStatusChat->setToolTip(QApplication::translate("MainWindow", "Chat server", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fStatusChat->setText(QApplication::translate("MainWindow", "Chat", 0, QApplication::UnicodeUTF8));
+#ifndef QT_NO_TOOLTIP
+        fStatusLogger->setToolTip(QApplication::translate("MainWindow", "Data Logger (writes slow control files)", 0, QApplication::UnicodeUTF8));
+#endif // QT_NO_TOOLTIP
+        fStatusLogger->setText(QApplication::translate("MainWindow", "Logger", 0, QApplication::UnicodeUTF8));
+        fStatusLoggerEnable->setText(QString());
+        fStatusLoggerLed_1->setText(QString());
+        fStatusLoggerLed_2->setText(QString());
+        fStatusLoggerLed_3->setText(QString());
+        fStatusLoggerLabel->setText(QApplication::translate("MainWindow", "Offline", 0, QApplication::UnicodeUTF8));
+        fShutdown->setText(QApplication::translate("MainWindow", "Shutdown Network", 0, QApplication::UnicodeUTF8));
+        fShutdownAll->setText(QApplication::translate("MainWindow", "Shutdown Network + DNS", 0, QApplication::UnicodeUTF8));
+    } // retranslateUi
+
+};
+
+namespace Ui {
+    class MainWindow: public Ui_MainWindow {};
+} // namespace Ui
+
+QT_END_NAMESPACE
+
+#endif // DESIGN_H
Index: /trunk/FACT++/gui/design.ui
===================================================================
--- /trunk/FACT++/gui/design.ui	(revision 10394)
+++ /trunk/FACT++/gui/design.ui	(revision 10394)
@@ -0,0 +1,1828 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1024</width>
+    <height>768</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>1</horstretch>
+    <verstretch>1</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <property name="dockNestingEnabled">
+   <bool>false</bool>
+  </property>
+  <widget class="QWidget" name="fCentralWidget">
+   <layout class="QGridLayout" name="gridLayout">
+    <item row="0" column="0">
+     <widget class="QTabWidget" name="fTabWidget">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="mouseTracking">
+       <bool>true</bool>
+      </property>
+      <property name="currentIndex">
+       <number>1</number>
+      </property>
+      <property name="documentMode">
+       <bool>false</bool>
+      </property>
+      <property name="tabsClosable">
+       <bool>true</bool>
+      </property>
+      <property name="movable">
+       <bool>true</bool>
+      </property>
+      <widget class="QWidget" name="tab">
+       <attribute name="title">
+        <string>Services</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_3">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDimSvcDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Dim service overview</string>
+          </property>
+          <widget class="QWidget" name="fDimSvcWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_10">
+            <item row="2" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_7">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QListView" name="fDimSvcServers">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>3</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="selectionRectVisible">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimSvcServices">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimSvcDescription">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>8</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="selectionMode">
+                 <enum>QAbstractItemView::NoSelection</enum>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="isWrapping" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="3" column="0">
+             <widget class="QTextEdit" name="fDimSvcText">
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tab_2">
+       <attribute name="title">
+        <string>Page</string>
+       </attribute>
+      </widget>
+      <widget class="QWidget" name="fDimCmdTab">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="accessibleName">
+        <string/>
+       </property>
+       <attribute name="title">
+        <string>Commands</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fDimCmdDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="allowedAreas">
+           <set>Qt::AllDockWidgetAreas</set>
+          </property>
+          <property name="windowTitle">
+           <string>Dim command overview</string>
+          </property>
+          <widget class="QWidget" name="fDimCmdWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_7">
+            <item row="2" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_5">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QListView" name="fDimCmdServers">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>3</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+                <property name="selectionRectVisible">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimCmdCommands">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="alternatingRowColors">
+                 <bool>true</bool>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QListView" name="fDimCmdDescription">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+                  <horstretch>8</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="editTriggers">
+                 <set>QAbstractItemView::NoEditTriggers</set>
+                </property>
+                <property name="showDropIndicator" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="selectionMode">
+                 <enum>QAbstractItemView::NoSelection</enum>
+                </property>
+                <property name="movement">
+                 <enum>QListView::Static</enum>
+                </property>
+                <property name="isWrapping" stdset="0">
+                 <bool>false</bool>
+                </property>
+                <property name="resizeMode">
+                 <enum>QListView::Fixed</enum>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="4" column="0">
+             <layout class="QHBoxLayout" name="horizontalLayout_6">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLabel" name="label_2">
+                <property name="text">
+                 <string>Arguments</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLineEdit" name="fDimCmdLineEdit"/>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fDimCmdSend">
+                <property name="text">
+                 <string>Send</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fLogTab">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <attribute name="title">
+        <string>Log</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_4">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fLogDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Logging of MESSAGE services</string>
+          </property>
+          <widget class="QWidget" name="fLogWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_5">
+            <item row="1" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_2">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_2">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogClear">
+                <property name="toolTip">
+                 <string extracomment="bla bla">Clear the contents of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_3">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogFontPlus">
+                <property name="toolTip">
+                 <string>Increase font size of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fLogFontMinus">
+                <property name="toolTip">
+                 <string>Decrease font size of the log-window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="2" column="1">
+             <widget class="QTextEdit" name="fLogText">
+              <property name="toolTip">
+               <string/>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="autoFormatting">
+               <set>QTextEdit::AutoNone</set>
+              </property>
+              <property name="documentTitle">
+               <string/>
+              </property>
+              <property name="undoRedoEnabled">
+               <bool>false</bool>
+              </property>
+              <property name="readOnly">
+               <bool>true</bool>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="1">
+             <widget class="Line" name="line_3">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="fChatTab">
+       <attribute name="title">
+        <string>Chat</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_9">
+        <item row="0" column="0">
+         <widget class="QDockWidget" name="fChatDock">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="features">
+           <set>QDockWidget::NoDockWidgetFeatures</set>
+          </property>
+          <property name="windowTitle">
+           <string>Chat Window</string>
+          </property>
+          <widget class="QWidget" name="fChatWidget">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QGridLayout" name="gridLayout_8">
+            <item row="0" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_3">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <spacer name="horizontalSpacer_5">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatClear">
+                <property name="toolTip">
+                 <string extracomment="bla bla">Clear the contents of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>Clear</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_6">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>20</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatFontPlus">
+                <property name="toolTip">
+                 <string>Increase font size of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>+</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatFontMinus">
+                <property name="toolTip">
+                 <string>Decrease font size of the chat-window.</string>
+                </property>
+                <property name="text">
+                 <string>-</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item row="1" column="1">
+             <widget class="QTextEdit" name="fChatText">
+              <property name="toolTip">
+               <string/>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::StyledPanel</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Sunken</enum>
+              </property>
+              <property name="autoFormatting">
+               <set>QTextEdit::AutoNone</set>
+              </property>
+              <property name="documentTitle">
+               <string/>
+              </property>
+              <property name="undoRedoEnabled">
+               <bool>false</bool>
+              </property>
+              <property name="readOnly">
+               <bool>true</bool>
+              </property>
+              <property name="html">
+               <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;FIXME: Notice when new message arrived.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+              </property>
+              <property name="textInteractionFlags">
+               <set>Qt::TextSelectableByMouse</set>
+              </property>
+             </widget>
+            </item>
+            <item row="2" column="1">
+             <layout class="QHBoxLayout" name="horizontalLayout_4">
+              <property name="topMargin">
+               <number>0</number>
+              </property>
+              <item>
+               <widget class="QLineEdit" name="fChatMessage">
+                <property name="toolTip">
+                 <string>Entry field for a chat message.</string>
+                </property>
+                <property name="frame">
+                 <bool>false</bool>
+                </property>
+                <property name="dragEnabled">
+                 <bool>false</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QPushButton" name="fChatSend">
+                <property name="toolTip">
+                 <string>Send a chat message.</string>
+                </property>
+                <property name="text">
+                 <string>Send</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="fMenuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>1024</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="fMenuLog">
+    <property name="title">
+     <string>Log</string>
+    </property>
+    <addaction name="fMenuLogSaveAs"/>
+   </widget>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionTest"/>
+   </widget>
+   <addaction name="fMenuLog"/>
+   <addaction name="menuFile"/>
+  </widget>
+  <widget class="QStatusBar" name="fStatusBar">
+   <property name="statusTip">
+    <string/>
+   </property>
+   <property name="whatsThis">
+    <string/>
+   </property>
+  </widget>
+  <widget class="QDockWidget" name="dockWidget_2">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>290</width>
+     <height>260</height>
+    </size>
+   </property>
+   <property name="features">
+    <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+   </property>
+   <property name="allowedAreas">
+    <set>Qt::BottomDockWidgetArea|Qt::TopDockWidgetArea</set>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>8</number>
+   </attribute>
+   <widget class="QWidget" name="dockWidgetContents_2">
+    <property name="sizePolicy">
+     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+      <horstretch>0</horstretch>
+      <verstretch>0</verstretch>
+     </sizepolicy>
+    </property>
+    <layout class="QVBoxLayout" name="verticalLayout_3">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <property name="sizeConstraint">
+          <enum>QLayout::SetDefaultConstraint</enum>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QLabel" name="label">
+           <property name="text">
+            <string>Warnings and Errors</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextClear">
+           <property name="toolTip">
+            <string>Clear contents of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>Clear</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_4">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeType">
+            <enum>QSizePolicy::Fixed</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextFontPlus">
+           <property name="toolTip">
+            <string>Increase font size of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>+</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fTextFontMinus">
+           <property name="toolTip">
+            <string>Decrease font size of the error message window.</string>
+           </property>
+           <property name="text">
+            <string>-</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QTextEdit" name="fTextEdit">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="undoRedoEnabled">
+          <bool>false</bool>
+         </property>
+         <property name="readOnly">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <widget class="QDockWidget" name="fStatusDock">
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>207</width>
+     <height>237</height>
+    </size>
+   </property>
+   <property name="features">
+    <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
+   </property>
+   <property name="allowedAreas">
+    <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>1</number>
+   </attribute>
+   <widget class="QWidget" name="fStatusContent">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QGridLayout" name="gridLayout_11">
+       <item row="0" column="5">
+        <widget class="QLabel" name="fStatusDNSLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="4">
+        <widget class="QPushButton" name="fStatusDNSLed_3">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/green circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/green circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="5">
+        <widget class="QLabel" name="fStatusFTMLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="4">
+        <widget class="QPushButton" name="fStatusFTMLed_3">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/green circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/green circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="3">
+        <widget class="QPushButton" name="fStatusFTMLed_2">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/yellow circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/yellow circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2">
+        <widget class="QPushButton" name="fStatusFTMLed_1">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/red circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/red circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QCheckBox" name="fStatusFTMEnable">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>20</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="fStatusFTM">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Trigger Master</string>
+         </property>
+         <property name="text">
+          <string>FTM</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0">
+        <widget class="QLabel" name="fStatusDNS">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>DIM Domain Name Servcer (DNS)</string>
+         </property>
+         <property name="text">
+          <string>DNS</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="5">
+        <widget class="QLabel" name="fStatusFADLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="4">
+        <widget class="QPushButton" name="fStatusFADLed_3">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/green circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/green circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="3">
+        <widget class="QPushButton" name="fStatusFADLed_2">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/yellow circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/yellow circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="2">
+        <widget class="QPushButton" name="fStatusFADLed_1">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/red circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/red circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="QCheckBox" name="fStatusFADEnable">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>20</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="fStatusFAD">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data acquisition (DRS4 readou)</string>
+         </property>
+         <property name="text">
+          <string>FAD</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="5">
+        <widget class="QLabel" name="fStatusChatLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="4">
+        <widget class="QPushButton" name="fStatusChatLed_3">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/green circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/green circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1">
+        <widget class="QCheckBox" name="fStatusChatEnable">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>20</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="fStatusChat">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Chat server</string>
+         </property>
+         <property name="text">
+          <string>Chat</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="0">
+        <widget class="QLabel" name="fStatusLogger">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Data Logger (writes slow control files)</string>
+         </property>
+         <property name="text">
+          <string>Logger</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1">
+        <widget class="QCheckBox" name="fStatusLoggerEnable">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>20</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="2">
+        <widget class="QPushButton" name="fStatusLoggerLed_1">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/red circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/red circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="3">
+        <widget class="QPushButton" name="fStatusLoggerLed_2">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/yellow circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/yellow circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="4">
+        <widget class="QPushButton" name="fStatusLoggerLed_3">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>18</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>../icons/green circle 1.png</normaloff>
+           <normalon>../icons/green circle 1.png</normalon>
+           <disabledoff>../icons/gray circle 1.png</disabledoff>../icons/green circle 1.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>16</width>
+           <height>16</height>
+          </size>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="flat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="5">
+        <widget class="QLabel" name="fStatusLoggerLabel">
+         <property name="text">
+          <string>Offline</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QPushButton" name="fShutdown">
+       <property name="text">
+        <string>Shutdown Network</string>
+       </property>
+       <property name="icon">
+        <iconset>
+         <normalon>../icons/warning 1.png</normalon>
+        </iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="fShutdownAll">
+       <property name="text">
+        <string>Shutdown Network + DNS</string>
+       </property>
+       <property name="icon">
+        <iconset>
+         <normalon>../icons/warning 1.png</normalon>
+        </iconset>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <action name="fMenuLogSaveAs">
+   <property name="text">
+    <string>Save as...</string>
+   </property>
+  </action>
+  <action name="actionTest">
+   <property name="text">
+    <string>Test</string>
+   </property>
+  </action>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>fTextClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>874</x>
+     <y>534</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>772</x>
+     <y>573</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>907</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>631</x>
+     <y>122</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fTextFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>967</x>
+     <y>536</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>936</x>
+     <y>558</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fTextFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fTextEdit</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1009</x>
+     <y>526</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>924</x>
+     <y>557</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>968</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>181</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fLogFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fLogText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1003</x>
+     <y>109</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>181</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatMessage</sender>
+   <signal>returnPressed()</signal>
+   <receiver>fChatSend</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>786</x>
+     <y>459</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1003</x>
+     <y>463</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatClear</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>clear()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>907</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatFontPlus</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>zoomIn()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>968</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fChatFontMinus</sender>
+   <signal>clicked()</signal>
+   <receiver>fChatText</receiver>
+   <slot>zoomOut()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1003</x>
+     <y>105</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>640</x>
+     <y>177</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdServers</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimCmdCommands</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>369</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>433</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdCommands</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimCmdDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>358</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>793</x>
+     <y>391</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdLineEdit</sender>
+   <signal>returnPressed()</signal>
+   <receiver>fDimCmdSend</receiver>
+   <slot>animateClick()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>946</x>
+     <y>462</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1003</x>
+     <y>463</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdServers</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimCmdCommands</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>178</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>243</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimCmdCommands</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimCmdDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>298</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>801</x>
+     <y>224</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServers</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimSvcServices</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>255</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServices</sender>
+   <signal>clicked(QModelIndex)</signal>
+   <receiver>fDimSvcDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>252</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>785</x>
+     <y>170</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServers</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimSvcServices</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>358</x>
+     <y>270</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>607</x>
+     <y>270</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>fDimSvcServices</sender>
+   <signal>activated(QModelIndex)</signal>
+   <receiver>fDimSvcDescription</receiver>
+   <slot>setRootIndex(QModelIndex)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>607</x>
+     <y>270</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1003</x>
+     <y>270</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: /trunk/FACT++/gui/fact.cc
===================================================================
--- /trunk/FACT++/gui/fact.cc	(revision 10394)
+++ /trunk/FACT++/gui/fact.cc	(revision 10394)
@@ -0,0 +1,13 @@
+#include "FactGui.h"
+
+int main(int argc, char *argv[])
+{
+    setenv("DIM_DNS_NODE", "localhost", 0);
+
+    QApplication app(argc, argv);
+
+    FactGui gui;
+    gui.show();
+
+    return app.exec();
+}
