def changeBertosVersion(self): current_version = self.module_page.projectInfo("BERTOS_PATH") dialog = BVersionDialog() if dialog.exec_(): version = qvariant_converter.getString( dialog.version_page.currentItem().data(Qt.UserRole)) if QMessageBox.question( dialog.version_page, self.tr("BeRTOS version update"), self. tr("Changing the BeRTOS version will destroy all the modification done on the BeRTOS sources" ), QMessageBox.Ok | QMessageBox.Cancel) == QMessageBox.Ok: try: qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) dialog.version_page.setProjectInfo("BERTOS_PATH", version) dialog.version_page.setProjectInfo("OLD_BERTOS_PATH", current_version) enabled_modules = bertos_utils.enabledModules( dialog.version_page.project) old_configuration = dialog.version_page.projectInfo( "CONFIGURATIONS") dialog.version_page.project.loadSourceTree() QApplication.instance().project.reloadCpuInfo() QApplication.instance().project.loadModuleData() new_configuration = dialog.version_page.projectInfo( "CONFIGURATIONS") merged_configuration = {} for conf in new_configuration: if conf in old_configuration: configuration = bertos_utils.updateConfigurationValues( new_configuration[conf], old_configuration[conf]) else: configuration = new_configuration[conf] merged_configuration[conf] = configuration dialog.version_page.setProjectInfo("CONFIGURATIONS", merged_configuration) dialog.version_page.project.setEnabledModules( enabled_modules) self.module_page.fillModuleTree() finally: qApp.restoreOverrideCursor() else: # Rollback version to the previous selected one. dialog.version_page.setProjectInfo("BERTOS_PATH", current_version)
def loadModuleData(self, edit=False): module_info_dict = {} list_info_dict = {} configuration_info_dict = {} file_dict = {} for filename, path in self.findDefinitions("*.h") + self.findDefinitions("*.c") + self.findDefinitions("*.s") + self.findDefinitions("*.S"): comment_list = getCommentList(open(path + "/" + filename, "r").read()) if len(comment_list) > 0: module_info = {} configuration_info = {} try: to_be_parsed, module_dict = loadModuleDefinition(comment_list[0]) except ParseError, err: raise DefineException.ModuleDefineException(os.path.join(path, filename), err.line_number, err.line) for module, information in module_dict.items(): if "depends" not in information: information["depends"] = () information["depends"] += (filename.split(".")[0],) information["category"] = os.path.basename(path) # Hack to remove 'bertos/' from the configuration file path. # # The new module information format substitute paths like 'bertos/cfg/config_file.h' # with the relative path into the bertos directory ('cfg/config_file.h') information["configuration"] = information["configuration"].replace("bertos/", "") information["hw"] = [hw.replace("bertos/", "") for hw in information["hw"]] if "configuration" in information and len(information["configuration"]): configuration = module_dict[module]["configuration"] try: cfg_file_path = os.path.join(self.bertos_srcdir, configuration) configuration_info[configuration] = loadConfigurationInfos(cfg_file_path) except ParseError, err: raise DefineException.ConfigurationDefineException(cfg_file_path, err.line_number, err.line) if edit: try: path = self.infos["PROJECT_SRC_PATH"] cfg_file_path = os.path.join(path, configuration) configuration_info[configuration] = updateConfigurationValues(configuration_info[configuration], loadConfigurationInfos(cfg_file_path)) except ParseError, err: raise DefineException.ConfigurationDefineException(cfg_file_path, err.line_number, err.line) except IOError, err: # The wizard can't find the file, use the default configuration pass
def changeBertosVersion(self): current_version = self.module_page.projectInfo("BERTOS_PATH") dialog = BVersionDialog() if dialog.exec_(): version = qvariant_converter.getString(dialog.version_page.currentItem().data(Qt.UserRole)) if QMessageBox.question( dialog.version_page, self.tr("BeRTOS version update"), self.tr("Changing the BeRTOS version will destroy all the modification done on the BeRTOS sources"), QMessageBox.Ok | QMessageBox.Cancel ) == QMessageBox.Ok: try: qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) dialog.version_page.setProjectInfo("BERTOS_PATH", version) dialog.version_page.setProjectInfo("OLD_BERTOS_PATH", current_version) enabled_modules = bertos_utils.enabledModules(dialog.version_page.project) old_configuration = dialog.version_page.projectInfo("CONFIGURATIONS") dialog.version_page.project.loadSourceTree() QApplication.instance().project.reloadCpuInfo() QApplication.instance().project.loadModuleData() new_configuration = dialog.version_page.projectInfo("CONFIGURATIONS") merged_configuration = {} for conf in new_configuration: if conf in old_configuration: configuration = bertos_utils.updateConfigurationValues(new_configuration[conf], old_configuration[conf]) else: configuration = new_configuration[conf] merged_configuration[conf] = configuration dialog.version_page.setProjectInfo("CONFIGURATIONS", merged_configuration) dialog.version_page.project.setEnabledModules(enabled_modules) self.module_page.fillModuleTree() finally: qApp.restoreOverrideCursor() else: # Rollback version to the previous selected one. dialog.version_page.setProjectInfo("BERTOS_PATH", current_version)
def loadModuleData(self, edit=False): module_info_dict = {} list_info_dict = {} configuration_info_dict = {} file_dict = {} for filename, path in self.findDefinitions( "*.h") + self.findDefinitions("*.c") + self.findDefinitions( "*.s") + self.findDefinitions("*.S"): comment_list = getCommentList( open(path + "/" + filename, "r").read()) if len(comment_list) > 0: module_info = {} configuration_info = {} try: to_be_parsed, module_dict = loadModuleDefinition( comment_list[0]) except ParseError, err: raise DefineException.ModuleDefineException( os.path.join(path, filename), err.line_number, err.line) for module, information in module_dict.items(): if "depends" not in information: information["depends"] = () information["depends"] += (filename.split(".")[0], ) information["category"] = os.path.basename(path) # Hack to remove 'bertos/' from the configuration file path. # # The new module information format substitute paths like 'bertos/cfg/config_file.h' # with the relative path into the bertos directory ('cfg/config_file.h') information["configuration"] = information[ "configuration"].replace("bertos/", "") information["hw"] = [ hw.replace("bertos/", "") for hw in information["hw"] ] if "configuration" in information and len( information["configuration"]): configuration = module_dict[module]["configuration"] try: cfg_file_path = os.path.join( self.bertos_srcdir, configuration) configuration_info[ configuration] = loadConfigurationInfos( cfg_file_path) except ParseError, err: raise DefineException.ConfigurationDefineException( cfg_file_path, err.line_number, err.line) if edit: try: path = self.infos["PROJECT_SRC_PATH"] cfg_file_path = os.path.join( path, configuration) configuration_info[ configuration] = updateConfigurationValues( configuration_info[configuration], loadConfigurationInfos(cfg_file_path)) except ParseError, err: raise DefineException.ConfigurationDefineException( cfg_file_path, err.line_number, err.line) except IOError, err: # The wizard can't find the file, use the default configuration pass