def setupUi(self): layout = QVBoxLayout() self.module_page = BModulePage() layout.addWidget(self.module_page) frequency_layout = QHBoxLayout() frequency_layout.addWidget(QLabel(self.tr("CPU frequency"))) self.cpu_frequency_spinbox = QDoubleSpinBox() self.cpu_frequency_spinbox.setSuffix("Hz") self.cpu_frequency_spinbox.setRange(1, 1000000000) self.cpu_frequency_spinbox.setSingleStep(1000) self.cpu_frequency_spinbox.setDecimals(0) frequency_layout.addWidget(self.cpu_frequency_spinbox) frequency_layout.addStretch() layout.addLayout(frequency_layout) 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) self.setWindowTitle( self.tr("Edit \"%1\" project").arg( os.path.basename( self.module_page.projectInfo("PROJECT_PATH")))) self.setWindowIcon(QIcon(":/images/appicon.png"))
def setupUi(self): layout = QVBoxLayout() self.module_page = BModulePage() layout.addWidget(self.module_page) frequency_layout = QHBoxLayout() frequency_layout.addWidget(QLabel(self.tr("CPU frequency"))) self.cpu_frequency_spinbox = QDoubleSpinBox() self.cpu_frequency_spinbox.setSuffix("Hz") self.cpu_frequency_spinbox.setRange(1, 1000000000) self.cpu_frequency_spinbox.setSingleStep(1000) self.cpu_frequency_spinbox.setDecimals(0) frequency_layout.addWidget(self.cpu_frequency_spinbox) frequency_layout.addStretch() layout.addLayout(frequency_layout) 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) self.setWindowTitle(self.tr("Edit \"%1\" project").arg(os.path.basename(self.module_page.projectInfo("PROJECT_PATH")))) self.setWindowIcon(QIcon(":/images/appicon.png"))
class BEditingDialog(QDialog): def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi() self.connectSignals() self.module_page.reloadData() self.setFrequency() def setupUi(self): layout = QVBoxLayout() self.module_page = BModulePage() layout.addWidget(self.module_page) frequency_layout = QHBoxLayout() frequency_layout.addWidget(QLabel(self.tr("CPU frequency"))) self.cpu_frequency_spinbox = QDoubleSpinBox() self.cpu_frequency_spinbox.setSuffix("Hz") self.cpu_frequency_spinbox.setRange(1, 1000000000) self.cpu_frequency_spinbox.setSingleStep(1000) self.cpu_frequency_spinbox.setDecimals(0) frequency_layout.addWidget(self.cpu_frequency_spinbox) frequency_layout.addStretch() layout.addLayout(frequency_layout) 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) self.setWindowTitle(self.tr("Edit \"%1\" project").arg(os.path.basename(self.module_page.projectInfo("PROJECT_PATH")))) self.setWindowIcon(QIcon(":/images/appicon.png")) 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) self.connect(self.cpu_frequency_spinbox, SIGNAL("valueChanged(double)"), self.frequencyChanged) def setFrequency(self): frequency = long(self.module_page.projectInfo("SELECTED_FREQ")) self.cpu_frequency_spinbox.setValue(frequency) def frequencyChanged(self, frequency): frequency = unicode(long(frequency)) self.module_page.setProjectInfo("SELECTED_FREQ", frequency) def changeToolchain(self): dialog = BToolchainDialog() if dialog.exec_(): toolchain = qvariant_converter.getStringDict(dialog.toolchain_page.currentItem().data(Qt.UserRole)) dialog.toolchain_page.setProjectInfo("TOOLCHAIN", toolchain) 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 apply(self): try: qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) QApplication.instance().project.createBertosProject() finally: qApp.restoreOverrideCursor() 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("BERTOS_PATH") def setCurrentVersion(self, version): self.module_page.setProjectInfo("BERTOS_PATH", version)
class BEditingDialog(QDialog): def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi() self.connectSignals() self.module_page.reloadData() self.setFrequency() def setupUi(self): layout = QVBoxLayout() self.module_page = BModulePage() layout.addWidget(self.module_page) frequency_layout = QHBoxLayout() frequency_layout.addWidget(QLabel(self.tr("CPU frequency"))) self.cpu_frequency_spinbox = QDoubleSpinBox() self.cpu_frequency_spinbox.setSuffix("Hz") self.cpu_frequency_spinbox.setRange(1, 1000000000) self.cpu_frequency_spinbox.setSingleStep(1000) self.cpu_frequency_spinbox.setDecimals(0) frequency_layout.addWidget(self.cpu_frequency_spinbox) frequency_layout.addStretch() layout.addLayout(frequency_layout) 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) self.setWindowTitle( self.tr("Edit \"%1\" project").arg( os.path.basename( self.module_page.projectInfo("PROJECT_PATH")))) self.setWindowIcon(QIcon(":/images/appicon.png")) 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) self.connect(self.cpu_frequency_spinbox, SIGNAL("valueChanged(double)"), self.frequencyChanged) def setFrequency(self): frequency = long(self.module_page.projectInfo("SELECTED_FREQ")) self.cpu_frequency_spinbox.setValue(frequency) def frequencyChanged(self, frequency): frequency = unicode(long(frequency)) self.module_page.setProjectInfo("SELECTED_FREQ", frequency) def changeToolchain(self): dialog = BToolchainDialog() if dialog.exec_(): toolchain = qvariant_converter.getStringDict( dialog.toolchain_page.currentItem().data(Qt.UserRole)) dialog.toolchain_page.setProjectInfo("TOOLCHAIN", toolchain) 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 apply(self): try: qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) QApplication.instance().project.createBertosProject() finally: qApp.restoreOverrideCursor() 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("BERTOS_PATH") def setCurrentVersion(self, version): self.module_page.setProjectInfo("BERTOS_PATH", version)