From 6343e101f20037d9807f48a04a525b218ffb00ca Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Fri, 28 Feb 2014 11:15:24 +0100 Subject: [PATCH 01/41] Normalize connect() Change-Id: I1e4098f6aaff5a75dea2e786f3f4404ed7e6ba76 Reviewed-by: David Schulz --- src/plugins/beautifier/beautifierplugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/beautifier/beautifierplugin.cpp b/src/plugins/beautifier/beautifierplugin.cpp index dd9c1f185c6..023b950bd56 100644 --- a/src/plugins/beautifier/beautifierplugin.cpp +++ b/src/plugins/beautifier/beautifierplugin.cpp @@ -100,8 +100,8 @@ bool BeautifierPlugin::initialize(const QStringList &arguments, QString *errorSt void BeautifierPlugin::extensionsInitialized() { if (const Core::EditorManager *editorManager = Core::EditorManager::instance()) { - connect(editorManager, SIGNAL(currentEditorChanged(Core::IEditor *)), - this, SLOT(updateActions(Core::IEditor *))); + connect(editorManager, SIGNAL(currentEditorChanged(Core::IEditor*)), + this, SLOT(updateActions(Core::IEditor*))); } } From 028fe7f627b082b50bf4d0d4b8c51454ac1511be Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 28 Feb 2014 14:37:46 +0100 Subject: [PATCH 02/41] Remove leading newline characters from translated messages. Change-Id: I237ad558e27a619f9162ebec2ef4ede9ed2cdeea Reviewed-by: hjk --- src/plugins/android/androidrunner.cpp | 6 +++--- src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp | 3 ++- src/plugins/debugger/debuggerengine.cpp | 2 +- .../devicesupport/deviceusedportsgatherer.cpp | 3 ++- .../projectexplorer/devicesupport/sshdeviceprocesslist.cpp | 2 +- .../remotelinux/abstractremotelinuxdeployservice.cpp | 5 +++-- src/plugins/remotelinux/remotelinuxenvironmentreader.cpp | 2 +- src/plugins/texteditor/codecselector.cpp | 2 +- src/plugins/texteditor/generichighlighter/manager.cpp | 2 +- 9 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index a2c642af230..ae2daf0e68c 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -160,10 +160,10 @@ void AndroidRunner::checkPID() if (m_wasStarted) { m_wasStarted = false; m_checkPIDTimer.stop(); - emit remoteProcessFinished(tr("\n\n'%1' died.").arg(m_packageName)); + emit remoteProcessFinished(QLatin1String("\n\n") + tr("\"%1\" died.").arg(m_packageName)); } else { if (++m_tries > 3) - emit remoteProcessFinished(tr("\n\nUnable to start '%1'").arg(m_packageName)); + emit remoteProcessFinished(QLatin1String("\n\n") + tr("Unable to start \"%1\"").arg(m_packageName)); } } else if (!m_wasStarted){ if (m_useCppDebugger) { @@ -343,7 +343,7 @@ void AndroidRunner::stop() m_tries = 0; if (m_processPID != -1) { forceStop(); - emit remoteProcessFinished(tr("\n\n'%1' terminated.").arg(m_packageName)); + emit remoteProcessFinished(QLatin1String("\n\n") + tr("\"%1\" terminated.").arg(m_packageName)); } //QObject::disconnect(&m_adbLogcatProcess, 0, this, 0); m_adbLogcatProcess.kill(); diff --git a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp index 78b50547f1f..b7c58544c96 100644 --- a/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp +++ b/src/plugins/coreplugin/dialogs/readonlyfilesdialog.cpp @@ -232,7 +232,8 @@ void ReadOnlyFilesDialog::promptFailWarning(const QStringList &files, ReadOnlyRe } else { title = tr("Could Not Change Permissions on Some Files"); message = d->failWarning; - message += tr("\nSee details for a complete list of files."); + message += QLatin1Char('\n'); + message += tr("See details for a complete list of files."); details = files.join(QLatin1String("\n")); } QMessageBox msgBox(QMessageBox::Warning, title, message); diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 7c0283032ac..190610e0d5f 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1804,7 +1804,7 @@ void DebuggerEngine::checkForReleaseBuild(const DebuggerStartParameters &sp) foreach (const QByteArray &name, interesting) { const QString found = seen.contains(name) ? tr("Found.") : tr("Not found."); - detailedWarning.append(tr("\nSection %1: %2").arg(_(name)).arg(found)); + detailedWarning.append(QLatin1Char('\n') + tr("Section %1: %2").arg(_(name)).arg(found)); } break; } diff --git a/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp b/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp index 134c61b93bd..34c160c386b 100644 --- a/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp +++ b/src/plugins/projectexplorer/devicesupport/deviceusedportsgatherer.cpp @@ -170,7 +170,8 @@ void DeviceUsedPortsGatherer::handleProcessClosed(int exitStatus) if (!errMsg.isEmpty()) { if (!d->remoteStderr.isEmpty()) { - errMsg += tr("\nRemote error output was: %1") + errMsg += QLatin1Char('\n'); + errMsg += tr("Remote error output was: %1") .arg(QString::fromUtf8(d->remoteStderr)); } emit error(errMsg); diff --git a/src/plugins/projectexplorer/devicesupport/sshdeviceprocesslist.cpp b/src/plugins/projectexplorer/devicesupport/sshdeviceprocesslist.cpp index 6d878c15e2f..81ede1d17be 100644 --- a/src/plugins/projectexplorer/devicesupport/sshdeviceprocesslist.cpp +++ b/src/plugins/projectexplorer/devicesupport/sshdeviceprocesslist.cpp @@ -118,7 +118,7 @@ void SshDeviceProcessList::handleProcessError(const QString &errorMessage) QString fullMessage = errorMessage; const QByteArray remoteStderr = d->process.readAllStandardError(); if (!remoteStderr.isEmpty()) - fullMessage += tr("\nRemote stderr was: %1").arg(QString::fromUtf8(remoteStderr)); + fullMessage += QLatin1Char('\n') + tr("Remote stderr was: %1").arg(QString::fromUtf8(remoteStderr)); reportError(fullMessage); } diff --git a/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp b/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp index 7c2d9064281..d5865a75c12 100644 --- a/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp +++ b/src/plugins/remotelinux/abstractremotelinuxdeployservice.cpp @@ -314,10 +314,11 @@ void AbstractRemoteLinuxDeployService::handleConnectionFailure() break; case Connecting: { QString errorMsg = tr("Could not connect to host: %1").arg(d->connection->errorString()); + errorMsg += QLatin1Char('\n'); if (deviceConfiguration()->machineType() == IDevice::Emulator) - errorMsg += tr("\nDid the emulator fail to start?"); + errorMsg += tr("Did the emulator fail to start?"); else - errorMsg += tr("\nIs the device connected and set up for network access?"); + errorMsg += tr("Is the device connected and set up for network access?"); emit errorMessage(errorMsg); setFinished(); break; diff --git a/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp b/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp index 978a9cfddd8..088b50de34a 100644 --- a/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp +++ b/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp @@ -101,7 +101,7 @@ void RemoteLinuxEnvironmentReader::remoteProcessFinished() const QString remoteStderr = QString::fromUtf8(m_deviceProcess->readAllStandardError()).trimmed(); if (!remoteStderr.isEmpty()) - errorMessage += tr("\nRemote stderr was: '%1'").arg(remoteStderr); + errorMessage += QLatin1Char('\n') + tr("Remote stderr was: \"%1\"").arg(remoteStderr); emit error(errorMessage); } else { QString remoteOutput = QString::fromUtf8(m_deviceProcess->readAllStandardOutput()); diff --git a/src/plugins/texteditor/codecselector.cpp b/src/plugins/texteditor/codecselector.cpp index 4f195df1e40..577e935b8dd 100644 --- a/src/plugins/texteditor/codecselector.cpp +++ b/src/plugins/texteditor/codecselector.cpp @@ -73,7 +73,7 @@ CodecSelector::CodecSelector(QWidget *parent, BaseTextDocument *doc) m_label = new QLabel(this); QString decodingErrorHint; if (m_hasDecodingError) - decodingErrorHint = tr("\nThe following encodings are likely to fit:"); + decodingErrorHint = QLatin1Char('\n') + tr("The following encodings are likely to fit:"); m_label->setText(tr("Select encoding for \"%1\".%2").arg(QFileInfo(doc->filePath()).fileName()).arg(decodingErrorHint)); m_listWidget = new CodecListWidget(this); diff --git a/src/plugins/texteditor/generichighlighter/manager.cpp b/src/plugins/texteditor/generichighlighter/manager.cpp index 6914788cbeb..9a69ed5bdc0 100644 --- a/src/plugins/texteditor/generichighlighter/manager.cpp +++ b/src/plugins/texteditor/generichighlighter/manager.cpp @@ -467,7 +467,7 @@ void Manager::downloadDefinitionsFinished() else text = tr("Error downloading one or more definitions."); if (writeError) - text.append(tr("\nPlease check the directory's access rights.")); + text.append(QLatin1Char('\n') + tr("Please check the directory's access rights.")); QMessageBox::critical(0, tr("Download Error"), text); } From e5d9f6870ea5b229e1acc02180b3a4f0f03e2f38 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 28 Feb 2014 14:36:11 +0100 Subject: [PATCH 03/41] Fix capitalization of API in QNX. Change-Id: Ie9ae626b4b22871911f39ad3249ef2b154761b18 Reviewed-by: Daniel Teske --- src/plugins/qnx/blackberryinstallwizardoptionpage.ui | 2 +- src/plugins/qnx/blackberryndksettingswidget.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qnx/blackberryinstallwizardoptionpage.ui b/src/plugins/qnx/blackberryinstallwizardoptionpage.ui index 83e0aae8146..9d00d76c2b5 100644 --- a/src/plugins/qnx/blackberryinstallwizardoptionpage.ui +++ b/src/plugins/qnx/blackberryinstallwizardoptionpage.ui @@ -19,7 +19,7 @@ - Install Api Level + Install API Level diff --git a/src/plugins/qnx/blackberryndksettingswidget.cpp b/src/plugins/qnx/blackberryndksettingswidget.cpp index dc0c9104b5b..21b16c1e3d7 100644 --- a/src/plugins/qnx/blackberryndksettingswidget.cpp +++ b/src/plugins/qnx/blackberryndksettingswidget.cpp @@ -73,7 +73,7 @@ BlackBerryNDKSettingsWidget::BlackBerryNDKSettingsWidget(QWidget *parent) : m_ui->ndksTreeWidget->setColumnCount(1); m_apiLevels = new QTreeWidgetItem(m_ui->ndksTreeWidget); - m_apiLevels->setText(0, tr("Api Levels")); + m_apiLevels->setText(0, tr("API Levels")); m_runtimes = new QTreeWidgetItem(m_ui->ndksTreeWidget); m_runtimes->setText(0, tr("Runtimes")); From 549d0de026ea1e00d04a5998e34ee92a5ebf939b Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 28 Feb 2014 12:29:12 +0100 Subject: [PATCH 04/41] QmlDesigner: Adding missing dependency Change-Id: I9907a57d7d837d102b94e544dea3fce3b30e2489 Reviewed-by: Eike Ziller --- src/plugins/qmldesigner/qmldesigner_dependencies.pri | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/qmldesigner_dependencies.pri b/src/plugins/qmldesigner/qmldesigner_dependencies.pri index 7dac1977a0d..f8357252343 100644 --- a/src/plugins/qmldesigner/qmldesigner_dependencies.pri +++ b/src/plugins/qmldesigner/qmldesigner_dependencies.pri @@ -12,6 +12,7 @@ QTC_PLUGIN_DEPENDS += \ INCLUDEPATH *= \ $$PWD \ $$PWD/../../../share/qtcreator/qml/qmlpuppet/interfaces \ + $$PWD/../../../share/qtcreator/qml/qmlpuppet/types \ $$PWD/designercore \ $$PWD/designercore/include \ $$PWD/components/componentcore \ From 23e9338e97c20ad3d083d8f1466b9c772f90b423 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Fri, 28 Feb 2014 14:20:46 +0100 Subject: [PATCH 05/41] Squish: Enable QML debugging in doSimpleDebugging() Change-Id: I46a902a8038beac49e70a8a1f422c079bd2b3f44 Reviewed-by: Christian Stenger --- tests/system/shared/debugger.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/system/shared/debugger.py b/tests/system/shared/debugger.py index 855fe041645..754ce55fc17 100644 --- a/tests/system/shared/debugger.py +++ b/tests/system/shared/debugger.py @@ -126,10 +126,16 @@ def removeOldBreakpoints(): # param expectedBPOrder holds a list of dicts where the dicts contain always # only 1 key:value pair - the key is the name of the file, the value is # line number where the debugger should stop -def doSimpleDebugging(kitCount, currentKit, currentConfigName, pressContinueCount=1, expectedBPOrder=[]): +def doSimpleDebugging(kitCount, currentKit, currentConfigName, pressContinueCount=1, + expectedBPOrder=[], enableQml=True): expectedLabelTexts = ['Stopped\.', 'Stopped at breakpoint \d+ \(\d+\) in thread \d+\.'] if len(expectedBPOrder) == 0: expectedLabelTexts.append("Running\.") + switchViewTo(ViewConstants.PROJECTS) + switchToBuildOrRunSettingsFor(kitCount, currentKit, ProjectSettings.RUN) + ensureChecked(waitForObject("{container=':Qt Creator.scrollArea_QScrollArea' text='Enable QML' " + "type='QCheckBox' unnamed='1' visible='1'}"), enableQml) + switchViewTo(ViewConstants.EDIT) if not __startDebugger__(kitCount, currentKit, currentConfigName): return False statusLabel = findObject(":Debugger Toolbar.StatusText_Utils::StatusLabel") From b653ca1f18d945087d9a7c6011734e06d71223ed Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 28 Feb 2014 15:28:25 +0100 Subject: [PATCH 06/41] Revert "Git: Replace %n with %1 in string" This does not work, it needs to be either: ("%1").arg(n) or ("%n, 0, n) The %n syntax is preferred here since although there probably are always > 1 elements, some languages use different grammatical cases for various numerical ranges (Russian, Polish). This reverts commit c09e80b8538cf072185a076b4aaf46ed51186bda. Change-Id: Id3f480f0ec0de2dd8893b8de256c5e6c9628a6f9 Reviewed-by: Tobias Hunger --- src/plugins/git/gitclient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 70d707813d4..507a11dbb4f 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2876,8 +2876,8 @@ QString GitClient::extendedShowDescription(const QString &workingDirectory, cons // If there are more than 20 branches, list first 10 followed by a hint if (branchCount > 20) { const int leave = 10; - //: Displayed after the untranslated message "Branches: branch1, branch2 'and %1 more'" in git show. - moreBranches = QLatin1Char(' ') + tr("and %1 more", 0, branchCount - leave); + //: Displayed after the untranslated message "Branches: branch1, branch2 'and %n more'" in git show. + moreBranches = QLatin1Char(' ') + tr("and %n more", 0, branchCount - leave); branches.erase(branches.begin() + leave, branches.end()); } if (!branches.isEmpty()) { From 9bb0d18872bac898cc0bc89170f84b6d7e4d2c7c Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 28 Feb 2014 14:20:26 +0100 Subject: [PATCH 07/41] Debugger: Fix some fallback in type lookup Just in case. I can't trigger the codepath anymore. Change-Id: Ia1cecca7a9628b36128fa6efbb2f6ffbc4bef4b2 Reviewed-by: hjk --- share/qtcreator/debugger/gdbbridge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 2e88280d9fc..bf78b8e0bfa 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -1742,7 +1742,7 @@ class Dumper(DumperBase): # See http://sourceware.org/bugzilla/show_bug.cgi?id=11912 exp = "(class '%s'*)0" % ts try: - type = parseAndEvaluate(exp).type.target() + type = self.parseAndEvaluate(exp).type.target() except: # Can throw "RuntimeError: No type named class Foo." pass From d14676dc10699bef81ad04df1a199076884c2b65 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 28 Feb 2014 14:09:44 +0100 Subject: [PATCH 08/41] Debugger: Remove glitch in QObject property reporting. There was a spurious item named [10] (or similar) at the end of the list. Change-Id: I9bfd41325f47206c11e26161f6b0838778f8c306 Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 8d01014f918..649fe41456a 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -990,10 +990,7 @@ class DumperBase: self.putCallItem(name, qobject, "property", '"' + name + '"') # Dynamic properties. - if extraData == 0: - self.putItemCount(0) - self.putNumChild(0) - else: + if extraData: propertyNames = extraData + ptrSize propertyValues = extraData + 2 * ptrSize From c8881e7ca2fc7249b5c88e7c485913f0df7a7c05 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 27 Feb 2014 18:18:54 +0100 Subject: [PATCH 09/41] Support configurable library location in qbs build. And also in the qbs sub-project (for the qbs and qmake builds). This becomes possible with the qbs submodule update that is part of this patch. Change-Id: I8347a8c04a52bcb0682f32d808fb61a90ef3ba72 Reviewed-by: Joerg Bornemann --- qtcreator.pro | 5 +++-- qtcreator.qbs | 7 ++++--- src/app/app.qbs | 2 +- src/plugins/cpaster/frontend/frontend.qbs | 6 +++--- src/plugins/qbsprojectmanager/qbsproject.cpp | 2 +- src/shared/qbs | 2 +- src/src.qbs | 2 +- tests/auto/autotest.qbs | 3 ++- tests/auto/extensionsystem/plugin.qbs | 4 ++-- 9 files changed, 18 insertions(+), 15 deletions(-) diff --git a/qtcreator.pro b/qtcreator.pro index 1e250446d5e..cc0c0db48bf 100644 --- a/qtcreator.pro +++ b/qtcreator.pro @@ -43,8 +43,9 @@ exists(src/shared/qbs/qbs.pro) { system("echo QBS_LIB_INSTALL_DIR = $${QTC_PREFIX}/$${IDE_LIBRARY_BASENAME}/qtcreator >> $$qmake_cache") system("echo QBS_RESOURCES_BUILD_DIR = $${maybe_backslash}\"$${IDE_DATA_PATH}/qbs$${maybe_backslash}\" >> $$qmake_cache") system("echo QBS_RESOURCES_INSTALL_DIR = $${QTC_PREFIX}/share/qtcreator/qbs >> $$qmake_cache") - system("echo QBS_PLUGINS_BUILD_DIR = $${maybe_backslash}\"$${IDE_BUILD_TREE}/lib/qtcreator/$${maybe_backslash}\" >> $$qmake_cache") - system("echo QBS_PLUGINS_INSTALL_DIR = $${QTC_PREFIX}/lib/qtcreator >> $$qmake_cache") + system("echo QBS_PLUGINS_BUILD_DIR = $${maybe_backslash}\"$${IDE_BUILD_TREE}/$${IDE_LIBRARY_BASENAME}/qtcreator/$${maybe_backslash}\" >> $$qmake_cache") + system("echo QBS_PLUGINS_INSTALL_DIR = $${QTC_PREFIX}/$${IDE_LIBRARY_BASENAME}/qtcreator >> $$qmake_cache") + system("echo QBS_LIBRARY_DIRNAME = $${IDE_LIBRARY_BASENAME} >> $$qmake_cache") system("echo CONFIG += qbs_no_dev_install >> $$qmake_cache") } diff --git a/qtcreator.qbs b/qtcreator.qbs index 6228a1b53d6..638faa134c9 100644 --- a/qtcreator.qbs +++ b/qtcreator.qbs @@ -16,19 +16,20 @@ Project { property pathList additionalPlugins: [] property pathList additionalLibs: [] property pathList additionalTools: [] + property string libDirName: "lib" property string ide_library_path: { if (qbs.targetOS.contains("osx")) return ide_app_target + ".app/Contents/PlugIns" else if (qbs.targetOS.contains("windows")) return ide_app_path else - return "lib/qtcreator" + return libDirName + "/qtcreator" } property string ide_plugin_path: { if (qbs.targetOS.contains("osx")) return ide_library_path else if (qbs.targetOS.contains("windows")) - return "lib/qtcreator/plugins" + return libDirName + "/qtcreator/plugins" else return ide_library_path + "/plugins" } @@ -47,7 +48,7 @@ Project { property bool testsEnabled: qbs.getenv("TEST") || qbs.buildVariant === "debug" property stringList generalDefines: [ "QT_CREATOR", - 'IDE_LIBRARY_BASENAME="lib"', + 'IDE_LIBRARY_BASENAME="' + libDirName + '"', "QT_DISABLE_DEPRECATED_BEFORE=0x040900", "QT_NO_CAST_TO_ASCII", "QT_NO_CAST_FROM_ASCII" diff --git a/src/app/app.qbs b/src/app/app.qbs index aebc44643ee..844536ab13b 100644 --- a/src/app/app.qbs +++ b/src/app/app.qbs @@ -5,7 +5,7 @@ Application { consoleApplication: qbs.debugInformation cpp.rpaths: qbs.targetOS.contains("osx") ? ["@executable_path/.."] - : ["$ORIGIN/../lib/qtcreator"] + : ["$ORIGIN/../" + project.libDirName + "/qtcreator"] cpp.defines: project.generalDefines cpp.linkerFlags: { if (qbs.buildVariant == "release" && (qbs.toolchain.contains("gcc") || qbs.toolchain.contains("mingw"))) diff --git a/src/plugins/cpaster/frontend/frontend.qbs b/src/plugins/cpaster/frontend/frontend.qbs index ba7d8a378be..e425a88560c 100644 --- a/src/plugins/cpaster/frontend/frontend.qbs +++ b/src/plugins/cpaster/frontend/frontend.qbs @@ -12,9 +12,9 @@ QtcTool { Depends { name: "CppTools" } cpp.rpaths: [ - "$ORIGIN/../lib/qtcreator", - "$ORIGIN/../lib/qtcreator/plugins", - "$ORIGIN/../lib/qtcreator/plugins/QtProject" + "$ORIGIN/../" + project.libDirName + "/qtcreator", + "$ORIGIN/../" + project.libDirName + "/qtcreator/plugins", + "$ORIGIN/../" + project.libDirName + "/qtcreator/plugins/QtProject" ] Group { diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index f1b43da8ac7..a9c2b3fe26d 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -727,7 +727,7 @@ QString QbsProject::pluginsBaseDirectory() const if (!qbsInstallDir.isEmpty()) return qbsInstallDir + QLatin1String("/lib/"); return QDir::cleanPath(QCoreApplication::applicationDirPath() - + QLatin1String("/../lib/qtcreator")); + + QLatin1String("/../" IDE_LIBRARY_BASENAME "/qtcreator")); } } // namespace Internal diff --git a/src/shared/qbs b/src/shared/qbs index 0816b8e476d..3e746e47415 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 0816b8e476d20e00cbcffd1e71162adf93e85658 +Subproject commit 3e746e4741513dabf60f43efab938d8fc94cd1be diff --git a/src/src.qbs b/src/src.qbs index d7ba55a39a5..bca1658abf6 100644 --- a/src/src.qbs +++ b/src/src.qbs @@ -27,7 +27,7 @@ Project { property path libRPaths: qbs.targetOS.contains("osx") ? ["@loader_path/.."] : ["$ORIGIN/.."] property path resourcesInstallDir: project.ide_data_path + "/qbs" - property string pluginsInstallDir: "lib/qtcreator" + property string pluginsInstallDir: project.libDirName + "/qtcreator" references: [ qbsBaseDir + "/src/lib/libs.qbs", diff --git a/tests/auto/autotest.qbs b/tests/auto/autotest.qbs index 9625b10b295..fb4985a765d 100644 --- a/tests/auto/autotest.qbs +++ b/tests/auto/autotest.qbs @@ -21,7 +21,8 @@ CppApplication { // absolute paths to resources in the build directory. // cpp.rpaths: qbs.targetOS.contains("osx") // ? ["@executable_path/.."] -// : ["$ORIGIN/../lib/qtcreator", "$ORIGIN/../lib/qtcreator/plugins/QtProject"] +// : ["$ORIGIN/../" + project.libDirName + "/qtcreator", +// "$ORIGIN/../" project.libDirName + "/qtcreator/plugins/QtProject"] // Group { // fileTagsFilter: product.type // qbs.install: true diff --git a/tests/auto/extensionsystem/plugin.qbs b/tests/auto/extensionsystem/plugin.qbs index 829ed3a6de9..c6ccbe75669 100644 --- a/tests/auto/extensionsystem/plugin.qbs +++ b/tests/auto/extensionsystem/plugin.qbs @@ -11,8 +11,8 @@ DynamicLibrary { targetName: QtcFunctions.qtLibraryName(qbs, name.split('_')[1]) destinationDirectory: FileInfo.relativePath(project.ide_source_tree, sourceDirectory) cpp.rpaths: [ - buildDirectory + "/lib/qtcreator", - buildDirectory + "/lib/qtcreator/plugins/QtProject" + buildDirectory + "/" + project.libDirName + "/qtcreator", + buildDirectory + "/" + project.libDirName + "/qtcreator/plugins/QtProject" ].concat(additionalRPaths) property pathList filesToCopy property pathList additionalRPaths: [] From 4d8059f6e17d64de7100c8b8113b182878e077a1 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 25 Feb 2014 11:25:35 +0100 Subject: [PATCH 10/41] Provide parent to getOpenFileName() Change-Id: Ie7bda58e1a2bf288fa89932cd2b07be091f312a4 Reviewed-by: Thomas Hartmann --- src/libs/qmleditorwidgets/filewidget.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/qmleditorwidgets/filewidget.cpp b/src/libs/qmleditorwidgets/filewidget.cpp index 5aa16390901..1ae583f5dc5 100644 --- a/src/libs/qmleditorwidgets/filewidget.cpp +++ b/src/libs/qmleditorwidgets/filewidget.cpp @@ -93,7 +93,8 @@ void FileWidget::comboBoxChanged() void FileWidget::onButtonReleased() { - QString newFile = QFileDialog::getOpenFileName(0, tr("Open File"), m_path.toLocalFile(), m_filter); + QString newFile = QFileDialog::getOpenFileName(this, tr("Open File"), + m_path.toLocalFile(), m_filter); if (!newFile.isEmpty()) setFileNameStr(newFile); } From 5e7b6936510a6c3624476522487d63748eebf4a7 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 3 Mar 2014 10:27:42 +0100 Subject: [PATCH 11/41] Version bump Change-Id: Ibb0d0d64f379684b1ae8f7cd55a8a5436056432b --- qtcreator.pri | 4 ++-- qtcreator.qbs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qtcreator.pri b/qtcreator.pri index c9f7f823bb6..0c8a8fa88d2 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -1,8 +1,8 @@ !isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 -QTCREATOR_VERSION = 3.0.81 -QTCREATOR_COMPAT_VERSION = 3.0.81 +QTCREATOR_VERSION = 3.0.82 +QTCREATOR_COMPAT_VERSION = 3.0.82 BINARY_ARTIFACTS_BRANCH = 3.1 # enable c++11 on everything but mac/release (breaks 10.6) diff --git a/qtcreator.qbs b/qtcreator.qbs index 638faa134c9..1dfb8501a6b 100644 --- a/qtcreator.qbs +++ b/qtcreator.qbs @@ -4,11 +4,11 @@ Project { property bool withAutotests: qbs.buildVariant === "debug" property string ide_version_major: '3' property string ide_version_minor: '0' - property string ide_version_release: '81' + property string ide_version_release: '82' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_compat_version_major: '3' property string ide_compat_version_minor: '0' - property string ide_compat_version_release: '81' + property string ide_compat_version_release: '82' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release property path ide_source_tree: path property string ide_app_path: qbs.targetOS.contains("osx") ? "" : "bin" From 888d7523920072f0fa39735ffce8940e5d9d6144 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 20 Feb 2014 13:50:52 +0100 Subject: [PATCH 12/41] Squish: Support Debugging Tools for x86 as well Change-Id: Ibf508de48473a48d0a88356d15a06088873a3d9c Reviewed-by: Robert Loehning --- tests/system/suite_general/tst_default_settings/test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 60267dc12d6..e70720bbc4a 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -227,6 +227,7 @@ def __getExpectedDebuggers__(): def __getCDB__(): result = [] possibleLocations = ["C:\\Program Files\\Debugging Tools for Windows (x64)", + "C:\\Program Files (x86)\\Debugging Tools for Windows (x86)", "C:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\8.0\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\8.1\\Debuggers\\x86", From 2224472374c0235c73ba96777e868e6a056e7523 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 3 Mar 2014 10:44:40 +0100 Subject: [PATCH 13/41] Core: Restore main window state before showing. Change-Id: I665ee724d9778bf391e6c77497ee012fe5a6edaf Reviewed-by: Orgad Shaneh Reviewed-by: Eike Ziller --- src/plugins/coreplugin/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index dbc0ee8bcc2..ba30e6eb852 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -350,7 +350,6 @@ void MainWindow::extensionsInitialized() updateContext(); emit m_coreImpl->coreAboutToOpen(); - show(); // Delay restoreWindowState, since it is overridden by LayoutRequest event QTimer::singleShot(0, this, SLOT(restoreWindowState())); QTimer::singleShot(0, m_coreImpl, SIGNAL(coreOpened())); @@ -1271,4 +1270,5 @@ void MainWindow::restoreWindowState() resize(1008, 700); // size without window decoration restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray()); m_settings->endGroup(); + show(); } From 956744dff8bbc03bd9ce26eefc985d474b8330ca Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 3 Mar 2014 12:47:01 +0100 Subject: [PATCH 14/41] Vcs: Do not freeze when the user starts its commit message with Task-number: QTCREATORBUG-11614 Change-Id: Ide2fe81250f3c1331a7f54be827e7dd8f551fdc6 Reviewed-by: Tobias Hunger --- src/plugins/vcsbase/submiteditorwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp index 23c05af0779..10d6a93ce99 100644 --- a/src/plugins/vcsbase/submiteditorwidget.cpp +++ b/src/plugins/vcsbase/submiteditorwidget.cpp @@ -303,6 +303,7 @@ static QString wrappedText(const QTextEdit *e) const QString block = cursor.block().text(); if (block.startsWith(QLatin1Char('\t'))) { // Don't wrap rc += block + newLine; + cursor.movePosition(QTextCursor::EndOfBlock); } else { forever { cursor.select(QTextCursor::LineUnderCursor); From 8d238af56483e8575117e1418ffad532a41c243f Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Mon, 3 Mar 2014 12:05:01 +0100 Subject: [PATCH 15/41] Use native labels for "Browse" buttons Change-Id: Idee0525ccd69c64856d0f4b7b3bab1252e573280 Reviewed-by: Daniel Teske Reviewed-by: Eike Ziller --- src/plugins/android/androidsettingswidget.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 457ed349a9d..8d1beec12e9 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -136,6 +137,11 @@ AndroidSettingsWidget::AndroidSettingsWidget(QWidget *parent) m_ui->downloadAntToolButton->setVisible(Utils::HostOsInfo::isWindowsHost()); m_ui->downloadOpenJDKToolButton->setVisible(Utils::HostOsInfo::isWindowsHost()); + m_ui->SDKLocationPushButton->setText(Utils::PathChooser::browseButtonLabel()); + m_ui->NDKLocationPushButton->setText(Utils::PathChooser::browseButtonLabel()); + m_ui->AntLocationPushButton->setText(Utils::PathChooser::browseButtonLabel()); + m_ui->OpenJDKLocationPushButton->setText(Utils::PathChooser::browseButtonLabel()); + check(All); applyToUi(All); } From 0f1105d8c105b30eae9a1b8e3ba8df9f8216aabd Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 28 Feb 2014 16:28:38 +0100 Subject: [PATCH 16/41] Squish: Add workaround for mixed debugging bug on Mac Change-Id: I4634a10d06ff30998787a215886b642d8349bb8f Reviewed-by: Robert Loehning --- tests/system/suite_debugger/tst_simple_debug/test.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py index 2cf068fed22..b3c21171a90 100644 --- a/tests/system/suite_debugger/tst_simple_debug/test.py +++ b/tests/system/suite_debugger/tst_simple_debug/test.py @@ -73,7 +73,7 @@ def main(): continue allowAppThroughWinFW(workingDir, projectName, False) if not doSimpleDebugging(len(checkedTargets), kit, config, - 2, expectedBreakpointsOrder): + len(expectedBreakpointsOrder), expectedBreakpointsOrder): try: stopB = findObject(':Qt Creator.Stop_QToolButton') if stopB.enabled: @@ -85,6 +85,12 @@ def main(): ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton") clickButton(waitForObject("{type='CloseButton' unnamed='1' visible='1' " "window=':Qt Creator_Core::Internal::MainWindow'}")) + if platform.system() == 'Darwin' and JIRA.isBugStillOpen(11595): + try: + expectedBreakpointsOrder.remove({os.path.join(workingDir, projectName, "main.cpp"):10}) + test.warning("Removed cpp file after first run. (QTCREATORBUG-11595)") + except: + pass else: test.fatal("Setting breakpoints failed - leaving without testing.") invokeMenuItem("File", "Exit") From 549ea6a3c88c8fcaf25f46748b681127254d02ca Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 3 Mar 2014 13:31:50 +0100 Subject: [PATCH 17/41] qbs templates: install app by default Change-Id: Ib639f70f2cb30842d8bce2073883979d0b67afa7 Reviewed-by: Tobias Hunger --- share/qtcreator/templates/wizards/plaincapp/qbs/project.qbs | 5 +++++ .../qtcreator/templates/wizards/plaincppapp/qbs/project.qbs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/share/qtcreator/templates/wizards/plaincapp/qbs/project.qbs b/share/qtcreator/templates/wizards/plaincapp/qbs/project.qbs index 2e3572f5091..2e30fb31c68 100644 --- a/share/qtcreator/templates/wizards/plaincapp/qbs/project.qbs +++ b/share/qtcreator/templates/wizards/plaincapp/qbs/project.qbs @@ -4,4 +4,9 @@ CppApplication { type: "application" // To suppress bundle generation on Mac consoleApplication: true files: "main.c" + + Group { // Properties for the produced executable + fileTagsFilter: product.type + qbs.install: true + } } diff --git a/share/qtcreator/templates/wizards/plaincppapp/qbs/project.qbs b/share/qtcreator/templates/wizards/plaincppapp/qbs/project.qbs index 0972c0066bd..54ac620fe95 100644 --- a/share/qtcreator/templates/wizards/plaincppapp/qbs/project.qbs +++ b/share/qtcreator/templates/wizards/plaincppapp/qbs/project.qbs @@ -4,4 +4,9 @@ CppApplication { type: "application" // To suppress bundle generation on Mac consoleApplication: true files: "main.cpp" + + Group { // Properties for the produced executable + fileTagsFilter: product.type + qbs.install: true + } } From e5a693be96c3134d2a14a425c5c383f886627c93 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 26 Feb 2014 10:38:47 +0200 Subject: [PATCH 18/41] ProjectExplorer: Expect file change on remove Change-Id: If372db645203ab517ef313b9d51e9f81f6b0c328 Reviewed-by: Daniel Teske --- src/plugins/projectexplorer/projectexplorer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 3aa1d4e5ceb..9f95caeec9d 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2938,7 +2938,9 @@ void ProjectExplorerPlugin::removeFile() return; } + DocumentManager::expectFileChange(filePath); Core::FileUtils::removeFile(filePath, deleteFile); + DocumentManager::unexpectFileChange(filePath); } } From 474065c5c7c3d7de3332f5d3371b28713df8becf Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sat, 8 Feb 2014 23:42:36 +0200 Subject: [PATCH 19/41] CppEditor: Do not "highlight parentheses" for multiline C++ comments Change-Id: I6c84a2653a1e9c13e1c776b49b4e51cb4de772f3 Reviewed-by: Nikolai Kosjar --- src/plugins/cppeditor/cpphighlighter.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp index 33dcc285324..fe1bfb89d55 100644 --- a/src/plugins/cppeditor/cpphighlighter.cpp +++ b/src/plugins/cppeditor/cpphighlighter.cpp @@ -224,10 +224,13 @@ void CppHighlighter::highlightBlock(const QString &text) if (text.length() > lastTokenEnd) highlightLine(text, lastTokenEnd, text.length() - lastTokenEnd, formatForCategory(CppVisualWhitespace)); - if (!initialLexerState && lexerState && !tokens.isEmpty() && tokens.last().isComment()) { - parentheses.append(Parenthesis(Parenthesis::Opened, QLatin1Char('+'), - tokens.last().begin())); - ++braceDepth; + if (!initialLexerState && lexerState && !tokens.isEmpty()) { + const Token &lastToken = tokens.last(); + if (lastToken.is(T_COMMENT) || lastToken.is(T_DOXY_COMMENT)) { + parentheses.append(Parenthesis(Parenthesis::Opened, QLatin1Char('+'), + lastToken.begin())); + ++braceDepth; + } } BaseTextDocumentLayout::setParentheses(currentBlock(), parentheses); From 40d6a2bf57af2a04c948373eee808ea81f87dc83 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 3 Mar 2014 14:15:46 +0100 Subject: [PATCH 20/41] Qbs: Fix reparsing after building Change-Id: Ic06718ddc6813fbe02078976e4bc571fb382d96a Reviewed-by: Tobias Hunger --- src/plugins/qbsprojectmanager/qbsproject.cpp | 12 ++++++------ .../qbsprojectmanager/qbsprojectmanagerplugin.cpp | 10 ++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index a9c2b3fe26d..b264cd2f6c2 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -362,6 +362,12 @@ void QbsProject::buildConfigurationChanged(BuildConfiguration *bc) void QbsProject::startParsing() { + // Qbs does update the build graph during the build. So we cannot + // start to parse while a build is running or we will lose information. + // Just return since the qbsbuildstep will trigger a reparse after the build. + if (ProjectExplorer::BuildManager::isBuilding(this)) + return; + parseCurrentBuildConfiguration(false); } @@ -383,12 +389,6 @@ void QbsProject::parseCurrentBuildConfiguration(bool force) if (!m_forceParsing) m_forceParsing = force; - // Qbs does update the build graph during the build. So we cannot - // start to parse while a build is running or we will lose information. - // Just return since the qbsbuildstep will trigger a reparse after the build. - if (ProjectExplorer::BuildManager::isBuilding(this)) - return; - if (!activeTarget()) return; QbsBuildConfiguration *bc = qobject_cast(activeTarget()->activeBuildConfiguration()); diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index b8b7aa2f622..f91fc35e808 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -476,8 +476,14 @@ void QbsProjectManagerPlugin::buildProducts(QbsProject *project, const QStringLi void QbsProjectManagerPlugin::reparseCurrentProject() { - if (m_currentProject) - m_currentProject->parseCurrentBuildConfiguration(true); + if (!m_currentProject || BuildManager::isBuilding(m_currentProject)) { + // Qbs does update the build graph during the build. So we cannot + // start to parse while a build is running or we will lose information. + // Just return since the qbsbuildstep will trigger a reparse after the build. + return; + } + + m_currentProject->parseCurrentBuildConfiguration(true); } } // namespace Internal From 56ae18e594bc73f16a3e3d39d22768b3798d0af7 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 28 Feb 2014 16:09:16 +0100 Subject: [PATCH 21/41] tr()-Fixes in QNX wizards. Avoid duplication, trailing blanks and concatenation of translated pieces where possible. Change-Id: I462ef7b66fb0e61e57db9d6112f9f4632dbb9c0b Reviewed-by: Mehdi Fekari Reviewed-by: David Kaspar Reviewed-by: Friedemann Kleint --- .../qnx/blackberryinstallwizardpages.cpp | 47 +++++++------------ .../qnx/blackberryndksettingswidget.cpp | 2 +- 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/src/plugins/qnx/blackberryinstallwizardpages.cpp b/src/plugins/qnx/blackberryinstallwizardpages.cpp index 80f01d009a6..f8c958a4f66 100644 --- a/src/plugins/qnx/blackberryinstallwizardpages.cpp +++ b/src/plugins/qnx/blackberryinstallwizardpages.cpp @@ -398,23 +398,23 @@ BlackBerryInstallWizardProcessPage::~BlackBerryInstallWizardProcessPage() delete m_ui; } -void BlackBerryInstallWizardProcessPage::initializePage() +static QString msgTarget(BlackBerryInstallerDataHandler::Target t) { - QString target; - switch (m_data.installTarget) { + switch (t) { case BlackBerryInstallerDataHandler::ApiLevel: - target = tr("API level version: "); - break; + return BlackBerryInstallWizardProcessPage::tr("API level"); case BlackBerryInstallerDataHandler::Simulator: - target = tr("simulator version: "); - break; + return BlackBerryInstallWizardProcessPage::tr("simulator"); case BlackBerryInstallerDataHandler::Runtime: - target = tr("runtime version: "); - break; + return BlackBerryInstallWizardProcessPage::tr("runtime"); default: break; } + return QString(); +} +void BlackBerryInstallWizardProcessPage::initializePage() +{ if (m_data.mode == BlackBerryInstallerDataHandler::UninstallMode) { if (m_data.version.isEmpty()) { wizard()->next(); @@ -429,9 +429,11 @@ void BlackBerryInstallWizardProcessPage::initializePage() } } - m_ui->label->setText(tr("Uninstalling ") + target + m_data.version); + m_ui->label->setText(tr("Uninstalling %1 version: %2") + .arg(msgTarget(m_data.installTarget), m_data.version)); } else { - m_ui->label->setText(tr("Installing ") + target + m_data.version); + m_ui->label->setText(tr("Installing %1 version: %2") + .arg(msgTarget(m_data.installTarget), m_data.version)); } // m_targetProcess could be running if (m_targetProcess->state() == QProcess::Running) { @@ -542,30 +544,17 @@ void BlackBerryInstallWizardFinalPage::initializePage() } QString message; - QString target; - switch (m_data.installTarget) { - case BlackBerryInstallerDataHandler::ApiLevel: - target = tr("API level version: "); - break; - case BlackBerryInstallerDataHandler::Simulator: - target = tr("simulator version: "); - break; - case BlackBerryInstallerDataHandler::Runtime: - target = tr("runtime version: "); - break; - default: - break; - } + const QString target = msgTarget(m_data.installTarget); if (m_data.exitCode == 0 && m_data.exitStatus == QProcess::NormalExit) { message = m_data.mode == BlackBerryInstallerDataHandler::UninstallMode ? - tr("Finished uninstalling %1:\n %2").arg(target, m_data.version) : - tr("Finished installing %1:\n %2").arg(target, m_data.version); + tr("Finished uninstalling %1 version:\n %2").arg(target, m_data.version) : + tr("Finished installing %1 version:\n %2").arg(target, m_data.version); emit done(); } else { message = m_data.mode == BlackBerryInstallerDataHandler::UninstallMode ? - tr("An error has occurred while uninstalling %1:\n %2").arg(target, m_data.version) : - tr("An error has occurred while installing %1:\n %2").arg(target, m_data.version); + tr("An error has occurred while uninstalling %1 version:\n %2").arg(target, m_data.version) : + tr("An error has occurred while installing %1 version:\n %2").arg(target, m_data.version); } label->setText(message); } diff --git a/src/plugins/qnx/blackberryndksettingswidget.cpp b/src/plugins/qnx/blackberryndksettingswidget.cpp index 21b16c1e3d7..b16665d41e7 100644 --- a/src/plugins/qnx/blackberryndksettingswidget.cpp +++ b/src/plugins/qnx/blackberryndksettingswidget.cpp @@ -181,7 +181,7 @@ void BlackBerryNDKSettingsWidget::updateConfigurationList() item->setIcon(0, config->isValid() ? QIcon() : invalidConfigIcon); // TODO: Do the same if qmake, qcc, debugger are no longer detected... if (!config->isValid()) { - QString toolTip = tr("Invalid target %1: ").arg(config->targetName()); + QString toolTip = tr("Invalid target %1:").arg(config->targetName()); if (config->isAutoDetected() && !config->autoDetectionSource().toFileInfo().exists()) toolTip += QLatin1Char('\n') + tr("- Target no longer installed."); From 4d7c010aad0186b16d172dcfd27c0229936d9aef Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Mon, 3 Mar 2014 12:45:38 +0100 Subject: [PATCH 22/41] FlatModel: Sort file nodes according to displaname first So far the filename and displayname was the same for all filenodes. That changes with the ResourceNodes, so adjust the flatmodel. Task-number: QTCREATORBUG-11590 Change-Id: Id5a7ecda8963b64a6ebccc589b38f428366da3fd Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/projectmodels.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 1427d84ca85..6ab2786edba 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -136,13 +136,17 @@ bool sortNodes(Node *n1, Node *n2) // must be file nodes { + int result = caseFriendlyCompare(n1->displayName(), n2->displayName()); + if (result != 0) + return result < 0; + const QString filePath1 = n1->path(); const QString filePath2 = n2->path(); const QString fileName1 = QFileInfo(filePath1).fileName(); const QString fileName2 = QFileInfo(filePath2).fileName(); - int result = caseFriendlyCompare(fileName1, fileName2); + result = caseFriendlyCompare(fileName1, fileName2); if (result != 0) { return result < 0; // sort by filename } else { From bde1f044bc99950d3bba2b6b7a243cf9b591ea30 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 3 Mar 2014 14:27:42 +0100 Subject: [PATCH 23/41] Utils: Fix replace with preserve case. Task-number: QTCREATORBUG-11610 Task-number: QTCREATORBUG-11194 Change-Id: Ia5e70dad0f66ec4d6ee610b59963321ce1fb20ad Reviewed-by: Christian Stenger --- src/libs/utils/filesearch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/filesearch.cpp b/src/libs/utils/filesearch.cpp index 7f637a88c73..12be69663f9 100644 --- a/src/libs/utils/filesearch.cpp +++ b/src/libs/utils/filesearch.cpp @@ -342,7 +342,7 @@ namespace Utils { namespace Internal { QString matchCaseReplacement(const QString &originalText, const QString &replaceText) { - if (originalText.isEmpty()) + if (originalText.isEmpty() || replaceText.isEmpty()) return replaceText; //Now proceed with actual case matching From f53cac7df2272abc234e599dfcdf1d40816af23f Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 19 Nov 2013 11:30:00 +0100 Subject: [PATCH 24/41] Qbs: Properly initialize "Run in Terminal" based on qbs properties "Run in Terminal" is checked/unchecked according to the consoleApplication property found in qbs. Rename the forceGuiMode method to better describe what it is used for. Change-Id: I485058c85563cf4d3ced0d1a5f8cb1bf89791750 Reviewed-by: Tobias Hunger --- .../qbsprojectmanager/qbsrunconfiguration.cpp | 16 +++++++--------- .../qbsprojectmanager/qbsrunconfiguration.h | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 8d6a4f0fa5c..979807032f4 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -141,6 +141,9 @@ void QbsRunConfiguration::ctor() connect(target(), SIGNAL(activeDeployConfigurationChanged(ProjectExplorer::DeployConfiguration*)), this, SLOT(installStepChanged())); installStepChanged(); + + if (isConsoleApplication()) + m_runMode = Console; } QWidget *QbsRunConfiguration::createConfigurationWidget() @@ -206,13 +209,10 @@ QString QbsRunConfiguration::executable() const ProjectExplorer::LocalApplicationRunConfiguration::RunMode QbsRunConfiguration::runMode() const { - if (forcedGuiMode()) - return LocalApplicationRunConfiguration::Gui; - return m_runMode; } -bool QbsRunConfiguration::forcedGuiMode() const +bool QbsRunConfiguration::isConsoleApplication() const { QbsProject *pro = static_cast(target()->project()); const qbs::ProductData product = findProduct(pro->qbsProjectData(), m_qbsProduct); @@ -388,8 +388,6 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc, QW QHBoxLayout *innerBox = new QHBoxLayout(); m_useTerminalCheck = new QCheckBox(tr("Run in terminal"), this); - m_useTerminalCheck->setChecked(m_rc->runMode() == ProjectExplorer::LocalApplicationRunConfiguration::Console); - m_useTerminalCheck->setVisible(!m_rc->forcedGuiMode()); innerBox->addWidget(m_useTerminalCheck); innerBox->addStretch(); @@ -436,6 +434,8 @@ void QbsRunConfigurationWidget::runConfigurationEnabledChange() m_disabledIcon->setVisible(!enabled); m_disabledReason->setVisible(!enabled); m_disabledReason->setText(m_rc->disabledReason()); + + m_useTerminalCheck->setChecked(m_rc->runMode() == ProjectExplorer::LocalApplicationRunConfiguration::Console); targetInformationHasChanged(); } @@ -495,10 +495,8 @@ void QbsRunConfigurationWidget::commandLineArgumentsChanged(const QString &args) void QbsRunConfigurationWidget::runModeChanged(ProjectExplorer::LocalApplicationRunConfiguration::RunMode runMode) { - if (!m_ignoreChange) { - m_useTerminalCheck->setVisible(!m_rc->forcedGuiMode()); + if (!m_ignoreChange) m_useTerminalCheck->setChecked(runMode == ProjectExplorer::LocalApplicationRunConfiguration::Console); - } } // -------------------------------------------------------------------- diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h index 44104a041ba..3e505d380e8 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h @@ -78,7 +78,6 @@ public: QString executable() const; RunMode runMode() const; - bool forcedGuiMode() const; QString workingDirectory() const; QString commandLineArguments() const; @@ -91,6 +90,7 @@ public: void addToBaseEnvironment(Utils::Environment &env) const; QString qbsProduct() const; + bool isConsoleApplication() const; signals: void commandLineArgumentsChanged(const QString&); From 1bcb622e3738c02f5e045881aa7e8ecbb79292be Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 3 Mar 2014 15:52:23 +0100 Subject: [PATCH 25/41] tr()-Fixes in QNX-plugin. Fix spelling, do not use QObject::tr(). Change-Id: If0c55e956ea749ad6ca37cb3ad98c880beaabb49 Reviewed-by: Daniel Teske Reviewed-by: Fawzi Mohamed --- src/plugins/qnx/blackberrykeyswidget.cpp | 2 +- src/plugins/qnx/blackberryruntimeconfiguration.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/qnx/blackberrykeyswidget.cpp b/src/plugins/qnx/blackberrykeyswidget.cpp index df5bb25cc34..b3d194bb1c6 100644 --- a/src/plugins/qnx/blackberrykeyswidget.cpp +++ b/src/plugins/qnx/blackberrykeyswidget.cpp @@ -338,7 +338,7 @@ void BlackBerryKeysWidget::requestFinished(int status) default: m_utils.clearCertificatePassword(); m_utils.clearCskPassword(); - errorString += tr("An unknwon error has occurred."); + errorString += tr("An unknown error has occurred."); break; } diff --git a/src/plugins/qnx/blackberryruntimeconfiguration.cpp b/src/plugins/qnx/blackberryruntimeconfiguration.cpp index 9ebce6edd48..00412a288af 100644 --- a/src/plugins/qnx/blackberryruntimeconfiguration.cpp +++ b/src/plugins/qnx/blackberryruntimeconfiguration.cpp @@ -35,6 +35,7 @@ #include #include +#include namespace Qnx { namespace Internal { @@ -54,7 +55,7 @@ BlackBerryRuntimeConfiguration::BlackBerryRuntimeConfiguration( m_version = BlackBerryVersionNumber::fromFileName(QFileInfo(path).baseName(), QRegExp(QLatin1String("^runtime_(.*)$"))); - m_displayName = QObject::tr("Runtime ") + m_version.toString(); + m_displayName = QCoreApplication::translate("Qnx::Internal::BlackBerryRuntimeConfiguration", "Runtime %1").arg(m_version.toString()); } BlackBerryRuntimeConfiguration::BlackBerryRuntimeConfiguration(const QVariantMap &data) From c0255471ed26ea8c0cfc1a8c0e5c52502728023d Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 3 Mar 2014 12:31:32 +0100 Subject: [PATCH 26/41] Welcome: updated links on Tutorials page to DDays13 videos Also add links to more tutorials in the Qt reference documentation and Qt Creator documentation. To test, just copy the files to the respective folders in a Qt Creator installation. No need to pull and rebuild. Change-Id: Ia24f07342849ac826d29965e6d70bc24712715e9 Reviewed-by: Eike Ziller Reviewed-by: hjk Reviewed-by: Thomas Hartmann --- .../welcomescreen/qtcreator_tutorials.xml | 142 +++++++++++++----- .../widgets/images/icons/androidapp.png | Bin 0 -> 7108 bytes .../widgets/images/icons/buildrun.png | Bin 4732 -> 9318 bytes .../widgets/images/icons/ddays13.png | Bin 0 -> 15435 bytes .../widgets/images/icons/qtquick.png | Bin 1580 -> 12682 bytes .../widgets/images/icons/qwidget.png | Bin 5460 -> 10699 bytes .../widgets/images/icons/tutorialicon.png | Bin 0 -> 3061 bytes 7 files changed, 107 insertions(+), 35 deletions(-) create mode 100644 share/qtcreator/welcomescreen/widgets/images/icons/androidapp.png create mode 100644 share/qtcreator/welcomescreen/widgets/images/icons/ddays13.png create mode 100644 share/qtcreator/welcomescreen/widgets/images/icons/tutorialicon.png diff --git a/share/qtcreator/welcomescreen/qtcreator_tutorials.xml b/share/qtcreator/welcomescreen/qtcreator_tutorials.xml index df18028bd9a..f25167f4aec 100644 --- a/share/qtcreator/welcomescreen/qtcreator_tutorials.xml +++ b/share/qtcreator/welcomescreen/qtcreator_tutorials.xml @@ -2,52 +2,124 @@ - + qt creator,build,compile - - qt,c++,text,qt designer,qt creator + + qt creator,qt designer,widgets,c++,text + + + + qt,qt creator,qt designer,widgets,c++ - - qt quick,qml,states,transitions,visual designer,qt creator + + qt creator,qt quick designer,qt quick,qml,states,transitions - - - qt sdk,qt creator + + + qt creator,qt quick designer,qml,android - - - qt quick,qml,qt sdk,qt creator - - - - qt quick, qml - - - - qt quick, qml - - - - qt quick, qml - - - - qt, webkit + + + qt quick,qml,c++ - + qt creator - - - qt 5, qt + + + qt creator,configuration - - - qt quick, qml, qt creator + + + qt creator,plugins - + + + qt creator,qt quick,qml,c++,android,blackberry,sailfishos + + + + qt creator,qt quick,qml,android + + + + qt creator,qt quick,ios,sensors,camera + + + + qt creator,baremetal + + + + qt,winrt + + + + qt, embedded + + + + qt quick,controls + + + + qt quick,layouts,bindings + + + + qt quick,qml,input + + + + qt quick,qml,3d + + + + qt quick,qt,scenegraph,3d + + + + qt,qml,data types + + + + qt quick,qml,c++,build,compile,input,styling + + + + qt quick,qml,network + + + + qt,web engine + + + + qml,qt quick,web + + + + qt,signals,slots + + + + qt,add-ons,compression,plotting,configuration + + + + qt,data types + + + + qt quick,qml,qt creator,qml profiler,embedded + + + + qt quick,qml,automotive + + diff --git a/share/qtcreator/welcomescreen/widgets/images/icons/androidapp.png b/share/qtcreator/welcomescreen/widgets/images/icons/androidapp.png new file mode 100644 index 0000000000000000000000000000000000000000..31b4e85059c3d6d1c1907dc21cc70148f09ec558 GIT binary patch literal 7108 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 literal 0 HcmV?d00001 diff --git a/share/qtcreator/welcomescreen/widgets/images/icons/buildrun.png b/share/qtcreator/welcomescreen/widgets/images/icons/buildrun.png index c1f620bf8b6862e0b0b0104d0b169b8bc738e173..a72ee0f181048a0854a629c275e9fbc10f59eed3 100644 GIT binary patch literal 9318 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 literal 4732 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 Wx?cnvj}!v~1B0ilpUXO@geCyri)f|* diff --git a/share/qtcreator/welcomescreen/widgets/images/icons/ddays13.png b/share/qtcreator/welcomescreen/widgets/images/icons/ddays13.png new file mode 100644 index 0000000000000000000000000000000000000000..9c02266bddc8be9713c4a7051f39020ff359d253 GIT binary patch literal 15435 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 literal 0 HcmV?d00001 diff --git a/share/qtcreator/welcomescreen/widgets/images/icons/qtquick.png b/share/qtcreator/welcomescreen/widgets/images/icons/qtquick.png index eb1222772590ff466699d856a510a8c79dd3ec51..0b01c25be6b7cdd1668eaeb0cc9736a44d3f14fb 100644 GIT binary patch literal 12682 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 delta 1576 zcmeB5Uc)m%ynZ4F69WUoH%V6!1_lPk;vjb?hIQv;UNSH+a29w(7Bet#3xhBt!>l`Ki;O^-g z5Z=fq&cMJr)6>Ny%zsPkOx3`O*{@lkbAQIS+2^`s%3uZ?#V3f9*v(oqZnf zuQ$KEYkmK&(%o$9>%)6X3R*Lg)(2ed{UTrbWuakS+9vnB-k)FXl%qFQ?)rYuvfWmV zyJhn`$75EP{&YT86sYr3$YFFbzWgDD#ZAM8_dzCu0I!0SgGoaM!$qHlV*7J{kH|my z$SoDH>eriFf@l5q{P(f5`2P6s^6&FI&wf!0nZ_fkT6$9L?1`#dwa@COW$e?N$IE40 z@qe??qWH<450|7AJyopYvf^0QD>}_~k*4KVwOMm4c8W)vuTY%kT4eAqQmZn?&jVgPFh^!b9YV=$8E#3yFrG_yVX`VA4xCCe0Rzss?ToL z!FS)fW*P~UoqJoier08jq>xB?W_{lbHQ~e4lT)NlJIuOs^E@7QeG*$9a#v z))z9Q=6|(1##}G;y8lk;ZJ9d~YSs+Byf?JNxt(shg)VLCeZx|4Yn7m_W4z{pH(V`G z*RHv*r>{A)H|}XfuvBM?$GqO}-(3%i&FQ@us(eoRnLeLFTX=g$NL+15fBesa+q*YpddP?a{kWBuYXTYvxvKBtgdtB?B#luwkg??v8%-?up1>50g`MXJ4PO-f~uP*1EmX9Cq{meJQC8s7aYVz1=1v(ziF@$l9|L zc2;hXi|^;UG5s1}&*l1`hphKMou_v|WtriVr40VeERe`nkb3aa)6RTviTV3|?Az0R zUdj=emnN~dcGlc2wnme8n=W{r`rIv6b>WSD+j!^Cjyt=nE9lT+yXnERex5ydHSF2q z&B42@KWXgBx?Zhm`El)@w58A2cB}22`R(0}dCyc*CJS%+c1~`}^7f?qkLS~>zg=Co zKkeJrb)RO%+UDym(_E_dk~PKHIiq4l$o^-2eizhR?|v|Cl3mzx&wj<@6rY-(dq3uF zUY~lwTr2tErUexhlXo#a3_9t>=CSg*>b85fvOF!?-;<1&h6|fc&-*ngP`gv|)Uvc_ zrS$>+XCg!-6=E9=^mQKI{0z#m^^l^aA>)CGN3X>FhSn<`oeHK-|L^bVU%t|(ZIaZ& zk3sCg%3^oFf7j77T@<6RNOO8s){&q%Q>V>ou9~KcvQKt5Z_Vb@d!^6&%HMF7lw!0` z){!F5td?gkyBj~eiC;C>+;q{+&tl9EbB?%Y9l5zu@R!z`by5>+clu`?@myIi7|T~D zb+KXYJoCK)%DXn+{H&7bXuhYK37Vm1&1;Ym=;c!W?ZJFl7?iylGB~my6kYuAO7J3s zg46~zsbkBcow8UAY#2dBWCxp^p47A4h0!KwzC$$>2wxPq=CD1ZB9w*4zaitmtPF|S u4xB3m4}4(hU=vUT7hMdXBzoh4{7?NekAIx0FkoO{VDNPHb6Mw<&;$U$FxCbD diff --git a/share/qtcreator/welcomescreen/widgets/images/icons/qwidget.png b/share/qtcreator/welcomescreen/widgets/images/icons/qwidget.png index 8bdc0d43e5d566b2a7f1532835dad74fe8ac74f0..84a7a12c40eecf745c15760c6b965bee44296768 100644 GIT binary patch literal 10699 zcmeAS@N?(olHy`uVBq!ia0y~yVA#vRz%Yq}je&tdK=<@z1_mz2OlRi+PiJR^fTH}g z%$!sP1`po3)5=4FZ;G{_-)p}2f{>De>KCahPK8U>9-=IPot_N=Ol>V{WiG64B7&M> zDIo_K-P@ItT}8N?o06_`ei8^cb}-Pz_37Q7Y|i&{hQCXU%#3DzV`Yq zhJZg!EQd-W7#mC$Mu@z7eK1By`1FzQOcDZ&d=ZQX9;T(Sxc_iry7FhQ?aY}gJdSPt z_D-)MW%q5J{Q+vl*Z$W}R5Eu~VPoKOy=rDtrzZZCX-e?sqmoAdSx$YKs%g|_Xe73f zbI}^5$4A!Zd|UoZd-us1)773Vl!`njxyNK)&+dSGvs520?qOLNGeh-3`r;b))V(2| zvlyO!*SLK7#~dF91Cg2WXP&Dq%;_|86_I?``H6{vW6BZBJw<%oKP@xnF;px|f6~R$ z>6x@l@cN9*r!P*V{rb2$_-B%#_LRfE4?8M+&VSj$(`O*wus(m9E2C;;?#zsdZ`aDa zeH(f0S;o)(H}A{U1^=}@QT03YquQJE^BjBTMc&VOvqpcf7{fP}sM)fc_e~9D*pkcU z@buvt|MvfGIL-sBWB&d=7JqN>(gb+mwCIKIm5#@{d~&b?*jiHAF#|kd-AZ(ocRaDKeoOI4SX?$ zv!yd*cdJcf#00$*u9o_%59=k&)Y&EL=4Ojzl*TjEwps@4@MJ%cZ_D7U%&d}UU&U1W zI$FSx>%_i28EYr5FYY(0`uF^oJaH>>j zlUV^<3`_U{-U4o(26qRpwu9aVjQ1KdIhsBQh%RzmH9>3%|4gTA0@6_&mClX<79z|? zojWH8Omg^nL2ZSER`aTb&H=VxluM*`al|(NTEKom!G!HEV{MDz45rJ8yf+xOHQd}_ zEyLk{==1}Z3eh?2;sH^>Wt(WVLsx| z%+dsm8-F$}O}e^qS%mr;`!Y^5!P&jKN5T^N6QVav-^hF;@r|_%-|+*Ik7Nq!c1Xk+ z<(aNy+0K8xXLrNv!@LjGK343}x+n6!iT_~nholX+7<&W)GpTHT#lHJ6w zI88w%MwUbv*%%1vsdbO(ml*Cim>_>Hlo&y4%OM|0{=tvs!osY+ARrZP_LU*!{; ze^un_+*P@&{I3{fsbwW*-OT!ZRd03g`Q_)!=bfJ$Z}R`ipY~T9c6C?FNtbI0v5+k?xU{Jr%f^yAkDzF%k;IDhT@ zCHvj?N7tV^a6#c#Lbv1WgDVzxE!>|tFLCk1WaU*8S6|dx9JSc`m__oo!mf{YkE7K# zbk6mhHH#}}|J3HT z?T+Z4D|S~bUgxb&utAPl zulGJLJCb|k?hV_Ue|P-W=J)2G=-z#N%JRw2rOtE5bxdC$J~4d#_DSE9-eRSCDiGP{?mi@Z>`TB?FzpnrGXR%;e!})@135y#`7`q*}5vLGqDa+x5 zj0bl&$?IQ=SBbeI#^m(JxvbTO)08Jx^jEQjo{q^HwKtVJLM!Sj%2{-iTwR=x?DptC zap{D6cdwYYSh?Ft_oJ>?-F;oFU8lQxPmj=v-2B9?C#pwbnXQ<-v}m+w51;Q~1!zr#|bx#P2MB%5r`3 z?)Kl4o*&bG-up53N9v!6EYn*ywOn+Wek8Ut*>jzzsOMuQf5)v4N;k!SYJ9SC%7iJ4 zHH}wZTzNLLWy_B(mz`7-yEbUY8r!Px)jw>q*uZ($sm!bILWLJOT%72mQ5>1Jdq&?s zpRXQ0DzjCaBe^$cZMv84o;v?j;2FVZU!Kf*l6PA6rB&3%S+SumHlh`bI|l% zHs9LTYwKce@ANB=J-F-P*L|=1a}{zuZhkoJcDgrJ`hH&5y(@tW0ypeS$k_b;*)gY` zPJs{i>Yj_{%Q>1On)CK<+UB)cx2G$`UHqDK`cc;-f7LsaUf++b4gY!f%(s@edzXG& z`n&u=8Ath@yDxWrj+mJg8F%x-x(BgqpPu=&=+pMy;cxbZB}Nw}@Mrd?^lvd*v1zZ@ z`YiXW%U>;d)hN|J>)GB{)!X0By>n}6*G9P8PlM|8IQ-9)nK=xY4+@pzi z9(eWSh@8|K@+^p=XUG-A^@BDAuE<|-jExdN;TIaSUW|`GK z)%RaET%Id?PFB}`_WznMJ>O=|+I%YA`~1XnqH|_j&M&X~W}MbEBAhRv*3Ed`OO{a{cSs(_5V-(x!(UU>-m-E zwcWP3y>egce!k~t&)uqxUygn_-8232;H~v5Tr_S%SFR$VJ^Ql5D zH|^Q|?=7Ey8(BrxF)+xxdb&7N1fwY)>@|^d5Qt+9pSFf_}%)PzsXp6jg z-ki|TP*>UL?RmbhZm}kah>M9GD|}V!S*!JMsovtdckhOUgrvmA#s*HQ>peLA$#lM( z3v}gvtx(psdl@wUm+JaSg?|?KOnNe@c2&3e%HVI4i(U!Oe=^DD(#lQmC31f*H=O$S zW%&FrE2r?}zMAl7(K@?V6P~phd3xHO;D7Ry-!tD*=uZPP--b`0ieA5XaY9|lk=v(9 zOyJ7Y4N~F`Od$(6bQ(45KCbjRb=cd!{Y!wm_>?cMZ!HA=HS<^A^!>KlUtP3jRky!t zmBP)CSfedRmG57fR)2Eamka9uFDOppyEW;s`OVkbm*>w@(XV>Ko*J}2=fd(IlOI2E zxD@~DlImXO%72}T?h_8T@t#)S#Ki1!KtN&2NyEmKg+EO70_5h`?$nc% z!{=2TR~hTcP3=+EmtA$4KhZmRukBv#IVG$4rLA@tEtC)HUC2;WcXBtEShY^QhzD@RZq9O>YfuG?XSLc7bV@>nCw0;lF#s1i~8-LLo*yw zWP+lTjg;75O#kdDcT&AHz`gI}B>o0x`IeqrS6+roN*=2J(y7iVQL|-gzz-$6luYf5 z7agT1)!hu5ZCH` zQ}k=UcFS9Da`oI_6BKRJb5gHLajU7C^`xn?M;$pm=j|#9aDOLn`~O9+=l$|ShHCCl zG|rsOzJB9S`m)=PZf<__R@M8(ri<*dDeQi>chu$-t-9K?roZ+VzpQ8M7jA}AzOTb? z{|TSJDU>^I<1*3i#WyhyDifH&popl>5uF`c8c3iQkN|{xnyenjdUHG!p+~leT(p4 z(HmOfXYr6lTUYn&@r64*UJ2G6Qg}J}kvP9qeAP?U$C~kz`0Rc>sIa%lzP4tEYhF%H z&y7R+v#+?m5;yx2T>oz8^Ecu9e@(qx^?L2Z(8ou-WG#O>dG5c(apB!RCm}}4(u&*+9^4=f6t#dEGx&CJVdE4X1=9IQgom1g7!SHp(H_Pa+KZMIpC->hz z?YN@mMS!$bR!I!&g+{%c0#m0S zc0bPEc5ajV{U4j}*8V*Ms1x}sR4^3bHME@?sh1J&OvUO(f% zf5bhu=E~F~S5mtRU&(xNe&H1~slD!&cG#K?*REYVu`T1GQg&Y6w#EH+R_~3!PMRc? ze7fuWC+E(N1&@{-v9pm8D0+Qu?dG<&wiCyH$p8Ow{6_r=#da6DUv51Tg2z3h{2DeU zAAcug-}CpZ{ohUAo_Q~pr1RJxbl&tS)Iw9O;;C`6%t^D-ii_@=UALvDI2jmPPLT=P zQgVzZd*0Vov1X}zdh>D&qBq^RC9c?_E-^ zW6_vrx!yr+@4qdjy7Lm{ZSyzr&NsNYCUtA>{R;OfnmStB9zIrY-KhHQz+&T^mvfYJ zZk?R&R)3+@e~QefuUCJbzdif)^IM+J{kMK(@7WwGdphUiF4n;K%yn1zvgc$hpR@l` z+Mmj8dri`J)&5u#_y2?YNr{<<>zUdO8`X3+a2{N|mLs>KRdi2Qc2Cd&Z}nX(yv=RC zXxbfZlksGfcd0yUdi}}YKX3Evv$@4|Ht5&B^bQo0^W#vp$@Q@Fw6EHrKKsLk_Smp@ zzu)h_pSSPlvlWx;*2%cb6t>iUnmqr^?@hJ8zjYio-}kXMqyPB*S=nDsPW$!2v9v_Z zGu->@L3OA8KU4kwh`C+jv@iX5xs8AKqow+J`AY;C84oUKxqiO(?6Qz)H&?9Vdp*bc zdXaNmgkz+o&b7UJ&sv%1Z~OI*&w90$X2TMtSFhh>Y<{=)Y$4A)Rqc50qP?C{l85SF95wfSa%lUr$h!--hD8SF zeZGEf^Quj=W@vmUFWGW?+BV%Vxnr-6U%$0zyZDVr>&e}PB@Qo|FPv@MFW{*zljQ!x zzp!I^-LEIpYZm+dQL0eL=?b?BIpiN(cW}LSXUevmo140AzD2xUsB(U8`Mpf;!;g-f zk6*XzmDX&N%pjTlkNd29TK@idZZH3KL+G!U{`FGAQnBCfme2pF@q70DKg)b)7$}}v zBt3t_!Y(cRzw{Au4{&Y$^_y6DT{SlAs)wTEW z%G=#p<}*{M@Y10TmQNjni+n+kIJB@zwJGpU;oW`1UK- z9A3W9j;pwWD^rD^VH!i}F{|n8HWZ334HG^0WK-|!H5GTGwBvSv=J>kl8E=^Ar23f9 z9ZS|l%-e5c$aqO{FUz%^xl4O9C9+ggAFkOPrv2(xj;pNh#}lR7T8uZE_8nx_xAW+) zIqJ^$%Y6Gj*>w)eYZT_RTXSuTjxOK4we*YJ?WT9Kthr$!*OC_>yLR(gZuY05HEl1P z`Rf*X*G`cUDAW-9@ud03RrdapK(D@Czmor0muf8ASNp}AExJd&^mKZKg0E5T$H^5o zU1{rUF1m^zojSYX!rxB+nnTlC*ai9Rek4rU|9ai-q@al_ez#U{)n2#bP+ME>tMB{1 z+y1_?+)gw%xw$2NPetLB*sWQib#Xg36+Aj&=K1&f{(q+5YF|g+@3Mbd|74>3Cy6^{ zw{tJP^RN3fxgu#T@6MLGB$aFN|9@Stysy9KgVXNs_o_dC?*D&!n(pT7an)z{{rkH9 zcHwbZ@#8Iu5**=w9tKFuWlWzskFSMgksfF2QCG7iYp$F++!Yuk8TRBuvyL{Wd!ohe zu0vj8GJM%fueL1CseZ3)@zPOTrTI#?clVkt+wOE_w?`E2$P$^x7Q0iZZOsbfIZKy5 z)Zm$Z<(8TDy$#C0MA#44d#T)FaoN2@DShj~?W;a@Z8$YOIx=wOR58|CMfF?NWf6ge z9~Q1Sp0%p{#G}`Oe@J)HquqEoqv2*`FME`xDs4!8`?!yW`eH($=o`c#x<*Uwq z=3buC$*1OJbg47$XM^0Y$-6Ex=HA(H@m|emU+edKKIi=V^RsZhZ&IPMmCA#&WiQ*L z^ESM%d2U^(y`}2ws~xX4|60tvH^!i%o_;;yAPVUzG^(sqhO?LL~sqHE2`P3gzcr+{E{okow+t#hU zwrTNF^Ph+I#{ZpA;4h>xbH$d)c3OGAW_CRB72C!tXLW$x;pOuNamimAt}l+TaW0?A zUiakTV~6!>9C61qRJ~;-D>gLO{z~aK>^S21?P0t8v`XtQ7o2nd{`y+D`tYhVUUgRj z-H)m}#{WDOp7cq3=SSAPb65mQzs#+8)LC{jb^6oVM=FQRj#&Kp;PgjMT)m@avHaiJ zX1QH^Vp=_-ZaT{C{xnycc~j5n@;db%yKUJ=ntU$V{W>UMEAaTs!NZC*k1k6~NGuUH z(9Cp}SUbz$EbG@(gX>ohbI>IZ{2<`E_Z$2{lxbE72CUR2|j$bxqRt+uHsu_erv*=1#)?R-+rOo zf6kiyLs5s2`peb%HrK+=#-9Q3H zTOTg;&wX;WtzY-dm6gHCMu($?*Ih{PpX)wz%?5s(4-K{NisyHCe*gQv{=Qu8mq6>^ zZ#FNMpJQ_8#G&J_x@62gcz#T1ulr@O;xT_|h3l8%4Lcq%f2-Vcvbg?_(#-i4k2?Q| z3RGWS=Gz^vSt8gyX}Y?HXY3VGb2Ceel^a`ma{sih$oA_#bnj(7hma6+^DGt_UB2oc zUAum5Sh0Td)rXrd#YLsX9&FT2%sD!1t6BNO+1H|?l9c_d&U!WLHC=zQxZ6yXZ;^Sp z%(uH&zi!)?>1^?M`mJy0Hca2*cl*|@9PKc@?UkRyB0g{XyEgAmWLT7;(W%AEktG5; zE^`%5duy-Rwo5PO)3uwowuePlBnVejA3B$v{o~+*(Tr;VEuhDIpd51TrtBHGt!;^hA^$%Oc7v*g;{qv`xTA*UXQf=`cLGJVF&a#&B z{k(JIMn&+!{<<%V<(k?A9wZngIte-!KKl?oW9K=(Y)-~)IU(a6T^R#1PSn&hL zFkv~((q~X4yuu8=Y zTd-!0j#^Vq<9y52t5J+bHr(w~P6A_#4I*J#2A9~d`@u$03?V4|EeyLb* zQrYlEp*PQaf4-bgv;qM}0m&i8XFjvSn<$nj?j?;*Q=n`M>w zz7!N}QhzQ#|DgLmLpNFZtricncVy~maGZ~*wqQk#Ub&2B9Oj8Uit{jX1c)6V?m#_Dr|C|YLJls?t_ncI# z^W@v#A-U*WWBi1i6Y{?%FiRg(xOr^an+xl2JanE{$al0`_SeLT^F7a~oZs=s_1WHM z^0jC9f2}yY-r}R@XPxM+2lLB=Bey|^}}1X$-gE4g|i-~N}0m16_3rW zI(QejdhYc+u%cK%d((-61ox#4VLdO}OSfN+@qoL=?%jXG`Ub^!qPY`Og zs*-Tm|8t|sf8)jVKOQcP-*=MDCi7YRKSlPyCdroGy))}`9*f%*UwEd_my&ZMV9v=( zuXFbQ7C6_vYH{W-R^9)3f15*l(*$7&^%*K164Q;ZJYA6@%HqZ##4dSQ@MG{P&I*eO z!Je`VtQwncESYcDw9wCfm*TI<`!2Bavow6T`0PMmjT8H(FOP+-GK~9Vy>eFfTkSi@ zu3CGz&oAzmrAO44t`zRQ0#z%5SMl*z9pRo|Fvg{w}j>Tvcb*VfcC{4-tlm?u*~vwhOW&quCxGPT`U z$6=q+eNym~m$um_)}wo)HDA4GTdrc`&~V}G)rKF7-xbu0ZsbiZwAkP&)8qW3J%7ta zdH+R@2LF%9P5yW9_q(NXje(Z}yG#lj*3|iKsR%iAc*e0z^{1w8^2thHyry|hkXibw zHuv%~hv`ou9Ti?4k}LJ73z)9+M{2oz-LWU?o{apRDtA9Po_MIusV=W!xkNa2!k-H> zen>j&m%V6KSzY#q=l|EQjCNnR^>5YIhUi>k>`zM8dFgIc_Oo}+p9!|V9=z?J^h!Z3Uk8mY%caXP-oN)` z;fGTRjt3^!Z8)>#_)PZ$+s!LA_83J7e3%Lo3IAmy5+|v{@#Wv9;|ZPD9+$8%G5y>> zvDBo@b%F7pkNMRVyAMBmd-q{}*&~*@=Pw`M z`?}xw*W}Op8XFH-*Y}$n{P{b*;-s&(`TCq}FRr4W<~o18dv;H(w_@72w^F{NnDt?P z%HjL-KCKe^f4liRV|D`%|EuR;{+!i3ULBYo@pA5_)&p^WrI^-7KQ_(xeB}CXk4TBa z#jV%lr0*BnO{gi0|1R6O*X!2@tph(U`ObWV7weXgp1Kc9czvnS<6&xf^(-P>c#!GW_vDK@3|_L z^j`L!v&8-WzJH+3LfIL^<1V{v$~*d-J8xut?3CPBcW`#W&pN>`IX^gL;`ctt-8=v1 zne;{WlRg%GP}p#Nf9lC_jUNoxdd=@;sL!wYq}TCLQGZ|Z5$g+;5AE;UKf2t%CwJQ9 z=0d^8d-^}zDL&u(XHU1#qpKIS!`E%u|MzYF#3`49%oMhFI-tGmet*rSyEg zHp2J6eSI?7|5!hp&EGGVC-O_$NvKJ# z4Pu@r+8O)o|NYpZoA@-%HTCzQaLtOJcIsTKKRuluFSp%{-}XyD%-@R#MH}9Bca$f7 zS}As~UhfghqpNq7`~vL$9bJ9*ThFih+Pm{!7QEvZVyd3|g{AQC*XzfpKb}0}&B324 z%169^{%qm$FZm_(UQ;FUX8Pxj&yTwG`&OIQ)ckw8Y<6CkzV6-!P27(DGySe9)O@a3>r@oI3{QsfdzUSo0@aI2_ zWJ{ZjoCW%-G#%BRN6{E>6o_WK>-`1xnAx<;=nH>`GF zCV1odlJuv~lDEH^ymRBz+BYh;)#;Na=knio{`K>G{XF)fJ39(LYVv(&K3QuTEp#i! z@W&GFBb^8S#s9ASwQl#jT{}b{u}#zE4ribDY(aVX5#BH9_P=jxR6l5Bzoor?k5K9R zzWBe1*Pl)?WZ`mR`ub<{y{I$EZgvMxl)0=A5Ua~cy&?9ob@yIXJBb5VQ@_0U(0P8! z5zZsiT7S3Qy?AIDU$jKs^tw8Y)z-7#{OVrz>;1hqd}|u7$8R`qKc{N_49}9aH$3;v zG)_PE*T!?d{t^AAx1NWRyYtg5dGlDlRaS2{|FH4ar#W-qo?)N+$L(9QopbfO`*yZ_ zZx$Et6}l6`XX5pFN&14LCJ}%CZeR07zGTDU=S$Y;)ZEYX$ZQmCzrVcvlo-?hX;c3- z^ChN6F67nL-&C3!`>o8o^X{JqHQL%=p8Q{MK3eL3-kvuZpO?I6UwLZ7sqkrHQKc5! zuJCl%o9);uZ}(nm21muE@5cE{9}3S_UVTX2c)qwj_+?P`2BW!IyYl~T7Y7~VP5k$Ki7--&oEHjH!nFr z@#(=dF2?)!QnIXUXP9tQTw3mUveKxvLA`d_vdhh$%?;|cQd8!r2XjH=O_S@Xz{DxMnc8zWf3=EPbt`Q~9`MJ5Nc_j?a zMX8A;sVNHOnI#zt?w-B@;f;La3=AR%JzX3_DsH`vtu2r~UV7i!p(|(N6h?vc;FXgj z)Lw8*2;IHb$7?N*LDu64vAG^%3BA_ATQ4^nn`!*)md&*3GJ@HE4Tg9(WBW7Lm zoWm5NWqfss@O7pY9!7J`F7HsWJ5h2>u3Dp;;m=b4x(8*yk28y%-p%Zxv54j3`*fb# zitW3<=Y21KzxQ_S1+SYq(*&G25_>ZFc=ju$sj7Gy{aIzN(Bk1BWt%*~%42#Gdz!+L zcKNxdRz-#`UA5{^d=x`+PtY`G%|GrO=@Q>+RWCao=Ft2c$dXCZa{?AS~Q`m$jg>L5k+P$G(@N%Q%zvZh$_>LVve*D<6O*eHOFI(Di-l@HG zt+jIR{fWzZ=TrxUP8BdRGcz+ZG|azeGx_9_{r6NSvUHZtv_13m*@Y>5XCLI8vu#`| zDJ?rUKJ@5Xj$4zu4*Kx6q_uqB*8XvQ5@X%8-Re^X76oZ}3bi)%)RtH+UNxm!bMER( z_s;NM{rvVCtHq(I&n7I(KP8d8XU~-XTAhrYDxQDdb{a-0xXcr8zxS*3E0eL}vOB9q z_BdaZX*7|ss(<)KcU!dFp8TablM0utOKdZorYyi>WpH4QRgYmu=8kG1T`t9xq(?TX z%GYDVi~l*b8BI0vl1#Nc)L@(R`I+vF6MZwESbn)PQ|Iq270(w}w9aham=tUz^7O!^Y&5a*FH-22d`b+K9Ag@p_&C?&%+-F_fI9u|x zK+)eHM>rCNmWE79_Dz10z z**VjdQv$p+CTmQVNbWhAFxAa{vYPPew97p!A3uH^vh&Zyi&m{ND)P>KyEpV|_NrCy*RT4SSNiq)s@2!S!q=}}85th@ z*`f4o)$UFAvSRl?X!|WWTi;tKxiWjo?~KAHCniRJuK4+M`pu9RuU|)R%aNQ?|6*ag z(M+Gtq}tlrU%_j^U`-7VFYn#r^R~6MwW?C{`#wz%2xPCSv^Oz7yk1iCl!R*Qhi2br z%#Xtw*bm)`v_3Y&Yvt9f-EU{t=NQe@lu&dk;^vrq|JuGEkGhkOD~Y?iuk=zq^~5sG zxli7*DCPFH-1YnaRRsrMR-a!Z#K960TKnhY@%FYhrp5!`-rk-)Yu1rZwY9a44hvSV z=6<5T_e+r4-D(z0c0 zhmY|p-t#tGt9AI^1|da0bN#mZv$HZd?*!K!>-XAZ@?HCL%4ALnWwFy=b&{W-n`?Z2 zrnBVfRjk^}t}9PIDPvP%Ai-m1W@dD3P1x&aXJ^l^d^WTC{a*2VKO6rg{fymR_VH88 zgyVA6Ywj>w6h1n#DfRS&1sgYRypwk|+thihRwY~HdFjaH*arT}Y}e2EH&~B3tU2TH zuK3lJ*YXVZ&k`~+K1+kXe*GE~6d%7on5 z(T|<_4jy#$T6y?kfrZQgr?{odmp^}Taq+`~9|szl_xL(5yiuVx`Qz`uzP`SP!65tE z8pW13x3}k4RQz~xadD@M(&UpJ-w$c?@$u!|-1Kzk^Lf&8a(wNFqqpTee7pSe%ZCpi z+E#zt^Yhv41q%z`STV~l6VF+vN%i?#B6NCtdwqRE)N&?|0SX zo_=_ExNFgxn4Lm8GZ$8U$gz;&3k@}Wn}26VU})%qtv4(uJL7T%Ov`^nj#Yp22F zzR!&teq`yK<9nVPdeFeoNK@>bKg-0Z-L-FTz5oAj|9#8qXE9%!eqLx|`}*~(Shwm# z4+|N-2`ZCMx+p0IIhu%yb+gL3Xym7Cp1E+s?3st#`T2Qy-`?2BtisF7dopE`IqNiM z<4bK$e6?>%KRr1qYhC7|Bslx*w=b9d#e@BWHy-H~>1?^7xTg3?2^BWar>*Ir98s{He#uvcx- zxgNtE6CWS%=jY?=dfTnKKEvm*^UNB7!~4aUq#mA~b^5HTjmFX^XKohD*Z-NQbNZ)4 zrw>=R#LqXIdseM_{P^)E9c}Y_KQ6Y*@2z`sy}o$=?Fosxy1G3Zcfa2!y>Hvrt+rpU z1Sc>{Nl9H>7km5CrBAO`umAKZH#e7;mpAF>)6>(1oy_v?y!ifmp;Ax#vu_-VwzjsX zr|WOOne*Xl+GgGOeS4NKU%qxN?~jee&;6WE{QLV`T1twIoxPjW^+wLN=kx3Dz5o6> zNjq$fMa72&r=K=OC-iiFXS&YxkXwJxhYyGOfB*e=>sFNSZx@M$nYwQ04_JSjqCHn< zznZIxrd<8<4z?;aobpLK3o*q@WR+W)RZ-de}U%lq^1zir#LO`A4N z`wt)I^tz8n#T)BYTQ=uQHvSerd;O$mgv*)Zlb$MhM(ldpIcM{&Cwr#{tuk^`aSA;p zp)8abc}ikokC9jE=AUo({r8<;wSQY$o!Z=$t5?7N|Kb0;qI*_L`SUU|ZtSnOx2enp zgYcrDZV}Jf>mSS%Et~nScGAxaHKH7+ygpyexv{ok{k5ACiXowm%B`X~9LqPavbp}} zJAY00$}i>n{~OeNv6o$E?N?vsXXGjHYiir!haE0TkBVMSW#m^l(k;c6p82lXrDxjo zA4g=jo9#(YiJbj(~w&iLn}CY*dG#pr1r4{M#jT8m)khp&x)8VhPYmAFMuI~{FW z9Q4uq&aHxo-7U7gU6b!zF1;RG{_)Y#%FoYco=t1Aclt4D=A5K3_j-d)lh4o3r}xaY zt}b)>!P)(+RgBZ*bj@VB2c19ipMN=i%VEbV5a9YP9>_FJtl66$sHzH(_!uiN5)qaW5N9(rg{FV4Z%d^zyO^Up80&iyynZE@hb z^qsmfMMrODW9;$MKlWT2B-ful>*?W#1quQkE=oNcCr+Gr?_S&k zU(R!`i!YW~&GlRUf5JpCZl1-C zHn#PPbkF8buI=8J8T-?A_3y^0@66lwM`Zu}{QjEB){whftNzWeO~2RgXBW5T(c*qP zDZcjPjS@WR7BXUUS!bjcC@o^`I{sKeKT)wFcKT`7x1V>d3_11k$xg{5FH3gCtgEnj z_xb0ej}^tmn~(7>4O&@Y^X_AXjU0c-bMd=-tGCAq_g=VAu_S2avu9}^uhrPe*L?k1 zvoXRa#BI%r_rey^94x0kZ3}NQSt>4JZ}IitAvWREH*KHme`Y+k&yV{!Sv~CE>)Y=8 zZ)|$?{N@_3D@y-QbgF1}F)_Pwc&Z3ZQn8%tx8rAo&b3>&Ze6{4RHEB$@!GX(_wL;r zuzL6I>VyOZsor-tH@9;imGoI5&DSoOd@y0d?%mOQUQAN;HaVs<`J{l8(?WqBUkwqV z^F>D;w!0`DoNaU^#p`R($}4TW(l&DZK8u?ta<@A5Y;0_7tgxAPGR5SS&rS6SsWM!x zyLRtB+P-8_@~k&Ue(3*CPHBFw=yam??RNpEx}R^NTPEbL?(a!I?iIqr!gTlU-IXD$ zRl%X;&wilo1JDhNDS zz93@h-q?!J5P z{(XMQEsLH;?5WteNF(9)4}oJz8*kmZmBg57A@lCVi-xUJ`}+DSY}O?%T&TA6>g5I7 zw{Ks(c=7)I|G&JvyjdY_mRP2W)0H(^Do!3P6Xf0hw+bj3etz+T)%iZlQ4!b3{dIqr z`Obcj`K)O7T|G~sp1l10e5Hv6J7WsO_E`Vf)60F-Y~i{WQ!PYXE1yhspI7@WGQ(1? zfBUv=ReR$$%AWl_cag?&|M_hH=GxUtS%f=H*1XF6sO#0zAWhf6H)YjI6E9Sl{H>Mz z*10Stb;7bGT9KhwFLQ61-f3fK7^t)C;rm5#>!hH78rmfJ6yZ-v?w(Z;XV|QK2G1HITC9>~R zN5$1up-DfT+xaSOY|%J7e_r8U=sr+!wxH?bxwnZtm{=-{$Fj%okfz{mFX0%l~if`L;hczwqB#@O4}M z;e+ey|67NFnmgXp^;#=_UV7!W_@ZWOypzxCx0y9bS5(fMPPUYfsVP3({hCwpHs9KP zhh4Y*d$YbyAnJ4Pt=rm{zgo>bXMV3D`S-WC#m~>(-B)XUZhg$VlY1wv`FT`(;{1PV z6^(O3&)%GRdeizpuYOPa$-Qz_(5YuL_7@#D-xs=Z`|}d3`_=FFdVjgIY0Y=mwnO^T zMV(J;_y3gteoC#TP2j1|yNB=D1w5pVh$`@wu`ZIi6mnvU;GH|xNWInV!XmB?v{(Til@r_GcpAvIF!@w+0OJ$ zd&AALOPytxy35nOwhNa!PI)`;!X*WWnx~W8+%74c>d8zg@$V=~mh$O!nDTa>0Vj8$ zU8aF4Q{yx?!^cYws^}c~k|<{W*HPirCX*YY9h*Fx*Emk`lwx7h?4T{KDI;j|`> zEs#>Z8B)NrOk!(XGLyH%ZL!__^9ASSRnBfvco$HW`MdAj5eb%N$G`hlPXF$-ckkZI zIlb}Qi*A&edJ6NfH6MI%-~dC;wnG5To9U{|Ng`YjvSWdH=RBf9ei8X?zB)S zdiu+UA1h9+H45GlWnJ0R(^IiG?#AV5%0itLd*k|#KQ6IiXJb>E$dRLyvHkW!m7GI| zRh5;MYtFCz_U)U{Q(HOy4-5-3+fTEzvCZ*YuE99fL|p5dpNbIUQ%4D|Rvy*3_2wd6 zj++Zy>$V-?T^F}kYSo9^Pxi9RJtjT#<;LAvOFCVY3eHO{yqov@w(TdTnkN;WFG@a6 z*;k_>@@UexZ)InShP@3Ui#ydeX%1I&5Nwa3pPE7aOH*?MT=ibXN zFKWI%yh%*uAh-dS4cb@b84 z9jBi*Y034o?`kcdbvJMRMcFm$i+qx|-%j2*W5>-U3&o%F^M2_&|Ge3~YxWDFr-|R6 z253C_{PW1%8H$Tca@^O8zOl@(5K_JM(>ZR9UUKv1UK73Pr(b_%V`8+Mb}%8}j;Gi$ z{<0d8OvdxsCQ?sZ8~uNMx|p$L_3G14i(Hiir=M0e%e%pMebwT{&F|0gN*{FovGRWV z_6Td0{npE_X6Y&x?!No7BlIjovxne#y3qQvwuCY^=%X1KWE3M^cgRYUl(ySJdxkD`Ozbd>tT}@ zns2X5B0fHlc4{BAbpH zed+r9C`pXrbEe*Hk#q0v?zXnJ)_!z6N8+-A7H>wTKt`s3hZH#fJ1S%ffSY=t@P!0* n;}Vb{Tpl9mNsRnHkstNldJWA|7CvSS3=9mOu6{1-oD!Mje&t7;J4I#1_tguo-U3d6^w7^p6`>j z6g{?jx3Nlz_C=4E8u|vaTq_vOa?-jT6rS?7#kMGYWXPDLBcQ~|%@(#MP-V$Pfelie zh6)GIh?(quv&mzT%BlbMcVE5>i2rI^UemjJU4HEDS93l+5A2QIcKX}TbL;(MN?(`d z@2UR2E@=^ys>X)Mrioi7ayc*_^5g3YY}g?FI7`aw#z_Z5E`e`JF}}{6){+`-jECZS zR%dD?sxu$eaJbQ3Xv(YlCS`#HD@V2Ax@8Mn=JJRvW=PaOcGYCchRKadA_{Mg?wHjk zRAv;=!_=}@BK&f|AwM=+7_Q#6af^Vn`KyrGTI_4wDkCTD_h{Vn@3+Y1Kis0yx8A;b zxhM79+^pRWeKP;E9(T0yg<;-CMyA)1%vMZERdrj)yJXRrhz-7wbszd*}F82G7oJ-+QyUtBT?8y}i|E?H32B z|6Couen~`4UBwmtZ@0JS|DRvh@aOIA?Zs#HV|G0FR=M8J@k``~$+sPYBdy*X}Gc0Q!>slY&o_hCl>9;qhpKV*S zne#?0yFgiZZ^6#@mnBXsv`>v#W6HSOrR?VV(>t@hR-DV#UwOxTlYgwT@P=;TT}uAp zvt#1D?umbs;7$IOarLIm8v$#TiWPpVU+la-wOBeiGF^B>ardTM{qFb6lan0!UT(gX z)&4q{sVtoD=JwsCI`Y~I@^8Q2J?0bZF1%s)#Jfc)Cs~E>WmbNEcJ`0$w0#@=W21#P zaI3_gdyzHy_3~+_r)&K2x7(S{Uww<^O+apVFXa7YiBAZdA9QcZsR+xW@Do=aC!hZG=jZ2FN4v#EzrE<# zkQ*qr{`chJrX`Sswl@>w#^^Q=!TR4M*Zxng~*mGFk$PTMSRl%EJW$7sn= z|LMueKVNU_-Cl6j@o(398Fl}h@cn-dF27p;?_X)@$45tB#n=B_W$C{6i(}sv({)=+ zWqbdf7kMKfKNcEZ|O8+3n`?G4@e zbMgJq|9>C7_HvkB$nahS(mH^=|YzwE#8FTJpJ z;jRl?rCy(LE$dbK7At(<;ChD2KR*ghUKkc1ZP0tn@ZRZZS(%I86x6+~svRCCnRPF`VSf0P)(bWZt-ed0O%>ko`}h3`4;JoP*!n(-S;^wt z(~cLf)yn0z?|HZ5-`9m3olF0fMxFOP@UHv$;rH9Kt=MH6_PkGa@!b{?-)(t=(O+X% z%d57szWr=2g*lNQwy36ldhTht%{nY&UclVy-e;RQZ>Uak&d|&j6a8JZhhy8heS1#Z ziCb*HQ|dc^+nnU@k>__^pV4sFREUqmQZeLtoVkl+f%2rse?P@6INY}|hxe@TDru+N zBE>TrVi#E!Y5qR8{p$C(&*QI`>dA8@-cFKi)019)A&sd_Fv?+4%&Up*ukMs-zJK$^ z!_brOK;h?|J9qBfV7~spiQlA;&docv@tO9oIXpM|)tV=23EvlQtG8>rabwkkzn|vZ zo@)3e%1k{mep$exGQp^#@*4qjZ_iuR^ZaSUo%*+CSAWQ;&u3Cosv4@Vx1d z6E>}E;Jk4+_jG{Zol^CCi6=kqxij~$S0&Hi;LK#EZxYGLb05^N+>xDgr{>Y!A{+C5 z&*$go&oAFy|Nq~fIlByw*(5oyId>^OIFG5U^NnW9w2iywG|cv^>15ilep1jH{j`0C z&n2_oNyvu1O=kKQ+WYFZ{Q1*@CpV@h&YH)hmeAjMY~wo4-qsA(1B}0{-f!d){kqJ| zf6e=AZ_}B|?w^>j85C^`i)$2G^v#dIJMEn85qsbC#Mg~KXME-{Eng$H`in8+Zt32@ zvh(4FVzp1BYBZ+&dR^e$Xz`c8x1?0OA> zWoGA%VuQENZrHniN0*Y&4n37V()uUL1M z|JEzt1Mj-nHaa(X+s>PsoIkI4_oH>kb=$8!-L_n--|~Dw@$yTjWRJ7FsWbV0K2czi zg`8?qyj_?SR|`1MWb8~BtEWG_F+KV8rc>N;v5zk6f5nWoHstk{cL9EpSAbr4D$tHb551Ei5f8eo@-q`>uR~{ z)OFi7yj=5kaYO1{-vfGnjTeeM=02G=SHaBS{OShF8@Hb*yvaSaWbO7f#{bXwM2T6< zN@DeKEqiey_skBH$i6qr65b2#TAdqXv&?jN>fEyj`8GN?wZB@{D!Dc?oblbw>!A~_ z&kj5glae1iZQ@?vnOnY2D>Y-So_<@$df{ok+*}aPy5-*8yS%^t-`QDwuqtd>=mDcQ z(zC?l_rL9sKQ{U6!Tavhr`-%$TpPjvCFj}vy|b1!hcG{vaR1HwYWJ-S86PXr1MAI? zg&+3$aq^HETfNJdzrSv*<9GS_{Z;a6yBWuV85)?s?2VlFjel?2CU5IE9TEa%^=bAj zY%ioY7pFbeP^fFPe<0oY?(rJ6qA=|Zhh;c;3K^{u*Sks>p4`SND7#>GL+n>xtvQkR zmvG%-+VLbKP0F8q?b$yB} m Date: Thu, 27 Feb 2014 12:10:32 +0100 Subject: [PATCH 27/41] Qnx: Fix device runtime check step condition Task-number: QTCREATORBUG-11513 Change-Id: I7c2a2e0c4fa7315c961bd0354e0f7db7d71185a2 Reviewed-by: David Kaspar Reviewed-by: Nicolas Arnaud-Cormos --- src/plugins/qnx/blackberrycheckdevicestatusstep.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qnx/blackberrycheckdevicestatusstep.cpp b/src/plugins/qnx/blackberrycheckdevicestatusstep.cpp index 7aafad078ea..e9aaed4fd39 100644 --- a/src/plugins/qnx/blackberrycheckdevicestatusstep.cpp +++ b/src/plugins/qnx/blackberrycheckdevicestatusstep.cpp @@ -146,8 +146,8 @@ void BlackBerryCheckDeviceStatusStep::checkDeviceInfo(int status) } bool ok = true; - if (deviceRuntimeVersion.toString() != apiLevelVersion.toString()) { - raiseError(tr("The device runtime version (%1) does not match API level version (%2)") + if (apiLevelVersion > deviceRuntimeVersion) { + raiseError(tr("The device runtime version (%1) is inferior to the API level version (%2)") .arg(deviceRuntimeVersion.toString(), apiLevelVersion.toString())); QMetaObject::invokeMethod(this, "handleVersionMismatch", Qt::BlockingQueuedConnection, From 9df273ebe68f1ccfa1fa0dd3cdd93441465ce33b Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 3 Mar 2014 15:54:08 +0100 Subject: [PATCH 28/41] Update changes-3.1.0 Change-Id: I81a3f5751be653c15ebef8efbbeaa716c2fdb390 Reviewed-by: Leena Miettinen --- dist/changes-3.1.0 | 116 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 96 insertions(+), 20 deletions(-) diff --git a/dist/changes-3.1.0 b/dist/changes-3.1.0 index 0346ffb142b..c9d22af11c2 100644 --- a/dist/changes-3.1.0 +++ b/dist/changes-3.1.0 @@ -7,28 +7,35 @@ list of changes, see the Git log for the Qt Creator sources that you can check out from the public Git repository. For example: git clone git://gitorious.org/qt-creator/qt-creator.git -git log --cherry-pick --pretty=oneline origin/3.0..origin/master +git log --cherry-pick --pretty=oneline origin/3.0..origin/3.1 General + * Added support for "~" as an alias for the user's home directory in the directory in file + system search (QTCREATORBUG-7753) + * Added Beautifier plugin that allows to fix coding style of files with external coding + style tools (Artistic Style, Clang-format, Uncrustify) (QTCREATORBUG-7489) Editing - * Added File > Reload + * Added File > Reload for files that are open and unmodified in Qt Creator but might be + different on disk + * Added option to not hide the mouse cursor while typing (QTCREATORBUG-3584) * Made visible margin configurable per project + * Fixed reloading contents in binary editor (QTCREATORBUG-6275) + * Fixed names and saving of custom locator filters (QTCREATORBUG-11051) Managing and Building Projects - -Compilers - -Devices + * Re-added option to import existing builds even after project configuration (QTCREATORBUG-7836) + * Fixed that compiler output in issues list was not using monospace font (QTCREATORBUG-11345) QMake Projects * Added context menu item "Add Existing Directory" that adds all files from a directory (QTCREATORBUG-9081) - -CMake Projects + * Added support for QMAKE_EXTRA_COMPILERS (QTCREATORBUG-11212) + * Fixed issues with absolute paths in TARGET Qbs Projects * Added option for building with --check-timestamps + * Fixed that compiler flags were not set (QBS-481) Generic Projects * Added context menu item "Add Existing Directory" that adds all @@ -38,42 +45,50 @@ Generic Projects Debugging * Removed support for GDB without Python * Added context menu item for saving backtrace as tasks-file - * GDB + * GDB, LLDB + * Added pretty printer for std::unordered_set + * Fixed various pretty printers * CDB * Added pretty printer for std::complex and C++11 std::array * LLDB - * QML - -Analyzer + * Fixed that debugging was not possible with MallocScribble environment variable set + (QTCREATORBUG-11371) + * Fixed "Jump to Line", "Run to Line" and "Jump to Address" QML Profiler * Improved performance (QTCREATORBUG-10950) * Improved layout of details views + * Added JavaScript calls in Events view and Timeline view * Fixed opening files from JavaScript profiling output (QTCREATORBUG-11094) C++ Support * Added code model inspector * Added experimental support for Clang-based code model + * Added support for multiline strings and comments (QTCREATORBUG-662) * Fixed parsing of ??< ??> ??( ??) trigraphs (QTCREATORBUG-2474) * Fixed adding definition for function with rvalue-reference (QTCREATORBUG-10555) * Fixed semantic highlighting after "Save as" * Fixed syntax highlighting of multiline strings and comments (QTCREATORBUG-662) + * Fixed that symbol dropdown was jumping to the wrong editor (QTCREATORBUG-11157) * Improved the Insert Virtual Functions refactoring action: * Check only pure virtual functions by default * Display all overrides of a function * Do not include final functions -Python Support - -GLSL Support +QML Support + * Simplified Qt Quick Application templates (QTCREATORBUG-11264) + * Improved performance when using split views Qt Quick Designer * Fixed selecting overlapping items with same z-value (QTCREATORBUG-11066) * Fixed setting text alignment (QTCREATORBUG-11054) * Fixed crash with anchors (QTCREATORBUG-11138) + * Fixed issue with warning text not being readable (QTCREATORBUG-9603) Diff Viewer + * Fixed display of inserted lines at end of file (QTCREATORBUG-11281) + * Fixed handling of whitespace changes (QTCREATORBUG-11002) Version Control Systems * Git @@ -81,20 +96,24 @@ Version Control Systems * Enabled option to push commit directly after fixup * Enabled choosing non-fast-forward merge when fast-forward is applicable * Added completion in change selection dialog + * Fixed freeze after resolving conflict with cherry-pick or revert * ClearCase * Improved performance of indexing dynamic views * Added warning when editing Derived Objects * Bazaar * Added support for uncommit command + * Mercurial + * Added current branch to project and window title FakeVim * Added "gj", "gk", "g0", "g^" and "g$" commands + * Added toggle ("!") and print ("?") options to "set" command + * Added support for relative line numbering * Made dot command work for letter case commands in visual mode + * Fixed backward incremental search (QTCREATORBUG-7251) Platform Specific -Linux - Qt Support * Custom wizards now use class "qmakeproject" instead of "qt4project" @@ -104,16 +123,73 @@ QNX (QTCREATORBUG-9673, QTCREATORBUG-9001) * Added line and column information to text based BAR descriptor editor (QTCREATORBUG-10395) + * Added simple management of user debug tokens + * Added simple management of runtime configurations + * Added support for attaching debugger to running applications * Fixed several issues with certificate password dialog in BlackBerry options (QTCREATORBUG-10948) Android * Made it possible to cancel waiting for an AVD to boot up + * Added download buttons for Android toolkit parts to Options page + * Added warning for invalid JDK setting (QTCREATORBUG-11218) + * Added minimal support for editing Java, with indentation of blocks and keyword completion + (QTCREATORBUG-11220) + * Added Java file wizard (QTCREATORBUG-11220) * Fixed opening Java files from error messages (QTCREATORBUG-10904) + * Fixed colors in AndroidManifest editor (QTCREATORBUG-10597) + * Fixed modified state of AndroidManifest editor (QTCREATORBUG-11163) + * Fixed apply-behavior of Android Options page (QTCREATORBUG-7724) + * Fixed that Qt Creator restart was required after configuring Android SDK (QTCREATORBUG-10936) -Remote Linux - -Bare Metal +iOS + * Added check for already running application on device + * Added automatic detection that developer mode becomes activated on connected device Credits for these changes go to: +Alessandro Portale +Alexander Kondratskiy +Andre Hartmann +Andre Pönitz +Aurindam Jana +Christian Kandeler +Christian Stenger +Daniel Teske +David Kaspar +David Schulz +Eike Ziller +El Mehdi Fekari +Erik Verbruggen +Falko Arps +Fawzi Mohamed +Frantisek Vacek +Frederik Gladhorn +Friedemann Kleint +Hugues Delorme +Jarek Kobus +Jörg Bornemann +Kai Köhne +Knut Petter Svendsen +Leena Miettinen +Leo Lei +Lukas Holecek +Lorenz Haas +Marco Bubke +Martin Bohacek +Nikolai Kosjar +Orgad Shaneh +Oswald Buddenhagen +Pawel Faron +Petar Perisin +Povilas Kanapickas +Przemyslaw Gorszkowski +Rafael Roquetto +Robert Löhning +Sebastian Paluchiewicz +Takumi Asaki +Thiago Macieira +Thomas Hartmann +Tobias Hunger +Tobias Nätterlund +Ulf Hermann From c4f5bdfbdb9c626c85a6eb00566f620748b428db Mon Sep 17 00:00:00 2001 From: El Mehdi Fekari Date: Fri, 28 Feb 2014 10:04:24 +0100 Subject: [PATCH 29/41] Qnx: Enabled deactivating unique active API level Task-number: QTCREATORBUG-10540 Change-Id: Ie6f23e2a10afd0f1ef96bee10006461675ecb22f Reviewed-by: David Kaspar Reviewed-by: Nicolas Arnaud-Cormos --- src/plugins/qnx/blackberryndksettingswidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qnx/blackberryndksettingswidget.cpp b/src/plugins/qnx/blackberryndksettingswidget.cpp index b16665d41e7..b804a0ecb07 100644 --- a/src/plugins/qnx/blackberryndksettingswidget.cpp +++ b/src/plugins/qnx/blackberryndksettingswidget.cpp @@ -322,7 +322,7 @@ void BlackBerryNDKSettingsWidget::updateUi(QTreeWidgetItem *item) item->setFont(0, font); m_ui->activateNdkTargetButton->setEnabled(!contains); - m_ui->deactivateNdkTargetButton->setEnabled(contains && m_activatedApiLevel.size() > 1); + m_ui->deactivateNdkTargetButton->setEnabled(contains); // Disable remove button for auto detected pre-10.2 NDKs (uninstall wizard doesn't handle them) m_ui->removeConfigButton->setEnabled(!(config->isAutoDetected() && QnxUtils::sdkInstallerPath(config->ndkPath()).isEmpty())); From e4feb5e3267dc2bc42e2d932fa1fdfb9bdd36f42 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 26 Feb 2014 12:18:35 +0100 Subject: [PATCH 30/41] Fix F1 sometimes opening explorer/finder if documentation is not found It's not sufficient to try to create a QUrl on a string to find out if it is an url, because that automatically treats strings without any special characters as "local file urls". Task-number: QTCREATORBUG-11570 Change-Id: I18071aed5b3fbdd717b045c2f6e3e90385be8584 Reviewed-by: Eike Ziller --- src/plugins/help/helpplugin.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 840a39e42d0..37bb2d28069 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -874,9 +874,12 @@ void HelpPlugin::activateContext() links = HelpManager::linksForIdentifier(m_idFromContext); if (links.isEmpty()) { // Maybe this is already an URL... - QUrl url(m_idFromContext); - if (url.isValid()) - links.insert(m_idFromContext, m_idFromContext); + // Require protocol specifier, otherwise most strings would be 'local file names' + if (m_idFromContext.contains(QLatin1Char(':'))) { + QUrl url(m_idFromContext); + if (url.isValid()) + links.insert(m_idFromContext, m_idFromContext); + } } } From 71d23d94fb49b8b73c167a2f58adfb4f5e544a08 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 3 Mar 2014 17:23:20 +0100 Subject: [PATCH 31/41] Qbs: Add placeholder text to QbsRunConfiguration widget Change-Id: Ie4452d668ad8355b0f68f5d41e9a26a13c2c8586 Reviewed-by: Tobias Hunger --- src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 979807032f4..ebff13a2c71 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -358,6 +358,7 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc, QW m_executableLineEdit = new QLineEdit(this); m_executableLineEdit->setEnabled(false); + m_executableLineEdit->setPlaceholderText(tr("")); toplayout->addRow(tr("Executable:"), m_executableLineEdit); QLabel *argumentsLabel = new QLabel(tr("Arguments:"), this); From 321f67ffeb0d033f58666e0071ffa315aa8072c6 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 3 Mar 2014 16:04:44 +0100 Subject: [PATCH 32/41] Qbs: Create run configurations for everything Qbs can no longer tell us which projects produce an installed executable, so just create run configurations for everything. Change-Id: Ifd2b5941d0909b63a64139d91a970fb75f0c3b78 Reviewed-by: Joerg Bornemann --- src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index ebff13a2c71..1f069995e31 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -563,10 +563,11 @@ QList QbsRunConfigurationFactory::availableCreationIds(ProjectExplorer if (!project || !project->qbsProject().isValid()) return result; - foreach (const qbs::ProductData &product, project->qbsProjectData().allProducts()) { - if (!project->qbsProject().targetExecutable(product, qbs::InstallOptions()).isEmpty()) - result << Core::Id::fromString(QString::fromLatin1(QBS_RC_PREFIX) + product.name()); - } + // Create one RC per product. There is no information on what those products actually + // are or whether they are going to get installed before a project is built. + foreach (const qbs::ProductData &product, project->qbsProjectData().allProducts()) + result << Core::Id::fromString(QString::fromLatin1(QBS_RC_PREFIX) + product.name()); + return result; } From 158fa9c487da375dece883d9f499d7f22b060fa7 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 3 Mar 2014 17:23:41 +0100 Subject: [PATCH 33/41] Qbs: Wait for reparsing to be done after a build This is necessary since the build may change the the properties of the build targets (executable name, etc.), so we can not proceed to run anything without that update. Change-Id: I9790c529db5e4da61f59e638a05339ada714353c Reviewed-by: Joerg Bornemann Reviewed-by: Tobias Hunger --- src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 16 +++++++++++++--- src/plugins/qbsprojectmanager/qbsbuildstep.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 678e4f15f04..4ac5f4721ed 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -234,16 +234,26 @@ QVariantMap QbsBuildStep::toMap() const void QbsBuildStep::buildingDone(bool success) { + m_lastWasSuccess = success; // Report errors: foreach (const qbs::ErrorItem &item, m_job->error().items()) createTaskAndOutput(ProjectExplorer::Task::Error, item.description(), item.codeLocation().fileName(), item.codeLocation().line()); - // Building can uncover additional target artifacts. - static_cast(project())->parseCurrentBuildConfiguration(true); + QbsProject *pro = static_cast(project()); + connect(pro, SIGNAL(projectParsingDone(bool)), this, SLOT(reparsingDone())); + // Building can uncover additional target artifacts. + // Wait for reparsing to finish, since before that our run configurations may not be valid. + pro->parseCurrentBuildConfiguration(true); +} + +void QbsBuildStep::reparsingDone() +{ + disconnect(static_cast(project()), SIGNAL(projectParsingDone(bool)), + this, SLOT(reparsingDone())); QTC_ASSERT(m_fi, return); - m_fi->reportResult(success); + m_fi->reportResult(m_lastWasSuccess); m_fi = 0; // do not delete, it is not ours m_job->deleteLater(); m_job = 0; diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h index 3b6ceb77c21..9c576b7a460 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.h +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h @@ -80,6 +80,7 @@ signals: private slots: void buildingDone(bool success); + void reparsingDone(); void handleTaskStarted(const QString &desciption, int max); void handleProgress(int value); void handleCommandDescriptionReport(const QString &highlight, const QString &message); @@ -108,6 +109,7 @@ private: QFutureInterface *m_fi; qbs::BuildJob *m_job; int m_progressBase; + bool m_lastWasSuccess; ProjectExplorer::IOutputParser *m_parser; friend class QbsBuildStepConfigWidget; From 4c4bb918867dd49603aa54efbfc824d2dbda1d1d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 3 Mar 2014 17:32:40 +0100 Subject: [PATCH 34/41] Qbs: Give path to settings in Qbs build and install steps Give the settingspath where the Qt Creator profiles are stored in the Qbs build- and install steps. Change-Id: I048525083fc39ca824d866e885d44325306e1030 Reviewed-by: Tobias Hunger --- src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 3 +++ src/plugins/qbsprojectmanager/qbsinstallstep.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 4ac5f4721ed..9846a4e0563 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -36,6 +36,7 @@ #include "ui_qbsbuildstepconfigwidget.h" +#include #include #include #include @@ -431,6 +432,8 @@ void QbsBuildStepConfigWidget::updateState() m_ui->buildVariantComboBox->setCurrentIndex(idx); QString command = QLatin1String("qbs build "); + command += QString::fromLatin1("--settings-dir ") + + QDir::toNativeSeparators(Core::ICore::userResourcePath()) + QLatin1String(" "); if (m_step->dryRun()) command += QLatin1String("--dry-run "); if (m_step->keepGoing()) diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp index 738a2a6812c..6fa1ec0258c 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp @@ -35,6 +35,7 @@ #include "ui_qbsinstallstepconfigwidget.h" +#include #include #include #include @@ -312,6 +313,8 @@ void QbsInstallStepConfigWidget::updateState() m_ui->installRootChooser->setBaseDirectory(data.buildDirectory()); QString command = QLatin1String("qbs install "); + command += QString::fromLatin1("--settings-dir ") + + QDir::toNativeSeparators(Core::ICore::userResourcePath()) + QLatin1String(" "); if (m_step->dryRun()) command += QLatin1String("--dry-run "); if (m_step->keepGoing()) From 249a8b2d24c58165988584309622c93173a25fd8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 3 Mar 2014 15:53:34 +0100 Subject: [PATCH 35/41] tr()-Fixes in CLANG code model. Do not use QObject::tr(), use native file paths, use complete contexts. Change-Id: Icc4990b4c2ca5b9ae6f6b639db9e1a45a93e0a65 Reviewed-by: Nikolai Kosjar --- src/plugins/clangcodemodel/clangcompletion.cpp | 5 ++--- src/plugins/clangcodemodel/clangcompletion.h | 3 +++ .../clangcodemodel/clangmodelmanagersupport.cpp | 3 ++- .../clangprojectsettingspropertiespage.cpp | 7 ++----- .../clangcodemodel/completionproposalsbuilder.cpp | 7 ++++--- .../clangcodemodel/completionproposalsbuilder.h | 4 ++++ src/plugins/clangcodemodel/diagnostic.cpp | 10 +++++----- 7 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcompletion.cpp b/src/plugins/clangcodemodel/clangcompletion.cpp index 179c5f03dd2..c5974aea708 100644 --- a/src/plugins/clangcodemodel/clangcompletion.cpp +++ b/src/plugins/clangcodemodel/clangcompletion.cpp @@ -1173,9 +1173,8 @@ void ClangCompletionAssistProcessor::completeIncludePath(const QString &realPath const QStringList &suffixes) { QDirIterator i(realPath, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); - const QString hint = - QObject::tr("Location: ", "Parent folder for proposed #include completion") - + QDir::cleanPath(realPath); + //: Parent folder for proposed #include completion + const QString hint = tr("Location: %1").arg(QDir::toNativeSeparators(QDir::cleanPath(realPath))); while (i.hasNext()) { const QString fileName = i.next(); const QFileInfo fileInfo = i.fileInfo(); diff --git a/src/plugins/clangcodemodel/clangcompletion.h b/src/plugins/clangcodemodel/clangcompletion.h index 2ef11fe9e9a..8bd77d9a6c7 100644 --- a/src/plugins/clangcodemodel/clangcompletion.h +++ b/src/plugins/clangcodemodel/clangcompletion.h @@ -43,6 +43,7 @@ #include #include +#include namespace ClangCodeModel { @@ -104,6 +105,8 @@ private: class CLANG_EXPORT ClangCompletionAssistProcessor : public TextEditor::IAssistProcessor { + Q_DECLARE_TR_FUNCTIONS(ClangCodeModel::Internal::ClangCompletionAssistProcessor) + public: ClangCompletionAssistProcessor(); virtual ~ClangCompletionAssistProcessor(); diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 1e53a0f2e5c..d565bfc0868 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -53,7 +53,8 @@ QString ModelManagerSupport::id() const QString ModelManagerSupport::displayName() const { - return QCoreApplication::translate("ModelManagerSupport::displayName", + //: Display name + return QCoreApplication::translate("ClangCodeModel::Internal::ModelManagerSupport", "Clang"); } diff --git a/src/plugins/clangcodemodel/clangprojectsettingspropertiespage.cpp b/src/plugins/clangcodemodel/clangprojectsettingspropertiespage.cpp index 612372f8115..40df18a8432 100644 --- a/src/plugins/clangcodemodel/clangprojectsettingspropertiespage.cpp +++ b/src/plugins/clangcodemodel/clangprojectsettingspropertiespage.cpp @@ -48,8 +48,7 @@ QString ClangProjectSettingsPanelFactory::id() const QString ClangProjectSettingsPanelFactory::displayName() const { - return QCoreApplication::translate("ClangProjectSettingsPropertiesPage", - "Clang Settings"); + return ClangProjectSettingsWidget::tr("Clang Settings"); } int ClangProjectSettingsPanelFactory::priority() const @@ -67,9 +66,7 @@ bool ClangProjectSettingsPanelFactory::supports(Project *project) PropertiesPanel *ClangProjectSettingsPanelFactory::createPanel(Project *project) { PropertiesPanel *panel = new PropertiesPanel; - panel->setDisplayName(QCoreApplication::translate( - "ClangProjectSettingsPropertiesPage", - "Clang Settings")); + panel->setDisplayName(ClangProjectSettingsWidget::tr("Clang Settings")); panel->setWidget(new ClangProjectSettingsWidget(project)); return panel; } diff --git a/src/plugins/clangcodemodel/completionproposalsbuilder.cpp b/src/plugins/clangcodemodel/completionproposalsbuilder.cpp index e2f8d3e0eaa..ac388f03272 100644 --- a/src/plugins/clangcodemodel/completionproposalsbuilder.cpp +++ b/src/plugins/clangcodemodel/completionproposalsbuilder.cpp @@ -96,7 +96,8 @@ void CompletionProposalsBuilder::operator ()(const CXCompletionResult &cxResult) if (m_resultAvailability == CodeCompletionResult::Deprecated) { m_comment += QLatin1String("@note "); - m_comment += QCoreApplication::translate("deprecated C++ symbol", "Is deprecated"); + //: deprecated C++ symbol + m_comment += tr("Is deprecated"); } m_hint = QLatin1String("

"); @@ -675,9 +676,9 @@ void CompletionProposalsBuilder::concatSlotSignalSignature(const CXCompletionStr const QString parent = Internal::getQString(clang_getCompletionParent(cxString, NULL)); if (m_resultKind == CodeCompletionResult::SlotCompletionKind) - m_hint += QObject::tr("Slot of %1, returns %2").arg(parent).arg(resultType); + m_hint += tr("Slot of %1, returns %2").arg(parent, resultType); else - m_hint += QObject::tr("Signal of %1, returns %2").arg(parent).arg(resultType); + m_hint += tr("Signal of %1, returns %2").arg(parent, resultType); } /** diff --git a/src/plugins/clangcodemodel/completionproposalsbuilder.h b/src/plugins/clangcodemodel/completionproposalsbuilder.h index 5526446e2cb..c55a8a5a3cc 100644 --- a/src/plugins/clangcodemodel/completionproposalsbuilder.h +++ b/src/plugins/clangcodemodel/completionproposalsbuilder.h @@ -34,10 +34,14 @@ #include "clang_global.h" #include +#include + namespace ClangCodeModel { class CLANG_EXPORT CompletionProposalsBuilder { + Q_DECLARE_TR_FUNCTIONS(ClangCodeModel::CompletionProposalsBuilder) + public: CompletionProposalsBuilder(QList &results, quint64 contexts, bool isSignalSlotCompletion); void operator ()(const CXCompletionResult &cxResult); diff --git a/src/plugins/clangcodemodel/diagnostic.cpp b/src/plugins/clangcodemodel/diagnostic.cpp index 07db56a8624..f876c6ae16b 100644 --- a/src/plugins/clangcodemodel/diagnostic.cpp +++ b/src/plugins/clangcodemodel/diagnostic.cpp @@ -52,11 +52,11 @@ const QString Diagnostic::severityAsString() const return QString(); static QStringList strs = QStringList() - << QCoreApplication::translate("Diagnostic", "ignored") - << QCoreApplication::translate("Diagnostic", "note") - << QCoreApplication::translate("Diagnostic", "warning") - << QCoreApplication::translate("Diagnostic", "error") - << QCoreApplication::translate("Diagnostic", "fatal") + << QCoreApplication::translate("ClangCodeModel::Diagnostic", "ignored") + << QCoreApplication::translate("ClangCodeModel::Diagnostic", "note") + << QCoreApplication::translate("ClangCodeModel::Diagnostic", "warning") + << QCoreApplication::translate("ClangCodeModel::Diagnostic", "error") + << QCoreApplication::translate("ClangCodeModel::Diagnostic", "fatal") ; return strs.at(m_severity); From 9c6be699799f9ee26ff8f924b2b63ce5bfd827d5 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 3 Mar 2014 17:25:11 +0100 Subject: [PATCH 36/41] Increase number of recent projects. Task-number: QTCREATORBUG-11605 Change-Id: Idbca992cab23bca847f69765e1fe11e697b231f9 Reviewed-by: Daniel Teske --- src/plugins/projectexplorer/projectexplorer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 9f95caeec9d..4f57ad3850a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -230,7 +230,7 @@ struct ProjectExplorerPluginPrivate { Internal::AppOutputPane *m_outputPane; QList > m_recentProjects; // pair of filename, displayname - static const int m_maxRecentProjects = 7; + static const int m_maxRecentProjects = 25; QString m_lastOpenDirectory; RunConfiguration *m_delayedRunConfiguration; From 9edd15c2b8ebb02ddaad956b2f0d916342540c8e Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 3 Mar 2014 20:33:05 +0200 Subject: [PATCH 37/41] ChangeLog: Add some more changes Change-Id: I51eb77abd8f6903408336a47396d54a7eda7331f Reviewed-by: Leena Miettinen --- dist/changes-3.1.0 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dist/changes-3.1.0 b/dist/changes-3.1.0 index c9d22af11c2..70a8d824f0a 100644 --- a/dist/changes-3.1.0 +++ b/dist/changes-3.1.0 @@ -71,6 +71,7 @@ C++ Support * Fixed semantic highlighting after "Save as" * Fixed syntax highlighting of multiline strings and comments (QTCREATORBUG-662) * Fixed that symbol dropdown was jumping to the wrong editor (QTCREATORBUG-11157) + * Fixed highlighting when #undef is used (QTCREATORBUG-10454) * Improved the Insert Virtual Functions refactoring action: * Check only pure virtual functions by default * Display all overrides of a function @@ -97,6 +98,7 @@ Version Control Systems * Enabled choosing non-fast-forward merge when fast-forward is applicable * Added completion in change selection dialog * Fixed freeze after resolving conflict with cherry-pick or revert + * Added support for local branch selection in the Push to Gerrit dialog * ClearCase * Improved performance of indexing dynamic views * Added warning when editing Derived Objects From 384fc4096b79c19d07fc9661a575137615effaa8 Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Tue, 25 Feb 2014 22:34:37 +0100 Subject: [PATCH 38/41] ios: marking plugin as non experimental Change-Id: I06982188952d23ecee876dd4a7d6e805b81a7cb5 Reviewed-by: Eike Ziller --- src/plugins/ios/Ios.pluginspec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/ios/Ios.pluginspec.in b/src/plugins/ios/Ios.pluginspec.in index 835bc1d08c0..80f1c6d798f 100644 --- a/src/plugins/ios/Ios.pluginspec.in +++ b/src/plugins/ios/Ios.pluginspec.in @@ -1,4 +1,4 @@ - + Digia Plc (C) 2014 Digia Plc Mac OS.* From e110a88cee2fb40e36a3b2b51c083baf67ae9233 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 3 Mar 2014 14:58:08 +0100 Subject: [PATCH 39/41] Debugger: remove platform ifdefs in terminal adapter The code still assumes host == target in some places... Change-Id: Ief495df6ff5fbff890fc46d42a6b29eee3a1ed2c Reviewed-by: Eike Ziller Reviewed-by: Robert Loehning --- src/libs/utils/consoleprocess.h | 3 +-- src/libs/utils/consoleprocess_unix.cpp | 7 +++++++ src/plugins/debugger/gdb/termgdbadapter.cpp | 15 ++++++--------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/libs/utils/consoleprocess.h b/src/libs/utils/consoleprocess.h index a064542fe7c..4a8c18ef526 100644 --- a/src/libs/utils/consoleprocess.h +++ b/src/libs/utils/consoleprocess.h @@ -71,9 +71,8 @@ public: void killProcess(); void killStub(); -#ifdef Q_OS_WIN qint64 applicationMainThreadID() const; -#else +#ifndef Q_OS_WIN void detachStub(); #endif diff --git a/src/libs/utils/consoleprocess_unix.cpp b/src/libs/utils/consoleprocess_unix.cpp index cc9474dbb54..c125a35f3d2 100644 --- a/src/libs/utils/consoleprocess_unix.cpp +++ b/src/libs/utils/consoleprocess_unix.cpp @@ -32,6 +32,7 @@ #include "qtcprocess.h" #include +#include #include #include @@ -64,6 +65,12 @@ ConsoleProcess::ConsoleProcess(QObject *parent) : d->m_process.setProcessChannelMode(QProcess::ForwardedChannels); } +qint64 ConsoleProcess::applicationMainThreadID() const +{ + QTC_CHECK(false); + return -1; +} + void ConsoleProcess::setSettings(QSettings *settings) { d->m_settings = settings; diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp index 9251be8f7c4..eed0681d570 100644 --- a/src/plugins/debugger/gdb/termgdbadapter.cpp +++ b/src/plugins/debugger/gdb/termgdbadapter.cpp @@ -41,6 +41,8 @@ #include +using namespace Utils; + namespace Debugger { namespace Internal { @@ -120,12 +122,11 @@ void GdbTermEngine::setupInferior() { QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); const qint64 attachedPID = m_stubProc.applicationPID(); -#ifdef Q_OS_WIN const qint64 attachedMainThreadID = m_stubProc.applicationMainThreadID(); - showMessage(QString::fromLatin1("Attaching to %1 (%2)").arg(attachedPID).arg(attachedMainThreadID), LogMisc); -#else - showMessage(QString::fromLatin1("Attaching to %1").arg(attachedPID), LogMisc); -#endif + const QString msg = (attachedMainThreadID != -1) + ? QString::fromLatin1("Attaching to %1 (%2)").arg(attachedPID).arg(attachedMainThreadID) + : QString::fromLatin1("Attaching to %1").arg(attachedPID); + showMessage(msg, LogMisc); notifyInferiorPid(attachedPID); postCommand("attach " + QByteArray::number(attachedPID), CB(handleStubAttached)); @@ -143,11 +144,7 @@ void GdbTermEngine::handleStubAttached(const GdbResponse &response) } else { QString errorMessage; // Resume thread that was suspended by console stub process (see stub code). -#ifdef Q_OS_WIN const qint64 mainThreadId = m_stubProc.applicationMainThreadID(); -#else - const qint64 mainThreadId = -1; -#endif if (winResumeThread(mainThreadId, &errorMessage)) { showMessage(QString::fromLatin1("Inferior attached, thread %1 resumed"). arg(mainThreadId), LogMisc); From 92032b961539da00106a9f5bc2097c97c3820027 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 4 Mar 2014 13:30:32 +0100 Subject: [PATCH 40/41] MakeParser: Better parsing based on gnumake manual The gnumake manual states that the make errors start either with a make executable or a makefile, followed by a message. This message starts with "warning: " for warnings and with "*** " for fatal errors. Normal errors have no prefix. This patch should make sure all these are recognized and also simplifies the code a bit. It also adds a new unit test for the lines starting with a Makefile. That one addresses QTCREATORBUG-10576. Task-number: QTCREATORBUG-10576 Change-Id: Ib3ef2ff5e324e773d7e78bb148bf09e9875b985e Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/gnumakeparser.cpp | 93 +++++++++++++------ src/plugins/projectexplorer/gnumakeparser.h | 3 +- 2 files changed, 65 insertions(+), 31 deletions(-) diff --git a/src/plugins/projectexplorer/gnumakeparser.cpp b/src/plugins/projectexplorer/gnumakeparser.cpp index 9fc970ee35d..115a8e296da 100644 --- a/src/plugins/projectexplorer/gnumakeparser.cpp +++ b/src/plugins/projectexplorer/gnumakeparser.cpp @@ -41,7 +41,8 @@ using namespace ProjectExplorer; namespace { // optional full path, make executable name, optional exe extension, optional number in square brackets, colon space - const char * const MAKE_PATTERN("^(([A-Za-z]:)?[/\\\\][^:]*[/\\\\])?(mingw(32|64)-|g)?make(.exe)?(\\[\\d+\\])?:\\s"); + const char * const MAKEEXEC_PATTERN("^(.*[/\\\\])?(mingw(32|64)-|g)?make(.exe)?(\\[\\d+\\])?:\\s"); + const char * const MAKEFILE_PATTERN("^((.*[/\\\\])?[Mm]akefile(\\.[a-zA-Z]+)?):(\\d+):\\s"); } GnuMakeParser::GnuMakeParser() : @@ -49,16 +50,16 @@ GnuMakeParser::GnuMakeParser() : m_fatalErrorCount(0) { setObjectName(QLatin1String("GnuMakeParser")); - m_makeDir.setPattern(QLatin1String(MAKE_PATTERN) + + m_makeDir.setPattern(QLatin1String(MAKEEXEC_PATTERN) + QLatin1String("(\\w+) directory .(.+).$")); m_makeDir.setMinimal(true); QTC_CHECK(m_makeDir.isValid()); - m_makeLine.setPattern(QLatin1String(MAKE_PATTERN) + QLatin1String("(\\*\\*\\*\\s)?(.*)$")); + m_makeLine.setPattern(QLatin1String(MAKEEXEC_PATTERN) + QLatin1String("(.*)$")); m_makeLine.setMinimal(true); QTC_CHECK(m_makeLine.isValid()); - m_makefileError.setPattern(QLatin1String("^(.*):(\\d+):\\s\\*\\*\\*\\s(.*)$")); - m_makefileError.setMinimal(true); - QTC_CHECK(m_makefileError.isValid()); + m_errorInMakefile.setPattern(QLatin1String(MAKEFILE_PATTERN) + QLatin1String("(.*)$")); + m_errorInMakefile.setMinimal(true); + QTC_CHECK(m_errorInMakefile.isValid()); } void GnuMakeParser::setWorkingDirectory(const QString &workingDirectory) @@ -77,48 +78,68 @@ void GnuMakeParser::stdOutput(const QString &line) const QString lne = rightTrimmed(line); if (m_makeDir.indexIn(lne) > -1) { - if (m_makeDir.cap(7) == QLatin1String("Leaving")) - removeDirectory(m_makeDir.cap(8)); + if (m_makeDir.cap(6) == QLatin1String("Leaving")) + removeDirectory(m_makeDir.cap(7)); else - addDirectory(m_makeDir.cap(8)); + addDirectory(m_makeDir.cap(7)); return; } IOutputParser::stdOutput(line); } +class Result { +public: + Result() : isFatal(false), type(Task::Error) { } + + QString description; + bool isFatal; + Task::TaskType type; +}; + +static Result parseDescription(const QString &description) +{ + Result result; + if (description.startsWith(QLatin1String("warning: "), Qt::CaseInsensitive)) { + result.description = description.mid(9); + result.type = Task::Warning; + result.isFatal = false; + } else if (description.startsWith(QLatin1String("*** "))) { + result.description = description.mid(4); + result.type = Task::Error; + result.isFatal = true; + } else { + result.description = description; + result.type = Task::Error; + result.isFatal = false; + } + return result; +} + void GnuMakeParser::stdError(const QString &line) { const QString lne = rightTrimmed(line); - if (m_makefileError.indexIn(lne) > -1) { - ++m_fatalErrorCount; + if (m_errorInMakefile.indexIn(lne) > -1) { + Result res = parseDescription(m_errorInMakefile.cap(5)); + if (res.isFatal) + ++m_fatalErrorCount; if (!m_suppressIssues) { - m_suppressIssues = true; - emit addTask(Task(Task::Error, - m_makefileError.cap(3), - Utils::FileName::fromUserInput(m_makefileError.cap(1)), - m_makefileError.cap(2).toInt(), - Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))); + taskAdded(Task(res.type, res.description, + Utils::FileName::fromUserInput(m_errorInMakefile.cap(1)) /* filename */, + m_errorInMakefile.cap(4).toInt(), /* line */ + Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))); } return; } if (m_makeLine.indexIn(lne) > -1) { - if (!m_makeLine.cap(7).isEmpty()) + Result res = parseDescription(m_makeLine.cap(6)); + if (res.isFatal) ++m_fatalErrorCount; if (!m_suppressIssues) { - m_suppressIssues = true; - QString description = m_makeLine.cap(8); - Task::TaskType type = Task::Error; - if (description.startsWith(QLatin1String("warning: "), Qt::CaseInsensitive)) { - description = description.mid(9); - type = Task::Warning; - } - - emit addTask(Task(type, description, - Utils::FileName() /* filename */, - -1, /* line */ - Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))); + taskAdded(Task(res.type, res.description, + Utils::FileName() /* filename */, -1, /* line */ + Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))); } return; } @@ -368,6 +389,18 @@ void ProjectExplorerPlugin::testGnuMakeParserParsing_data() Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))) << QString() << QStringList(); + QTest::newRow("warning in Makefile") + << QStringList() + << QString::fromLatin1("Makefile:794: warning: overriding commands for target `xxxx.app/Contents/Info.plist'") + << OutputParserTester::STDERR + << QString() << QString() + << (QList() + << Task(Task::Warning, + QString::fromLatin1("overriding commands for target `xxxx.app/Contents/Info.plist'"), + Utils::FileName::fromString(QLatin1String("Makefile")), 794, + Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM))) + << QString() + << QStringList(); } void ProjectExplorerPlugin::testGnuMakeParserParsing() diff --git a/src/plugins/projectexplorer/gnumakeparser.h b/src/plugins/projectexplorer/gnumakeparser.h index 7719a8118c0..99ddc781522 100644 --- a/src/plugins/projectexplorer/gnumakeparser.h +++ b/src/plugins/projectexplorer/gnumakeparser.h @@ -62,7 +62,8 @@ private: QRegExp m_makeDir; QRegExp m_makeLine; - QRegExp m_makefileError; + QRegExp m_threeStarError; + QRegExp m_errorInMakefile; QStringList m_directories; From 3ee64ed69938cce93a7cfd90926f7d8b91782366 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 3 Mar 2014 16:03:35 +0100 Subject: [PATCH 41/41] QmlJS.QtQuickToolBar: Using proper indenter Task-number: QTCREATORBUG-11334 Change-Id: I65b3f95bdc5a57971854fb8bce620a275f646ff5 Reviewed-by: Fawzi Mohamed --- src/plugins/qmljseditor/quicktoolbar.cpp | 36 +++++++++++------------- src/plugins/qmljseditor/quicktoolbar.h | 2 ++ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index 115e091a643..412d133616a 100644 --- a/src/plugins/qmljseditor/quicktoolbar.cpp +++ b/src/plugins/qmljseditor/quicktoolbar.cpp @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include #include @@ -327,24 +327,7 @@ void QuickToolBar::setProperty(const QString &propertyName, const QVariant &valu m_editor->convertPosition(changeSetPos, &line, &column); //get line m_editor->convertPosition(changeSetPos + changeSetLength, &endLine, &column); //get line - if (line > 0) { - TextEditor::TabSettings ts = m_editor->baseTextDocument()->tabSettings(); - QmlJSIndenter indenter; - indenter.setTabSize(ts.m_tabSize); - indenter.setIndentSize(ts.m_indentSize); - - for (int i=line;i<=endLine;i++) { - QTextBlock start = m_editor->baseTextDocument()->document()->findBlockByNumber(i); - QTextBlock end = m_editor->baseTextDocument()->document()->findBlockByNumber(i); - - if (end.isValid()) { - const int indent = indenter.indentForBottomLine(m_editor->baseTextDocument() - ->document()->begin(), - end.next(), QChar::Null); - ts.indentLine(start, indent); - } - } - } + indentLines(line, endLine); tc.endEditBlock(); } } @@ -439,6 +422,21 @@ void QuickToolBar::onEnabledChanged(bool b) settings.set(); } +void QuickToolBar::indentLines(int startLine, int endLine) +{ + if (startLine > 0) { + TextEditor::TabSettings tabSettings = m_editor->baseTextDocument()->tabSettings(); + for (int i = startLine; i <= endLine; i++) { + QTextBlock start = m_editor->editorWidget()->document()->findBlockByNumber(i); + + if (start.isValid()) { + QmlJSEditor::Internal::Indenter indenterMy; + indenterMy.indentBlock(m_editor->editorWidget()->document(), start, QChar::Null, tabSettings); + } + } + } +} + ContextPaneWidget* QuickToolBar::contextWidget() { if (m_widget.isNull()) { //lazily recreate widget diff --git a/src/plugins/qmljseditor/quicktoolbar.h b/src/plugins/qmljseditor/quicktoolbar.h index 37a4f407ffe..46e10abb815 100644 --- a/src/plugins/qmljseditor/quicktoolbar.h +++ b/src/plugins/qmljseditor/quicktoolbar.h @@ -62,6 +62,8 @@ public slots: void onEnabledChanged(bool); private: + void indentLines(int startLine, int endLine); + QmlEditorWidgets::ContextPaneWidget* contextWidget(); QPointer m_widget; QmlJS::Document::Ptr m_doc;