From 53644a924fd80cadff761016bb671926e3e03ef7 Mon Sep 17 00:00:00 2001
From: Arthur Coolen <coolen@astron.nl>
Date: Thu, 6 Dec 2012 09:16:28 +0000
Subject: [PATCH] Task #3705: merged 1.9 changes with trunk for the Navigator

---
 .gitattributes                                |   1 +
 MAC/Navigator2/config/progs.ccu               |   3 +-
 MAC/Navigator2/config/progs.dist.station      |   5 +-
 MAC/Navigator2/config/progs.maincu            |   1 +
 .../config/progs.standalone.station           |   5 +-
 .../panels/Processes/CEP_Processes.pnl        |   2 +-
 .../panels/Processes/MainCU_Processes.pnl     |   4 +-
 .../panels/Processes/Station_Processes.pnl    |   4 +-
 .../objects/Processes/SWControler_small.pnl   |   7 +-
 .../panels/objects/Processes/daemon_big.pnl   | 111 +++----
 .../objects/Processes/stationSWLevelView.pnl  |   2 +-
 MAC/Navigator2/panels/objects/swlevel.pnl     | 302 ++++++++++++++++--
 MAC/Navigator2/scripts/transferMPs.ctl        | 121 +++++++
 13 files changed, 455 insertions(+), 113 deletions(-)
 create mode 100644 MAC/Navigator2/scripts/transferMPs.ctl

diff --git a/.gitattributes b/.gitattributes
index fc6c7d95080..09c29eea06c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3338,6 +3338,7 @@ MAC/Navigator2/scripts/monitorStateReset.ctl -text
 MAC/Navigator2/scripts/monitorStationAlarms.ctl -text
 MAC/Navigator2/scripts/readStationBGPconnections.ctl -text
 MAC/Navigator2/scripts/readStationConfigs.ctl -text
+MAC/Navigator2/scripts/transferMPs.ctl -text
 MAC/Test/APL/PVSSproject/colorDB/Lofar[!!-~]colors -text svneol=native#application/octet-stream
 MAC/Test/APL/PVSSproject/colorDB/colorDB_de -text svneol=native#application/octet-stream
 MAC/Test/APL/PVSSproject/config/config -text svneol=native#application/octet-stream
diff --git a/MAC/Navigator2/config/progs.ccu b/MAC/Navigator2/config/progs.ccu
index 50869e5d953..7234d9dea2a 100644
--- a/MAC/Navigator2/config/progs.ccu
+++ b/MAC/Navigator2/config/progs.ccu
@@ -14,8 +14,9 @@ PVSS00event      | always |      30 |        3 |        1 |
 PVSS00ctrl       | always |      30 |        3 |        1 |-f pvss_scripts.lst
 PVSS00sim        | always |      30 |        3 |        1 |
 PVSS00dist       | always |      30 |        3 |        1 |
+PVSS00ctrl       |   once |      30 |        2 |        2 |readStationBGPconnections.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |transferMPs.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |claim.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateChanges.ctl
-PVSS00ctrl       |   once |      30 |        2 |        2 |readStationBGPconnections.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateReset.ctl
 PVSS00ui         | manual |      30 |        2 |        2 |-m para
diff --git a/MAC/Navigator2/config/progs.dist.station b/MAC/Navigator2/config/progs.dist.station
index 0163de4f87f..1456b2e940b 100644
--- a/MAC/Navigator2/config/progs.dist.station
+++ b/MAC/Navigator2/config/progs.dist.station
@@ -10,8 +10,9 @@ PVSS00event      | always |      30 |        3 |        1 |
 PVSS00ctrl       | always |      30 |        3 |        1 |-f pvss_scripts.lst
 PVSS00sim        | always |      30 |        3 |        1 |
 PVSS00dist       | always |      30 |        3 |        1 |
-PVSS00ctrl       |   once |      30 |        2 |        2 |claim.ctl
-PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateChanges.ctl
 PVSS00ctrl       |   once |      30 |        2 |        2 |readStationConfigs.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |transferMPs.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |claim.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateChanges.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateReset.ctl
 PVSS00ui         | manual |      30 |        2 |        2 |-m para -display localhost:10.0
