Index: src/Actions/ActionHistory.cpp
===================================================================
--- src/Actions/ActionHistory.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ActionHistory.cpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -86,4 +86,8 @@
 }
 
+Dialog* ActionHistory::UndoAction::createDialog(){
+
+}
+
 Action::state_ptr ActionHistory::UndoAction::performCall(){
   hist->undoLast();
@@ -120,4 +124,8 @@
 }
 
+Dialog* ActionHistory::RedoAction::createDialog(){
+
+}
+
 Action::state_ptr ActionHistory::RedoAction::performCall(){
   hist->redoLast();
Index: src/Actions/ActionHistory.hpp
===================================================================
--- src/Actions/ActionHistory.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ActionHistory.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -40,4 +40,5 @@
 
   private:
+    virtual Dialog * createDialog();
     virtual Action::state_ptr performCall();
     virtual Action::state_ptr performUndo(Action::state_ptr);
@@ -58,4 +59,5 @@
 
   private:
+    virtual Dialog * createDialog();
     virtual Action::state_ptr performCall();
     virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/ActionSequence.cpp
===================================================================
--- src/Actions/ActionSequence.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ActionSequence.cpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -10,4 +10,5 @@
 #include "Actions/ActionSequence.hpp"
 #include "Actions/Action.hpp"
+#include "UIElements/Dialog.hpp"
 
 #include "Helpers/Assert.hpp"
@@ -36,4 +37,27 @@
     return theAction;
   }
+}
+
+// this method is used outside the ActionModule
+// Each action registers itself with the history
+void ActionSequence::callAllDialogs(){
+  for(actionSet::iterator it=actions.begin(); it!=actions.end(); it++){
+    // we want to have a global bookkeeping for all actions in the sequence, so
+    // we bypass the normal call
+    (*it)->createDialog()->display();
+  }
+}
+
+// This method is used internally when MakroActions are constructed.
+// In this case only the makro Action should be registered and
+// handle the states
+ActionSequence::stateSet ActionSequence::callAllDialogs(bool){
+  stateSet states;
+  for(actionSet::iterator it=actions.begin(); it!=actions.end(); it++){
+    // we want to have a global bookkeeping for all actions in the sequence, so
+    // we bypass the normal call
+    (*it)->createDialog()->display();
+  }
+  return states;
 }
 
Index: src/Actions/ActionSequence.hpp
===================================================================
--- src/Actions/ActionSequence.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ActionSequence.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -30,4 +30,5 @@
 
   void callAll();
+  void callAllDialogs();
 
   bool canUndo();
@@ -36,4 +37,5 @@
 protected:
   stateSet callAll(bool); // Dummy parameter to allow overloading
+  stateSet callAllDialogs(bool); // Dummy parameter to allow overloading
   stateSet undoAll(stateSet);
   stateSet redoAll(stateSet);
Index: src/Actions/Calculation.hpp
===================================================================
--- src/Actions/Calculation.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/Calculation.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -64,4 +64,5 @@
   virtual T* doCalc()=0;
 private:
+  virtual Dialog* createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/Calculation_impl.hpp
===================================================================
--- src/Actions/Calculation_impl.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/Calculation_impl.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -27,4 +27,9 @@
 
 // methods inherited from Action
+
+template<typename T>
+Dialog* Calculation<T>::createDialog(){
+  return NULL;
+}
 
 template<typename T>
Index: src/Actions/ErrorAction.cpp
===================================================================
--- src/Actions/ErrorAction.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ErrorAction.cpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -27,4 +27,7 @@
 }
 
+Dialog* ErrorAction::createDialog() {
+}
+
 Action::state_ptr ErrorAction::performCall() {
   Log() << Verbose(0) << errorMsg << endl;
Index: src/Actions/ErrorAction.hpp
===================================================================
--- src/Actions/ErrorAction.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ErrorAction.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -22,5 +22,5 @@
 
 private:
-
+  virtual Dialog * createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/MakroAction.cpp
===================================================================
--- src/Actions/MakroAction.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/MakroAction.cpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -44,4 +44,7 @@
 }
 
+Dialog* MakroAction::createDialog() {
+  actions->callAllDialogs();
+}
 
 Action::state_ptr MakroAction::performCall(){
Index: src/Actions/MakroAction.hpp
===================================================================
--- src/Actions/MakroAction.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/MakroAction.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -30,4 +30,5 @@
 
 private:
+  virtual Dialog * createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/ManipulateAtomsProcess.cpp
===================================================================
--- src/Actions/ManipulateAtomsProcess.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ManipulateAtomsProcess.cpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -26,4 +26,8 @@
 ManipulateAtomsProcess::~ManipulateAtomsProcess()
 {}
+
+Dialog* ManipulateAtomsProcess::createDialog(){
+
+}
 
 Action::state_ptr ManipulateAtomsProcess::performCall(){
Index: src/Actions/ManipulateAtomsProcess.hpp
===================================================================
--- src/Actions/ManipulateAtomsProcess.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/ManipulateAtomsProcess.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -29,4 +29,5 @@
 private:
 
+  virtual Dialog* createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/Actions/MethodAction.cpp
===================================================================
--- src/Actions/MethodAction.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/MethodAction.cpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -26,4 +26,7 @@
 {}
 
+Dialog* MethodAction::createDialog() {
+}
+
 
 Action::state_ptr MethodAction::performCall() {
Index: src/Actions/MethodAction.hpp
===================================================================
--- src/Actions/MethodAction.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
+++ src/Actions/MethodAction.hpp	(revision 30db643034390bf55f17c017b529b8119ce6f813)
@@ -26,4 +26,5 @@
 
 private:
+  virtual Dialog * createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
