# HG changeset patch
# User dgaberscek
# Date 1590738367 -7200
# Node ID 67c6783f221c1f83028430604114b8c9e8a39e80
# Parent  82f062408e709fc5ed624a64fef13f35e8dceda9# Parent  1f043fdaa7fb6a5a765b1913740a94853bd38548
Merge

diff -r 82f062408e70 -r 67c6783f221c runtime/PLCObject.py
--- a/runtime/PLCObject.py	Tue May 26 10:59:01 2020 +0200
+++ b/runtime/PLCObject.py	Fri May 29 09:46:07 2020 +0200
@@ -451,17 +451,27 @@
         self.PythonThreadCond.notify()
         self.PythonThreadCondLock.release()
 
+    def _fail(msg):
+        self.LogMessage(0, msg)
+        self.PLCStatus = PlcStatus.Broken
+        self.StatusChange()
+
+    def PreStartPLC(self):
+        """ 
+        Here goes actions to be taken just before PLC starts, 
+        with all libraries and python object already created.
+        For example : restore saved proprietary parameters
+        """
+        pass
+
     @RunInMain
     def StartPLC(self):
 
-        def fail(msg):
-            self.LogMessage(0, msg)
-            self.PLCStatus = PlcStatus.Broken
-            self.StatusChange()
-
         if self.PLClibraryHandle is None:
             if not self.LoadPLC():
-                fail(_("Problem starting PLC : can't load PLC"))
+                self._fail(_("Problem starting PLC : can't load PLC"))
+
+        self.PreStartPLC()
 
         if self.CurrentPLCFilename is not None and self.PLCStatus == PlcStatus.Stopped:
             c_argv = ctypes.c_char_p * len(self.argv)
@@ -472,7 +482,7 @@
                 self.PythonThreadCommand("Activate")
                 self.LogMessage("PLC started")
             else:
-                fail(_("Problem starting PLC : error %d" % res))
+                self._fail(_("Problem starting PLC : error %d" % res))
 
     @RunInMain
     def StopPLC(self):