from PyQt4.QtCore import *
from PyQt4.QtGui import *
-from bertos_utils import loadBertosProject, bertosVersion
+from bertos_utils import loadBertosProject, bertosVersion, getToolchainName, createBertosProject
+from toolchain_validation import validateToolchain
+import qvariant_converter
import BModulePage
class BEditingDialog(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.setupUi()
+ self.connectSignals()
self.module_page.reloadData()
def setupUi(self):
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()):
- action = self.toolchain_menu.addAction(toolchain)
+ 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 unicode(action.text()) == self.currentToolchain()["path"] else False)
+ 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)
- for version in sorted([bertosVersion(v) for v in self.versions()]):
+ 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 unicode(action.text()) == self.currentVersion() else False)
+ 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()