diff --git a/bootstrap/easyChams/CompilationWidget.cpp b/bootstrap/easyChams/CompilationWidget.cpp
new file mode 100644
index 00000000..2e179915
--- /dev/null
+++ b/bootstrap/easyChams/CompilationWidget.cpp
@@ -0,0 +1,266 @@
+#include
+using namespace std;
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "CompilationWidget.h"
+#include "CompileHighlighter.h"
+#include "ConfigDialog.h"
+
+CompilationWidget::CompilationWidget(QWidget *parent)
+ : QWidget(parent)
+ , _cProgram ("")
+ , _sourceRD ("")
+ , _hasHurricane (false)
+ , _hasIo (false)
+ , _hasTest (false)
+ , _hasCrlcore (false)
+ , _hasChams (false)
+ , _hasHurricaneAMS (false) {
+
+ setStyleSheet("font-weight: normal;");
+
+ _hurricane = new QCheckBox ( "hurricane" , this );
+ _io = new QCheckBox ( "io" , this );
+ _test = new QCheckBox ( "test" , this );
+ _crlcore = new QCheckBox ( "crlcore" , this );
+ _chams = new QCheckBox ( "chams" , this );
+ _hurricaneAMS = new QCheckBox ( "hurricaneAMS", this );
+
+ readSettings();
+
+ QVBoxLayout* vBoxOutilsGroup = new QVBoxLayout();
+ vBoxOutilsGroup->addWidget(_hurricane);
+ vBoxOutilsGroup->addWidget(_io);
+ vBoxOutilsGroup->addWidget(_test);
+ vBoxOutilsGroup->addWidget(_crlcore);
+ vBoxOutilsGroup->addWidget(_chams);
+ vBoxOutilsGroup->addWidget(_hurricaneAMS);
+ if (!_hasHurricane) _hurricane->setVisible(false);
+ if (!_hasIo) _io->setVisible(false);
+ if (!_hasTest) _test->setVisible(false);
+ if (!_hasCrlcore) _crlcore->setVisible(false);
+ if (!_hasChams) _chams->setVisible(false);
+ if (!_hasHurricaneAMS) _hurricaneAMS->setVisible(false);
+
+ QGroupBox* outilsGroup = new QGroupBox ( "Outils", this );
+ outilsGroup->setLayout(vBoxOutilsGroup);
+
+ _mode = new QComboBox (this);
+ QStringList modes;
+ modes << "Release" << "Debug";
+ _mode->addItems(modes);
+ _static = new QCheckBox ("static", this);
+ _svnUp = new QCheckBox ("svn update", this);
+ _doc = new QCheckBox ("build doc", this);
+ _clean = new QCheckBox ("clean build", this);
+
+ QVBoxLayout* vBoxOptionsGroup = new QVBoxLayout();
+ vBoxOptionsGroup->addWidget(_mode);
+ vBoxOptionsGroup->addWidget(_static);
+ vBoxOptionsGroup->addWidget(_doc);
+ vBoxOptionsGroup->addWidget(_svnUp);
+ vBoxOptionsGroup->addWidget(_clean);
+
+ QGroupBox* optionsGroup = new QGroupBox ( "Options", this );
+ optionsGroup->setLayout(vBoxOptionsGroup);
+
+ _compile = new QPushButton ( "Compile !", this );
+ connect ( _compile, SIGNAL(clicked()), this, SLOT(compile()) );
+
+ _progressBar = new QProgressBar ( this );
+ _progressBar->setRange(0,100);
+ _progressBar->setTextVisible(true);
+ connect ( this, SIGNAL(progress(int)), _progressBar, SLOT(setValue(int)) );
+
+ QVBoxLayout* vBoxLayout = new QVBoxLayout();
+ vBoxLayout->addWidget(outilsGroup);
+ vBoxLayout->addWidget(optionsGroup);
+ vBoxLayout->addWidget(_compile);
+ vBoxLayout->addWidget(_progressBar);
+
+ QWidget* menu = new QWidget ( this );
+ menu->setLayout(vBoxLayout);
+
+ _console = new QTextEdit(this);
+ _console->setFixedSize(800,400);
+ CompileHighlighter* highlight = new CompileHighlighter(_console->document());
+
+ QHBoxLayout* hBoxLayout = new QHBoxLayout();
+ hBoxLayout->addWidget(menu);
+ hBoxLayout->addWidget(_console);
+ setLayout(hBoxLayout);
+ setWindowTitle("Easy compile for chams");
+
+}
+
+void CompilationWidget::compile() {
+ QStringList arguments;
+
+ _progressBar->reset();
+ _console->clear();
+
+ _myProcess = new QProcess(this);
+ QStringList env = QProcess::systemEnvironment();
+ //QString currentInstallRD = _installRD;
+ //if (_static->isChecked()) currentInstallRD += "/"+_mode->currentText()+".Static";
+ //else currentInstallRD += "/"+_mode->currentText()+".Shared";
+ //cerr << _installRD.toStdString() << endl;
+ //env << "HURRICANE_TOP=" + currentInstallRD;
+ //env << "CHAMS_TOP=" + currentInstallRD;
+ //env << "IO_TOP=" + currentInstallRD;
+ //env << "DYLD_LIBRARY_PATH=" + currentInstallRD + "/lib";
+ //_myProcess->setEnvironment(env);
+ connect(_myProcess, SIGNAL(readyReadStandardError()) , this, SLOT(updateError()));
+ connect(_myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(updateText()));
+ connect(_myProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateExit(int, QProcess::ExitStatus)));
+ //arguments << "-s " + _sourceRD;
+ //arguments << "-i " + currentInstallRD;
+ //arguments << "-b " + _buildRD;
+ arguments << "-p" + _sourceRD;
+ arguments << "-m" + _mode->currentText();
+ if (_static->isChecked()) arguments << "-s";
+ if (_svnUp->isChecked()) arguments << "-u";
+ if (_doc->isChecked()) arguments << "-d";
+ if (_clean->isChecked()) arguments << "-c";
+ if (_hurricane->isChecked()) arguments << "-t hurricane";
+ if (_io->isChecked()) arguments << "-t io";
+ if (_test->isChecked()) arguments << "-t test";
+ if (_crlcore->isChecked()) arguments << "-t crlcore";
+ if (_chams->isChecked()) arguments << "-t chams";
+ if (_hurricaneAMS->isChecked()) arguments << "-t hurricaneAMS";
+
+ for (int i = 0; i < arguments.size(); ++i)
+ cout << arguments.at(i).toLocal8Bit().constData() << endl;
+
+ _myProcess->start(_cProgram, arguments);
+}
+
+void CompilationWidget::readSettings() {
+ _settings = new QSettings ( "chams", "easyChams" );
+
+ if ( !_settings->contains("Compilation program") ) {
+ QMessageBox::warning(this, tr("easyChams"), tr("It seems you do not have configured the application. Let's configure it now."), QMessageBox::Ok, QMessageBox::Ok);
+ runConfigDialog(true);
+ }
+ else {
+ _cProgram = _settings->value("Compilation program").toString();
+ _sourceRD = _settings->value("Source root").toString();
+ _hasHurricane = _settings->value("Hurricane").toBool();
+ _hasIo = _settings->value("Io").toBool();
+ _hasTest = _settings->value("Test").toBool();
+ _hasCrlcore = _settings->value("Crlcore").toBool();
+ _hasChams = _settings->value("Chams").toBool();
+ _hasHurricaneAMS = _settings->value("HurricaneAMS").toBool();
+ }
+}
+
+void CompilationWidget::runConfigDialog(bool first) {
+ ConfigDialog* cfg = new ConfigDialog;
+ connect ( cfg, SIGNAL(configDone(QStringList)), this, SLOT(updateConfig(QStringList)) );
+ if (!first) {
+ cfg->setCompileProgram(_cProgram);
+ cfg->setSourceRootDirectory(_sourceRD);
+ cfg->setHasHurricane(_hasHurricane);
+ cfg->setHasIo(_hasIo);
+ cfg->setHasTest(_hasTest);
+ cfg->setHasCrlcore(_hasCrlcore);
+ cfg->setHasChams(_hasChams);
+ cfg->setHasHurricaneAMS(_hasHurricaneAMS);
+ }
+ cfg->exec();
+ writeSettings();
+}
+
+void CompilationWidget::reconfig() {
+ runConfigDialog(false);
+}
+
+void CompilationWidget::writeSettings() {
+ _settings->setValue("Compilation program", _cProgram);
+ _settings->setValue("Source root" , _sourceRD);
+ _settings->setValue("Hurricane" , _hasHurricane);
+ _settings->setValue("Io" , _hasIo);
+ _settings->setValue("Test" , _hasTest);
+ _settings->setValue("Crlcore" , _hasCrlcore);
+ _settings->setValue("Chams" , _hasChams);
+ _settings->setValue("HurricaneAMS" , _hasHurricaneAMS);
+}
+
+void CompilationWidget::updateConfig(QStringList list) {
+ _cProgram = list.value(0); // First value is compilation program
+ _sourceRD = list.value(1); // Second value is source root directory
+ _hasHurricane = (list.value(2) == "ON") ? true : false; // Third value is hasHurricane
+ _hasIo = (list.value(3) == "ON") ? true : false; // Forth value is hasIo
+ _hasTest = (list.value(4) == "ON") ? true : false; // Fifth value is hasTest
+ _hasCrlcore = (list.value(5) == "ON") ? true : false; // Sixth value is hasCrlcore
+ _hasChams = (list.value(6) == "ON") ? true : false; // Seventh value is hasChams
+ _hasHurricaneAMS = (list.value(7) == "ON") ? true : false; // Eight value is hasHurricaneAMS
+ // updates Tools visibility :
+ if (_hasHurricane) { _hurricane->setVisible(true); }
+ else { _hurricane->setVisible(false); _hurricane->setCheckState(Qt::Unchecked); }
+ if (_hasIo) { _io->setVisible(true); }
+ else { _io->setVisible(false); _io->setCheckState(Qt::Unchecked); }
+ if (_hasTest) { _test->setVisible(true); }
+ else { _test->setVisible(false); _test->setCheckState(Qt::Unchecked); }
+ if (_hasCrlcore) { _crlcore->setVisible(true); }
+ else { _crlcore->setVisible(false); _crlcore->setCheckState(Qt::Unchecked); }
+ if (_hasChams) { _chams->setVisible(true); }
+ else { _chams->setVisible(false); _chams->setCheckState(Qt::Unchecked); }
+ if (_hasHurricaneAMS) { _hurricaneAMS->setVisible(true); }
+ else { _hurricaneAMS->setVisible(false); _hurricaneAMS->setCheckState(Qt::Unchecked); }
+}
+
+
+void CompilationWidget::updateError() {
+ QByteArray data = _myProcess->readAllStandardError();
+ _console->insertPlainText(QString(data));
+ int end = _console->verticalScrollBar()->maximum();
+ _console->verticalScrollBar()->setValue(end);
+}
+
+void CompilationWidget::updateText() {
+ QByteArray data = _myProcess->readAllStandardOutput();
+ QString str(data);
+ QRegExp rx = QRegExp ( "([0-9]+)%" );
+ if ( str.contains(rx) ) {
+ bool ok;
+ int value = rx.cap(1).toInt ( &ok, 10 );
+ emit(progress(value));
+ }
+ _console->insertPlainText(QString(data));
+ int end = _console->verticalScrollBar()->maximum();
+ _console->verticalScrollBar()->setValue(end);
+}
+
+void CompilationWidget::updateExit(int exitCode, QProcess::ExitStatus exitStatus)
+{
+ if (exitStatus == QProcess::NormalExit) {
+ _console->append("Completed Successfully");
+ }
+ else {
+ _console->append("Error");
+ }
+}
+
+void CompilationWidget::about()
+{
+ QMessageBox::about(this, tr("About easyChams"), tr("easyChams
"
+ "This tool allows every one to easily update and compile chams project's sources.
"
+ "Version 0.6
29/01/2010
by D.Dupuis
"));
+}
diff --git a/bootstrap/easyChams/CompilationWidget.h b/bootstrap/easyChams/CompilationWidget.h
new file mode 100644
index 00000000..9c48459d
--- /dev/null
+++ b/bootstrap/easyChams/CompilationWidget.h
@@ -0,0 +1,69 @@
+#ifndef __COMPILATION_WIDGET_H
+#define __COMPILATION_WIDGET_H
+
+#include
+#include
+
+class QCheckBox;
+class QComboBox;
+class QTextEdit;
+class QPushButton;
+class QProgressBar;
+class QSettings;
+class QStringList;
+class QAction;
+
+class CompilationWidget : public QWidget {
+ Q_OBJECT
+
+ public:
+ CompilationWidget (QWidget *parent =0);
+ ~CompilationWidget () {};
+
+ private:
+ QCheckBox* _hurricane;
+ QCheckBox* _io;
+ QCheckBox* _test;
+ QCheckBox* _crlcore;
+ QCheckBox* _chams;
+ QCheckBox* _hurricaneAMS;
+ QComboBox* _mode;
+ QCheckBox* _static;
+ QCheckBox* _svnUp;
+ QCheckBox* _doc;
+ QCheckBox* _clean;
+ QPushButton* _compile;
+ QProgressBar* _progressBar;
+
+ QTextEdit* _console;
+ QProcess* _myProcess;
+
+ QSettings* _settings;
+ QString _cProgram;
+ QString _sourceRD;
+ bool _hasHurricane;
+ bool _hasIo;
+ bool _hasTest;
+ bool _hasCrlcore;
+ bool _hasChams;
+ bool _hasHurricaneAMS;
+
+ private:
+ void readSettings();
+ void writeSettings();
+ void runConfigDialog(bool first);
+
+ public slots:
+ void compile();
+ void updateError();
+ void updateText();
+ void updateExit(int exitCode, QProcess::ExitStatus exitStatus);
+ void updateConfig(QStringList list);
+ void reconfig();
+ void about();
+
+ signals:
+ void progress(int value);
+};
+
+#endif
diff --git a/bootstrap/easyChams/CompileHighlighter.cpp b/bootstrap/easyChams/CompileHighlighter.cpp
new file mode 100644
index 00000000..b193c4ec
--- /dev/null
+++ b/bootstrap/easyChams/CompileHighlighter.cpp
@@ -0,0 +1,70 @@
+// File : CompileHighlighter.cpp
+// Date : 01.10.2009
+// Author : Dupuis Damien
+//
+
+#include "CompileHighlighter.h"
+
+CompileHighlighter::CompileHighlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) {
+ // defines rules
+ CompileHighlighterRule rule;
+
+ //building/linking/scanning rule : blue Bold
+ _doingFormat.setForeground(Qt::blue);
+ _doingFormat.setFontWeight(QFont::Bold);
+ rule.format = _doingFormat;
+ rule.pattern = QRegExp("(^Building.*$|^Linking.*$|^Scanning.*$|^Built target.*$)");
+ _rules.append(rule);
+
+ //compile rule : darkBlue Normal
+ _compileFormat.setForeground(Qt::darkBlue);
+ rule.format = _compileFormat;
+ rule.pattern = QRegExp("(^\\[.*$)");
+ _rules.append(rule);
+
+ //install rule : cyan Bold
+ _installFormat.setForeground(Qt::cyan);
+ _installFormat.setFontWeight(QFont::Bold);
+ rule.format = _installFormat;
+ rule.pattern = QRegExp("(^Install the project.*$)");
+ _rules.append(rule);
+
+ //--install rule : darkCyan
+ _installingFormat.setForeground(Qt::darkCyan);
+ rule.format = _installingFormat;
+ rule.pattern = QRegExp("(^-- Install.*$)");
+ _rules.append(rule);
+
+ //--uptodate : darkCyan Italic
+ _uptodateFormat.setForeground(Qt::darkCyan);
+ _uptodateFormat.setFontItalic(true);
+ rule.format = _uptodateFormat;
+ rule.pattern = QRegExp("(^-- Up-to-date.*$)");
+ _rules.append(rule);
+
+ //warning rule
+ _warningFormat.setForeground(QColor("orange"));
+ rule.format = _warningFormat;
+ rule.pattern = QRegExp("(^/.*In function.*$|^/.*warning:.*$)");
+ _rules.append(rule);
+
+ //error rule
+ _errorFormat.setForeground(Qt::red);
+ rule.format = _errorFormat;
+ rule.pattern = QRegExp("(^/.*error:.*$|^make\\[.*$)");
+ _rules.append(rule);
+}
+
+void CompileHighlighter::highlightBlock(const QString &text) {
+ foreach (const CompileHighlighterRule &rule, _rules) {
+ QRegExp expression (rule.pattern);
+ int index = expression.indexIn(text);
+ while (index >= 0) {
+ int length = expression.matchedLength();
+ setFormat(index, length, rule.format);
+ index = expression.indexIn(text, index + length);
+ }
+ }
+ setCurrentBlockState(0);
+}
+
diff --git a/bootstrap/easyChams/CompileHighlighter.h b/bootstrap/easyChams/CompileHighlighter.h
new file mode 100644
index 00000000..448a060f
--- /dev/null
+++ b/bootstrap/easyChams/CompileHighlighter.h
@@ -0,0 +1,38 @@
+// File : CompileHighlighter.h
+// Date : 01.10.2009
+// Author : Dupuis Damien
+//
+#ifndef COMPILEHIGHLIGHTER_H
+#define COMPILEHIGHLIGHTER_H
+
+#include
+#include
+#include
+
+class CompileHighlighter : public QSyntaxHighlighter {
+ Q_OBJECT
+
+ public:
+ CompileHighlighter ( QTextDocument *parent = 0 );
+
+ protected:
+ void highlightBlock ( const QString &text );
+
+ private:
+ struct CompileHighlighterRule {
+ QTextCharFormat format;
+ QRegExp pattern;
+ };
+ QVector _rules;
+
+ QTextCharFormat _compileFormat;
+ QTextCharFormat _warningFormat;
+ QTextCharFormat _errorFormat;
+ QTextCharFormat _installFormat;
+ QTextCharFormat _installingFormat;
+ QTextCharFormat _uptodateFormat;
+ QTextCharFormat _doingFormat;
+};
+
+
+#endif
diff --git a/bootstrap/easyChams/ConfigDialog.cpp b/bootstrap/easyChams/ConfigDialog.cpp
new file mode 100644
index 00000000..683a2f05
--- /dev/null
+++ b/bootstrap/easyChams/ConfigDialog.cpp
@@ -0,0 +1,83 @@
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "configDialog.h"
+
+#define LINEEDITWIDTH 300
+
+ConfigDialog::ConfigDialog() {
+ // First GroupBox : Directories
+ // Create Widgets
+ QLabel* compileL = new QLabel(tr("Compilation script:"), this);
+ QLabel* sourceL = new QLabel(tr("Chams source root directory:"), this);
+ _compileE = new QLineEdit ("", this);
+ _sourceE = new QLineEdit ("", this);
+ _compileE->setFixedWidth(LINEEDITWIDTH);
+ _sourceE->setFixedWidth (LINEEDITWIDTH);
+ QPushButton* compileB = new QPushButton(tr("&Browse"));
+ QPushButton* sourceB = new QPushButton(tr("&Browse"));
+ QDialogButtonBox* bBox = new QDialogButtonBox(QDialogButtonBox::Ok);
+ // Connect SIGNAL/SLOTS
+ connect(compileB, SIGNAL(clicked()) , this, SLOT(chooseCProgram()));
+ connect(sourceB , SIGNAL(clicked()) , this, SLOT(chooseSourceRD()));
+ connect(bBox , SIGNAL(accepted()), this, SLOT(doConfig()));
+ // Create GroupBox
+ QGroupBox* directories = new QGroupBox("Directories", this);
+ QGridLayout* gLayout = new QGridLayout(this);
+ gLayout->addWidget( compileL, 0, 0, 1, 1);
+ gLayout->addWidget(_compileE, 0, 1, 1, 2);
+ gLayout->addWidget( compileB, 0, 3, 1, 1);
+ gLayout->addWidget( sourceL , 1, 0, 1, 1);
+ gLayout->addWidget(_sourceE , 1, 1, 1, 2);
+ gLayout->addWidget( sourceB , 1, 3, 1, 1);
+ directories->setLayout(gLayout);
+ // Second GroupBox : Tools
+ // Create Widgets
+ _hurCB = new QCheckBox("Hurricane" , this);
+ _ioCB = new QCheckBox("Io" , this);
+ _testCB = new QCheckBox("Test (not in svn)", this);
+ _crlCB = new QCheckBox("Crlcore" , this);
+ _chamsCB = new QCheckBox("Chams" , this);
+ _hurAMSCB = new QCheckBox("HurricaneAMS" , this);
+ // Create GroupBox
+ QGroupBox* tools = new QGroupBox("Available Tools", this);
+ QGridLayout* grLayout = new QGridLayout(this);
+ grLayout->addWidget(_hurCB , 0, 0, 1, 1);
+ grLayout->addWidget(_ioCB , 1, 0, 1, 1);
+ grLayout->addWidget(_testCB , 2, 0, 1, 1);
+ grLayout->addWidget(_crlCB , 0, 1, 1, 1);
+ grLayout->addWidget(_chamsCB , 1, 1, 1, 1);
+ grLayout->addWidget(_hurAMSCB, 2, 1, 1, 1);
+ tools->setLayout(grLayout);
+ // ConfigDialog Layout
+ QVBoxLayout* vLayout = new QVBoxLayout;
+ vLayout->addWidget(directories);
+ vLayout->addWidget(tools);
+ vLayout->addWidget(bBox);
+ setLayout(vLayout);
+}
+
+void ConfigDialog::chooseCProgram() {
+ _compileE->setText(QFileDialog::getOpenFileName(this, tr("Select chams.sh"), "", tr("Shell script (*.sh)")));
+}
+
+void ConfigDialog::chooseSourceRD() {
+ _sourceE->setText(QFileDialog::getExistingDirectory(this, tr("Select the chams source root directory")));
+}
+
+void ConfigDialog::doConfig() {
+ QStringList list;
+ QString hur = (_hurCB->isChecked()) ? "ON" : "OFF";
+ QString io = (_ioCB->isChecked()) ? "ON" : "OFF";
+ QString test = (_testCB->isChecked()) ? "ON" : "OFF";
+ QString crl = (_crlCB->isChecked()) ? "ON" : "OFF";
+ QString chams = (_chamsCB->isChecked()) ? "ON" : "OFF";
+ QString hurAMS = (_hurAMSCB->isChecked()) ? "ON" : "OFF";
+ list << _compileE->text() << _sourceE->text() << hur << io << test << crl << chams << hurAMS;
+ emit configDone(list);
+ accept();
+}
diff --git a/bootstrap/easyChams/ConfigDialog.h b/bootstrap/easyChams/ConfigDialog.h
new file mode 100644
index 00000000..2df9ab1c
--- /dev/null
+++ b/bootstrap/easyChams/ConfigDialog.h
@@ -0,0 +1,88 @@
+#ifndef CONFIGDIALOG_H
+#define CONFIGDIALOG_H
+
+#include
+#include
+#include
+
+class QLabel;
+class QStringList;
+
+class ConfigDialog : public QDialog {
+ Q_OBJECT
+
+public:
+ ConfigDialog();
+ inline void setCompileProgram(QString);
+ inline void setSourceRootDirectory(QString);
+ inline void setHasHurricane(bool);
+ inline void setHasIo(bool);
+ inline void setHasTest(bool);
+ inline void setHasCrlcore(bool);
+ inline void setHasChams(bool);
+ inline void setHasHurricaneAMS(bool);
+
+public slots:
+ void chooseCProgram();
+ void chooseSourceRD();
+ void doConfig();
+
+signals:
+ void configDone (QStringList list);
+
+private:
+ QLineEdit* _compileE;
+ QLineEdit* _sourceE;
+ QCheckBox* _hurCB;
+ QCheckBox* _ioCB;
+ QCheckBox* _testCB;
+ QCheckBox* _crlCB;
+ QCheckBox* _chamsCB;
+ QCheckBox* _hurAMSCB;
+};
+
+inline void ConfigDialog::setCompileProgram (QString cProgram ) { _compileE->setText(cProgram); };
+inline void ConfigDialog::setSourceRootDirectory (QString rDirectory) { _sourceE->setText(rDirectory); };
+
+inline void ConfigDialog::setHasHurricane(bool state) {
+ if (state)
+ _hurCB->setCheckState(Qt::Checked);
+ else
+ _hurCB->setCheckState(Qt::Unchecked);
+};
+
+inline void ConfigDialog::setHasIo(bool state) {
+ if (state)
+ _ioCB->setCheckState(Qt::Checked);
+ else
+ _ioCB->setCheckState(Qt::Unchecked);
+};
+
+inline void ConfigDialog::setHasTest(bool state) {
+ if (state)
+ _testCB->setCheckState(Qt::Checked);
+ else
+ _testCB->setCheckState(Qt::Unchecked);
+};
+
+inline void ConfigDialog::setHasCrlcore(bool state) {
+ if (state)
+ _crlCB->setCheckState(Qt::Checked);
+ else
+ _crlCB->setCheckState(Qt::Unchecked);
+};
+
+inline void ConfigDialog::setHasChams(bool state) {
+ if (state)
+ _chamsCB->setCheckState(Qt::Checked);
+ else
+ _chamsCB->setCheckState(Qt::Unchecked);
+};
+
+inline void ConfigDialog::setHasHurricaneAMS(bool state) {
+ if (state)
+ _hurAMSCB->setCheckState(Qt::Checked);
+ else
+ _hurAMSCB->setCheckState(Qt::Unchecked);
+};
+#endif
diff --git a/bootstrap/easyChams/MainWindow.cpp b/bootstrap/easyChams/MainWindow.cpp
new file mode 100644
index 00000000..b9f21d8e
--- /dev/null
+++ b/bootstrap/easyChams/MainWindow.cpp
@@ -0,0 +1,22 @@
+#include
+#include
+#include
+
+#include "MainWindow.h"
+
+MainWindow::MainWindow()
+{
+ CompilationWidget* cWidget = new CompilationWidget(this);
+ setCentralWidget(cWidget);
+
+ QAction* configAct = new QAction(tr("&Configure"), this);
+ configAct->setStatusTip(tr("Configure the application"));
+ connect(configAct, SIGNAL(triggered()), cWidget, SLOT(reconfig()));
+ QAction* aboutAct = new QAction(tr("&About"), this);
+ aboutAct->setStatusTip(tr("Show the about dialog box"));
+ connect(aboutAct, SIGNAL(triggered()), cWidget, SLOT(about()));
+ QMenu* editMenu = menuBar()->addMenu(tr("&Edit"));
+ editMenu->addAction(configAct);
+ QMenu* helpMenu = menuBar()->addMenu(tr("&Help"));
+ helpMenu->addAction(aboutAct);
+}
diff --git a/bootstrap/easyChams/MainWindow.h b/bootstrap/easyChams/MainWindow.h
new file mode 100644
index 00000000..80a519f7
--- /dev/null
+++ b/bootstrap/easyChams/MainWindow.h
@@ -0,0 +1,15 @@
+#ifndef __MAINWINDOW_H
+#define __MAINWINDOW_H
+
+#include
+
+#include "CompilationWidget.h"
+
+class MainWindow : public QMainWindow {
+ Q_OBJECT
+
+ public:
+ MainWindow ();
+ ~MainWindow () {};
+};
+#endif
diff --git a/bootstrap/easyChams/README b/bootstrap/easyChams/README
new file mode 100644
index 00000000..70cc37a6
--- /dev/null
+++ b/bootstrap/easyChams/README
@@ -0,0 +1,5 @@
+easyChams readme
+
+This tool allows every one to easily compile & install chams project's sources.
+
+To compile this tool use ./compile.sh which is platform independant.
diff --git a/bootstrap/easyChams/compile.sh b/bootstrap/easyChams/compile.sh
new file mode 100755
index 00000000..56e63490
--- /dev/null
+++ b/bootstrap/easyChams/compile.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+qmake -project
+case "`uname -s`" in
+ Linux) qmake;;
+ Darwin) qmake -spec macx-g++;;
+esac
+make -j2 && make clean
diff --git a/bootstrap/easyChams/icons/linux/Eye_of_Horus.png b/bootstrap/easyChams/icons/linux/Eye_of_Horus.png
new file mode 100644
index 00000000..85b5a497
Binary files /dev/null and b/bootstrap/easyChams/icons/linux/Eye_of_Horus.png differ
diff --git a/bootstrap/easyChams/icons/macosx/Eye of Horus.zip b/bootstrap/easyChams/icons/macosx/Eye of Horus.zip
new file mode 100644
index 00000000..7159ed55
Binary files /dev/null and b/bootstrap/easyChams/icons/macosx/Eye of Horus.zip differ
diff --git a/bootstrap/easyChams/main.cpp b/bootstrap/easyChams/main.cpp
new file mode 100644
index 00000000..db30f5a8
--- /dev/null
+++ b/bootstrap/easyChams/main.cpp
@@ -0,0 +1,16 @@
+#include
+using namespace std;
+
+#include
+#include
+#include
+#include "MainWindow.h"
+
+int main ( int argc, char **argv ) {
+ QApplication app ( argc, argv );
+
+ MainWindow mWindow;
+ mWindow.show();
+
+ return app.exec();
+}