Commit 7e6aee9b authored by Olli Werwolff's avatar Olli Werwolff
Browse files

Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline

parents 500f2e5d 89fc9886
......@@ -216,7 +216,7 @@ QT_END_NAMESPACE
// comma-separated integer list
static char qDumpInBuffer[10000];
static char qDumpOutBuffer[100000];
static char qDumpSize[20];
//static char qDumpSize[20];
namespace {
......@@ -311,7 +311,16 @@ static bool isSimpleType(const char *type)
static bool isShortKey(const char *type)
{
return isSimpleType(type) || isEqual(type, "QString");
return isSimpleType(type) || isEqual(type, NS"QString");
}
static bool isStringType(const char *type)
{
return isEqual(type, NS"QString")
|| isEqual(type, NS"QByteArray")
|| isEqual(type, "std::string")
|| isEqual(type, "std::wstring")
|| isEqual(type, "wstring");
}
static bool isMovableType(const char *type)
......@@ -704,44 +713,45 @@ static void qDumpUnknown(QDumper &d)
}
static void qDumpInnerValueHelper(QDumper &d, const char *type, const void *addr,
const char *key = "value")
const char *field = "value")
{
type = stripNamespace(type);
switch (type[1]) {
case 'l':
if (isEqual(type, "float"))
P(d, key, *(float*)addr);
P(d, field, *(float*)addr);
return;
case 'n':
if (isEqual(type, "int"))
P(d, key, *(int*)addr);
P(d, field, *(int*)addr);
else if (isEqual(type, "unsigned"))
P(d, key, *(unsigned int*)addr);
P(d, field, *(unsigned int*)addr);
else if (isEqual(type, "unsigned int"))
P(d, key, *(unsigned int*)addr);
P(d, field, *(unsigned int*)addr);
else if (isEqual(type, "unsigned long"))
P(d, key, *(unsigned long*)addr);
P(d, field, *(unsigned long*)addr);
else if (isEqual(type, "unsigned long long"))
P(d, key, *(qulonglong*)addr);
P(d, field, *(qulonglong*)addr);
return;
case 'o':
if (isEqual(type, "bool"))
switch (*(bool*)addr) {
case 0: P(d, key, "false"); break;
case 1: P(d, key, "true"); break;
default: P(d, key, *(bool*)addr); break;
case 0: P(d, field, "false"); break;
case 1: P(d, field, "true"); break;
default: P(d, field, *(bool*)addr); break;
}
else if (isEqual(type, "double"))
P(d, key, *(double*)addr);
P(d, field, *(double*)addr);
else if (isEqual(type, "long"))
P(d, key, *(long*)addr);
P(d, field, *(long*)addr);
else if (isEqual(type, "long long"))
P(d, key, *(qulonglong*)addr);
P(d, field, *(qulonglong*)addr);
return;
case 'B':
if (isEqual(type, "QByteArray")) {
d << key << "encoded=\"1\",";
P(d, key, *(QByteArray*)addr);
d.addCommaIfNeeded();
d << field << "encoded=\"1\",";
P(d, field, *(QByteArray*)addr);
}
return;
case 'L':
......@@ -769,8 +779,9 @@ static void qDumpInnerValueHelper(QDumper &d, const char *type, const void *addr
return;
case 'S':
if (isEqual(type, "QString")) {
d << key << "encoded=\"1\",";
P(d, key, *(QString*)addr);
d.addCommaIfNeeded();
d << field << "encoded=\"1\",";
P(d, field, *(QString*)addr);
}
return;
default:
......@@ -1086,13 +1097,17 @@ static void qDumpQHash(QDumper &d)
if (d.dumpChildren) {
if (n > 1000)
n = 1000;
bool simpleKey = isShortKey(keyType);
bool simpleValue = isShortKey(valueType);
bool isSimpleKey = isSimpleType(keyType);
bool isStringKey = isStringType(keyType);
bool isSimpleValue = isSimpleType(valueType);
bool opt = isOptimizedIntKey(keyType);
int keyOffset = hashOffset(opt, true, keySize, valueSize);
int valueOffset = hashOffset(opt, false, keySize, valueSize);
P(d, "extra", "simplekey: " << simpleKey << " simpleValue: " << simpleValue
P(d, "extra", "isSimpleKey: " << isSimpleKey
<< " isStringKey: " << isStringKey
<< " isSimpleValue: " << isSimpleValue
<< " valueType: '" << valueType << "'"
<< " keySize: " << keyOffset << " valueOffset: " << valueOffset
<< " opt: " << opt);
......@@ -1103,18 +1118,17 @@ static void qDumpQHash(QDumper &d)
d << ",children=[";
while (node != end) {
d.beginHash();
if (simpleKey) {
P(d, "name", i);
qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");
if (simpleValue)
qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));
P(d, "name", i);
qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");
qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));
if (isSimpleKey && isSimpleValue) {
P(d, "type", valueType);
P(d, "addr", addOffset(node, valueOffset));
} else {
P(d, "name", i);
//P(d, "exp", "*(char*)" << node);
P(d, "exp", "*('"NS"QHashNode<" << keyType << "," << valueType << " >'*)" << node);
P(d, "type", "'"NS"QHashNode<" << keyType << "," << valueType << " >'");
P(d, "exp", "*('"NS"QHashNode<" << keyType << ","
<< valueType << " >'*)" << node);
P(d, "type", "'"NS"QHashNode<" << keyType << ","
<< valueType << " >'");
}
d.endHash();
++i;
......@@ -1262,8 +1276,8 @@ static void qDumpQLinkedList(QDumper &d)
P(d, "numchild", n);
P(d, "childtype", d.innertype);
if (d.dumpChildren) {
unsigned innerSize = d.extraInt[0];
bool innerTypeIsPointer = isPointerType(d.innertype);
//unsigned innerSize = d.extraInt[0];
//bool innerTypeIsPointer = isPointerType(d.innertype);
QByteArray strippedInnerType = stripPointerType(d.innertype);
const char *stripped =
isPointerType(d.innertype) ? strippedInnerType.data() : 0;
......@@ -1397,13 +1411,13 @@ static void qDumpQMap(QDumper &d)
unsigned mapnodesize = d.extraInt[2];
unsigned valueOff = d.extraInt[3];
bool simpleKey = isShortKey(keyType);
bool simpleValue = isShortKey(valueType);
bool isSimpleKey = isShortKey(keyType);
bool isSimpleValue = isShortKey(valueType);
// both negative:
int keyOffset = 2 * sizeof(void*) - int(mapnodesize);
int valueOffset = 2 * sizeof(void*) - int(mapnodesize) + valueOff;
P(d, "extra", "simplekey: " << simpleKey << " simpleValue: " << simpleValue
P(d, "extra", "simplekey: " << isSimpleKey << " isSimpleValue: " << isSimpleValue
<< " keyOffset: " << keyOffset << " valueOffset: " << valueOffset
<< " mapnodesize: " << mapnodesize);
d << ",children=[";
......@@ -1415,10 +1429,10 @@ static void qDumpQMap(QDumper &d)
while (node != end) {
d.beginHash();
P(d, "name", i);
if (simpleKey) {
if (isSimpleKey) {
P(d, "type", valueType);
qDumpInnerValueHelper(d, keyType, addOffset(node, keyOffset), "key");
if (simpleValue)
if (isSimpleValue)
qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));
P(d, "type", valueType);
......@@ -2199,26 +2213,30 @@ static void qDumpStdMap(QDumper &d)
P(d, "pairtype", pairType);
if (d.dumpChildren) {
bool simpleKey = isSimpleType(keyType);
bool simpleValue = isShortKey(valueType);
bool isSimpleKey = isSimpleType(keyType);
bool isStringKey = isStringType(keyType);
bool isSimpleValue = isShortKey(valueType);
int valueOffset = d.extraInt[2];
d << ",children=[";
it = map.begin();
for (int i = 0; i < 1000 && it != map.end(); ++i, ++it) {
const void *node = it.operator->();
if (simpleKey) {
if (isSimpleKey) {
d.beginHash();
P(d, "type", valueType);
qDumpInnerValueHelper(d, keyType, node, "name");
P(d, "name", i);
qDumpInnerValueHelper(d, keyType, node, "key");
P(d, "nameisindex", "1");
if (simpleValue)
if (isSimpleValue)
qDumpInnerValueHelper(d, valueType, addOffset(node, valueOffset));
P(d, "addr", addOffset(node, valueOffset));
d.endHash();
} else {
d.beginHash();
P(d, "name", i);
if (isStringKey)
qDumpInnerValueHelper(d, keyType, node, "key");
P(d, "addr", it.operator->());
P(d, "type", pairType);
d.endHash();
......
......@@ -17,7 +17,7 @@ macx {
QMAKE_INFO_PLIST = $$PWD/qtcreator/Info.plist
}
win32 {
win32|linux-* {
# make sure the resources are in place
!exists($$OUT_PWD/app.pro) {
unix:SEPARATOR = ;
......@@ -28,10 +28,11 @@ win32 {
designer \
schemes \
gdbmacros
COPYDEST = $${OUT_PWD}/../../bin
COPYDEST = $${OUT_PWD}/../../share/qtcreator
win32:COPYDEST ~= s|/+|\|
QMAKE_POST_LINK += $${QMAKE_MKDIR} $$COPYDEST $$SEPARATOR
for(tmp,COPYSRC) {
REALSRC = $$PWD/$$tmp
REALSRC = $$PWD/qtcreator/$$tmp
REALDEST = $$COPYDEST/$$tmp
win32:tmp ~= s|/+|\|
win32:REALSRC ~= s|/+|\|
......
......@@ -99,6 +99,7 @@ void ProgressView::deleteTask(FutureProgress *progress)
m_type.remove(progress);
m_keep.remove(progress);
layout()->removeWidget(progress);
progress->hide();
progress->deleteLater();
}
......
......@@ -2761,14 +2761,17 @@ static void setWatchDataValue(WatchData &data, const GdbMi &mi,
break;
case 1: // base64 encoded 8 bit data
ba = QByteArray::fromBase64(mi.data());
ba = '"' + ba + '"';
break;
case 2: // base64 encoded 16 bit data
ba = QByteArray::fromBase64(mi.data());
ba = QString::fromUtf16((ushort *)ba.data(), ba.size() / 2).toUtf8();
ba = '"' + ba + '"';
break;
case 3: // base64 encoded 32 bit data
ba = QByteArray::fromBase64(mi.data());
ba = QString::fromUcs4((uint *)ba.data(), ba.size() / 4).toUtf8();
ba = '"' + ba + '"';
break;
}
data.setValue(ba);
......@@ -2830,9 +2833,12 @@ static bool extractTemplate(const QString &type, QString *tmplate, QString *inne
// 'tmplate' and "Inner1@Inner2@..." etc in 'inner'. Result indicates
// whether parsing was successful
int level = 0;
bool skipSpace = false;
for (int i = 0; i != type.size(); ++i) {
QChar c = type[i];
if (c == '<') {
if (c == ' ' && skipSpace) {
skipSpace = false;
} else if (c == '<') {
*(level == 0 ? tmplate : inner) += c;
++level;
} else if (c == '>') {
......@@ -2840,6 +2846,7 @@ static bool extractTemplate(const QString &type, QString *tmplate, QString *inne
*(level == 0 ? tmplate : inner) += c;
} else if (c == ',') {
*inner += (level == 1) ? '@' : ',';
skipSpace = true;
} else {
*(level == 0 ? tmplate : inner) += c;
}
......@@ -3550,13 +3557,18 @@ void GdbEngine::handleDumpCustomValue2(const GdbResultRecord &record,
data1.iname = data.iname + "." + data1.name;
if (!data1.name.isEmpty() && data1.name.at(0).isDigit())
data1.name = '[' + data1.name + ']';
//qDebug() << "NAMEENCODED: " << item.findChild("nameencoded").data()
// << item.findChild("nameencoded").data()[1];
if (item.findChild("nameencoded").data()[0] == '1')
data1.name = QByteArray::fromBase64(data1.name.toUtf8());
QString key = item.findChild("key").data();
if (!key.isEmpty())
data1.name += " (" + key + ")";
if (!key.isEmpty()) {
if (item.findChild("keyencoded").data()[0] == '1') {
key = '"' + QByteArray::fromBase64(key.toUtf8()) + '"';
if (key.size() > 13) {
key = key.left(12);
key += "...";
}
}
//data1.name += " (" + key + ")";
data1.name = key;
}
setWatchDataType(data1, item.findChild("type"));
setWatchDataExpression(data1, item.findChild("exp"));
setWatchDataChildCount(data1, item.findChild("numchild"));
......
......@@ -61,6 +61,8 @@
#include <QtHelp/QHelpEngine>
#include <coreplugin/coreconstants.h>
using namespace Help::Internal;
namespace {
......@@ -228,20 +230,23 @@ void CentralWidget::setSource(const QUrl &url)
void CentralWidget::setLastShownPages()
{
const QStringList lastShownPageList = helpEngine->customValue(QLatin1String("LastShownPages")).
toString().split(QLatin1Char('|'), QString::SkipEmptyParts);
const QStringList lastShownPageList =
helpEngine->customValue(QLatin1String("LastShownPages")). toString().
split(QLatin1Char('|'), QString::SkipEmptyParts);
if (!lastShownPageList.isEmpty()) {
foreach (const QString page, lastShownPageList)
foreach (const QString& page, lastShownPageList)
setSourceInNewTab(page);
tabWidget->setCurrentIndex(helpEngine->customValue(QLatin1String("LastTabPage"), 0).toInt());
tabWidget->setCurrentIndex(helpEngine->
customValue(QLatin1String("LastTabPage"), 0).toInt());
} else {
QUrl url = helpEngine->findFile(QUrl("qthelp://com.trolltech.qt.440/qdoc/index.html"));
if (url.isValid())
setSource(url);
else
setSource(QUrl("qthelp://com.trolltech.qt.440/qdoc/index.html"));
QUrl url(helpEngine->findFile(QUrl("qthelp://com.trolltech.qt.440/qdoc/index.html")));
if (!url.isValid()) {
url.setUrl(QString("qthelp://com.nokia.qtcreator.%1%2/doc/index.html").
arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR));
}
setSource(url);
}
updateBrowserFont();
......@@ -392,19 +397,33 @@ void CentralWidget::setGlobalActions(const QList<QAction*> &actions)
{
globalActionList = actions;
}
void CentralWidget::setSourceInNewTab(const QUrl &url)
{
HelpViewer* viewer = new HelpViewer(helpEngine, this);
viewer->installEventFilter(this);
viewer->setSource(url);
viewer->setFocus(Qt::OtherFocusReason);
tabWidget->setCurrentIndex(tabWidget->addTab(viewer, viewer->documentTitle()));
tabWidget->setCurrentIndex(tabWidget->addTab(viewer,
quoteTabTitle(viewer->documentTitle())));
#if defined(QT_NO_WEBIT)
QFont font = qApp->font();
if (helpEngine->customValue(QLatin1String("useBrowserFont")).toBool())
font = qVariantValue<QFont>(helpEngine->customValue(QLatin1String("browserFont")));
viewer->setFont(font);
#else
QWebView* view = qobject_cast<QWebView*> (viewer);
if (view) {
QWebSettings* settings = QWebSettings::globalSettings();
int fontSize = settings->fontSize(QWebSettings::DefaultFontSize);
QString fontFamily = settings->fontFamily(QWebSettings::StandardFont);
settings = view->settings();
settings->setFontSize(QWebSettings::DefaultFontSize, fontSize);
settings->setFontFamily(QWebSettings::StandardFont, fontFamily);
}
#endif
connectSignals();
}
......@@ -492,7 +511,7 @@ void CentralWidget::currentPageChanged(int index)
bool enabled = false;
if (viewer)
enabled = tabWidget->count() > 1;
tabWidget->setTabsClosable(enabled);
tabWidget->cornerWidget(Qt::TopLeftCorner)->setEnabled(true);
......@@ -595,6 +614,7 @@ bool CentralWidget::eventFilter(QObject *object, QEvent *e)
void CentralWidget::updateBrowserFont()
{
#if defined(QT_NO_WEBKIT)
QFont font = qApp->font();
if (helpEngine->customValue(QLatin1String("useBrowserFont")).toBool())
font = qVariantValue<QFont>(helpEngine->customValue(QLatin1String("browserFont")));
......@@ -605,9 +625,25 @@ void CentralWidget::updateBrowserFont()
if (widget->font() != font)
widget->setFont(font);
}
#else
QWebSettings* settings = QWebSettings::globalSettings();
int fontSize = settings->fontSize(QWebSettings::DefaultFontSize);
QString fontFamily = settings->fontFamily(QWebSettings::StandardFont);
QWebView* widget = 0;
for (int i = 0; i < tabWidget->count(); ++i) {
widget = qobject_cast<QWebView*> (tabWidget->widget(i));
if (widget) {
settings = widget->settings();
settings->setFontSize(QWebSettings::DefaultFontSize, fontSize);
settings->setFontFamily(QWebSettings::StandardFont, fontFamily);
}
}
#endif
}
bool CentralWidget::find(const QString &txt, QTextDocument::FindFlags findFlags, bool incremental)
bool CentralWidget::find(const QString &txt, QTextDocument::FindFlags findFlags,
bool incremental)
{
HelpViewer* viewer = currentHelpViewer();
......@@ -666,7 +702,7 @@ bool CentralWidget::find(const QString &txt, QTextDocument::FindFlags findFlags,
}
void CentralWidget::showTopicChooser(const QMap<QString, QUrl> &links,
const QString &keyword)
const QString &keyword)
{
TopicChooser tc(this, keyword, links);
if (tc.exec() == QDialog::Accepted)
......
......@@ -518,10 +518,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+R")));
mbuild->addAction(cmd, Constants::G_BUILD_RUN);
m_runActionContextMenu = new QAction(runIcon, tr("Run"), this);
cmd = am->registerAction(m_runActionContextMenu, Constants::RUNCONTEXTMENU, globalcontext);
mproject->addAction(cmd, Constants::G_PROJECT_RUN);
Core::ActionContainer *mrc = am->createMenu(Constants::RUNCONFIGURATIONMENU);
m_runConfigurationMenu = mrc->menu();
m_runConfigurationMenu->setTitle(tr("Set Run Configuration"));
......@@ -535,6 +531,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
modeManager->addAction(cmd, Constants::P_ACTION_RUN, m_runConfigurationMenu);
m_runActionContextMenu = new QAction(runIcon, tr("Run"), this);
cmd = am->registerAction(m_runActionContextMenu, Constants::RUNCONTEXTMENU, globalcontext);
mproject->addAction(cmd, Constants::G_PROJECT_RUN);
// jump to next task
m_taskAction = new QAction(tr("Go to Task Window"), this);
m_taskAction->setIcon(QIcon(Core::Constants::ICON_NEXT));
......
......@@ -104,6 +104,7 @@ bool QMakeStep::init(const QString &name)
m_buildConfiguration = name;
const QtVersion *qtVersion = m_pro->qtVersion(name);
if (!qtVersion->isValid()) {
#if defined(Q_OS_MAC)
emit addToOutputWindow(tr("\n<font color=\"#ff0000\"><b>No valid Qt version set. Set one in Preferences </b></font>\n"));
......
......@@ -46,6 +46,7 @@
#include <QtGui/QFormLayout>
#include <QtGui/QInputDialog>
#include <QtGui/QLabel>
using namespace Qt4ProjectManager::Internal;
using namespace Qt4ProjectManager;
......@@ -54,17 +55,27 @@ using ProjectExplorer::PersistentSettingsReader;
using ProjectExplorer::PersistentSettingsWriter;
Qt4RunConfiguration::Qt4RunConfiguration(Qt4Project *pro, QString proFilePath)
: ApplicationRunConfiguration(pro), m_proFilePath(proFilePath), m_userSetName(false)
: ApplicationRunConfiguration(pro),
m_proFilePath(proFilePath),
m_userSetName(false),
m_configWidget(0),
m_executableLabel(0),
m_workingDirectoryLabel(0)
{
setName(tr("Qt4RunConfiguration"));
if (!m_proFilePath.isEmpty()) {
updateCachedValues();
setName(QFileInfo(m_proFilePath).baseName());
}
connect(pro, SIGNAL(activeBuildConfigurationChanged()),
this, SIGNAL(effectiveExecutableChanged()));
connect(pro, SIGNAL(activeBuildConfigurationChanged()),
this, SIGNAL(effectiveWorkingDirectoryChanged()));
}
Qt4RunConfiguration::~Qt4RunConfiguration()
{
}
QString Qt4RunConfiguration::type() const
......@@ -72,37 +83,92 @@ QString Qt4RunConfiguration::type() const
return "Qt4ProjectManager.Qt4RunConfiguration";
}
QWidget *Qt4RunConfiguration::configurationWidget()
//////
/// Qt4RunConfigurationWidget
/////
Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4RunConfiguration, QWidget *parent)
: QWidget(parent), m_qt4RunConfiguration(qt4RunConfiguration), m_ignoreChange(false)
{
QWidget *configWidget = new QWidget;
QFormLayout *toplayout = new QFormLayout(configWidget);
QFormLayout *toplayout = new QFormLayout(this);
toplayout->setMargin(0);
QLabel *nameLabel = new QLabel(tr("Name:"));
QLineEdit *nameLineEdit = new QLineEdit(name());
nameLabel->setBuddy(nameLineEdit);
toplayout->addRow(nameLabel, nameLineEdit);
m_nameLineEdit = new QLineEdit(m_qt4RunConfiguration->name());
nameLabel->setBuddy(m_nameLineEdit);
toplayout->addRow(nameLabel, m_nameLineEdit);
QLabel *executableLabel = new QLabel(tr("Executable:"));
QLabel *executableLabel2 = new QLabel(executable());
toplayout->addRow(executableLabel, executableLabel2);
m_executableLabel = new QLabel(m_qt4RunConfiguration->executable());
toplayout->addRow(tr("Executable:"), m_executableLabel);
QLabel *workingDirectoryLabel = new QLabel(tr("Working Directory:"));
QLabel *workingDirectoryLabel2 = new QLabel(workingDirectory());
toplayout->addRow(workingDirectoryLabel, workingDirectoryLabel2);
m_workingDirectoryLabel = new QLabel(m_qt4RunConfiguration->workingDirectory());
toplayout->addRow(tr("Working Directory:"), m_workingDirectoryLabel);
QLabel *argumentsLabel = new QLabel(tr("&Arguments:"));
QLineEdit *argumentsLineEdit = new QLineEdit(ProjectExplorer::Environment::joinArgumentList(commandLineArguments()));
argumentsLabel->setBuddy(argumentsLineEdit);
toplayout->addRow(argumentsLabel, argumentsLineEdit);
m_argumentsLineEdit = new QLineEdit(ProjectExplorer::Environment::joinArgumentList(qt4RunConfiguration->commandLineArguments()));
argumentsLabel->setBuddy(m_argumentsLineEdit);
toplayout->addRow(argumentsLabel, m_argumentsLineEdit);
connect(argumentsLineEdit, SIGNAL(textEdited(const QString&)),
connect(m_argumentsLineEdit, SIGNAL(textEdited(const QString&)),
this, SLOT(setCommandLineArguments(const QString&)));
connect(nameLineEdit, SIGNAL(textEdited(const QString&)),
connect(m_nameLineEdit, SIGNAL(textEdited(const QString&)),
this, SLOT(nameEdited(const QString&)));
return configWidget;
connect(qt4RunConfiguration, SIGNAL(commandLineArgumentsChanged(QString)),
this, SLOT(commandLineArgumentsChanged(QString)));
connect(qt4RunConfiguration, SIGNAL(nameChanged(QString)),
this, SLOT(nameChanged(QString)));
connect(qt4RunConfiguration, SIGNAL(effectiveExecutableChanged()),
this, SLOT(effectiveExecutableChanged()));
connect(qt4RunConfiguration, SIGNAL(effectiveWorkingDirectoryChanged()),
this, SLOT(effectiveWorkingDirectoryChanged()));
}
void Qt4RunConfigurationWidget::setCommandLineArguments(const QString &args)
{
m_ignoreChange = true;
m_qt4RunConfiguration->setCommandLineArguments(args);