Index: src/Actions/Action.cpp
===================================================================
--- src/Actions/Action.cpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Actions/Action.cpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -53,2 +53,7 @@
   return performRedo(_state);
 }
+
+
+bool Action::isActive(){
+  return true;
+}
Index: src/Actions/Action.hpp
===================================================================
--- src/Actions/Action.hpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Actions/Action.hpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -44,4 +44,6 @@
   virtual bool shouldUndo()=0;
 
+  virtual bool isActive();
+
   virtual const std::string getName();
 
Index: src/Actions/ActionHistory.cpp
===================================================================
--- src/Actions/ActionHistory.cpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Actions/ActionHistory.cpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -34,4 +34,12 @@
   Action::state_ptr oldState = elem.action->redo(elem.state);
   history.push_back(HistoryElement(elem.action,oldState));
+}
+
+bool ActionHistory::hasUndo(){
+  return history.size()>0;
+}
+
+bool ActionHistory::hasRedo(){
+  return yrotsih.size()>0;
 }
 
@@ -73,4 +81,8 @@
 }
 
+bool ActionHistory::UndoAction::isActive(){
+  return hist->hasUndo();
+}
+
 Action::state_ptr ActionHistory::UndoAction::performCall(){
   hist->undoLast();
@@ -103,4 +115,8 @@
 }
 
+bool ActionHistory::RedoAction::isActive(){
+  return hist->hasRedo();
+}
+
 Action::state_ptr ActionHistory::RedoAction::performCall(){
   hist->redoLast();
Index: src/Actions/ActionHistory.hpp
===================================================================
--- src/Actions/ActionHistory.hpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Actions/ActionHistory.hpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -37,4 +37,6 @@
     virtual bool shouldUndo();
 
+    virtual bool isActive();
+
   private:
     virtual Action::state_ptr performCall();
@@ -53,4 +55,6 @@
     virtual bool shouldUndo();
 
+    virtual bool isActive();
+
   private:
     virtual Action::state_ptr performCall();
@@ -65,4 +69,7 @@
   void undoLast();
   void redoLast();
+
+  bool hasUndo();
+  bool hasRedo();
 
   void addElement(Action*,Action::state_ptr);
Index: src/Menu/ActionMenuItem.cpp
===================================================================
--- src/Menu/ActionMenuItem.cpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Menu/ActionMenuItem.cpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -20,9 +20,11 @@
 
 ActionMenuItem::~ActionMenuItem()
-{
-  // TODO Auto-generated destructor stub
-}
+{}
 
 void ActionMenuItem::doTrigger() {
   action->call();
 }
+
+bool ActionMenuItem::isActive() {
+  return action->isActive();
+}
Index: src/Menu/ActionMenuItem.hpp
===================================================================
--- src/Menu/ActionMenuItem.hpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Menu/ActionMenuItem.hpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -26,4 +26,6 @@
   virtual void doTrigger();
 
+  virtual bool isActive();
+
 private:
   Action* action; //!< this action will be called when the trigger matches
Index: src/Menu/MenuItem.cpp
===================================================================
--- src/Menu/MenuItem.cpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Menu/MenuItem.cpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -78,2 +78,6 @@
   return added;
 }
+
+bool MenuItem::isActive(){
+  return true;
+}
Index: src/Menu/MenuItem.hpp
===================================================================
--- src/Menu/MenuItem.hpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Menu/MenuItem.hpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -21,9 +21,4 @@
  */
 class MenuItem {
-private:
-  char trigger;
-  string *description;
-  bool added;
-
 public:
   MenuItem(char,const char*,Menu*);
@@ -41,6 +36,13 @@
   bool wasAdded();
 
+  virtual bool isActive();
+
 protected:
   void setDescription(string);
+
+private:
+  char trigger;
+  string *description;
+  bool added;
 };
 
Index: src/Menu/TextMenu.cpp
===================================================================
--- src/Menu/TextMenu.cpp	(revision f6bbc6fe2ddb7221bc4f6acc3efeef505cfb0301)
+++ src/Menu/TextMenu.cpp	(revision f9352dcaf0cbc4cbcee464d7d03984eb5eeee659)
@@ -52,5 +52,12 @@
 
 void TextMenu::showEntry(MenuItem* entry){
-  outputter << entry->formatEntry() << "\n";
+  if(entry->isActive()==false){
+    outputter << "(";
+  }
+  outputter << entry->formatEntry();
+  if(entry->isActive()==false){
+    outputter << ")";
+  }
+  outputter << "\n";
 }
 
@@ -75,5 +82,7 @@
     list<MenuItem*>::iterator iter;
     for(iter = items.begin(); iter!=items.end();iter++){
-      somethingChosen |= (*iter)->checkTrigger(choice);
+      if((*iter)->isActive()){
+        somethingChosen |= (*iter)->checkTrigger(choice);
+      }
     }
     // see if something was chosen and call default Item if not
