X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBProject.py;h=366e9a7525058b504d94c60c69b859df4f9b598b;hb=875722f77f53feac486846eda583931965929841;hp=2bdbfe2e001284b8ff4e2dbe9d8f336b6cf86ba8;hpb=e2bac65191c1090815e574a2459cc3546e890f9d;p=bertos.git diff --git a/wizard/BProject.py b/wizard/BProject.py index 2bdbfe2e..366e9a75 100644 --- a/wizard/BProject.py +++ b/wizard/BProject.py @@ -199,7 +199,7 @@ class BProject(object): """ # NOTE: this method does nothing (for now). preset_path = os.path.join(self.infos["BERTOS_PATH"], const.PREDEFINED_BOARDS_DIR) - preset_tree = {} + preset_tree = {"children": []} if os.path.exists(preset_path): preset_tree = self._loadProjectPresetTree(preset_path) self.infos["PRESET_TREE"] = preset_tree @@ -209,14 +209,14 @@ class BProject(object): _tree["info"] = self._loadPresetInfo(os.path.join(path, const.PREDEFINED_BOARD_SPEC_FILE)) _tree["info"]["filename"] = os.path.basename(path) _tree["info"]["path"] = path - _tree["children"] = [] + _tree["children"] = {} entries = set(os.listdir(path)) for entry in entries: _path = os.path.join(path, entry) if os.path.isdir(_path): sub_entries = set(os.listdir(_path)) if const.PREDEFINED_BOARD_SPEC_FILE in sub_entries: - _tree["children"].append(self._loadProjectPresetTree(_path)) + _tree["children"][_path] = self._loadProjectPresetTree(_path) # Add into the info dict the dir type (dir/project) if _tree["children"]: _tree["info"]["type"] = "dir" @@ -226,7 +226,10 @@ class BProject(object): def _loadPresetInfo(self, preset_spec_file): D = {} - execfile(preset_spec_file, {}, D) + try: + execfile(preset_spec_file, {}, D) + except IOError, e: + pass return D def loadModuleData(self, edit=False): @@ -360,15 +363,11 @@ class BProject(object): self._writeCustomSrcFiles() # Copy the hw files - self._writeHwFiles(self.src_hwdir, self.hwdir) + self._writeAllPresetHwFiles(self.src_hwdir, self.hwdir) # Copyt the new *_user.mk file self._writeUserMkFileFromPreset() - if self.infos["EMPTY_MAIN"]: - # Create and empty main.c file only if the user check the box - self._writeMainFile(self.prjdir + "/main.c") - # Create project files for selected plugins self._createProjectFiles() @@ -441,6 +440,20 @@ class BProject(object): # editing mode it copies only the files that don't exist yet open(os.path.join(destination_dir,os.path.basename(hwfile)), "w").write(string) + def _writeAllPresetHwFiles(self, source_dir, destination_dir): + """ + Copy all but directories contained into the preset hw directory. + It's needed because some presets need custom hw files not defined with + Wizard directives into modules... + """ + source_dir = os.path.join(source_dir, "hw") + for f in os.listdir(source_dir): + abspath = os.path.join(source_dir, f) + if not os.path.isdir(abspath): + # Exlude directories from the copy! + hw_file = open(os.path.join(source_dir, f), 'r').read() + open(os.path.join(destination_dir, f), 'w').write(hw_file) + def _writeCfgFiles(self, source_dir, destination_dir): for configuration, information in self.infos["CONFIGURATIONS"].items(): string = open(source_dir + "/" + configuration, "r").read()