Index: /trunk/FACT++/gui/FactGui.h
===================================================================
--- /trunk/FACT++/gui/FactGui.h	(revision 12667)
+++ /trunk/FACT++/gui/FactGui.h	(revision 12668)
@@ -798,27 +798,55 @@
     // ======================= DNS ==========================================
 
+    uint32_t fDimVersion;
+
+    void UpdateGlobalStatus()
+    {
+        ostringstream dns;
+        dns << (fDimVersion==0?"No connection":"Connection");
+        dns << " to DIM DNS (" << getenv("DIM_DNS_NODE") << ")";
+        dns << (fDimVersion==0?".":" established");
+
+        ostringstream str;
+        str << "V" << fDimVersion/100 << 'r' << fDimVersion%100;
+
+        LedColor_t led = kLedGreen;
+        if (fDimVersion>0)
+        {
+            dns << fixed << setprecision(1) << right;
+            if (fFreeSpaceLogger!=UINT64_MAX)
+                dns << "<pre> * Data logger:   " << setw(7) << fFreeSpaceLogger*1e-7 << " GB</pre>";
+            if (fFreeSpaceData!=UINT64_MAX)
+                dns << "<pre> * Event Builder: " << setw(7) << fFreeSpaceData*1e-7 << " GB</pre>";
+
+            if (fFreeSpaceLogger<500000000 || fFreeSpaceData<500000000)
+                led = kLedGreenWarn;
+            if (fFreeSpaceLogger<200000000 || fFreeSpaceData<200000000)
+                led = kLedWarnTriangleBorder;
+
+            if (led!=kLedGreen)
+                str << " (Disk space!)";
+        }
+
+        fStatusDNSLabel->setToolTip(dns.str().c_str());
+
+        SetLedColor(fStatusDNSLed, fDimVersion==0 ? kLedRed : led, Time());
+
+        fStatusDNSLabel->setText(fDimVersion==0?"Offline":str.str().c_str());
+    }
+
     void handleDimDNS(const DimData &d)
     {
-        const int version = d.size()!=4 ? 0 : d.get<uint32_t>();
-
-        ostringstream str;
-        str << "V" << version/100 << 'r' << version%100;
-
-        ostringstream dns;
-        dns << (version==0?"No connection":"Connection");
-        dns << " to DIM DNS (" << getenv("DIM_DNS_NODE") << ")";
-        dns << (version==0?".":" established.");
-
-        fStatusDNSLabel->setText(version==0?"Offline":str.str().c_str());
-        fStatusDNSLabel->setToolTip(dns.str().c_str());
-
-        SetLedColor(fStatusDNSLed, version==0 ? kLedRed : kLedGreen, Time());
-
-        fShutdown->setEnabled(version!=0);
-        fShutdownAll->setEnabled(version!=0);
+        fDimVersion = d.size()!=4 ? 0 : d.get<uint32_t>();
+
+        UpdateGlobalStatus();
+
+        fShutdown->setEnabled(fDimVersion!=0);
+        fShutdownAll->setEnabled(fDimVersion!=0);
     }
 
 
     // ======================= Logger =======================================
+
+    uint64_t fFreeSpaceLogger;
 
     void handleLoggerStats(const DimData &d)
@@ -832,4 +860,7 @@
         fLoggerSpaceLeft->setEnabled(connected);
 
+        fFreeSpaceLogger = UINT64_MAX;
+        UpdateGlobalStatus();
+
         if (!connected)
             return;
@@ -840,4 +871,7 @@
         const size_t written = vals[1];
         const size_t rate    = float(vals[2])/vals[3];
+
+        fFreeSpaceLogger = space;
+        UpdateGlobalStatus();
 
         fLoggerFreeSpace->setSuffix(" MB");
@@ -976,4 +1010,6 @@
 
     // ===================== FAD ============================================
+
+    uint64_t fFreeSpaceData;
 
     void handleFadWriteStats(const DimData &d)
@@ -987,4 +1023,7 @@
         fEvtBuilderSpaceLeft->setEnabled(connected);
 
+        fFreeSpaceData = UINT64_MAX;
+        UpdateGlobalStatus();
+
         if (!connected)
             return;
@@ -995,4 +1034,7 @@
         const size_t written = vals[1];
         const size_t rate    = float(vals[2])/vals[3];
+
+        fFreeSpaceData = space;
+        UpdateGlobalStatus();
 
         fEvtBuilderFreeSpace->setSuffix(" MB");
@@ -4031,6 +4073,9 @@
         fDimMagicWeather       ("MAGIC_WEATHER/DATA",             (void*)NULL, 0, this),
         //-
-        fEventData(0), fDrsCalibration(1440*1024*6+160*1024*2),
-	fTimeStamp0(0)
+        fDimVersion(0),
+        fFreeSpaceLogger(UINT64_MAX), fFreeSpaceData(UINT64_MAX),
+        fEventData(0),
+        fDrsCalibration(1440*1024*6+160*1024*2),
+        fTimeStamp0(0)
     {
         fClockCondFreq->addItem("--- Hz",  QVariant(-1));
