Index: trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 7176)
+++ trunk/MagicSoft/Mars/mbase/MStatusDisplay.cc	(revision 7178)
@@ -2896,5 +2896,5 @@
     fi.fIniDir    = StrDup(dir);
 
-    new TGFileDialog(fClient->GetRoot(), this, kFDSave, &fi);
+    new TGFileDialog(fClient->GetRoot(), this, kFDOpen, &fi);
 
     if (!fi.fFilename)
Index: trunk/MagicSoft/Mars/mbase/MTaskInteractive.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTaskInteractive.cc	(revision 7176)
+++ trunk/MagicSoft/Mars/mbase/MTaskInteractive.cc	(revision 7178)
@@ -83,4 +83,5 @@
     fCall[1] = 0;
     fCall[2] = 0;
+    fCall[3] = 0;
 }
 
@@ -94,4 +95,5 @@
     Free(1);
     Free(2);
+    Free(3);
 }
 
@@ -141,12 +143,18 @@
     {
     case 0:
-        gLog << "Pre";
+        gLog << "PreProcess";
+        break;
+    case 1:
+        gLog << "Process";
         break;
     case 2:
-        gLog << "Post";
+        gLog << "PostProcess";
+        break;
+    case 3:
+        gLog << "ReInit";
         break;
 
     }
-    gLog << "Process-function." << endl;
+    gLog << "-function." << endl;
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mbase/MTaskInteractive.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTaskInteractive.h	(revision 7176)
+++ trunk/MagicSoft/Mars/mbase/MTaskInteractive.h	(revision 7178)
@@ -12,13 +12,15 @@
 {
 private:
-    TMethodCall *fCall[3];
+    TMethodCall *fCall[4];
 
-    Int_t (*fPreProcess)(MParList *list);
-    Int_t (*fProcess)();
-    Int_t (*fPostProcess)();
+    Int_t  (*fPreProcess)(MParList *list);
+    Int_t  (*fProcess)();
+    Int_t  (*fPostProcess)();
+    Bool_t (*fReInit)(MParList *list);
 
-    Int_t PreProcess(MParList *list) { if (fCall[0]) return Return(0, &list); return fPreProcess  ? (*fPreProcess)(list) : kTRUE; }
-    Int_t Process()                  { if (fCall[1]) return Return(1);        return fProcess     ? (*fProcess)()        : kTRUE; }
-    Int_t PostProcess()              { if (fCall[2]) return Return(2);        return fPostProcess ? (*fPostProcess)()    : kTRUE; }
+    Int_t  PreProcess(MParList *list) { if (fCall[0]) return Return(0, &list); return fPreProcess  ? (*fPreProcess)(list) : kTRUE; }
+    Int_t  Process()                  { if (fCall[1]) return Return(1);        return fProcess     ? (*fProcess)()        : kTRUE; }
+    Int_t  PostProcess()              { if (fCall[2]) return Return(2);        return fPostProcess ? (*fPostProcess)()    : kTRUE; }
+    Bool_t ReInit(MParList *list)     { if (fCall[3]) return Return(3, &list); return fPostProcess ? (*fPostProcess)()    : kTRUE; }
 
     Int_t Return(Int_t no, void *param=NULL);
@@ -32,6 +34,7 @@
     // This is to be used in compiled code
     void SetPreProcess(Int_t (*func)(MParList *list)) { fPreProcess = func;  Free(0); }
-    void SetProcess(Int_t (*func)())                  { fProcess = func;     Free(1);  }
-    void SetPostProcess(Int_t (*func)())              { fPostProcess = func; Free(2);  }
+    void SetProcess(Int_t (*func)())                  { fProcess = func;     Free(1); }
+    void SetPostProcess(Int_t (*func)())              { fPostProcess = func; Free(2); }
+    void SetReInit(Bool_t (*func)(MParList *list))    { fReInit = func;      Free(3); }
 
     // This is for usage in CINT
@@ -39,4 +42,5 @@
     void SetProcess(void *fcn)     { Set(fcn, 1, "");          fProcess    =0; }
     void SetPostProcess(void *fcn) { Set(fcn, 2, "");          fPostProcess=0; }
+    void SetReInit(void *fcn)      { Set(fcn, 3, "MParList*"); fReInit     =0; }
 
     ClassDef(MTaskInteractive, 0) // Interactive task