diff --git a/MAC/Navigator2/config/progs.maincu b/MAC/Navigator2/config/progs.maincu
index af37c7aa87a..64677f23a81 100644
--- a/MAC/Navigator2/config/progs.maincu
+++ b/MAC/Navigator2/config/progs.maincu
@@ -10,6 +10,7 @@ PVSS00event      | always |      30 |        3 |        1 |
 PVSS00ctrl       | always |      30 |        3 |        1 |-f pvss_scripts.lst
 PVSS00sim        | always |      30 |        3 |        1 |
 PVSS00dist       | always |      30 |        3 |        1 |
+PVSS00ctrl       | always |      30 |        2 |        2 |transferMPs.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |claim.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateChanges.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateReset.ctl
diff --git a/MAC/Navigator2/config/progs.standalone.station b/MAC/Navigator2/config/progs.standalone.station
index dfd4a6710ab..53bdf6f4b0e 100644
--- a/MAC/Navigator2/config/progs.standalone.station
+++ b/MAC/Navigator2/config/progs.standalone.station
@@ -9,9 +9,10 @@ PVSS00valarch    | always |      30 |        3 |        1 |-num 2
 PVSS00event      | always |      30 |        3 |        1 |
 PVSS00ctrl       | always |      30 |        3 |        1 |-f pvss_scripts.lst
 PVSS00sim        | always |      30 |        3 |        1 |
-PVSS00ctrl       |   once |      30 |        2 |        2 |claim.ctl
-PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateChanges.ctl
 PVSS00ctrl       |   once |      30 |        2 |        2 |readStationConfigs.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |claim.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |transferMPs.ctl
+PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateChanges.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStateReset.ctl
 PVSS00ctrl       | always |      30 |        2 |        2 |monitorStationAlarms.ctl
 PVSS00ui         | manual |      30 |        2 |        2 |-m para -display localhost:10.0
diff --git a/MAC/Navigator2/panels/Processes/CEP_Processes.pnl b/MAC/Navigator2/panels/Processes/CEP_Processes.pnl
index 94cf82ae878..4a178dc17d8 100644
--- a/MAC/Navigator2/panels/Processes/CEP_Processes.pnl
+++ b/MAC/Navigator2/panels/Processes/CEP_Processes.pnl
@@ -374,7 +374,7 @@ LANG:1 0
 3 41 "PANEL_REF42" -1
 "objects\\Processes\\controller_small.pnl" 0 280 T 55 1 0 1 0 15
 1
-"$name""SoftwareMonitor"
+"$name""Daemons_SoftwareMonitor"
 3 42 "PANEL_REF42" -1
 "objects\\Processes\\daemon_small.pnl" 0 40 T 55 1 0 1 0 20
 1
diff --git a/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl b/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl
index e0e6e35b6ae..54a14396430 100644
--- a/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl
+++ b/MAC/Navigator2/panels/Processes/MainCU_Processes.pnl
@@ -400,9 +400,9 @@ LANG:1 0
 1
 "$name""MACScheduler"
 3 20 "PANEL_REF21" -1
-"objects\\Processes\\controller_small.pnl" 0 280 T 35 1 0 1 0 -32
+"objects\\Processes\\controller_small.pnl" 0 280 T 35 1 0 1 0 -30
 1
-"$name""SoftwareMonitor"
+"$name""Daemons_SoftwareMonitor"
 3 21 "PANEL_REF22" -1
 "objects\\Processes\\daemon_small.pnl" 0 140 T 35 1 0 1 0 12
 1
diff --git a/MAC/Navigator2/panels/Processes/Station_Processes.pnl b/MAC/Navigator2/panels/Processes/Station_Processes.pnl
index b2bd0c83af1..04e65629561 100644
--- a/MAC/Navigator2/panels/Processes/Station_Processes.pnl
+++ b/MAC/Navigator2/panels/Processes/Station_Processes.pnl
@@ -524,5 +524,5 @@ LANG:1 0
 3 38 "PANEL_REF39" -1
 "objects\\Processes\\controller_small.pnl" 10 470 T 44 1 0 1 -10 14
 1
