4 # This file is part of BeRTOS.
6 # Bertos is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 # As a special exception, you may use this file as part of a free software
21 # library without restriction. Specifically, if other files instantiate
22 # templates or use macros or inline functions from this file, or you compile
23 # this file and link it with other files to produce an executable, this
24 # file does not by itself cause the resulting executable to be covered by
25 # the GNU General Public License. This exception does not however
26 # invalidate any other reasons why the executable file might be covered by
27 # the GNU General Public License.
29 # Copyright 2008 Develer S.r.l. (http://www.develer.com/)
33 # Author: Lorenzo Berni <duplo@develer.com>
38 from distutils.dep_util import newer
40 from PyQt4.QtCore import *
41 from PyQt4.QtGui import *
43 import exception_handler
50 from BIntroPage import BIntroPage
51 from BFolderPage import BFolderPage
52 from BOpenPage import BOpenPage
53 from BVersionPage import BVersionPage
54 from BCpuPage import BCpuPage
55 from BToolchainPage import BToolchainPage
56 from BModulePage import BModulePage
57 from BOutputPage import BOutputPage
58 from BCreationPage import BCreationPage
59 from BFinalPage import BFinalPage
61 from BEditingDialog import BEditingDialog, BVersionDialog, BToolchainDialog
66 from LoadException import VersionException, ToolchainException
69 page_list = [BIntroPage, BFolderPage, BVersionPage, BCpuPage, BToolchainPage, BModulePage, BOutputPage, BCreationPage, BFinalPage]
70 wizard = BWizard.BWizard(page_list)
73 project = QApplication.instance().project
74 to_be_opened = project.info("TO_BE_OPENED")
75 command_lines = project.info("COMMAND_LINES")
76 relevant_files = project.info("RELEVANT_FILES")
78 for ide in to_be_opened:
79 command_line = command_lines[ide]
80 relevant_file = relevant_files[ide]
81 QProcess.startDetached(command_line, [relevant_file,])
84 def editProject(project_file):
88 QApplication.instance().project = bertos_utils.loadBertosProject(project_file, info_dict)
89 except VersionException:
92 QObject().tr("BeRTOS version not found!"),
93 QObject().tr("The selected BeRTOS version is not found, please select an existing one...")
95 dialog = BVersionDialog()
97 version = dialog.version_page.currentVersion()
98 info_dict["SOURCES_PATH"] = version
100 except ToolchainException, exc:
101 QMessageBox.critical(
103 QObject().tr("Toolchain not found!"),
104 QObject().tr("The selected toolchain is not found, please select an existing one...")
106 QApplication.instance().project = exc.partial_project
107 dialog = BToolchainDialog()
109 toolchain = dialog.toolchain_page.currentToolchain()
110 info_dict["TOOLCHAIN"] = toolchain
113 dialog = BEditingDialog()
117 QApplication.instance().dialog = BStartPage.BStartPage()
118 QApplication.instance().connect(QApplication.instance().dialog, SIGNAL("newProject"), newProject)
119 QApplication.instance().connect(QApplication.instance().dialog, SIGNAL("editProject"), editProject)
120 QApplication.instance().dialog.show()
123 app = QApplication(sys.argv)
124 app.settings = QSettings("Develer", "Bertos Configurator")
125 app.project = BProject.BProject()
126 # Development utility lines, to be removed for production
127 datadir = const.DATA_DIR
128 qrc, rcc = os.path.join(datadir, 'bertos.qrc'), os.path.join(datadir, 'bertos.rcc')
129 if not (hasattr(sys, "frozen") and sys.frozen) and newer(qrc, rcc):
130 os.system("rcc -binary %s -o %s" %(qrc, rcc))
131 QResource.registerResource(rcc)
132 if len(sys.argv) == 3 and sys.argv[1] == "--edit":
133 editProject(sys.argv[2])
138 if __name__ == '__main__':