35 |
35 |
36 class NodeList: |
36 class NodeList: |
37 |
37 |
38 def __init__(self, manager, netname = ""): |
38 def __init__(self, manager, netname = ""): |
39 self.Root = "" |
39 self.Root = "" |
40 self.EDSFolder = "" |
|
41 self.Manager = manager |
40 self.Manager = manager |
42 self.NetworkName = netname |
41 self.NetworkName = netname |
43 self.SlaveNodes = {} |
42 self.SlaveNodes = {} |
44 self.EDSNodes = {} |
43 self.EDSNodes = {} |
45 self.CurrentSelected = None |
44 self.CurrentSelected = None |
58 self.NetworkName = name |
57 self.NetworkName = name |
59 |
58 |
60 def GetManager(self): |
59 def GetManager(self): |
61 return self.Manager |
60 return self.Manager |
62 |
61 |
|
62 def GetEDSFolder(self, root_path=None): |
|
63 if root_path is None: |
|
64 root_path = self.Root |
|
65 return os.path.join(root_path, "eds") |
|
66 |
63 def GetRoot(self): |
67 def GetRoot(self): |
64 return self.Root |
68 return self.Root |
65 |
69 |
66 def SetRoot(self, newrootpath): |
70 def SetRoot(self, newrootpath): |
67 """ |
71 if os.path.isdir(newrootpath): |
68 Define a new path for the CanOpen network project |
72 self.Root = newrootpath |
69 !!! Does not check if new path is valid !!! |
73 self.Manager.SetCurrentFilePath(os.path.join(self.Root, "master.od")) |
70 """ |
74 return True |
71 self.Root = newrootpath |
75 return False |
72 self.Manager.SetCurrentFilePath(os.path.join(self.Root, "master.od")) |
|
73 |
76 |
74 def GetMasterNodeID(self): |
77 def GetMasterNodeID(self): |
75 return self.Manager.GetCurrentNodeID() |
78 return self.Manager.GetCurrentNodeID() |
76 |
79 |
77 def GetSlaveNumber(self): |
80 def GetSlaveNumber(self): |
102 |
105 |
103 self.Root = root |
106 self.Root = root |
104 if not os.path.exists(self.Root): |
107 if not os.path.exists(self.Root): |
105 return _("\"%s\" folder doesn't exist")%self.Root |
108 return _("\"%s\" folder doesn't exist")%self.Root |
106 |
109 |
107 self.EDSFolder = os.path.join(self.Root, "eds") |
110 eds_folder = self.GetEDSFolder() |
108 if not os.path.exists(self.EDSFolder): |
111 if not os.path.exists(eds_folder): |
109 os.mkdir(self.EDSFolder) |
112 os.mkdir(eds_folder) |
110 #return "\"%s\" folder doesn't contain a \"eds\" folder"%self.Root |
113 #return "\"%s\" folder doesn't contain a \"eds\" folder"%self.Root |
111 |
114 |
112 files = os.listdir(self.EDSFolder) |
115 files = os.listdir(eds_folder) |
113 for file in files: |
116 for file in files: |
114 filepath = os.path.join(self.EDSFolder, file) |
117 filepath = os.path.join(eds_folder, file) |
115 if os.path.isfile(filepath) and os.path.splitext(filepath)[-1] == ".eds": |
118 if os.path.isfile(filepath) and os.path.splitext(filepath)[-1] == ".eds": |
116 result = self.LoadEDS(file) |
119 result = self.LoadEDS(file) |
117 if result != None: |
120 if result != None: |
118 return result |
121 return result |
119 |
122 |
136 if result != None: |
139 if result != None: |
137 return result |
140 return result |
138 |
141 |
139 def ImportEDSFile(self, edspath, force = False): |
142 def ImportEDSFile(self, edspath, force = False): |
140 dir, file = os.path.split(edspath) |
143 dir, file = os.path.split(edspath) |
141 eds = os.path.join(self.EDSFolder, file) |
144 eds_folder = self.GetEDSFolder() |
|
145 eds = os.path.join(eds_folder, file) |
142 if not force and os.path.isfile(eds): |
146 if not force and os.path.isfile(eds): |
143 return _("EDS file already imported"), True |
147 return _("EDS file already imported"), True |
144 else: |
148 else: |
145 shutil.copy(edspath, self.EDSFolder) |
149 shutil.copy(edspath, eds_folder) |
146 return self.LoadEDS(file), False |
150 return self.LoadEDS(file), False |
147 |
151 |
148 def LoadEDS(self, eds): |
152 def LoadEDS(self, eds): |
149 edspath = os.path.join(self.EDSFolder, eds) |
153 edspath = os.path.join(self.GetEDSFolder(), eds) |
150 node = eds_utils.GenerateNode(edspath) |
154 node = eds_utils.GenerateNode(edspath) |
151 if isinstance(node, Node): |
155 if isinstance(node, Node): |
152 self.EDSNodes[eds] = node |
156 self.EDSNodes[eds] = node |
153 return None |
157 return None |
154 else: |
158 else: |