Esempio n. 1
0
 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)
Esempio n. 2
0
    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
Esempio n. 3
0
    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)
Esempio n. 4
0
    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