+ def setupMenu(self):
+ self.menu = QMenu(self.tr("Advanced options"))
+ self.setupToolchainMenu()
+ self.menu.addMenu(self.toolchain_menu)
+ self.setupVersionMenu()
+ self.menu.addMenu(self.version_menu)
+
+ def setupToolchainMenu(self):
+ self.toolchain_menu = QMenu(self.tr("select toolchain"))
+ self.toolchain_actions = []
+ action_group = QActionGroup(self.toolchain_menu)
+ for toolchain in sorted(self.toolchains()):
+ info = validateToolchain(toolchain)
+ if info[0]:
+ name = getToolchainName(info[1])
+ else:
+ name = toolchain
+ action = self.toolchain_menu.addAction(name)
+ action_group.addAction(action)
+ action.setCheckable(True)
+ action.setChecked(True if toolchain == self.currentToolchain()["path"] else False)
+ action.setData(qvariant_converter.convertString(toolchain))
+ self.toolchain_actions.append(action)
+
+ def setupVersionMenu(self):
+ self.version_menu = QMenu(self.tr("select BeRTOS version"))
+ self.version_actions = []
+ action_group = QActionGroup(self.version_menu)
+ versions = [(path, bertosVersion(path)) for path in self.versions()]
+ for path, version in versions:
+ action = self.version_menu.addAction(version)
+ action_group.addAction(action)
+ action.setCheckable(True)
+ action.setChecked(True if path == self.currentVersion() else False)
+ action.setData(qvariant_converter.convertString(path))
+ self.version_actions.append(action)
+
+ def connectSignals(self):
+ for toolchain_action in self.toolchain_actions:
+ self.connect(toolchain_action, SIGNAL("toggled(bool)"), lambda x, toolchain_action=toolchain_action: self.toolchainChanged(
+ qvariant_converter.getString(toolchain_action.data()),
+ x
+ ))
+ for version_action in self.version_actions:
+ self.connect(version_action, SIGNAL("toggled(bool)"), lambda x, version_action=version_action: self.versionChanged(
+ qvariant_converter.getString(version_action.data()),
+ x
+ ))
+ self.connect(self.apply_button, SIGNAL("clicked()"), self.apply)
+ self.connect(self.cancel_button, SIGNAL("clicked()"), self.reject)
+
+ def toolchainChanged(self, toolchain, activated):
+ if activated:
+ self.setCurrentToolchain(toolchain)
+
+ def versionChanged(self, version, activated):
+ if activated:
+ self.setCurrentVersion(version)
+
+ def apply(self):
+ createBertosProject(self.module_page.project(), edit=True)
+ self.accept()
+
+ def toolchains(self):
+ return self.module_page.toolchains()
+
+ def currentToolchain(self):
+ return self.module_page.projectInfo("TOOLCHAIN")
+
+ def setCurrentToolchain(self, toolchain):
+ self.module_page.setProjectInfo("TOOLCHAIN", toolchain)
+
+ def versions(self):
+ return self.module_page.versions()
+
+ def currentVersion(self):
+ return self.module_page.projectInfo("SOURCES_PATH")
+
+ def setCurrentVersion(self, version):
+ self.module_page.setProjectInfo("SOURCES_PATH", version)
+