--- a/etherlab/etherlab.py Mon May 14 07:43:40 2012 +0900
+++ b/etherlab/etherlab.py Sun May 20 22:42:37 2012 +0200
@@ -5,17 +5,17 @@
import wx
from xmlclass import *
-from plugger import PlugTemplate
-from PLCControler import UndoBuffer, LOCATION_PLUGIN, LOCATION_MODULE, LOCATION_GROUP, LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
+from ConfigTreeNode import ConfigTreeNode
+from PLCControler import UndoBuffer, LOCATION_CONFNODE, LOCATION_MODULE, LOCATION_GROUP, LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
from ConfigEditor import NodeEditor, CIA402NodeEditor, ETHERCAT_VENDOR, ETHERCAT_GROUP, ETHERCAT_DEVICE
try:
- from plugins.motion import Headers, AxisXSD
+ from confnodes.motion import Headers, AxisXSD
HAS_MCL = True
except:
HAS_MCL = False
-PLUGINFOLDER = os.path.split(os.path.realpath(__file__))[0]
+CONFNODEFOLDER = os.path.split(os.path.realpath(__file__))[0]
TYPECONVERSION = {"BOOL" : "X", "SINT" : "B", "INT" : "W", "DINT" : "D", "LINT" : "L",
"USINT" : "B", "UINT" : "W", "UDINT" : "D", "ULINT" : "L",
@@ -61,19 +61,19 @@
# Ethercat Node
#--------------------------------------------------
-class _EthercatSlavePlug:
+class _EthercatSlaveCTN:
NODE_PROFILE = None
EditorType = NodeEditor
def GetIconPath(self, icon):
- return os.path.join(PLUGINFOLDER, "images", icon)
+ return os.path.join(CONFNODEFOLDER, "images", icon)
def ExtractHexDecValue(self, value):
return ExtractHexDecValue(value)
def GetSizeOfType(self, type):
- return TYPECONVERSION.get(self.GetPlugRoot().GetBaseType(type), None)
+ return TYPECONVERSION.get(self.GetCTRoot().GetBaseType(type), None)
def GetSlavePos(self):
return self.BaseParams.getIEC_Channel()
@@ -83,13 +83,13 @@
parts = path.split(".", 1)
if self.MandatoryParams and parts[0] == self.MandatoryParams[0]:
return self.MandatoryParams[1].getElementInfos(parts[0], parts[1])
- elif self.PlugParams and parts[0] == self.PlugParams[0]:
- return self.PlugParams[1].getElementInfos(parts[0], parts[1])
+ elif self.CTNParams and parts[0] == self.CTNParams[0]:
+ return self.CTNParams[1].getElementInfos(parts[0], parts[1])
else:
params = []
if wx.VERSION < (2, 8, 0) and self.MandatoryParams:
params.append(self.MandatoryParams[1].getElementInfos(self.MandatoryParams[0]))
- slave_type = self.PlugParent.GetSlaveType(self.GetSlavePos())
+ slave_type = self.CTNParent.GetSlaveType(self.GetSlavePos())
params.append({
'use': 'required',
'type': 'element',
@@ -97,55 +97,55 @@
'value': None,
'children': [{
'use': 'optional',
- 'type': self.PlugParent.GetSlaveTypesLibrary(self.NODE_PROFILE),
+ 'type': self.CTNParent.GetSlaveTypesLibrary(self.NODE_PROFILE),
'name': 'Type',
'value': (slave_type["device_type"], slave_type)},
{'use': 'optional',
'type': 'unsignedLong',
'name': 'Alias',
- 'value': self.PlugParent.GetSlaveAlias(self.GetSlavePos())}]
+ 'value': self.CTNParent.GetSlaveAlias(self.GetSlavePos())}]
})
- if self.PlugParams:
- params.append(self.PlugParams[1].getElementInfos(self.PlugParams[0]))
+ if self.CTNParams:
+ params.append(self.CTNParams[1].getElementInfos(self.CTNParams[0]))
return params
def SetParamsAttribute(self, path, value):
position = self.BaseParams.getIEC_Channel()
- value, changed = PlugTemplate.SetParamsAttribute(self, path, value)
+ value, changed = ConfigTreeNode.SetParamsAttribute(self, path, value)
# Filter IEC_Channel, Slave_Type and Alias that have specific behavior
if path == "BaseParams.IEC_Channel":
- self.PlugParent.SetSlavePosition(position, value)
+ self.CTNParent.SetSlavePosition(position, value)
elif path == "SlaveParams.Type":
- self.PlugParent.SetSlaveType(position, value)
- slave_type = self.PlugParent.GetSlaveType(self.GetSlavePos())
+ self.CTNParent.SetSlaveType(position, value)
+ slave_type = self.CTNParent.GetSlaveType(self.GetSlavePos())
value = (slave_type["device_type"], slave_type)
changed = True
elif path == "SlaveParams.Alias":
- self.PlugParent.SetSlaveAlias(position, value)
+ self.CTNParent.SetSlaveAlias(position, value)
changed = True
return value, changed
def GetSlaveInfos(self):
- return self.PlugParent.GetSlaveInfos(self.GetSlavePos())
+ return self.CTNParent.GetSlaveInfos(self.GetSlavePos())
def GetVariableLocationTree(self):
return {"name": self.BaseParams.getName(),
- "type": LOCATION_PLUGIN,
+ "type": LOCATION_CONFNODE,
"location": self.GetFullIEC_Channel(),
- "children": self.PlugParent.GetDeviceLocationTree(self.GetSlavePos(), self.GetCurrentLocation(), self.BaseParams.getName())
+ "children": self.CTNParent.GetDeviceLocationTree(self.GetSlavePos(), self.GetCurrentLocation(), self.BaseParams.getName())
}
- PluginMethods = [
- {"bitmap" : os.path.join(PLUGINFOLDER, "images", "editSlave"),
+ ConfNodeMethods = [
+ {"bitmap" : os.path.join(CONFNODEFOLDER, "images", "editSlave"),
"name" : _("Edit Slave"),
"tooltip" : _("Edit Slave"),
"method" : "_OpenView"},
]
- def PlugGenerate_C(self, buildpath, locations):
+ def CTNGenerate_C(self, buildpath, locations):
"""
Generate C code
- @param current_location: Tupple containing plugin IEC location : %I0.0.4.5 => (0,0,4,5)
+ @param current_location: Tupple containing confnode IEC location : %I0.0.4.5 => (0,0,4,5)
@param locations: List of complete variables locations \
[{"IEC_TYPE" : the IEC type (i.e. "INT", "STRING", ...)
"NAME" : name of the variable (generally "__IW0_1_2" style)
@@ -172,7 +172,7 @@
("ActualPosition", 0x6064, 0x00, "DINT", "I"),
]
- class _EthercatCIA402SlavePlug(_EthercatSlavePlug):
+ class _EthercatCIA402SlaveCTN(_EthercatSlaveCTN):
XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CIA402SlaveParams">
@@ -186,17 +186,17 @@
NODE_PROFILE = 402
EditorType = CIA402NodeEditor
- PluginMethods = [
- {"bitmap" : os.path.join(PLUGINFOLDER, "images", "editCIA402Slave"),
+ ConfNodeMethods = [
+ {"bitmap" : os.path.join(CONFNODEFOLDER, "images", "editCIA402Slave"),
"name" : _("Edit CIA402 Slave"),
"tooltip" : _("Edit CIA402 Slave"),
"method" : "_OpenView"},
]
- def PlugGenerate_C(self, buildpath, locations):
+ def CTNGenerate_C(self, buildpath, locations):
"""
Generate C code
- @param current_location: Tupple containing plugin IEC location : %I0.0.4.5 => (0,0,4,5)
+ @param current_location: Tupple containing confnode IEC location : %I0.0.4.5 => (0,0,4,5)
@param locations: List of complete variables locations \
[{"IEC_TYPE" : the IEC type (i.e. "INT", "STRING", ...)
"NAME" : name of the variable (generally "__IW0_1_2" style)
@@ -237,11 +237,11 @@
str_completion["init_entry_variables"].append(
" __CIA402Node_%(location)s.%(name)s = %(var_name)s;" % var_infos)
- self.PlugParent.FileGenerator.DeclareVariable(
+ self.CTNParent.FileGenerator.DeclareVariable(
self.GetSlavePos(), var_infos["index"], var_infos["subindex"],
var_infos["var_type"], var_infos["dir"], var_infos["var_name"])
- params = self.PlugParams[1].getElementInfos(self.PlugParams[0])
+ params = self.CTNParams[1].getElementInfos(self.CTNParams[0])
for param in params["children"]:
if param["value"] is not None:
param_infos = {
@@ -266,7 +266,7 @@
cia402nodefile.write(plc_cia402node_code % str_completion)
cia402nodefile.close()
- return [(Gen_CIA402Nodefile_path, '"-I%s"'%os.path.abspath(self.GetPlugRoot().GetIECLibPath()))],"",True
+ return [(Gen_CIA402Nodefile_path, '"-I%s"'%os.path.abspath(self.GetCTRoot().GetIECLibPath()))],"",True
#--------------------------------------------------
# Ethercat MASTER
@@ -311,7 +311,7 @@
slave_info.setRevisionNo(ExtractHexDecValue(type_infos["revision_number"]))
setattr(cls, "setType", setType)
-class _EthercatPlug:
+class _EthercatCTN:
XSD = """<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="EtherlabNode">
@@ -323,9 +323,9 @@
</xsd:schema>
"""
- PlugChildsTypes = [("EthercatSlave", _EthercatSlavePlug, "Ethercat Slave")]
+ CTNChildrenTypes = [("EthercatSlave", _EthercatSlaveCTN, "Ethercat Slave")]
if HAS_MCL:
- PlugChildsTypes.append(("EthercatCIA402Slave", _EthercatCIA402SlavePlug, "Ethercat CIA402 Slave"))
+ CTNChildrenTypes.append(("EthercatCIA402Slave", _EthercatCIA402SlaveCTN, "Ethercat CIA402 Slave"))
def __init__(self):
filepath = self.ConfigFileName()
@@ -342,16 +342,16 @@
self.CreateConfigBuffer(True)
else:
self.CreateConfigBuffer(False)
- self.OnPlugSave()
+ self.OnCTNSave()
def ExtractHexDecValue(self, value):
return ExtractHexDecValue(value)
def GetSizeOfType(self, type):
- return TYPECONVERSION.get(self.GetPlugRoot().GetBaseType(type), None)
+ return TYPECONVERSION.get(self.GetCTRoot().GetBaseType(type), None)
def ConfigFileName(self):
- return os.path.join(self.PlugPath(), "config.xml")
+ return os.path.join(self.CTNPath(), "config.xml")
def GetSlaves(self):
slaves = []
@@ -368,10 +368,10 @@
return None
def _ScanNetwork(self):
- app_frame = self.GetPlugRoot().AppFrame
+ app_frame = self.GetCTRoot().AppFrame
execute = True
- if len(self.PluggedChilds) > 0:
+ if len(self.Children) > 0:
dialog = wx.MessageDialog(app_frame,
_("The current network configuration will be deleted.\nDo you want to continue?"),
_("Scan Network"),
@@ -386,7 +386,7 @@
dialog.ShowModal()
dialog.Destroy()
elif returnVal is not None:
- for child in self.IECSortedChilds():
+ for child in self.IECSortedChildren():
self._doRemoveChild(child)
for slave in returnVal:
@@ -397,46 +397,46 @@
}
device = self.GetModuleInfos(type_infos)
if device is not None:
- if HAS_MCL and _EthercatCIA402SlavePlug.NODE_PROFILE in device.GetProfileNumbers():
- PlugType = "EthercatCIA402Slave"
+ if HAS_MCL and _EthercatCIA402SlaveCTN.NODE_PROFILE in device.GetProfileNumbers():
+ CTNType = "EthercatCIA402Slave"
else:
- PlugType = "EthercatSlave"
- self.PlugAddChild("slave%s" % slave["idx"], PlugType, slave["idx"])
+ CTNType = "EthercatSlave"
+ self.CTNAddChild("slave%s" % slave["idx"], CTNType, slave["idx"])
self.SetSlaveAlias(slave["idx"], slave["alias"])
type_infos["device_type"] = device.getType().getcontent()
self.SetSlaveType(slave["idx"], type_infos)
- def PlugAddChild(self, PlugName, PlugType, IEC_Channel=0):
+ def CTNAddChild(self, CTNName, CTNType, IEC_Channel=0):
"""
- Create the plugins that may be added as child to this node self
- @param PlugType: string desining the plugin class name (get name from PlugChildsTypes)
- @param PlugName: string for the name of the plugin instance
+ Create the confnodes that may be added as child to this node self
+ @param CTNType: string desining the confnode class name (get name from CTNChildrenTypes)
+ @param CTNName: string for the name of the confnode instance
"""
- newPluginOpj = PlugTemplate.PlugAddChild(self, PlugName, PlugType, IEC_Channel)
-
- slave = self.GetSlave(newPluginOpj.BaseParams.getIEC_Channel())
+ newConfNodeOpj = ConfigTreeNode.CTNAddChild(self, CTNName, CTNType, IEC_Channel)
+
+ slave = self.GetSlave(newConfNodeOpj.BaseParams.getIEC_Channel())
if slave is None:
slave = EtherCATConfigClasses["Config_Slave"]()
slave_infos = slave.getInfo()
slave_infos.setName("undefined")
- slave_infos.setPhysAddr(newPluginOpj.BaseParams.getIEC_Channel())
+ slave_infos.setPhysAddr(newConfNodeOpj.BaseParams.getIEC_Channel())
slave_infos.setAutoIncAddr(0)
self.Config.getConfig().appendSlave(slave)
self.BufferConfig()
- self.OnPlugSave()
-
- return newPluginOpj
-
- def _doRemoveChild(self, PlugInstance):
- slave_pos = PlugInstance.GetSlavePos()
+ self.OnCTNSave()
+
+ return newConfNodeOpj
+
+ def _doRemoveChild(self, CTNInstance):
+ slave_pos = CTNInstance.GetSlavePos()
config = self.Config.getConfig()
for idx, slave in enumerate(config.getSlave()):
slave_infos = slave.getInfo()
if slave_infos.getPhysAddr() == slave_pos:
config.removeSlave(idx)
self.BufferConfig()
- self.OnPlugSave()
- PlugTemplate._doRemoveChild(self, PlugInstance)
+ self.OnCTNSave()
+ ConfigTreeNode._doRemoveChild(self, CTNInstance)
def SetSlavePosition(self, slave_pos, new_pos):
slave = self.GetSlave(slave_pos)
@@ -501,10 +501,10 @@
return None
def GetModuleInfos(self, type_infos):
- return self.PlugParent.GetModuleInfos(type_infos)
+ return self.CTNParent.GetModuleInfos(type_infos)
def GetSlaveTypesLibrary(self, profile_filter=None):
- return self.PlugParent.GetModulesLibrary(profile_filter)
+ return self.CTNParent.GetModulesLibrary(profile_filter)
def GetDeviceLocationTree(self, slave_pos, current_location, device_name):
slave = self.GetSlave(slave_pos)
@@ -548,10 +548,10 @@
return vars
- def PlugTestModified(self):
+ def CTNTestModified(self):
return self.ChangesToSave or not self.ConfigIsSaved()
- def OnPlugSave(self):
+ def OnCTNSave(self):
filepath = self.ConfigFileName()
text = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
@@ -575,29 +575,29 @@
self.FileGenerator = _EthercatCFileGenerator(self)
- LocationCFilesAndCFLAGS, LDFLAGS, extra_files = PlugTemplate._Generate_C(self, buildpath, locations)
+ LocationCFilesAndCFLAGS, LDFLAGS, extra_files = ConfigTreeNode._Generate_C(self, buildpath, locations)
self.FileGenerator.GenerateCFile(Gen_Ethercatfile_path, location_str, self.EtherlabNode)
LocationCFilesAndCFLAGS.append(
(current_location,
- [(Gen_Ethercatfile_path, '"-I%s"'%os.path.abspath(self.GetPlugRoot().GetIECLibPath()))],
+ [(Gen_Ethercatfile_path, '"-I%s"'%os.path.abspath(self.GetCTRoot().GetIECLibPath()))],
True))
LDFLAGS.append("-lethercat -lrtdm")
return LocationCFilesAndCFLAGS, LDFLAGS, extra_files
- PluginMethods = [
- {"bitmap" : os.path.join(PLUGINFOLDER, "images", "ScanNetwork"),
+ ConfNodeMethods = [
+ {"bitmap" : os.path.join(CONFNODEFOLDER, "images", "ScanNetwork"),
"name" : _("Scan Network"),
"tooltip" : _("Scan Network"),
"method" : "_ScanNetwork"},
]
- def PlugGenerate_C(self, buildpath, locations):
+ def CTNGenerate_C(self, buildpath, locations):
"""
Generate C code
- @param current_location: Tupple containing plugin IEC location : %I0.0.4.5 => (0,0,4,5)
+ @param current_location: Tupple containing confnode IEC location : %I0.0.4.5 => (0,0,4,5)
@param locations: List of complete variables locations \
[{"IEC_TYPE" : the IEC type (i.e. "INT", "STRING", ...)
"NAME" : name of the variable (generally "__IW0_1_2" style)
@@ -933,7 +933,7 @@
self.Controler.GetSizeOfType(entry_type)):
raise ValueError, message
else:
- self.Controler.GetPlugRoot().logger.write_warning(message + "\n")
+ self.Controler.GetCTRoot().logger.write_warning(message + "\n")
if (entry_infos["dir"] == "I" and pdo_type != "Inputs" or
entry_infos["dir"] == "Q" and pdo_type != "Outputs"):
@@ -1015,7 +1015,7 @@
self.Controler.GetSizeOfType(entry["Type"])):
raise ValueError, message
else:
- self.Controler.GetPlugRoot().logger.write_warning(message + "\n")
+ self.Controler.GetCTRoot().logger.write_warning(message + "\n")
if entry_infos["dir"] == "I" and entry["PDOMapping"] in ["T", "RT"]:
pdo_type = "Inputs"
@@ -1094,7 +1094,7 @@
etherlabfile.close()
#--------------------------------------------------
-# Ethercat Plugin
+# Ethercat ConfNode
#--------------------------------------------------
EtherCATInfoClasses = GenerateClassesFromXSD(os.path.join(os.path.dirname(__file__), "EtherCATInfo.xsd"))
@@ -1317,36 +1317,36 @@
class RootClass:
- PlugChildsTypes = [("EthercatNode",_EthercatPlug,"Ethercat Master")]
+ CTNChildrenTypes = [("EthercatNode",_EthercatCTN,"Ethercat Master")]
def __init__(self):
self.LoadModulesLibrary()
def GetModulesLibraryPath(self):
- library_path = os.path.join(self.PlugPath(), "modules")
+ library_path = os.path.join(self.CTNPath(), "modules")
if not os.path.exists(library_path):
os.mkdir(library_path)
return library_path
def _ImportModuleLibrary(self):
- dialog = wx.FileDialog(self.GetPlugRoot().AppFrame, _("Choose an XML file"), os.getcwd(), "", _("XML files (*.xml)|*.xml|All files|*.*"), wx.OPEN)
+ dialog = wx.FileDialog(self.GetCTRoot().AppFrame, _("Choose an XML file"), os.getcwd(), "", _("XML files (*.xml)|*.xml|All files|*.*"), wx.OPEN)
if dialog.ShowModal() == wx.ID_OK:
filepath = dialog.GetPath()
if os.path.isfile(filepath):
shutil.copy(filepath, self.GetModulesLibraryPath())
self.LoadModulesLibrary()
else:
- self.GetPlugRoot().logger.write_error(_("No such XML file: %s\n") % filepath)
+ self.GetCTRoot().logger.write_error(_("No such XML file: %s\n") % filepath)
dialog.Destroy()
- PluginMethods = [
- {"bitmap" : os.path.join(PLUGINFOLDER, "images", "ImportESI"),
+ ConfNodeMethods = [
+ {"bitmap" : os.path.join(CONFNODEFOLDER, "images", "ImportESI"),
"name" : _("Import module library"),
"tooltip" : _("Import module library"),
"method" : "_ImportModuleLibrary"},
]
- def PlugGenerate_C(self, buildpath, locations):
+ def CTNGenerate_C(self, buildpath, locations):
return [],"",False
def LoadModulesLibrary(self):