LPCBeremiz.py
changeset 487 1df4a28d3586
parent 478 029688dad14d
child 492 0852c4682179
equal deleted inserted replaced
486:2e0fe44044b3 487:1df4a28d3586
   357     PluginMethods = [
   357     PluginMethods = [
   358         {"bitmap" : opjimg("Build"),
   358         {"bitmap" : opjimg("Build"),
   359          "name" : _("Build"),
   359          "name" : _("Build"),
   360          "tooltip" : _("Build project into build folder"),
   360          "tooltip" : _("Build project into build folder"),
   361          "method" : "_build"},
   361          "method" : "_build"},
       
   362         {"bitmap" : opjimg("Run"),
       
   363          "name" : _("Run"),
       
   364          "shown" : False,
       
   365          "tooltip" : _("Start PLC"),
       
   366          "method" : "_Run"},
       
   367         {"bitmap" : opjimg("Stop"),
       
   368          "name" : _("Stop"),
       
   369          "shown" : False,
       
   370          "tooltip" : _("Stop Running PLC"),
       
   371          "method" : "_Stop"},
       
   372         {"bitmap" : opjimg("Transfer"),
       
   373          "name" : _("Transfer"),
       
   374          "shown" : False,
       
   375          "tooltip" : _("Transfer PLC"),
       
   376          "method" : "_Transfer"},
   362     ]
   377     ]
   363 
   378 
   364     def __init__(self, frame, logger):
   379     def __init__(self, frame, logger):
   365         PluginsRoot.__init__(self, frame, logger)
   380         PluginsRoot.__init__(self, frame, logger)
       
   381         
   366         self.PlugChildsTypes += [("LPCBus", LPCBus, "LPC bus")]
   382         self.PlugChildsTypes += [("LPCBus", LPCBus, "LPC bus")]
       
   383 
       
   384         self.OnlineMode = 0
       
   385         self.OnlinePath = None
   367 
   386 
   368     def GetProjectName(self):
   387     def GetProjectName(self):
   369         return self.Project.getname()
   388         return self.Project.getname()
   370 
   389 
   371     def GetDefaultTarget(self):
   390     def GetDefaultTarget(self):
   375         target.setcontent({"name": "Makefile", "value": target_value})
   394         target.setcontent({"name": "Makefile", "value": target_value})
   376         return target
   395         return target
   377      
   396      
   378     def SetProjectName(self, name):
   397     def SetProjectName(self, name):
   379         return self.Project.setname(name)
   398         return self.Project.setname(name)
       
   399 
       
   400     def SetOnlineMode(self, mode, path=None):
       
   401         self.OnlineMode = mode
       
   402         self.OnlinePath = path
       
   403         self.UpdateMethodsFromPLCStatus()
   380 
   404 
   381     # Update a PLCOpenEditor Pou variable name
   405     # Update a PLCOpenEditor Pou variable name
   382     def UpdateProjectVariableName(self, old_name, new_name):
   406     def UpdateProjectVariableName(self, old_name, new_name):
   383         self.Project.updateElementName(old_name, new_name)
   407         self.Project.updateElementName(old_name, new_name)
   384         self.BufferProject()
   408         self.BufferProject()
   427 
   451 
   428         return None
   452         return None
   429         
   453         
   430     def SaveProject(self):
   454     def SaveProject(self):
   431         self.SaveXMLFile(self.ProjectPath)
   455         self.SaveXMLFile(self.ProjectPath)
       
   456 
       
   457     ############# Real PLC object access #############
       
   458     def UpdateMethodsFromPLCStatus(self):
       
   459         # Get PLC state : Running or Stopped
       
   460         # TODO : use explicit status instead of boolean
       
   461         if self.OnlineMode == 0:
       
   462             status = "Disconnected"
       
   463         elif self.OnlineMode == 1:
       
   464             status = "Connected"
       
   465         elif self._connector is not None:
       
   466             status = self._connector.GetPLCstatus()
       
   467         else:
       
   468             status = "Disconnected"
       
   469         if(self.previous_plcstate != status):
       
   470             for args in {
       
   471                      "Started" :     [("_build", False),
       
   472                                       ("_Run", False),
       
   473                                       ("_Stop", True),
       
   474                                       ("_Transfer", False)],
       
   475                      "Stopped" :     [("_build", False),
       
   476                                       ("_Run", True),
       
   477                                       ("_Stop", False),
       
   478                                       ("_Transfer", False)],
       
   479                      "Connected" :   [("_build", False),
       
   480                                       ("_Run", False),
       
   481                                       ("_Stop", False),
       
   482                                       ("_Transfer", True)],
       
   483                      "Disconnected" :[("_build", True),
       
   484                                       ("_Run", False),
       
   485                                       ("_Stop", False),
       
   486                                       ("_Transfer", False)],
       
   487                    }.get(status,[]):
       
   488                 self.ShowMethod(*args)
       
   489             self.previous_plcstate = status
       
   490             return True
       
   491         return False
   432 
   492 
   433 #-------------------------------------------------------------------------------
   493 #-------------------------------------------------------------------------------
   434 #                              LPCBeremiz Class
   494 #                              LPCBeremiz Class
   435 #-------------------------------------------------------------------------------
   495 #-------------------------------------------------------------------------------
   436 
   496 
   781             else:
   841             else:
   782                 wx.CallAfter(self.PluginRoot._build)
   842                 wx.CallAfter(self.PluginRoot._build)
   783         
   843         
   784         def SetProjectName(self, name):
   844         def SetProjectName(self, name):
   785             self.PluginRoot.SetProjectName(name)
   845             self.PluginRoot.SetProjectName(name)
       
   846             self.RestartTimer()
       
   847         
       
   848         def SetOnlineMode(self, mode, path=None):
       
   849             self.PluginRoot.SetOnlineMode(mode, path)
   786             self.RestartTimer()
   850             self.RestartTimer()
   787         
   851         
   788         def AddBus(self, iec_channel, name, icon=None):
   852         def AddBus(self, iec_channel, name, icon=None):
   789             for child in self.PluginRoot.IterChilds():
   853             for child in self.PluginRoot.IterChilds():
   790                 if child.BaseParams.getName() == name:
   854                 if child.BaseParams.getName() == name:
  1005                                        "Show": ([], 0),
  1069                                        "Show": ([], 0),
  1006                                        "Refresh": ([], 0),
  1070                                        "Refresh": ([], 0),
  1007                                        "Close": ([], 0),
  1071                                        "Close": ([], 0),
  1008                                        "Compile": ([], 0),
  1072                                        "Compile": ([], 0),
  1009                                        "SetProjectName": ([str], 0),
  1073                                        "SetProjectName": ([str], 0),
       
  1074                                        "SetOnlineMode": ([int, str], 1),
  1010                                        "AddBus": ([int, str, str], 1),
  1075                                        "AddBus": ([int, str, str], 1),
  1011                                        "RenameBus": ([int, str], 0),
  1076                                        "RenameBus": ([int, str], 0),
  1012                                        "ChangeBusIECChannel": ([int, int], 0),
  1077                                        "ChangeBusIECChannel": ([int, int], 0),
  1013                                        "RemoveBus": ([int], 0),
  1078                                        "RemoveBus": ([int], 0),
  1014                                        "AddModule": ([location, int, str, str], 1), 
  1079                                        "AddModule": ([location, int, str, str], 1),