objdictgen/nodelist.py
changeset 781 77fe158d6ccd
parent 748 18ed0f3b030a
equal deleted inserted replaced
780:884a60cbb83e 781:77fe158d6ccd
    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: