Index: /trunk/FACT++/src/EventImp.cc
===================================================================
--- /trunk/FACT++/src/EventImp.cc	(revision 10294)
+++ /trunk/FACT++/src/EventImp.cc	(revision 10295)
@@ -112,4 +112,5 @@
 
 #include "Time.h"
+#include "WindowLog.h"
 
 using namespace std;
@@ -199,11 +200,11 @@
     const string str = GetName();
     if (!str.empty())
-        out << str;
+        out << kBold << str;
 
     const string fmt = GetFormat();
     if (!fmt.empty())
-        out << "[" << fmt << "]";
-
-    out << ":";
+        out << kBold << "[" << fmt << "]";
+
+    out << kReset << ":";
 
     for (unsigned int i=0; i<fAllowedStates.size(); i++)
@@ -231,4 +232,7 @@
         out << ")";
     out << endl;
+
+    if (!fDescription.empty())
+        out << "     " << fDescription << endl;
 }
 
Index: /trunk/FACT++/src/EventImp.h
===================================================================
--- /trunk/FACT++/src/EventImp.h	(revision 10294)
+++ /trunk/FACT++/src/EventImp.h	(revision 10295)
@@ -14,4 +14,6 @@
     std::vector<int> fAllowedStates; /// List of states in which this event is allowed
 
+    std::string      fDescription;   /// A human readable description of the event
+
     /// http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html
     boost::function<int(const EventImp &)> fFunction;
@@ -23,8 +25,16 @@
     EventImp(const EventImp &cmd);
 
+    // Description
+    EventImp &SetDescription(const std::string &str) { fDescription=str; return *this; }
+
     // Function handling
-    void AssignFunction(boost::function<int(const EventImp &)> func) { fFunction = func; }
+    EventImp &AssignFunction(boost::function<int(const EventImp &)> func) { fFunction = func; return *this; }
     bool HasFunc() const { return !fFunction.empty(); }
     int ExecFunc() const { return HasFunc() ? fFunction(*this) : -1; }
+
+    // Configuration helper
+    EventImp &operator()(boost::function<int(const EventImp &)> func) { return AssignFunction(func); }
+    EventImp &operator()(const std::string str) { return SetDescription(str); }
+    EventImp &operator()(const char *str) { return SetDescription(str); }
 
     // Print contents
@@ -50,11 +60,13 @@
 
     // Getter for all the data contained (name, format, data and time)
-    short          GetShort()  const { return *reinterpret_cast<const short*>(GetData()); }
-    unsigned short GetUShort() const { return *reinterpret_cast<const unsigned short*>(GetData()); }
-    int            GetInt() const    { return *reinterpret_cast<const int*>(GetData()); }
-    unsigned int   GetUInt() const   { return *reinterpret_cast<const unsigned int*>(GetData()); }
-    float          GetFloat() const  { return *reinterpret_cast<const float*>(GetData()); }
-    double         GetDouble() const { return *reinterpret_cast<const double*>(GetData()); }
-    const char    *GetText() const   { return  reinterpret_cast<const char*>(GetData()); }
+    short             GetShort()  const { return *reinterpret_cast<const short*>(GetData()); }
+    unsigned short    GetUShort() const { return *reinterpret_cast<const unsigned short*>(GetData()); }
+    int               GetInt() const    { return *reinterpret_cast<const int*>(GetData()); }
+    unsigned int      GetUInt() const   { return *reinterpret_cast<const unsigned int*>(GetData()); }
+    float             GetFloat() const  { return *reinterpret_cast<const float*>(GetData()); }
+    double            GetDouble() const { return *reinterpret_cast<const double*>(GetData()); }
+    const char       *GetText() const   { return  reinterpret_cast<const char*>(GetData()); }
+    std::string       GetString() const { return std::string(GetText(), GetSize()); }
+    std::vector<char> GetVector() const { return std::vector<char>(GetText(), GetText()+GetSize()); }
 
 };