-"$name""SoftwareMonitor"
-0
\ No newline at end of file
+"$name""Daemons_SoftwareMonitor"
+0
diff --git a/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl b/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
index 05fe78fa9d2..6f45caea2b8 100644
--- a/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
+++ b/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
@@ -22,10 +22,10 @@ PANEL,-1 -1 388 166 N "_3DFace" 2
     if (dpExists(\"MCU001:LOFAR_PermSW_MACScheduler.activeObservations\")) {
       if (dpConnect(\"observationChanged\", \"MCU001:LOFAR_PermSW_MACScheduler.activeObservations:_online.._value\",
                                           \"MCU001:LOFAR_PermSW_MACScheduler.activeObservations:_online.._invalid\") == -1) {
-        LOG_ERROR(\"Observation_small.pnl:main|Couldn't connect to: MCU001:LOFAR_PermSW_MACScheduler.activeObservations\");
+        LOG_ERROR(\"SWController_small.pnl:main|Couldn't connect to: MCU001:LOFAR_PermSW_MACScheduler.activeObservations\");
       }
     } else {
-      if (!isStandalone()) LOG_ERROR(\"Observation_small.pnl:main|Couldn't find DP to connect to: MCU001:LOFAR_PermSW_MACScheduler.activeObservations\");
+      if (!isStandalone()) LOG_ERROR(\"SWController_small.pnl:main|Couldn't find DP to connect to: MCU001:LOFAR_PermSW_MACScheduler.activeObservations\");
     }
   }	else {
     reload();
@@ -118,7 +118,8 @@ void dblClick() {
   if (dpExists(baseDP) ) {
     LOG_DEBUG(\"SWcontroller_small.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP);
     g_currentDatapoint=baseDP;
-    navPanel_setEvent(station,\"ChangePanel\");
+    //we also have to set the tabctrl to think this was initiated from the ProcessesTab, otherwise we will get the wrong panel.
+    navPanel_setEvent(\"Processes\",\"ChangeTab\");
   }
   
   // set delay to avoid click event will be triggered
diff --git a/MAC/Navigator2/panels/objects/Processes/daemon_big.pnl b/MAC/Navigator2/panels/objects/Processes/daemon_big.pnl
index eaa9901f02d..46d485e4b37 100644
--- a/MAC/Navigator2/panels/objects/Processes/daemon_big.pnl
+++ b/MAC/Navigator2/panels/objects/Processes/daemon_big.pnl
@@ -1,4 +1,4 @@
-V 10
+V 11
 1
 LANG:1 0 
 PANEL,-1 -1 1013 750 N "_3DFace" 1
@@ -45,8 +45,6 @@ PANEL,-1 -1 1013 750 N "_3DFace" 1
   showSelfState(baseDP);
   
   reload();
-
-  LOG_DEBUG($daemonName+\".pnl:main|HardwareTree found: \"+ result);  
 }
 
 updateStates(string dp1, string message, 
@@ -153,9 +151,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-13-*-100-100-*-*-iso8859-1|-13,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 28 168 992 462
+LANG:1 33 MS Shell Dlg,-1,13,5,50,0,0,0,0,0
+0  28 168 992 462
 EE 1 0 1 5 1 "time" 12 1 0 "s" 1
 LANG:1 4 time
 E
@@ -191,9 +188,8 @@ LANG:1 0
 LANG:1 2 #1
 10 30
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-13-*-100-100-*-*-iso8859-1|-13,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-0 1 2 1 7
+LANG:1 33 MS Shell Dlg,-1,13,5,50,0,0,0,0,0
+0 0 1 2 1 7
 1 0
 1 21 0 "" 1
 0
@@ -210,9 +206,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 138 48 991 69
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  138 48 991 69
 2 "0s" 0 0 0 0 0 -1  E E E
 2 3
 "TopLabel"
@@ -227,12 +222,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 480 10 677 31
+E E 0 1 1 2 1 E U  1 E 480 10 677 30
 0 2 2 "0s" 0 0 0 192 0 0  480 10 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-16-*-100-100-*-*-iso8859-1|-16,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,16,5,75,0,0,0,0,0
+0 1
 LANG:1 22 Station: CTStartDaemon
 2 7
 "PRIMITIVE_TEXT2"
@@ -247,12 +241,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 34 84 115 98
+E E 0 1 1 2 1 E U  1 E 34 84 115 97
 0 2 2 "0s" 0 0 0 192 0 0  34 84 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 14 Current Action
 2 8
 "PRIMITIVE_TEXT3"
@@ -267,12 +260,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 34 51 128 65
+E E 0 1 1 2 1 E U  1 E 34 51 128 64
 0 2 2 "0s" 0 0 0 192 0 0  34 51 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 15 Status Message:
 14 9
 "processAction"
@@ -287,9 +279,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 138 78 432 99
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  138 78 432 99
 2 "0s" 0 0 0 0 0 -1  E E E
 2 10
 "PRIMITIVE_TEXT4"
@@ -304,12 +295,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 34 114 106 128
+E E 0 1 1 2 1 E U  1 E 34 114 106 127
 0 2 2 "0s" 0 0 0 192 0 0  34 114 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 13 Current Error
 14 11
 "processError"
@@ -324,9 +314,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 138 108 432 129
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  138 108 432 129
 2 "0s" 0 0 0 0 0 -1  E E E
 2 12
 "PRIMITIVE_TEXT5"
@@ -341,12 +330,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 34 150 119 164
+E E 0 1 1 2 1 E U  1 E 34 150 119 163
 0 2 2 "0s" 0 0 0 192 0 0  34 150 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 13 Log Messages:
 2 13
 "PRIMITIVE_TEXT6"
@@ -361,12 +349,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 32 472 124 486
+E E 0 1 1 2 1 E U  1 E 32 472 124 485
 0 2 2 "0s" 0 0 0 192 0 0  32 472 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 14 Daemon Values:
 2 15
 "PRIMITIVE_TEXT7"
@@ -381,12 +368,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 462 84 516 98
+E E 0 1 1 2 1 E U  1 E 462 84 516 97
 0 2 2 "0s" 0 0 0 192 0 0  462 84 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 9 StartTime
 2 16
 "PRIMITIVE_TEXT8"
@@ -401,12 +387,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 462 114 515 128
+E E 0 1 1 2 1 E U  1 E 462 114 515 127
 0 2 2 "0s" 0 0 0 192 0 0  462 114 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 8 StopTime
 14 17
 "processStartTime"
@@ -421,9 +406,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 530 78 824 99
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  530 78 824 99
 2 "0s" 0 0 0 0 0 -1  E E E
 14 18
 "processStopTime"
@@ -438,9 +422,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 530 108 824 129
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  530 108 824 129
 2 "0s" 0 0 0 0 0 -1  E E E
 2 19
 "PRIMITIVE_TEXT9"
@@ -455,12 +438,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  1 E 852 84 869 98
+E E 0 1 1 2 1 E U  1 E 852 84 869 97
 0 2 2 "0s" 0 0 0 192 0 0  852 84 1
 1
-LANG:1 101 -*-MS Shell Dlg-bold-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,758,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
-1
+LANG:1 33 MS Shell Dlg,-1,11,5,75,0,0,0,0,0
+0 1
 LANG:1 3 ID:
 14 20
 "processID"
@@ -475,9 +457,8 @@ LANG:1 0
 
 0
 1
-LANG:1 98 -*-MS Shell Dlg-*-r-normal-*-11-*-100-100-*-*-iso8859-1|-11,0,0,0,505,0,0,0,0,0,0,0,0,MS Shell Dlg
-0 ""
- 870 78 990 99
+LANG:1 33 MS Shell Dlg,-1,11,5,50,0,0,0,0,0
+0  870 78 990 99
 2 "0s" 0 0 0 0 0 -1  E E E
 0
 LAYER, 1 
@@ -508,7 +489,7 @@ LAYER, 7
 1
 LANG:1 0 
 0
-3 0 "selfState"
+3 0 "selfState" -1
 "objects\\lofar_self_state.pnl" 9.500000000000011 10.5 T 1 1 0 1 0.499999999999993 2.5
 0
-0
\ No newline at end of file
+0
diff --git a/MAC/Navigator2/panels/objects/Processes/stationSWLevelView.pnl b/MAC/Navigator2/panels/objects/Processes/stationSWLevelView.pnl
index 932c6f11710..c38abba4a04 100644
--- a/MAC/Navigator2/panels/objects/Processes/stationSWLevelView.pnl
+++ b/MAC/Navigator2/panels/objects/Processes/stationSWLevelView.pnl
@@ -103,7 +103,7 @@ LANG:1 0
 3 1 "PANEL_REF1" -1
 "objects\\Processes\\SWControler_small.pnl" 0 0 T 18 U 
 2
-"$name""PermSW_SoftwareMonitor"
+"$name""PermSW_Daemons_SoftwareMonitor"
 "$station""$station"
 3 2 "PANEL_REF2" -1
 "objects\\Processes\\SWControler_small.pnl" 20 0 T 19 1 0 1 -4 0
diff --git a/MAC/Navigator2/panels/objects/swlevel.pnl b/MAC/Navigator2/panels/objects/swlevel.pnl
index c2b4d265795..a88023126f0 100644
--- a/MAC/Navigator2/panels/objects/swlevel.pnl
+++ b/MAC/Navigator2/panels/objects/swlevel.pnl
@@ -10,7 +10,7 @@ PANEL,-1 -1 251 88 N "_3DFace" 1
   station = $station;
   station_text.text = station;
   
-  baseDP = station+\":LOFAR_PermSW_SoftwareMonitor\";
+  baseDP = station+\":LOFAR_PermSW_Daemons_SoftwareMonitor\";
   
   if (dpExists(baseDP)) {
     showLevels();
@@ -19,14 +19,56 @@ PANEL,-1 -1 251 88 N "_3DFace" 1
   }
 }
 " 0
- E E E E 1 -1 -1 0  0 0
+ E "main(int x, int y)
+{
+  click();
+}" 0
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+ 1 -1 -1 0  0 0
 ""0  1
 E "#uses \"navPanel.ctl\"
 string station = \"\";
 string baseDP=\"\";
+bool bDoubleClicked  = false;
 
 int filled=0;
 
+// routine for single mouse click
+void click() {
+  // set delay in case double click was meant
+  delay(0, 100); 
+  if (!bDoubleClicked) {
+    navPanel_setEvent(station,\"EventClick\");
+  }
+}
+
+// routine for double mouse click
+void dblClick() {
+  // indicate this is a doubleClick
+  bDoubleClicked = true;   
+
+  if (dpExists(baseDP) ) {
+    LOG_DEBUG(\"swlevel.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP);
+    g_currentDatapoint=baseDP;
+    navPanel_setEvent(station,\"ChangePanel\");
+  }
+  
+  // set delay to avoid click event will be triggered
+  delay(0, 500);
+  bDoubleClicked = false;  
+}                       
+
+// routine for right mouse click
+void rClick() {
+
+}                       
 
 // ****************************************
 // Name: showLogging   
@@ -155,7 +197,15 @@ LANG:1 0
 "level1_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 0 0 0 0 0 0
 E E E
 0
@@ -164,12 +214,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -180 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -180 -140 1 E 230 150 234 159
 2 1
 "station_text"
 ""
 1 10 9 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 1 0 0 0 0 0
 E E E
 0
@@ -178,7 +240,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E U  0 E 10 9 38 22
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E U  0 E 10 9 38 22
 0 2 2 "0s" 0 0 0 192 0 0  10 9 1
 1
 LANG:1 34 MS Shell Dlg 2,8,-1,5,50,0,0,0,0,0
@@ -188,7 +254,15 @@ LANG:1 5 cs001
 "level2_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 2 0 0 0 0 0
 E E E
 0
@@ -197,12 +271,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -175 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -175 -140 1 E 230 150 234 159
 6 3
 "level3_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 3 0 0 0 0 0
 E E E
 0
@@ -211,12 +297,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -170 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -170 -140 1 E 230 150 234 159
 6 4
 "level4_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 4 0 0 0 0 0
 E E E
 0
@@ -225,12 +323,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -165 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -165 -140 1 E 230 150 234 159
 6 5
 "level5_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 5 0 0 0 0 0
 E E E
 0
@@ -239,12 +349,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -160 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -160 -140 1 E 230 150 234 159
 6 6
 "level6_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 6 0 0 0 0 0
 E E E
 0
@@ -253,12 +375,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -155 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -155 -140 1 E 230 150 234 159
 6 7
 "level7_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 7 0 0 0 0 0
 E E E
 0
@@ -267,12 +401,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -150 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -150 -140 1 E 230 150 234 159
 6 8
 "level8_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 8 0 0 0 0 0
 E E E
 0
@@ -281,12 +427,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -145 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -145 -140 1 E 230 150 234 159
 6 9
 "level9_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 9 0 0 0 0 0
 E E E
 0
@@ -295,12 +453,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -140 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -140 -140 1 E 230 150 234 159
 6 10
 "level10_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 10 0 0 0 0 0
 E E E
 0
@@ -309,12 +479,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -135 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -135 -140 1 E 230 150 234 159
 6 11
 "level11_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 11 0 0 0 0 0
 E E E
 0
@@ -323,12 +505,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -130 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -130 -140 1 E 230 150 234 159
 6 12
 "level12_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 12 0 0 0 0 0
 E E E
 0
@@ -337,12 +531,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -125 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -125 -140 1 E 230 150 234 159
 6 13
 "level13_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 13 0 0 0 0 0
 E E E
 0
@@ -351,12 +557,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -120 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -120 -140 1 E 230 150 234 159
 6 14
 "level14_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 14 0 0 0 0 0
 E E E
 0
@@ -365,12 +583,24 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -115 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -115 -140 1 E 230 150 234 159
 6 15
 "level15_text"
 ""
 1 230 150 E E E 1 E 1 E N {0,0,0} E N {255,255,255} E E
- E E
+ "main()
+{
+  rClick();
+}" 0
+ "main(int x, int y)
+{
+  dblClick();
+}" 0
+
 15 0 0 0 0 0
 E E E
 0
@@ -379,7 +609,11 @@ LANG:1 0
 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 2 1 E 1 0 1 -110 -140 1 E 230 150 234 159
+E "main(int x, int y)
+{
+  click();
+}" 0
+ 0 1 1 2 1 E 1 0 1 -110 -140 1 E 230 150 234 159
 0
 LAYER, 1 
 1
diff --git a/MAC/Navigator2/scripts/transferMPs.ctl b/MAC/Navigator2/scripts/transferMPs.ctl
new file mode 100644
index 00000000000..df3585c138e
--- /dev/null
+++ b/MAC/Navigator2/scripts/transferMPs.ctl
@@ -0,0 +1,121 @@
+#uses "da.ctl"
+
+// To copy all _mp defined functionality (archives , dp_fct etc to the real DP's
+// we use this script after setup (or each time that the scriptInfo.paramDone is set to false)
+// we run this script
+bool bDebug=false;
+
+void main()
+{
+  // connect to debugflag to be able to switch debug on/off during run
+    if (dpExists("scriptInfo.transferMPs.debug")) {
+    dpConnect("debugCB",true,"scriptInfo.transferMPs.debug");
+  } else {
+    DebugTN("transferMPs.ctl:main|scriptInfo.transferMPs.runDone point not found in Database");  
+    exit();
+  } 
+
+  if (dpExists("scriptInfo.transferMPs.runDone")) {
+    dpConnect("startTransferMP",true,"scriptInfo.transferMPs.runDone");
+  } else {
+    DebugTN("transferMPs.ctl:main|scriptInfo.transferMPs.runDone point not found in Database");  
+    exit();
+  } 
+}
+
+private void debugCB(string dp1, bool debug) {
+  if (bDebug != debug) bDebug=debug;
+}
+
+// Transfer all _mp_settings to all DP's
+private void startTransferMP(string dp1, bool done ) {
+  int        i, j, k, l, ll, l1, iError;
+  dyn_float  df;
+  dyn_string dsConfigs, ds;
+  string     sDestinationDPE;
+  
+  if (done) return;
+  
+  DebugTN("transferMPs.ctl:main|start transfer of MPconfigs to all DP's");     
+
+    
+  string query="SELECT '_original.._value' FROM '_mp_*'";
+  dyn_dyn_anytype tab;
+  dyn_string dps;
+  dpQuery(query,tab);
+  string olddp="";
+  for(int z=2;z<=dynlen(tab);z++) {
+    string dp = dpSubStr(tab[z][1],DPSUB_DP);
+    if (olddp != dp) {
+      olddp=dp;
+      if (!skipDP(dp)) {
+        dynAppend(dps,dp);
+      }
+    }
+  }
+
+  for (k=1;k <= dynlen(dps); k++) {
+    string dpstr = dps[k];
+    dyn_string dsDpes = dpNames( dpstr + ".**"),
+               dsDps = dpNames("*",dpTypeName(dpstr));
+  
+    // no datapoints found
+    if ( dynlen(dsDps) > 1 ) {
+    
+      l = dynlen(dsDpes);
+      l1 = dynlen(dsDps);
+      ll = l * (l1 - 1);
+      // !!! dynlen(dsDpes) * dynlen(dsDps) verwenden mit der 2-Sek-Verzögerung
+
+      for ( i = 1; i <= l; i++ ) {
+        if ( strpos(dsDpes[i],".") < 1 ) dsDpes[i] += ".";
+        dsConfigs = dpNames( dsDpes[i] + ":*" );
+        for ( j = dynlen(dsConfigs); j > 0; j--) {
+          strreplace(dsConfigs[j], dsDpes[i] + ":", "");
+        }
+        if ( dynlen(dsConfigs) < 1 ) continue;
+    
+        for ( j = 1; j <= dynlen(dsDps); j++ ) {
+
+          if ( dpSubStr(dsDps[j],DPSUB_DP) == dpSubStr(dsDpes[i],DPSUB_DP) ) {
+            continue;
+          }
+          sDestinationDPE = dsDpes[i];
+          strreplace( sDestinationDPE, dpSubStr(dsDpes[i], DPSUB_DP), dpSubStr(dsDps[j], DPSUB_DP));
+          daCheckDPE(sDestinationDPE);
+
+          dpCopyConfig(dsDpes[i], sDestinationDPE, dsConfigs, iError);
+        }
+      }
+    }
+  }
+  dpSet("scriptInfo.transferMPs.runDone",true);
+  DebugTN("MPTransfer Done.");
+}
+
+bool skipDP(string dp) {
+// We only want to look at our own DB points that have a _mp_ sadly enough PVSS 
+// keeps some of their own datapoints in the database, and there is no way to 
+// determine what are theirs and what are or own points, other then a hard compare.
+  if (strpos(dp,"_mp__") > -1) return true;
+  if (strpos(dp,"WH_SC_SUB") > -1) return true;
+  if (strpos(dp,"WH_SC1") > -1) return true;
+  if (strpos(dp,"ANALOG1") > -1) return true;
+  if (strpos(dp,"ANALOG2") > -1) return true;
+  if (strpos(dp,"DRIVE1") > -1) return true;
+  if (strpos(dp,"DRIVE2") > -1) return true;
+  if (strpos(dp,"SETPOINT") > -1) return true;
+  if (strpos(dp,"SLIDE_VALVE1") > -1) return true;
+  if (strpos(dp,"SLIDE_VALVE2") > -1) return true;
+  if (strpos(dp,"PUMP2") > -1) return true;
+  if (strpos(dp,"PUMP1") > -1) return true;
+  if (strpos(dp,"BIT_CONDITION") > -1) return true;
+  if (strpos(dp,"COUNTER1") > -1) return true;
+  if (strpos(dp,"COUNTER_SUB") > -1) return true;
+  if (strpos(dp,"LABOR_ANALOG") > -1) return true;
+  if (strpos(dp,"LABOR_COUNTER") > -1) return true;
+  if (strpos(dp,"SLIDE_VALVE_HAND1") > -1) return true;
+  if (strpos(dp,"WH_SC_SERVICE") > -1) return true;
+  if (strpos(dp,"MODE_CMD") > -1) return true;
+  return false;
+}
-- 
GitLab