Index: trunk/FACT++/gui/FactGui.h
===================================================================
--- trunk/FACT++/gui/FactGui.h	(revision 10665)
+++ trunk/FACT++/gui/FactGui.h	(revision 10678)
@@ -1369,8 +1369,30 @@
     }
 
+    void CallInfoHandler(void (FactGui::*handler)(const DimData&), const DimData &d)
+    {
+        fInHandler = true;
+        (this->*handler)(d);
+        fInHandler = false;
+    }
+
+    /*
+    void CallInfoHandler(const boost::function<void()> &func)
+    {
+        // This ensures that newly received values are not sent back to the emitter
+        // because changing the value emits the valueChanged signal (or similar)
+        fInHandler = true;
+        func();
+        fInHandler = false;
+    }*/
+
     void PostInfoHandler(void (FactGui::*handler)(const DimData&))
     {
-        QApplication::postEvent(this,
-                                new FunctionEvent(boost::bind(handler, this, DimData(getInfo()))));
+        //const boost::function<void()> f = boost::bind(handler, this, DimData(getInfo()));
+
+        FunctionEvent *evt = new FunctionEvent(boost::bind(&FactGui::CallInfoHandler, this, handler, DimData(getInfo())));
+        // FunctionEvent *evt = new FunctionEvent(boost::bind(&FactGui::CallInfoHandler, this, f));
+        // FunctionEvent *evt = new FunctionEvent(boost::bind(handler, this, DimData(getInfo()))));
+
+        QApplication::postEvent(this, evt);
     }
 
Index: trunk/FACT++/gui/MainWindow.cc
===================================================================
--- trunk/FACT++/gui/MainWindow.cc	(revision 10665)
+++ trunk/FACT++/gui/MainWindow.cc	(revision 10678)
@@ -2,4 +2,5 @@
 
 #include <iostream>
+#include <sstream>
 
 #include <QTimer>
@@ -36,4 +37,5 @@
     // Initialize the 40 FTU Leds as a copy of the prototype LED
     fFtuLED[0] = fFtuLEDPrototype;
+    fFtuLED[0]->setToolTip("Crate 0, Board 0, Index 0");
 
     for (int i=1; i<40; i++)
@@ -49,4 +51,8 @@
         b->setFlat(fFtuLEDPrototype->isFlat());
 
+        ostringstream str;
+        str << "Crate " << i/10 << ", Board " << i%10 << ", Index " << i;
+        b->setToolTip(str.str().c_str());
+
         fFtuLedLayout->addWidget(b, i/10+1, i%10+1, 1, 1);
 
@@ -126,9 +132,10 @@
     {
         uint8_t(fTriggerSeqPed->value()),
-        uint8_t(fTriggerSeqLPint->value()),
-        uint8_t(fTriggerSeqLPext->value())
+        uint8_t(fTriggerSeqLPext->value()),
+        uint8_t(fTriggerSeqLPint->value())
     };
 
-    Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_SEQUENCE", d);
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_SEQUENCE", d);
 }
 
@@ -153,24 +160,26 @@
 }
 
-void MainWindow::SetTriggerCoincidence()
-{
-    const uint16_t d[2] =
-    {
-        uint16_t(fPhysicsCoincidence->value()),
-        uint16_t(fPhysicsWindow->value()/4-2)
-    };
-
-    Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_COINCIDENCE", d);
-}
-
-void MainWindow::SetCalibCoincidence()
-{
-    const uint16_t d[2] =
-    {
-        uint16_t(fCalibCoincidence->value()),
-        uint16_t(fCalibWindow->value()/4-2)
-    };
-
-    Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_COINCIDENCE", d);
+void MainWindow::on_fPhysicsCoincidence_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_COINCIDENCE", v);
+}
+
+void MainWindow::on_fPhysicsWindow_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_WINDOW", v/4-2);
+}
+
+void MainWindow::on_fCalibCoincidence_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_COINCIDENCE", v);
+}
+
+void MainWindow::on_fCalibWindow_valueChanged(int v)
+{
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_CALIBRATION_WINDOW", v/4-2);
 }
 
@@ -180,30 +189,37 @@
 
     const int32_t d[2] = { fThresholdIdx->value(), v };
-    Dim::SendCommand("FTM_CONTROL/SET_THRESHOLD", d);
+
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_THRESHOLD", d);
 }
 
 void MainWindow::on_fTriggerInterval_valueChanged(int val)
 {
-    Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_INTERVAL", val);
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_INTERVAL", val);
 }
 
 void MainWindow::on_fTriggerDelay_valueChanged(int val)
 {
-    Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_DELAY", val/4-2);
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TRIGGER_DELAY", val/4-2);
 }
 
 void MainWindow::on_fTimeMarkerDelay_valueChanged(int val)
 {
-    Dim::SendCommand("FTM_CONTROL/SET_TIME_MARKER_DELAY", val/4-2);
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_TIME_MARKER_DELAY", val/4-2);
 }
 
 void MainWindow::on_fDeadTime_valueChanged(int val)
 {
-    Dim::SendCommand("FTM_CONTROL/SET_DEAD_TIME", val/4-2);
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_DEAD_TIME", val/4-2);
 }
 
 void MainWindow::on_fPrescalingVal_valueChanged(int val)
 {
-    Dim::SendCommand("FTM_CONTROL/SET_PRESCALING", val);
+    if (!fInHandler)
+        Dim::SendCommand("FTM_CONTROL/SET_PRESCALING", val);
 }
 
Index: trunk/FACT++/gui/MainWindow.h
===================================================================
--- trunk/FACT++/gui/MainWindow.h	(revision 10665)
+++ trunk/FACT++/gui/MainWindow.h	(revision 10678)
@@ -20,4 +20,6 @@
 protected:
     QPushButton *fFtuLED[40];
+
+    bool fInHandler;
 
 public:
@@ -51,10 +53,8 @@
     void on_fTriggerSeqLPext_valueChanged(int) { SetTriggerSequence(); }
 
-
-    void on_fPhysicsCoincidence_valueChanged(int) { SetTriggerCoincidence(); }
-    void on_fPhysicsWindow_valueChanged(int)      { SetTriggerCoincidence(); }
-
-    void on_fCalibCoincidence_valueChanged(int) { SetCalibCoincidence(); }
-    void on_fCalibWindow_valueChanged(int)      { SetCalibCoincidence(); }
+    void on_fPhysicsCoincidence_valueChanged(int);
+    void on_fPhysicsWindow_valueChanged(int);
+    void on_fCalibCoincidence_valueChanged(int);
+    void on_fCalibWindow_valueChanged(int);
 
     void on_fTriggerInterval_valueChanged(int);
