X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=wizard%2FBEditingDialog.py;h=1534146e21460ffc0eb57e5f1592634f60d52cd0;hb=e5342297fe73a412dfc0d22bac403f30b05e3bc0;hp=82bac4ed5b5a206902af2f251975322554e3a475;hpb=8ef766f0143a45c397a21a543f698e918d3e3785;p=bertos.git diff --git a/wizard/BEditingDialog.py b/wizard/BEditingDialog.py index 82bac4ed..1534146e 100644 --- a/wizard/BEditingDialog.py +++ b/wizard/BEditingDialog.py @@ -39,22 +39,129 @@ import os from PyQt4.QtCore import * from PyQt4.QtGui import * -from bertos_utils import loadBertosProject +from bertos_utils import loadBertosProject, bertosVersion, getToolchainName, createBertosProject +from BToolchainPage import BToolchainPage +from BVersionPage import BVersionPage +import qvariant_converter import BModulePage +import bertos_utils class BEditingDialog(QDialog): def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi() + self.connectSignals() self.module_page.reloadData() def setupUi(self): layout = QVBoxLayout() self.module_page = BModulePage.BModulePage() layout.addWidget(self.module_page) + button_layout = QHBoxLayout() + self.advanced_button = QToolButton() + self.setupMenu() + self.advanced_button.setMenu(self.menu) + self.advanced_button.setPopupMode(QToolButton.InstantPopup) + self.advanced_button.setText(self.tr("Advanced")) + button_layout.addWidget(self.advanced_button) + button_layout.addStretch() + self.cancel_button = QPushButton(self.tr("Cancel")) + button_layout.addWidget(self.cancel_button) + self.apply_button = QPushButton(self.tr("Apply")) + button_layout.addWidget(self.apply_button) + layout.addLayout(button_layout) self.setLayout(layout) + def setupMenu(self): + self.menu = QMenu(self.tr("Advanced options")) + self.change_toolchain = QAction(self.tr("Change toolchain"), self) + self.change_bertos_version = QAction(self.tr("Change BeRTOS version"), self) + self.menu.addAction(self.change_toolchain) + self.menu.addAction(self.change_bertos_version) + + def connectSignals(self): + self.connect(self.change_toolchain, SIGNAL("triggered(bool)"), self.changeToolchain) + self.connect(self.change_bertos_version, SIGNAL("triggered(bool)"), self.changeBertosVersion) + self.connect(self.apply_button, SIGNAL("clicked()"), self.apply) + self.connect(self.cancel_button, SIGNAL("clicked()"), self.reject) + + def changeToolchain(self): + dialog = QDialog() + layout = QVBoxLayout() + toolchain_page = BToolchainPage() + toolchain_page.reloadData() + layout.addWidget(toolchain_page) + button_layout = QHBoxLayout() + button_layout.addStretch() + cancel_button = QPushButton(self.tr("Cancel")) + button_layout.addWidget(cancel_button) + ok_button = QPushButton(self.tr("Ok")) + button_layout.addWidget(ok_button) + dialog.connect(cancel_button, SIGNAL("clicked()"), dialog.reject) + layout.addLayout(button_layout) + dialog.setLayout(layout) + dialog.connect(ok_button, SIGNAL("clicked()"), dialog.accept) + if dialog.exec_(): + toolchain = qvariant_converter.getStringDict(toolchain_page.currentItem().data(Qt.UserRole)) + toolchain_page.setProjectInfo("TOOLCHAIN", toolchain) + + def changeBertosVersion(self): + dialog = QDialog() + layout = QVBoxLayout() + version_page = BVersionPage() + version_page.reloadData() + layout.addWidget(version_page) + button_layout = QHBoxLayout() + button_layout.addStretch() + cancel_button = QPushButton(self.tr("Cancel")) + button_layout.addWidget(cancel_button) + ok_button = QPushButton(self.tr("Ok")) + button_layout.addWidget(ok_button) + dialog.connect(cancel_button, SIGNAL("clicked()"), dialog.reject) + layout.addLayout(button_layout) + dialog.setLayout(layout) + dialog.connect(ok_button, SIGNAL("clicked()"), dialog.accept) + current_version = version_page.projectInfo("SOURCES_PATH") + if dialog.exec_(): + version = qvariant_converter.getString(version_page.currentItem().data(Qt.UserRole)) + if version != current_version: + if QMessageBox.question( + 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: + version_page.setProjectInfo("SOURCES_PATH", version) + version_page.setProjectInfo("OLD_SOURCES_PATH", current_version) + project = version_page.project() + modules, lists, configurations, files = project.info("MODULES"), project.info("LISTS"), project.info("CONFIGURATIONS"), project.info("FILES") + bertos_utils.loadSourceTree(version_page.project()) + bertos_utils.loadModuleData(version_page.project(), True) + self.module_page.fillModuleTree() + + 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) + def main(): @@ -65,6 +172,7 @@ def main(): sys.exit() app = QApplication([]) app.project = loadBertosProject(project_file) + app.settings = QSettings("Develer", "Bertos Configurator") dialog = BEditingDialog() dialog.show() sys.exit(app.exec_())