From 3dd019461d5c64afbb138c0cf1ca518afa290b26 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 21 Mar 2011 18:02:48 +0100 Subject: [PATCH 01/42] Fix MSVC version for 6.x Windows SDKs &.0 is using MSVC2005, all later versions starting with 6.0a are using MSVC2008. --- src/plugins/projectexplorer/msvctoolchain.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 4ad8d7d631c..bcc1c92039a 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -103,16 +103,18 @@ static Abi findAbiOfMsvc(MsvcToolChain::Type type, MsvcToolChain::Platform platf QString msvcVersionString = version; if (type == MsvcToolChain::WindowsSDK) { - if (version.startsWith("7.")) - msvcVersionString = "10.0"; - else if (version.startsWith("6.1")) - msvcVersionString = "9.0"; + if (version.startsWith(QLatin1String("7."))) + msvcVersionString = QLatin1String("10.0"); + else if (version.startsWith(QLatin1String("6.1")) + || (version.startsWith(QLatin1String("6.0")) && version != QLatin1String("6.0"))) + // The 6.0 SDK is shipping MSVC2005, Starting at 6.0a it is MSVC2008. + msvcVersionString = QLatin1String("9.0"); else - msvcVersionString = "8.0"; + msvcVersionString = QLatin1String("8.0"); } - if (msvcVersionString.startsWith("10.")) + if (msvcVersionString.startsWith(QLatin1String("10."))) flavor = Abi::WindowsMsvc2010Flavor; - else if (msvcVersionString.startsWith("9.")) + else if (msvcVersionString.startsWith(QLatin1String("9."))) flavor = Abi::WindowsMsvc2008Flavor; else flavor = Abi::WindowsMsvc2005Flavor; From dcae06a5c5833460767caca27cd3962974a94abb Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 21 Mar 2011 18:04:24 +0100 Subject: [PATCH 02/42] Unit test for Abi::abisOfBinary(...) --- src/plugins/projectexplorer/abi.cpp | 124 ++++++++++++++++-- src/plugins/projectexplorer/projectexplorer.h | 3 + 2 files changed, 119 insertions(+), 8 deletions(-) diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index 8e363d69234..dc4dfda6813 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -141,6 +141,9 @@ static QList abiOf(const QByteArray &data) case 21: // EM_PPC64 result.append(Abi(Abi::PowerPCArchitecture, Abi::LinuxOS, Abi::GenericLinuxFlavor, Abi::ElfFormat, 64)); break; + case 40: // EM_ARM + result.append(Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::GenericLinuxFlavor, Abi::ElfFormat, 32)); + break; case 62: // EM_X86_64 result.append(Abi(Abi::X86Architecture, Abi::LinuxOS, Abi::GenericLinuxFlavor, Abi::ElfFormat, 64)); break; @@ -171,6 +174,10 @@ static QList abiOf(const QByteArray &data) result.append(macAbiForCpu(type)); pos += 20; } + } else if (data.size() >= 20 + && static_cast(data.at(16)) == 'E' && static_cast(data.at(17)) == 'P' + && static_cast(data.at(18)) == 'O' && static_cast(data.at(19)) == 'C') { + result.append(Abi(Abi::ArmArchitecture, Abi::SymbianOS, Abi::SymbianDeviceFlavor, Abi::ElfFormat, 32)); } else { // Windows PE // Windows can have its magic bytes everywhere... @@ -492,13 +499,13 @@ Abi Abi::hostAbi() QList Abi::abisOfBinary(const QString &path) { - QList result; + QList tmp; if (path.isEmpty()) - return result; + return tmp; QFile f(path); if (!f.exists()) - return result; + return tmp; bool windowsStatic = path.endsWith(QLatin1String(".lib")); @@ -509,7 +516,7 @@ QList Abi::abisOfBinary(const QString &path) && static_cast(data.at(2)) == 'a' && static_cast(data.at(3)) == 'r' && static_cast(data.at(4)) == 'c' && static_cast(data.at(5)) == 'h' && static_cast(data.at(6)) == '>' && static_cast(data.at(7)) == 0x0a) { - // We got an ar file: possibly a static lib for ELF or Mach-O + // We got an ar file: possibly a static lib for ELF, PE or Mach-O data = data.mid(8); // Cut of ar file magic quint64 offset = 8; @@ -530,22 +537,123 @@ QList Abi::abisOfBinary(const QString &path) offset += fileLength.toInt() + 60 /* header */; if (windowsStatic) { if (fileName == QLatin1String("/0 ")) - result = parseCoffHeader(data.mid(toSkip, 20)); + tmp = parseCoffHeader(data.mid(toSkip, 20)); } else { - result = abiOf(data.mid(toSkip)); + tmp.append(abiOf(data.mid(toSkip))); } - if (!result.isEmpty()) + if (!tmp.isEmpty() + && tmp.at(0).binaryFormat() != Abi::MachOFormat) break; f.seek(offset + (offset % 2)); // ar is 2 byte alligned data = f.read(1024); } } else { - result = abiOf(data); + tmp = abiOf(data); } f.close(); + // Remove duplicates: + QList result; + foreach (const Abi &a, tmp) { + if (!result.contains(a)) + result.append(a); + } + return result; } } // namespace ProjectExplorer + +// Unit tests: +#ifdef WITH_TESTS +# include +# include + +# include "projectexplorer.h" + +void ProjectExplorer::ProjectExplorerPlugin::testAbiOfBinary_data() +{ + QTest::addColumn("file"); + QTest::addColumn("abis"); + + QTest::newRow("no file") + << QString() + << (QStringList()); + QTest::newRow("non existing file") + << QString::fromLatin1("/does/not/exist") + << (QStringList()); + + // Set up prefix for test data now that we can be sure to have some tests to run: + QString prefix = qgetenv("QTC_TEST_EXTRADATALOCATION"); + if (prefix.isEmpty()) + return; + QFileInfo fi(prefix); + if (!fi.exists() || !fi.isDir()) + return; + prefix = fi.absoluteFilePath(); + + QTest::newRow("text file") + << QString::fromLatin1("%1/broken/text.txt").arg(prefix) + << (QStringList()); + + QTest::newRow("static QtCore: win msvc2008") + << QString::fromLatin1("%1/abi/static/win_msvc2008_release.lib").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-unknown-pe-32bit")); + QTest::newRow("static QtCore: win msvc2008 (debug)") + << QString::fromLatin1("%1/abi/static/win_msvc2008_debug.lib").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-unknown-pe-32bit")); + QTest::newRow("static QtCore: mac (debug)") + << QString::fromLatin1("%1/abi/static/mac-32bit-debug.a").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-macos-generic-mach_o-32bit")); + QTest::newRow("static QtCore: linux 32bit") + << QString::fromLatin1("%1/abi/static/linux-32bit-release.a").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-linux-generic-elf-32bit")); + QTest::newRow("static QtCore: linux 64bit") + << QString::fromLatin1("%1/abi/static/linux-64bit-release.a").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-linux-generic-elf-64bit")); + + QTest::newRow("static stdc++: mac fat") + << QString::fromLatin1("%1/abi/static/mac-fat.a").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-macos-generic-mach_o-32bit") + << QString::fromLatin1("ppc-macos-generic-mach_o-32bit") + << QString::fromLatin1("x86-macos-generic-mach_o-64bit")); + + QTest::newRow("dynamic QtCore: symbian") + << QString::fromLatin1("%1/abi/dynamic/symbian.dll").arg(prefix) + << (QStringList() << QString::fromLatin1("arm-symbian-device-elf-32bit")); + QTest::newRow("dynamic QtCore: win msvc2010 64bit") + << QString::fromLatin1("%1/abi/dynamic/win-msvc2010-64bit.dll").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-msvc2010-pe-64bit")); + QTest::newRow("dynamic QtCore: win msvc2008 32bit") + << QString::fromLatin1("%1/abi/dynamic/win-msvc2008-32bit.dll").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-msvc2008-pe-32bit")); + QTest::newRow("dynamic QtCore: win msvc2005 32bit") + << QString::fromLatin1("%1/abi/dynamic/win-msvc2005-32bit.dll").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-msvc2005-pe-32bit")); + QTest::newRow("dynamic QtCore: win msys 32bit") + << QString::fromLatin1("%1/abi/dynamic/win-mingw-32bit.dll").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-msys-pe-32bit")); + QTest::newRow("dynamic QtCore: win msys 32bit") + << QString::fromLatin1("%1/abi/dynamic/win-mingw-32bit.dll").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-windows-msys-pe-32bit")); + QTest::newRow("static stdc++: mac fat") + << QString::fromLatin1("%1/abi/dynamic/mac-fat.dylib").arg(prefix) + << (QStringList() << QString::fromLatin1("x86-macos-generic-mach_o-32bit") + << QString::fromLatin1("ppc-macos-generic-mach_o-32bit") + << QString::fromLatin1("x86-macos-generic-mach_o-64bit")); + +} + +void ProjectExplorer::ProjectExplorerPlugin::testAbiOfBinary() +{ + QFETCH(QString, file); + QFETCH(QStringList, abis); + + QList result = Abi::abisOfBinary(file); + QCOMPARE(result.count(), abis.count()); + for (int i = 0; i < abis.count(); ++i) + QCOMPARE(result.at(i).toString(), abis.at(i)); +} + +#endif diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index f7c66b53a54..8b8ca79402e 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -236,6 +236,9 @@ private slots: void testGccAbiGuessing_data(); void testGccAbiGuessing(); + + void testAbiOfBinary_data(); + void testAbiOfBinary(); #endif private: From 919acf578673cbb0c75b53ccd21615df513ac8cc Mon Sep 17 00:00:00 2001 From: dt Date: Mon, 21 Mar 2011 18:27:54 +0100 Subject: [PATCH 03/42] ProjectExplorer: Move dependencies update a little further up Task-Nr: QTCREATORBUG-4168 --- src/plugins/projectexplorer/session.cpp | 41 +++++++++++++------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 306e933cf37..0f11fe7b2ae 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -873,26 +873,6 @@ void SessionManager::removeProjects(QList remove) emit aboutToRemoveProject(pro); } - // TODO: Clear m_modelProjectHash - - // Delete projects - foreach (Project *pro, remove) { - pro->saveSettings(); - m_file->m_projects.removeOne(pro); - - if (pro == m_file->m_startupProject) - setStartupProject(0); - - disconnect(pro, SIGNAL(fileListChanged()), - this, SLOT(clearProjectFileCache())); - m_projectFileCache.remove(pro); - - if (debug) - qDebug() << "SessionManager - emitting projectRemoved(" << pro->displayName() << ")"; - m_sessionNode->removeProjectNode(pro->rootProjectNode()); - emit projectRemoved(pro); - delete pro; - } // Refresh dependencies QSet projectFiles; @@ -915,6 +895,27 @@ void SessionManager::removeProjects(QList remove) m_file->m_depMap = resMap; + // TODO: Clear m_modelProjectHash + + // Delete projects + foreach (Project *pro, remove) { + pro->saveSettings(); + m_file->m_projects.removeOne(pro); + + if (pro == m_file->m_startupProject) + setStartupProject(0); + + disconnect(pro, SIGNAL(fileListChanged()), + this, SLOT(clearProjectFileCache())); + m_projectFileCache.remove(pro); + + if (debug) + qDebug() << "SessionManager - emitting projectRemoved(" << pro->displayName() << ")"; + m_sessionNode->removeProjectNode(pro->rootProjectNode()); + emit projectRemoved(pro); + delete pro; + } + if (startupProject() == 0) if (!m_file->m_projects.isEmpty()) setStartupProject(m_file->m_projects.first()); From 428520d8eb1f60e2322411027805e8f4c6903c28 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 21 Mar 2011 20:24:18 +0100 Subject: [PATCH 04/42] don't include zero terminator into the string fixes "run in terminal" and potentially numerous other bugs. Task-number: QTCREATORBUG-4012 --- src/libs/utils/winutils.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp index 073aacfe54a..80ea37134b8 100644 --- a/src/libs/utils/winutils.cpp +++ b/src/libs/utils/winutils.cpp @@ -160,7 +160,7 @@ QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name, QString *er return name; QScopedArrayPointer buffer(new TCHAR[length]); (*getShortPathNameW)(nameC, buffer.data(), length); - const QString rc = QString::fromUtf16(reinterpret_cast(buffer.data()), length); + const QString rc = QString::fromUtf16(reinterpret_cast(buffer.data()), length - 1); return rc; } @@ -192,7 +192,7 @@ QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name, QString *err return name; QScopedArrayPointer buffer(new TCHAR[length]); (*getLongPathNameW)(nameC, buffer.data(), length); - const QString rc = QString::fromUtf16(reinterpret_cast(buffer.data()), length); + const QString rc = QString::fromUtf16(reinterpret_cast(buffer.data()), length - 1); return rc; } From feff022186ff03d65e030f25497df313045c46ab Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 21 Mar 2011 20:34:39 +0100 Subject: [PATCH 05/42] dispose of dynamic resolution of GetLongPathNameW and GetShortPathNameW everything links to kernel32 anyway --- src/libs/utils/winutils.cpp | 44 +++---------------- src/libs/utils/winutils.h | 6 +-- .../applicationlauncher_win.cpp | 6 +-- .../qmlprojectrunconfiguration.cpp | 5 +-- 4 files changed, 12 insertions(+), 49 deletions(-) diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp index 80ea37134b8..2c4bb30de66 100644 --- a/src/libs/utils/winutils.cpp +++ b/src/libs/utils/winutils.cpp @@ -132,66 +132,34 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t, return rc; } -QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name, QString *errorMessage) +QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name) { - typedef DWORD (APIENTRY *GetShortPathNameProtoType)(LPCTSTR, LPTSTR, DWORD); - if (name.isEmpty()) return name; - const char *kernel32DLLC = "kernel32.dll"; - - QLibrary kernel32Lib(kernel32DLLC, 0); - if (!kernel32Lib.isLoaded() && !kernel32Lib.load()) { - *errorMessage = msgCannotLoad(kernel32DLLC, kernel32Lib.errorString()); - return QString(); - } - - // MinGW requires old-style casts - GetShortPathNameProtoType getShortPathNameW = (GetShortPathNameProtoType)(kernel32Lib.resolve("GetShortPathNameW")); - if (!getShortPathNameW) { - *errorMessage = msgCannotResolve(kernel32DLLC); - return QString(); - } // Determine length, then convert. const LPCTSTR nameC = reinterpret_cast(name.utf16()); // MinGW - const DWORD length = (*getShortPathNameW)(nameC, NULL, 0); + const DWORD length = GetShortPathNameW(nameC, NULL, 0); if (length == 0) return name; QScopedArrayPointer buffer(new TCHAR[length]); - (*getShortPathNameW)(nameC, buffer.data(), length); + GetShortPathNameW(nameC, buffer.data(), length); const QString rc = QString::fromUtf16(reinterpret_cast(buffer.data()), length - 1); return rc; } -QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name, QString *errorMessage) +QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name) { - typedef DWORD (APIENTRY *GetLongPathNameProtoType)(LPCTSTR, LPTSTR, DWORD); - if (name.isEmpty()) return name; - const char *kernel32DLLC = "kernel32.dll"; - - QLibrary kernel32Lib(kernel32DLLC, 0); - if (!kernel32Lib.isLoaded() && !kernel32Lib.load()) { - *errorMessage = msgCannotLoad(kernel32DLLC, kernel32Lib.errorString()); - return QString(); - } - - // MinGW requires old-style casts - GetLongPathNameProtoType getLongPathNameW = (GetLongPathNameProtoType)(kernel32Lib.resolve("GetLongPathNameW")); - if (!getLongPathNameW) { - *errorMessage = msgCannotResolve(kernel32DLLC); - return QString(); - } // Determine length, then convert. const LPCTSTR nameC = reinterpret_cast(name.utf16()); // MinGW - const DWORD length = (*getLongPathNameW)(nameC, NULL, 0); + const DWORD length = GetLongPathNameW(nameC, NULL, 0); if (length == 0) return name; QScopedArrayPointer buffer(new TCHAR[length]); - (*getLongPathNameW)(nameC, buffer.data(), length); + GetLongPathNameW(nameC, buffer.data(), length); const QString rc = QString::fromUtf16(reinterpret_cast(buffer.data()), length - 1); return rc; } diff --git a/src/libs/utils/winutils.h b/src/libs/utils/winutils.h index b32c88c86d1..817717d39a9 100644 --- a/src/libs/utils/winutils.h +++ b/src/libs/utils/winutils.h @@ -55,12 +55,10 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t, QString *errorMessage); // Return the short (8.3) file name -QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name, - QString *errorMessage); +QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name); // Returns long name -QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name, - QString *errorMessage); +QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name); QTCREATOR_UTILS_EXPORT unsigned long winQPidToPid(const Q_PID qpid); diff --git a/src/plugins/projectexplorer/applicationlauncher_win.cpp b/src/plugins/projectexplorer/applicationlauncher_win.cpp index d383ec9e0a1..56c53ed20fc 100644 --- a/src/plugins/projectexplorer/applicationlauncher_win.cpp +++ b/src/plugins/projectexplorer/applicationlauncher_win.cpp @@ -71,11 +71,9 @@ ApplicationLauncher::~ApplicationLauncher() void ApplicationLauncher::setWorkingDirectory(const QString &dir) { - QString fixedPath = dir; - QString error; - // Work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch' ...) - const QString longPath = Utils::getLongPathName(dir, &error); + QString fixedPath = dir; + const QString longPath = Utils::getLongPathName(dir); if (!longPath.isEmpty()) fixedPath = longPath; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index e51367318ea..6106a975ed7 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -188,12 +188,11 @@ QString QmlProjectRunConfiguration::canonicalCapsPath(const QString &fileName) QString canonicalPath = QFileInfo(fileName).canonicalFilePath(); #if defined(Q_OS_WIN32) - QString error; // don't know whether the shortpath step is really needed, // but we do this in QtDeclarative too. - QString path = Utils::getShortPathName(canonicalPath, &error); + QString path = Utils::getShortPathName(canonicalPath); if (!path.isEmpty()) - path = Utils::getLongPathName(canonicalPath, &error); + path = Utils::getLongPathName(canonicalPath); if (!path.isEmpty()) canonicalPath = path; #endif From bd35f599f92bae35a07d8c3ee8eb8d74c14ee674 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Mar 2011 10:24:33 +0100 Subject: [PATCH 06/42] debugger: code cosmetics, fix warnings --- src/plugins/debugger/breakpoint.cpp | 24 ++++++------ .../debuggersourcepathmappingwidget.cpp | 39 +++++++++++-------- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp index 8fd4178d710..8a6c69b5ddc 100644 --- a/src/plugins/debugger/breakpoint.cpp +++ b/src/plugins/debugger/breakpoint.cpp @@ -91,25 +91,25 @@ QString BreakpointParameters::toString() const QTextStream ts(&result); ts << "Type: " << type; switch (type) { - break; - case Debugger::Internal::BreakpointByFileAndLine: + case BreakpointByFileAndLine: ts << " FileName: " << fileName << ':' << lineNumber << " PathUsage: " << pathUsage; break; - case Debugger::Internal::BreakpointByFunction: + case BreakpointByFunction: ts << " FunctionName: " << functionName; break; - case Debugger::Internal::BreakpointByAddress: - case Debugger::Internal::Watchpoint: + case BreakpointByAddress: + case Watchpoint: ts << " Address: " << address; break; - case Debugger::Internal::BreakpointAtThrow: - case Debugger::Internal::BreakpointAtCatch: - case Debugger::Internal::BreakpointAtMain: - case Debugger::Internal::BreakpointAtFork: - case Debugger::Internal::BreakpointAtExec: - case Debugger::Internal::BreakpointAtVFork: - case Debugger::Internal::BreakpointAtSysCall: + case BreakpointAtThrow: + case BreakpointAtCatch: + case BreakpointAtMain: + case BreakpointAtFork: + case BreakpointAtExec: + case BreakpointAtVFork: + case BreakpointAtSysCall: + case UnknownType: break; } ts << (enabled ? " [enabled]" : " [disabled]"); diff --git a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp index 94ff0473c7a..cfa813b81cd 100644 --- a/src/plugins/debugger/debuggersourcepathmappingwidget.cpp +++ b/src/plugins/debugger/debuggersourcepathmappingwidget.cpp @@ -53,14 +53,15 @@ // Qt's various build paths for unpatched versions. #if defined(Q_OS_WIN) -static const char* qtBuildPaths[] = { -"C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.6/qt", -"C:/iwmake/build_mingw_opensource", -"C:/ndk_buildrepos/qt-desktop/src"}; +static const char *qtBuildPaths[] = { + "C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.6/qt", + "C:/iwmake/build_mingw_opensource", + "C:/ndk_buildrepos/qt-desktop/src" +}; #elif defined(Q_OS_MAC) -static const char* qtBuildPaths[] = {}; +static const char *qtBuildPaths[] = {}; #else -static const char* qtBuildPaths[] = {"/var/tmp/qt-src"}; +static const char *qtBuildPaths[] = {"/var/tmp/qt-src"}; #endif enum { SourceColumn, TargetColumn, ColumnCount }; @@ -85,7 +86,7 @@ public: explicit SourcePathMappingModel(QObject *parent); SourcePathMap sourcePathMap() const; - void setSourcePathMap(const SourcePathMap&); + void setSourcePathMap(const SourcePathMap &map); Mapping mappingAt(int row) const; bool isNewPlaceHolderAt(int row) { return isNewPlaceHolder(rawMappingAt(row)); } @@ -114,7 +115,8 @@ SourcePathMappingModel::SourcePathMappingModel(QObject *parent) : m_newTargetPlaceHolder(DebuggerSourcePathMappingWidget::tr("")) { QStringList headers; - headers << DebuggerSourcePathMappingWidget::tr("Source path") << DebuggerSourcePathMappingWidget::tr("Target path"); + headers.append(DebuggerSourcePathMappingWidget::tr("Source path")); + headers.append(DebuggerSourcePathMappingWidget::tr("Target path")); setHorizontalHeaderLabels(headers); } @@ -122,7 +124,7 @@ SourcePathMappingModel::SourcePathMap SourcePathMappingModel::sourcePathMap() co { SourcePathMap rc; const int rows = rowCount(); - for (int r = 0; r < rows; r++) { + for (int r = 0; r != rows; ++r) { const QPair m = mappingAt(r); // Skip placeholders. if (!m.first.isEmpty() && !m.second.isEmpty()) rc.insert(m.first, m.second); @@ -135,9 +137,13 @@ bool SourcePathMappingModel::isNewPlaceHolder(const Mapping &m) const { const QLatin1Char lessThan('<'); const QLatin1Char greaterThan('<'); - return m.first.isEmpty() || m.first.startsWith(lessThan) || m.first.endsWith(greaterThan) + return m.first.isEmpty() + || m.first.startsWith(lessThan) + || m.first.endsWith(greaterThan) || m.first == m_newSourcePlaceHolder - || m.second.isEmpty() || m.second.startsWith(lessThan) || m.second.endsWith(greaterThan) + || m.second.isEmpty() + || m.second.startsWith(lessThan) + || m.second.endsWith(greaterThan) || m.second == m_newTargetPlaceHolder; } @@ -241,7 +247,8 @@ DebuggerSourcePathMappingWidget::DebuggerSourcePathMappingWidget(QWidget *parent connect(m_sourceLineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotEditSourceFieldChanged())); connect(m_targetChooser, SIGNAL(changed(QString)), this, SLOT(slotEditTargetFieldChanged())); QFormLayout *editLayout = new QFormLayout; - const QString sourceToolTip = tr("The source path contained in the executable's debug information as reported by the debugger"); + const QString sourceToolTip = tr("The source path contained in the " + "executable's debug information as reported by the debugger"); QLabel *editSourceLabel = new QLabel(tr("&Source path:")); editSourceLabel->setToolTip(sourceToolTip); m_sourceLineEdit->setToolTip(sourceToolTip); @@ -342,8 +349,8 @@ void DebuggerSourcePathMappingWidget::slotAddQt() const QString qtSourcesPath = QFileDialog::getExistingDirectory(this, tr("Qt Sources")); if (qtSourcesPath.isEmpty()) return; - const size_t buildPathCount = sizeof(qtBuildPaths)/sizeof(const char *); - for (size_t i = 0; i < buildPathCount; i++) + const size_t buildPathCount = sizeof(qtBuildPaths)/sizeof(qtBuildPaths[0]); + for (size_t i = 0; i != buildPathCount; ++i) m_model->addMapping(QString::fromLatin1(qtBuildPaths[i]), qtSourcesPath); resizeColumns(); setCurrentRow(m_model->rowCount() - 1); @@ -381,11 +388,11 @@ DebuggerSourcePathMappingWidget::SourcePathMap const SourcePathMap &in) { SourcePathMap rc = in; - const size_t buildPathCount = sizeof(qtBuildPaths)/sizeof(const char *); + const size_t buildPathCount = sizeof(qtBuildPaths)/sizeof(qtBuildPaths[0]); if (qtInstallPath.isEmpty() || buildPathCount == 0) return rc; - for (size_t i = 0; i < buildPathCount; i++) { + for (size_t i = 0; i != buildPathCount; i++) { const QString buildPath = QString::fromLatin1(qtBuildPaths[i]); if (!rc.contains(buildPath)) // Do not overwrite user settings. rc.insert(buildPath, qtInstallPath); From bc8d61ef2cfec503be62d28e70dc39a984ba8e0c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Mar 2011 10:22:55 +0100 Subject: [PATCH 07/42] Debugger: Search all MSVC toolchains. Reviewed-by: Tobias Hunger --- src/plugins/debugger/debuggerplugin.cpp | 40 +++++++++++++++---------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index cf30cbd1fe4..030fd0f1a4a 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -2455,34 +2455,44 @@ void DebuggerPluginPrivate::remoteCommand(const QStringList &options, QString DebuggerPluginPrivate::debuggerForAbi(const Abi &abi, DebuggerEngineType et) const { enum { debug = 0 }; - Abi searchAbi = abi; + QList searchAbis; + searchAbis.push_back(abi); // Pick the right tool chain in case cdb/gdb were started with other tool chains. // Also, lldb should be preferred over gdb. - if (searchAbi.os() == ProjectExplorer::Abi::WindowsOS) { + if (abi.os() == ProjectExplorer::Abi::WindowsOS) { switch (et) { case CdbEngineType: - searchAbi = Abi(abi.architecture(), abi.os(), Abi::WindowsMsvc2010Flavor, - abi.binaryFormat(), abi.wordWidth()); + searchAbis.clear(); + searchAbis.push_back(Abi(abi.architecture(), abi.os(), Abi::WindowsMsvc2010Flavor, + abi.binaryFormat(), abi.wordWidth())); + searchAbis.push_back(Abi(abi.architecture(), abi.os(), Abi::WindowsMsvc2008Flavor, + abi.binaryFormat(), abi.wordWidth())); + searchAbis.push_back(Abi(abi.architecture(), abi.os(), Abi::WindowsMsvc2005Flavor, + abi.binaryFormat(), abi.wordWidth())); break; case GdbEngineType: - searchAbi = Abi(abi.architecture(), abi.os(), Abi::WindowsMSysFlavor, - abi.binaryFormat(), abi.wordWidth()); + searchAbis.clear(); + searchAbis.push_back(Abi(abi.architecture(), abi.os(), Abi::WindowsMSysFlavor, + abi.binaryFormat(), abi.wordWidth())); break; default: break; } } if (debug) - qDebug() << "debuggerForAbi" << abi.toString() << searchAbi.toString() << et; + qDebug() << "debuggerForAbi" << abi.toString() << searchAbis.size() + << searchAbis.front().toString() << et; - const QList toolchains = ToolChainManager::instance()->findToolChains(searchAbi); - // Find manually configured ones first - for (int i = toolchains.size() - 1; i >= 0; i--) { - const QString debugger = toolchains.at(i)->debuggerCommand(); - if (debug) - qDebug() << i << toolchains.at(i)->displayName() << debugger; - if (!debugger.isEmpty()) - return debugger; + foreach (const Abi &searchAbi, searchAbis) { + const QList toolchains = ToolChainManager::instance()->findToolChains(searchAbi); + // Find manually configured ones first + for (int i = toolchains.size() - 1; i >= 0; i--) { + const QString debugger = toolchains.at(i)->debuggerCommand(); + if (debug) + qDebug() << i << toolchains.at(i)->displayName() << debugger; + if (!debugger.isEmpty()) + return debugger; + } } return QString(); } From 42b4e6c8f1e06539bc80319f23ad452eb6ddb3e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Wed, 16 Mar 2011 19:59:49 +0100 Subject: [PATCH 08/42] Observer: Fixed synchronization of animation speed and paused state The menus of the Observer were not being updated correctly when animation speed was changed or when the animations were paused. Now the whole thing looks a bit cleaner and the Observer menu uses the QDeclarativeViewObserver to change these settings and stays in sync when they change from other places. Reviewed-by: Kai Koehne --- .../qml/qmljsdebugger/editor/qmltoolbar.cpp | 141 ++++++------------ .../qml/qmljsdebugger/editor/qmltoolbar.h | 26 ++-- .../include/qdeclarativeviewobserver.h | 12 +- .../qdeclarativeobserverservice.cpp | 1 - .../qdeclarativeviewobserver.cpp | 75 +++++----- .../qdeclarativeviewobserver_p.h | 2 +- .../qtcreator/qml/qmlobserver/qmlruntime.cpp | 51 +++---- share/qtcreator/qml/qmlobserver/qmlruntime.h | 6 +- 8 files changed, 126 insertions(+), 188 deletions(-) diff --git a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp index 29628c4c31b..942a6ada10e 100644 --- a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp @@ -46,9 +46,8 @@ namespace QmlJSDebugger { QmlToolBar::QmlToolBar(QWidget *parent) : QToolBar(parent) , m_emitSignals(true) - , m_isRunning(false) + , m_paused(false) , m_animationSpeed(1.0f) - , m_previousAnimationSpeed(0.0f) , ui(new Ui) { ui->playIcon = QIcon(QLatin1String(":/qml/images/play-24.png")); @@ -99,40 +98,35 @@ QmlToolBar::QmlToolBar(QWidget *parent) setWindowFlags(Qt::Tool); QMenu *playSpeedMenu = new QMenu(this); - QActionGroup *playSpeedMenuActions = new QActionGroup(this); - playSpeedMenuActions->setExclusive(true); - playSpeedMenu->addAction(tr("Animation Speed")); - playSpeedMenu->addSeparator(); - ui->defaultAnimSpeedAction = playSpeedMenu->addAction(tr("1x"), this, - SLOT(changeToDefaultAnimSpeed())); - ui->defaultAnimSpeedAction->setCheckable(true); - ui->defaultAnimSpeedAction->setChecked(true); - playSpeedMenuActions->addAction(ui->defaultAnimSpeedAction); + ui->playSpeedMenuActions = new QActionGroup(this); + ui->playSpeedMenuActions->setExclusive(true); - ui->halfAnimSpeedAction = playSpeedMenu->addAction(tr("0.5x"), this, - SLOT(changeToHalfAnimSpeed())); - ui->halfAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(ui->halfAnimSpeedAction); + QAction *speedAction = playSpeedMenu->addAction(tr("1x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setChecked(true); + speedAction->setData(1.0f); + ui->playSpeedMenuActions->addAction(speedAction); - ui->fourthAnimSpeedAction = playSpeedMenu->addAction(tr("0.25x"), this, - SLOT(changeToFourthAnimSpeed())); - ui->fourthAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(ui->fourthAnimSpeedAction); + speedAction = playSpeedMenu->addAction(tr("0.5x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(2.0f); + ui->playSpeedMenuActions->addAction(speedAction); - ui->eighthAnimSpeedAction = playSpeedMenu->addAction(tr("0.125x"), this, - SLOT(changeToEighthAnimSpeed())); - ui->eighthAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(ui->eighthAnimSpeedAction); + speedAction = playSpeedMenu->addAction(tr("0.25x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(4.0f); + ui->playSpeedMenuActions->addAction(speedAction); - ui->tenthAnimSpeedAction = playSpeedMenu->addAction(tr("0.1x"), this, - SLOT(changeToTenthAnimSpeed())); - ui->tenthAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(ui->tenthAnimSpeedAction); + speedAction = playSpeedMenu->addAction(tr("0.125x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(8.0f); + ui->playSpeedMenuActions->addAction(speedAction); + + speedAction = playSpeedMenu->addAction(tr("0.1x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(10.0f); + ui->playSpeedMenuActions->addAction(speedAction); - ui->menuPauseAction = playSpeedMenu->addAction(tr("Pause"), this, SLOT(updatePauseAction())); - ui->menuPauseAction->setCheckable(true); - ui->menuPauseAction->setIcon(ui->pauseIcon); - playSpeedMenuActions->addAction(ui->menuPauseAction); ui->play->setMenu(playSpeedMenu); connect(ui->designmode, SIGNAL(toggled(bool)), SLOT(setDesignModeBehaviorOnClick(bool))); @@ -183,63 +177,40 @@ void QmlToolBar::activateZoom() m_emitSignals = true; } -void QmlToolBar::setAnimationSpeed(qreal slowdownFactor) +void QmlToolBar::setAnimationSpeed(qreal slowDownFactor) { - m_emitSignals = false; - if (slowdownFactor != 0) { - m_animationSpeed = slowdownFactor; + if (m_animationSpeed == slowDownFactor) + return; - if (slowdownFactor == 1.0f) { - ui->defaultAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 2.0f) { - ui->halfAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 4.0f) { - ui->fourthAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 8.0f) { - ui->eighthAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 10.0f) { - ui->tenthAnimSpeedAction->setChecked(true); + m_emitSignals = false; + m_animationSpeed = slowDownFactor; + + foreach (QAction *action, ui->playSpeedMenuActions->actions()) { + if (action->data().toReal() == slowDownFactor) { + action->setChecked(true); + break; } - updatePlayAction(); - } else { - ui->menuPauseAction->setChecked(true); - updatePauseAction(); } m_emitSignals = true; } -void QmlToolBar::changeToDefaultAnimSpeed() +void QmlToolBar::setExecutionPaused(bool paused) { - m_animationSpeed = 1.0f; + if (m_paused == paused) + return; + + m_paused = paused; updatePlayAction(); } -void QmlToolBar::changeToHalfAnimSpeed() +void QmlToolBar::changeAnimationSpeed() { - m_animationSpeed = 2.0f; - updatePlayAction(); + QAction *action = qobject_cast(sender()); + m_animationSpeed = action->data().toReal(); + emit animationSpeedChanged(m_animationSpeed); } -void QmlToolBar::changeToFourthAnimSpeed() -{ - m_animationSpeed = 4.0f; - updatePlayAction(); -} - -void QmlToolBar::changeToEighthAnimSpeed() -{ - m_animationSpeed = 8.0f; - updatePlayAction(); -} - -void QmlToolBar::changeToTenthAnimSpeed() -{ - m_animationSpeed = 10.0f; - updatePlayAction(); -} - - void QmlToolBar::setDesignModeBehavior(bool inDesignMode) { m_emitSignals = false; @@ -268,30 +239,14 @@ void QmlToolBar::setColorBoxColor(const QColor &color) void QmlToolBar::activatePlayOnClick() { - if (m_isRunning) { - updatePauseAction(); - } else { - updatePlayAction(); - } + m_paused = !m_paused; + emit executionPausedChanged(m_paused); + updatePlayAction(); } void QmlToolBar::updatePlayAction() { - m_isRunning = true; - ui->play->setIcon(ui->pauseIcon); - if (m_animationSpeed != m_previousAnimationSpeed) - m_previousAnimationSpeed = m_animationSpeed; - - if (m_emitSignals) - emit animationSpeedChanged(m_animationSpeed); -} - -void QmlToolBar::updatePauseAction() -{ - m_isRunning = false; - ui->play->setIcon(ui->playIcon); - if (m_emitSignals) - emit animationSpeedChanged(0.0f); + ui->play->setIcon(m_paused ? ui->playIcon : ui->pauseIcon); } void QmlToolBar::activateColorPickerOnClick() diff --git a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h index 2eecc586e84..de2186956b4 100644 --- a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h +++ b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h @@ -39,6 +39,8 @@ #include "qmlobserverconstants.h" +QT_FORWARD_DECLARE_CLASS(QActionGroup) + namespace QmlJSDebugger { class ToolBarColorBox; @@ -58,10 +60,13 @@ public slots: void activateSelectTool(); void activateMarqueeSelectTool(); void activateZoom(); - void setAnimationSpeed(qreal slowdownFactor = 0.0f); + + void setAnimationSpeed(qreal slowDownFactor); + void setExecutionPaused(bool paused); signals: - void animationSpeedChanged(qreal slowdownFactor = 1.0f); + void animationSpeedChanged(qreal factor); + void executionPausedChanged(bool paused); void designModeBehaviorChanged(bool inDesignMode); void colorPickerSelected(); @@ -83,14 +88,9 @@ private slots: void activateFromQml(); void activateToQml(); - void changeToDefaultAnimSpeed(); - void changeToHalfAnimSpeed(); - void changeToFourthAnimSpeed(); - void changeToEighthAnimSpeed(); - void changeToTenthAnimSpeed(); + void changeAnimationSpeed(); void updatePlayAction(); - void updatePauseAction(); private: class Ui { @@ -107,18 +107,12 @@ private: QIcon pauseIcon; ToolBarColorBox *colorBox; - QAction *defaultAnimSpeedAction; - QAction *halfAnimSpeedAction; - QAction *fourthAnimSpeedAction; - QAction *eighthAnimSpeedAction; - QAction *tenthAnimSpeedAction; - QAction *menuPauseAction; + QActionGroup *playSpeedMenuActions; }; bool m_emitSignals; - bool m_isRunning; + bool m_paused; qreal m_animationSpeed; - qreal m_previousAnimationSpeed; Constants::DesignTool m_activeTool; diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h index 68c99fbb862..162545235e6 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h @@ -73,9 +73,8 @@ public Q_SLOTS: void setShowAppOnTop(bool appOnTop); - void changeAnimationSpeed(qreal slowdownFactor); - void continueExecution(qreal slowdownFactor = 1.0f); - void pauseExecution(); + void setAnimationSpeed(qreal factor); + void setExecutionPaused(bool paused); void setObserverContext(int contextIndex); @@ -89,8 +88,8 @@ Q_SIGNALS: void colorPickerActivated(); void selectedColorChanged(const QColor &color); - void executionStarted(qreal slowdownFactor); - void executionPaused(); + void animationSpeedChanged(qreal factor); + void executionPausedChanged(bool paused); void inspectorContextCleared(); void inspectorContextPushed(const QString &contextTitle); @@ -110,6 +109,9 @@ protected: void setSelectedItemsForTools(QList items); +private slots: + void onAnimationSpeedChangeRequested(qreal factor); + private: Q_DISABLE_COPY(QDeclarativeViewObserver) diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp index 43a8cc183a8..d64e1c69d6f 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp @@ -224,7 +224,6 @@ void QDeclarativeObserverService::setCurrentTool(QmlJSDebugger::Constants::Desig void QDeclarativeObserverService::setAnimationSpeed(qreal slowdownFactor) { - QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp index 130b1a89f7f..ef5bd71598c 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp @@ -106,7 +106,7 @@ QDeclarativeViewObserverPrivate::QDeclarativeViewObserverPrivate(QDeclarativeVie designModeBehavior(false), showAppOnTop(false), executionPaused(false), - slowdownFactor(1.0f), + slowDownFactor(1.0f), toolBox(0) { } @@ -147,7 +147,7 @@ QDeclarativeViewObserver::QDeclarativeViewObserver(QDeclarativeView *view, QObje connect(data->debugService, SIGNAL(currentObjectsChanged(QList)), data.data(), SLOT(_q_onCurrentObjectsChanged(QList))); connect(data->debugService, SIGNAL(animationSpeedChangeRequested(qreal)), - SLOT(changeAnimationSpeed(qreal))); + SLOT(onAnimationSpeedChangeRequested(qreal))); connect(data->debugService, SIGNAL(colorPickerToolRequested()), data.data(), SLOT(_q_changeToColorPickerTool())); connect(data->debugService, SIGNAL(selectMarqueeToolRequested()), @@ -384,11 +384,7 @@ bool QDeclarativeViewObserver::keyReleaseEvent(QKeyEvent *event) data->subcomponentEditorTool->setCurrentItem(data->selectedItems().first()); break; case Qt::Key_Space: - if (data->executionPaused) { - continueExecution(data->slowdownFactor); - } else { - pauseExecution(); - } + setExecutionPaused(!data->executionPaused); break; default: break; @@ -757,43 +753,46 @@ void QDeclarativeViewObserverPrivate::_q_changeContextPathIndex(int index) subcomponentEditorTool->setContext(index); } -void QDeclarativeViewObserver::changeAnimationSpeed(qreal slowdownFactor) +void QDeclarativeViewObserver::setAnimationSpeed(qreal factor) { - data->slowdownFactor = slowdownFactor; + Q_ASSERT(factor > 0); + if (data->slowDownFactor == factor) + return; - if (data->slowdownFactor != 0) - continueExecution(data->slowdownFactor); - else - pauseExecution(); + data->slowDownFactor = factor; + emit animationSpeedChanged(factor); + + const float effectiveFactor = data->executionPaused ? 0 : factor; + onAnimationSpeedChangeRequested(effectiveFactor); + data->debugService->setAnimationSpeed(effectiveFactor); } -void QDeclarativeViewObserver::continueExecution(qreal slowdownFactor) +void QDeclarativeViewObserver::setExecutionPaused(bool paused) { - Q_ASSERT(slowdownFactor > 0); + if (data->executionPaused == paused) + return; - data->slowdownFactor = slowdownFactor; - static const qreal animSpeedSnapDelta = 0.01f; + const float effectiveFactor = paused ? 0 : data->slowDownFactor; + onAnimationSpeedChangeRequested(effectiveFactor); + data->debugService->setAnimationSpeed(effectiveFactor); +} - qreal slowDownFactor = data->slowdownFactor; - if (qAbs(1.0f - slowDownFactor) < animSpeedSnapDelta) { - slowDownFactor = 1.0f; +void QDeclarativeViewObserver::onAnimationSpeedChangeRequested(qreal factor) +{ + const bool paused = factor == 0; + + if (!paused && data->slowDownFactor != factor) { + data->slowDownFactor = factor; + emit animationSpeedChanged(factor); + } + if (data->executionPaused != paused) { + data->executionPaused = paused; + emit executionPausedChanged(paused); } - QDeclarativeDebugHelper::setAnimationSlowDownFactor(slowDownFactor); - data->executionPaused = false; - - emit executionStarted(data->slowdownFactor); - data->debugService->setAnimationSpeed(data->slowdownFactor); + QDeclarativeDebugHelper::setAnimationSlowDownFactor(factor); } -void QDeclarativeViewObserver::pauseExecution() -{ - QDeclarativeDebugHelper::setAnimationSlowDownFactor(0.0f); - data->executionPaused = true; - - emit executionPaused(); - data->debugService->setAnimationSpeed(0); -} void QDeclarativeViewObserverPrivate::_q_applyChangesFromClient() { @@ -850,8 +849,6 @@ void QDeclarativeViewObserverPrivate::_q_onStatusChanged(QDeclarativeView::Statu if (subcomponentEditorTool->contextIndex() != -1) subcomponentEditorTool->clear(); subcomponentEditorTool->pushContext(view->rootObject()); - emit q->executionStarted(1.0f); - } debugService->reloaded(); } @@ -917,8 +914,8 @@ void QDeclarativeViewObserverPrivate::createToolBox() QObject::connect(toolBar, SIGNAL(designModeBehaviorChanged(bool)), q, SLOT(setDesignModeBehavior(bool))); - QObject::connect(toolBar, SIGNAL(animationSpeedChanged(qreal)), - q, SLOT(changeAnimationSpeed(qreal))); + QObject::connect(toolBar, SIGNAL(animationSpeedChanged(qreal)), q, SLOT(setAnimationSpeed(qreal))); + QObject::connect(toolBar, SIGNAL(executionPausedChanged(bool)), q, SLOT(setExecutionPaused(bool))); QObject::connect(toolBar, SIGNAL(colorPickerSelected()), this, SLOT(_q_changeToColorPickerTool())); QObject::connect(toolBar, SIGNAL(zoomToolSelected()), this, SLOT(_q_changeToZoomTool())); QObject::connect(toolBar, SIGNAL(selectToolSelected()), this, SLOT(_q_changeToSingleSelectTool())); @@ -928,8 +925,8 @@ void QDeclarativeViewObserverPrivate::createToolBox() QObject::connect(toolBar, SIGNAL(applyChangesFromQmlFileSelected()), this, SLOT(_q_applyChangesFromClient())); - QObject::connect(q, SIGNAL(executionStarted(qreal)), toolBar, SLOT(setAnimationSpeed(qreal))); - QObject::connect(q, SIGNAL(executionPaused()), toolBar, SLOT(setAnimationSpeed())); + QObject::connect(q, SIGNAL(animationSpeedChanged(qreal)), toolBar, SLOT(setAnimationSpeed(qreal))); + QObject::connect(q, SIGNAL(executionPausedChanged(bool)), toolBar, SLOT(setExecutionPaused(bool))); QObject::connect(q, SIGNAL(selectToolActivated()), toolBar, SLOT(activateSelectTool())); diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h index fc15a2dbdbe..7ed1103a7c8 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h @@ -89,7 +89,7 @@ public: bool showAppOnTop; bool executionPaused; - qreal slowdownFactor; + qreal slowDownFactor; ToolBox *toolBox; diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp index 45e07ba9b32..a21318ed818 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp @@ -114,7 +114,6 @@ #include -#include #include "jsdebuggeragent.h" QT_BEGIN_NAMESPACE @@ -759,13 +758,12 @@ void QDeclarativeViewer::createMenu() connect(recordOptions, SIGNAL(triggered()), this, SLOT(chooseRecordingOptions())); QMenu *playSpeedMenu = new QMenu(tr("Animation Speed"), this); - QActionGroup *playSpeedMenuActions = new QActionGroup(this); + playSpeedMenuActions = new QActionGroup(this); playSpeedMenuActions->setExclusive(true); QAction *speedAction = playSpeedMenu->addAction(tr("1x"), this, SLOT(changeAnimationSpeed())); speedAction->setCheckable(true); speedAction->setChecked(true); - animationSpeed = 1.0f; speedAction->setData(1.0f); playSpeedMenuActions->addAction(speedAction); @@ -776,7 +774,6 @@ void QDeclarativeViewer::createMenu() speedAction = playSpeedMenu->addAction(tr("0.25x"), this, SLOT(changeAnimationSpeed())); speedAction->setCheckable(true); - speedAction->setCheckable(true); speedAction->setData(4.0f); playSpeedMenuActions->addAction(speedAction); @@ -790,7 +787,7 @@ void QDeclarativeViewer::createMenu() speedAction->setData(10.0f); playSpeedMenuActions->addAction(speedAction); - pauseAnimationsAction = playSpeedMenu->addAction(tr("Pause"), this, SLOT(setAnimationsPaused(bool))); + pauseAnimationsAction = playSpeedMenu->addAction(tr("Pause"), observer, SLOT(setExecutionPaused(bool))); pauseAnimationsAction->setCheckable(true); pauseAnimationsAction->setShortcut(QKeySequence("Ctrl+.")); @@ -803,6 +800,9 @@ void QDeclarativeViewer::createMenu() QAction *playSpeedAction = new QAction(tr("Animations"), this); playSpeedAction->setMenu(playSpeedMenu); + connect(observer, SIGNAL(animationSpeedChanged(qreal)), SLOT(animationSpeedChanged(qreal))); + connect(observer, SIGNAL(executionPausedChanged(bool)), pauseAnimationsAction, SLOT(setChecked(bool))); + showWarningsWindow = new QAction(tr("Show Warnings"), this); showWarningsWindow->setCheckable((true)); showWarningsWindow->setChecked(loggerWindow->isVisible()); @@ -1078,24 +1078,15 @@ void QDeclarativeViewer::toggleRecording() #endif } -void QDeclarativeViewer::setAnimationsPaused(bool enable) +void QDeclarativeViewer::pauseAnimations() { - if (enable) { - setAnimationSpeed(0.0); - } else { - setAnimationSpeed(animationSpeed); - } -} - -void QDeclarativeViewer::pauseAnimations() { - pauseAnimationsAction->setChecked(true); - setAnimationsPaused(true); + observer->setExecutionPaused(true); } void QDeclarativeViewer::stepAnimations() { - setAnimationSpeed(1.0); - QTimer::singleShot(m_stepSize, this, SLOT(pauseAnimations())); + observer->setExecutionPaused(false); + QTimer::singleShot(m_stepSize, this, SLOT(pauseAnimations())); } void QDeclarativeViewer::setAnimationStep() @@ -1108,13 +1099,8 @@ void QDeclarativeViewer::setAnimationStep() void QDeclarativeViewer::changeAnimationSpeed() { - QAction *action = qobject_cast(sender()); - if (action) { - float f = action->data().toFloat(); - animationSpeed = f; - if (!pauseAnimationsAction->isChecked()) - setAnimationSpeed(animationSpeed); - } + if (QAction *action = qobject_cast(sender())) + observer->setAnimationSpeed(action->data().toFloat()); } void QDeclarativeViewer::addLibraryPath(const QString& lib) @@ -1574,6 +1560,16 @@ void QDeclarativeViewer::orientationChanged() updateSizeHints(); } +void QDeclarativeViewer::animationSpeedChanged(qreal factor) +{ + foreach (QAction *action, playSpeedMenuActions->actions()) { + if (action->data().toFloat() == factor) { + action->setChecked(true); + break; + } + } +} + void QDeclarativeViewer::setDeviceKeys(bool on) { devicemode = on; @@ -1625,11 +1621,6 @@ void QDeclarativeViewer::setStayOnTop(bool stayOnTop) appOnTopAction->setChecked(stayOnTop); } -void QDeclarativeViewer::setAnimationSpeed(float f) -{ - QDeclarativeDebugHelper::setAnimationSlowDownFactor(f); -} - void QDeclarativeViewer::updateSizeHints(bool initial) { static bool isRecursive = false; diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.h b/share/qtcreator/qml/qmlobserver/qmlruntime.h index 858f5b9a36e..efd4a3ef077 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.h +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.h @@ -130,7 +130,6 @@ public slots: void proxySettingsChanged (); void rotateOrientation(); void statusChanged(); - void setAnimationsPaused(bool); void pauseAnimations(); void stepAnimations(); void setAnimationStep(); @@ -154,12 +153,13 @@ private slots: void changeOrientation(QAction*); void orientationChanged(); + void animationSpeedChanged(qreal factor); + void showWarnings(bool show); void warningsWidgetOpened(); void warningsWidgetClosed(); private: - void setAnimationSpeed(float f); void updateSizeHints(bool initial = false); QString getVideoFileName(); @@ -192,8 +192,8 @@ private: bool ffmpegAvailable; bool convertAvailable; - float animationSpeed; int m_stepSize; + QActionGroup *playSpeedMenuActions; QAction *pauseAnimationsAction; QAction *animationStepAction; QAction *animationSetStepAction; From eab25187969c6336e605d4bd88ac3ff787548a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 21 Mar 2011 18:06:48 +0100 Subject: [PATCH 09/42] QmlJSDebugger: Fixed the enum toString methods Should use valueToKey since the key method works by index. --- share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h b/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h index 27d3ad70b2b..f5dd5b84a18 100644 --- a/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h +++ b/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h @@ -77,12 +77,12 @@ public: static inline QString toString(Message message) { - return staticMetaObject.enumerator(0).key(message); + return staticMetaObject.enumerator(0).valueToKey(message); } static inline QString toString(Tool tool) { - return staticMetaObject.enumerator(1).key(tool); + return staticMetaObject.enumerator(1).valueToKey(tool); } }; From 1716d9bbb2982224105bfa994d1d083a868f1d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 21 Mar 2011 18:08:27 +0100 Subject: [PATCH 10/42] QmlJSDebugger: Define QMLJSDEBUGGER in qmljsdebugger-src.pri This pri file is meant for including the qmljsdebugger sources into an Qt Quick application to make the qmljsdebugger easier to develop. It makes sense to define QMLJSDEBUGGER since without that the QmlJS debugger part isn't used. See also 304b3c881c6e253b18fac0c98c478c430f84a7be. Reviewed-by: Kai Koehne --- share/qtcreator/qml/qmljsdebugger/qmljsdebugger-src.pri | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-src.pri b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-src.pri index 49e2da8ff7e..4805faaec6d 100644 --- a/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-src.pri +++ b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-src.pri @@ -50,3 +50,5 @@ SOURCES += \ RESOURCES += $$PWD/editor/editor.qrc OTHER_FILES += $$PWD/qmljsdebugger.pri + +DEFINES += QMLJSDEBUGGER From 0a813cd67c7d511e579bbd204a4b2d4563760880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Fri, 18 Mar 2011 20:45:23 +0100 Subject: [PATCH 11/42] QmlJSDebugger: Separated animation speed and paused state This separates animation speed and paused state in the communication protocol between the Qt Creator QmlJSInspector plugin and the QmlJSDebugger server. Point is to allow changing the speed of the animation before resuming execution. These two things were already separated in the QML Observer, but not in Qt Creator. Reviewed-by: Kai Koehne --- .../include/qdeclarativeobserverservice.h | 5 +- .../include/qdeclarativeviewobserver.h | 3 +- .../qmljsdebugger/protocol/observerprotocol.h | 38 +++-- .../qdeclarativeobserverservice.cpp | 21 ++- .../qdeclarativeviewobserver.cpp | 39 +++-- .../qmljsinspector/qmlinspectortoolbar.cpp | 159 ++++++------------ .../qmljsinspector/qmlinspectortoolbar.h | 27 ++- .../qmljsinspector/qmljsclientproxy.cpp | 12 +- src/plugins/qmljsinspector/qmljsclientproxy.h | 6 +- src/plugins/qmljsinspector/qmljsinspector.cpp | 4 + .../qmljsinspector/qmljsobserverclient.cpp | 40 ++++- .../qmljsinspector/qmljsobserverclient.h | 4 +- 12 files changed, 184 insertions(+), 174 deletions(-) diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h index 5cee7cd23e9..29b641266ff 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h @@ -65,7 +65,8 @@ public: void setDesignModeBehavior(bool inDesignMode); void setCurrentObjects(QList items); - void setAnimationSpeed(qreal slowdownFactor); + void setAnimationSpeed(qreal slowDownFactor); + void setExecutionPaused(bool paused); void setCurrentTool(QmlJSDebugger::Constants::DesignTool toolId); void reloaded(); void setShowAppOnTop(bool showAppOnTop); @@ -95,9 +96,9 @@ Q_SIGNALS: void objectReparentRequested(QObject *object, QObject *newParent); // 1 = normal speed, - // 0 = paused, // 1 < x < 16 = slowdown by some factor void animationSpeedChangeRequested(qreal speedFactor); + void executionPauseChangeRequested(bool paused); void contextPathIndexChanged(int contextPathIndex); void clearComponentCacheRequested(); diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h index 162545235e6..a20dca234a3 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h @@ -110,7 +110,8 @@ protected: void setSelectedItemsForTools(QList items); private slots: - void onAnimationSpeedChangeRequested(qreal factor); + void animationSpeedChangeRequested(qreal factor); + void executionPausedChangeRequested(bool paused); private: Q_DISABLE_COPY(QDeclarativeViewObserver) diff --git a/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h b/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h index f5dd5b84a18..fde32fc2cb1 100644 --- a/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h +++ b/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h @@ -48,24 +48,26 @@ class ObserverProtocol : public QObject public: enum Message { - AnimationSpeedChanged, - ChangeTool, - ClearComponentCache, - ColorChanged, - ContextPathUpdated, - CreateObject, - CurrentObjectsChanged, - DestroyObject, - MoveObject, - ObjectIdList, - Reload, - Reloaded, - SetAnimationSpeed, - SetContextPathIdx, - SetCurrentObjects, - SetDesignMode, - ShowAppOnTop, - ToolChanged + AnimationSpeedChanged = 0, + ExecutionPausedChanged = 19, // highest value + ChangeTool = 1, + ClearComponentCache = 2, + ColorChanged = 3, + ContextPathUpdated = 4, + CreateObject = 5, + CurrentObjectsChanged = 6, + DestroyObject = 7, + MoveObject = 8, + ObjectIdList = 9, + Reload = 10, + Reloaded = 11, + SetAnimationSpeed = 12, + SetExecutionPaused = 18, + SetContextPathIdx = 13, + SetCurrentObjects = 14, + SetDesignMode = 15, + ShowAppOnTop = 16, + ToolChanged = 17 }; enum Tool { diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp index d64e1c69d6f..e6f236f0dd2 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp @@ -100,6 +100,12 @@ void QDeclarativeObserverService::messageReceived(const QByteArray &message) emit animationSpeedChangeRequested(speed); break; } + case ObserverProtocol::SetExecutionPaused: { + bool paused; + ds >> paused; + emit executionPauseChangeRequested(paused); + break; + } case ObserverProtocol::ChangeTool: { ObserverProtocol::Tool tool; ds >> tool; @@ -222,13 +228,24 @@ void QDeclarativeObserverService::setCurrentTool(QmlJSDebugger::Constants::Desig sendMessage(message); } -void QDeclarativeObserverService::setAnimationSpeed(qreal slowdownFactor) +void QDeclarativeObserverService::setAnimationSpeed(qreal slowDownFactor) { QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << ObserverProtocol::AnimationSpeedChanged - << slowdownFactor; + << slowDownFactor; + + sendMessage(message); +} + +void QDeclarativeObserverService::setExecutionPaused(bool paused) +{ + QByteArray message; + QDataStream ds(&message, QIODevice::WriteOnly); + + ds << ObserverProtocol::ExecutionPausedChanged + << paused; sendMessage(message); } diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp index ef5bd71598c..a32f0943429 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp @@ -147,7 +147,9 @@ QDeclarativeViewObserver::QDeclarativeViewObserver(QDeclarativeView *view, QObje connect(data->debugService, SIGNAL(currentObjectsChanged(QList)), data.data(), SLOT(_q_onCurrentObjectsChanged(QList))); connect(data->debugService, SIGNAL(animationSpeedChangeRequested(qreal)), - SLOT(onAnimationSpeedChangeRequested(qreal))); + SLOT(animationSpeedChangeRequested(qreal))); + connect(data->debugService, SIGNAL(executionPauseChangeRequested(bool)), + SLOT(executionPausedChangeRequested(bool))); connect(data->debugService, SIGNAL(colorPickerToolRequested()), data.data(), SLOT(_q_changeToColorPickerTool())); connect(data->debugService, SIGNAL(selectMarqueeToolRequested()), @@ -753,18 +755,14 @@ void QDeclarativeViewObserverPrivate::_q_changeContextPathIndex(int index) subcomponentEditorTool->setContext(index); } -void QDeclarativeViewObserver::setAnimationSpeed(qreal factor) +void QDeclarativeViewObserver::setAnimationSpeed(qreal slowDownFactor) { - Q_ASSERT(factor > 0); - if (data->slowDownFactor == factor) + Q_ASSERT(slowDownFactor > 0); + if (data->slowDownFactor == slowDownFactor) return; - data->slowDownFactor = factor; - emit animationSpeedChanged(factor); - - const float effectiveFactor = data->executionPaused ? 0 : factor; - onAnimationSpeedChangeRequested(effectiveFactor); - data->debugService->setAnimationSpeed(effectiveFactor); + animationSpeedChangeRequested(slowDownFactor); + data->debugService->setAnimationSpeed(slowDownFactor); } void QDeclarativeViewObserver::setExecutionPaused(bool paused) @@ -772,25 +770,30 @@ void QDeclarativeViewObserver::setExecutionPaused(bool paused) if (data->executionPaused == paused) return; - const float effectiveFactor = paused ? 0 : data->slowDownFactor; - onAnimationSpeedChangeRequested(effectiveFactor); - data->debugService->setAnimationSpeed(effectiveFactor); + executionPausedChangeRequested(paused); + data->debugService->setExecutionPaused(paused); } -void QDeclarativeViewObserver::onAnimationSpeedChangeRequested(qreal factor) +void QDeclarativeViewObserver::animationSpeedChangeRequested(qreal factor) { - const bool paused = factor == 0; - - if (!paused && data->slowDownFactor != factor) { + if (data->slowDownFactor != factor) { data->slowDownFactor = factor; emit animationSpeedChanged(factor); } + + const float effectiveFactor = data->executionPaused ? 0 : factor; + QDeclarativeDebugHelper::setAnimationSlowDownFactor(effectiveFactor); +} + +void QDeclarativeViewObserver::executionPausedChangeRequested(bool paused) +{ if (data->executionPaused != paused) { data->executionPaused = paused; emit executionPausedChanged(paused); } - QDeclarativeDebugHelper::setAnimationSlowDownFactor(factor); + const float effectiveFactor = paused ? 0 : data->slowDownFactor; + QDeclarativeDebugHelper::setAnimationSlowDownFactor(effectiveFactor); } diff --git a/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp b/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp index bd90256590f..d33dd8e7ea2 100644 --- a/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp +++ b/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp @@ -73,19 +73,13 @@ QmlInspectorToolBar::QmlInspectorToolBar(QObject *parent) : m_zoomAction(0), m_colorPickerAction(0), m_showAppOnTopAction(0), - m_defaultAnimSpeedAction(0), - m_halfAnimSpeedAction(0), - m_fourthAnimSpeedAction(0), - m_eighthAnimSpeedAction(0), - m_tenthAnimSpeedAction(0), - m_menuPauseAction(0), + m_playSpeedMenuActions(0), m_playIcon(QIcon(QLatin1String(":/qml/images/play-small.png"))), m_pauseIcon(QIcon(QLatin1String(":/qml/images/pause-small.png"))), m_colorBox(0), m_emitSignals(true), - m_isRunning(false), + m_paused(false), m_animationSpeed(1.0f), - m_previousAnimationSpeed(0.0f), m_activeTool(NoTool), m_barWidget(0) { @@ -142,32 +136,33 @@ void QmlInspectorToolBar::activateZoomTool() m_emitSignals = true; } -void QmlInspectorToolBar::setAnimationSpeed(qreal slowdownFactor) +void QmlInspectorToolBar::setAnimationSpeed(qreal slowDownFactor) { - m_emitSignals = false; - if (slowdownFactor != 0) { - m_animationSpeed = slowdownFactor; + if (m_animationSpeed == slowDownFactor) + return; - if (slowdownFactor == 1.0f) { - m_defaultAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 2.0f) { - m_halfAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 4.0f) { - m_fourthAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 8.0f) { - m_eighthAnimSpeedAction->setChecked(true); - } else if (slowdownFactor == 10.0f) { - m_tenthAnimSpeedAction->setChecked(true); + m_emitSignals = false; + m_animationSpeed = slowDownFactor; + + foreach (QAction *action, m_playSpeedMenuActions->actions()) { + if (action->data().toReal() == slowDownFactor) { + action->setChecked(true); + break; } - updatePlayAction(); - } else { - m_menuPauseAction->setChecked(true); - updatePauseAction(); } m_emitSignals = true; } +void QmlInspectorToolBar::setExecutionPaused(bool paused) +{ + if (m_paused == paused) + return; + + m_paused = paused; + updatePlayAction(); +} + void QmlInspectorToolBar::setDesignModeBehavior(bool inDesignMode) { m_emitSignals = false; @@ -220,7 +215,8 @@ void QmlInspectorToolBar::createActions(const Core::Context &context) m_colorPickerAction->setCheckable(true); am->registerAction(m_observerModeAction, Constants::DESIGNMODE_ACTION, context); - am->registerAction(m_playAction, Constants::PLAY_ACTION, context); + Core::Command *command = am->registerAction(m_playAction, Constants::PLAY_ACTION, context); + command->setAttribute(Core::Command::CA_UpdateIcon); am->registerAction(m_selectAction, Constants::SELECT_ACTION, context); am->registerAction(m_zoomAction, Constants::ZOOM_ACTION, context); am->registerAction(m_colorPickerAction, Constants::COLOR_PICKER_ACTION, context); @@ -232,40 +228,33 @@ void QmlInspectorToolBar::createActions(const Core::Context &context) m_barWidget->setProperty("topBorder", true); QMenu *playSpeedMenu = new QMenu(m_barWidget); - QActionGroup *playSpeedMenuActions = new QActionGroup(this); - playSpeedMenuActions->setExclusive(true); - playSpeedMenu->addAction(tr("Animation Speed")); - playSpeedMenu->addSeparator(); - m_defaultAnimSpeedAction = - playSpeedMenu->addAction(tr("1x"), this, SLOT(changeToDefaultAnimSpeed())); - m_defaultAnimSpeedAction->setCheckable(true); - m_defaultAnimSpeedAction->setChecked(true); - playSpeedMenuActions->addAction(m_defaultAnimSpeedAction); + m_playSpeedMenuActions = new QActionGroup(this); + m_playSpeedMenuActions->setExclusive(true); + QAction *speedAction = playSpeedMenu->addAction(tr("1x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setChecked(true); + speedAction->setData(1.0f); + m_playSpeedMenuActions->addAction(speedAction); - m_halfAnimSpeedAction = - playSpeedMenu->addAction(tr("0.5x"), this, SLOT(changeToHalfAnimSpeed())); - m_halfAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(m_halfAnimSpeedAction); + speedAction = playSpeedMenu->addAction(tr("0.5x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(2.0f); + m_playSpeedMenuActions->addAction(speedAction); - m_fourthAnimSpeedAction = - playSpeedMenu->addAction(tr("0.25x"), this, SLOT(changeToFourthAnimSpeed())); - m_fourthAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(m_fourthAnimSpeedAction); + speedAction = playSpeedMenu->addAction(tr("0.25x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(4.0f); + m_playSpeedMenuActions->addAction(speedAction); - m_eighthAnimSpeedAction = - playSpeedMenu->addAction(tr("0.125x"), this, SLOT(changeToEighthAnimSpeed())); - m_eighthAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(m_eighthAnimSpeedAction); + speedAction = playSpeedMenu->addAction(tr("0.125x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(8.0f); + m_playSpeedMenuActions->addAction(speedAction); - m_tenthAnimSpeedAction = - playSpeedMenu->addAction(tr("0.1x"), this, SLOT(changeToTenthAnimSpeed())); - m_tenthAnimSpeedAction->setCheckable(true); - playSpeedMenuActions->addAction(m_tenthAnimSpeedAction); - - m_menuPauseAction = playSpeedMenu->addAction(tr("Pause"), this, SLOT(updatePauseAction())); - m_menuPauseAction->setCheckable(true); - m_menuPauseAction->setIcon(m_pauseIcon); - playSpeedMenuActions->addAction(m_menuPauseAction); + speedAction = playSpeedMenu->addAction(tr("0.1x"), this, SLOT(changeAnimationSpeed())); + speedAction->setCheckable(true); + speedAction->setData(10.0f); + m_playSpeedMenuActions->addAction(speedAction); QHBoxLayout *toolBarLayout = new QHBoxLayout(m_barWidget); toolBarLayout->setMargin(0); @@ -324,33 +313,13 @@ QWidget *QmlInspectorToolBar::widget() const return m_barWidget; } -void QmlInspectorToolBar::changeToDefaultAnimSpeed() +void QmlInspectorToolBar::changeAnimationSpeed() { - m_animationSpeed = 1.0f; - updatePlayAction(); -} + QAction *action = static_cast(sender()); -void QmlInspectorToolBar::changeToHalfAnimSpeed() -{ - m_animationSpeed = 2.0f; - updatePlayAction(); -} + m_animationSpeed = action->data().toReal(); + emit animationSpeedChanged(m_animationSpeed); -void QmlInspectorToolBar::changeToFourthAnimSpeed() -{ - m_animationSpeed = 4.0f; - updatePlayAction(); -} - -void QmlInspectorToolBar::changeToEighthAnimSpeed() -{ - m_animationSpeed = 8.0f; - updatePlayAction(); -} - -void QmlInspectorToolBar::changeToTenthAnimSpeed() -{ - m_animationSpeed = 10.0f; updatePlayAction(); } @@ -368,34 +337,14 @@ void QmlInspectorToolBar::activateDesignModeOnClick() void QmlInspectorToolBar::activatePlayOnClick() { - if (m_isRunning) { - updatePauseAction(); - } else { - updatePlayAction(); - } + m_paused = !m_paused; + emit executionPausedChanged(m_paused); + updatePlayAction(); } void QmlInspectorToolBar::updatePlayAction() { - m_isRunning = true; - m_playAction->setIcon(m_pauseIcon); - if (m_animationSpeed != m_previousAnimationSpeed) - m_previousAnimationSpeed = m_animationSpeed; - - if (m_emitSignals) - emit animationSpeedChanged(m_animationSpeed); - - m_playButton->setDefaultAction(m_playAction); -} - -void QmlInspectorToolBar::updatePauseAction() -{ - m_isRunning = false; - m_playAction->setIcon(m_playIcon); - if (m_emitSignals) - emit animationSpeedChanged(0.0f); - - m_playButton->setDefaultAction(m_playAction); + m_playAction->setIcon(m_paused ? m_playIcon : m_pauseIcon); } void QmlInspectorToolBar::activateColorPickerOnClick() diff --git a/src/plugins/qmljsinspector/qmlinspectortoolbar.h b/src/plugins/qmljsinspector/qmlinspectortoolbar.h index 901b0bbf0f1..9ead3bc47fd 100644 --- a/src/plugins/qmljsinspector/qmlinspectortoolbar.h +++ b/src/plugins/qmljsinspector/qmlinspectortoolbar.h @@ -40,6 +40,7 @@ #include QT_FORWARD_DECLARE_CLASS(QAction) +QT_FORWARD_DECLARE_CLASS(QActionGroup) QT_FORWARD_DECLARE_CLASS(QColor) QT_FORWARD_DECLARE_CLASS(QToolButton) @@ -84,7 +85,10 @@ public slots: void activateColorPicker(); void activateSelectTool(); void activateZoomTool(); - void setAnimationSpeed(qreal slowdownFactor); + + void setAnimationSpeed(qreal slowDownFactor); + void setExecutionPaused(bool paused); + void setDesignModeBehavior(bool inDesignMode); void setShowAppOnTop(bool showAppOnTop); void setSelectedColor(const QColor &color); @@ -99,7 +103,9 @@ signals: void zoomToolSelected(); void showAppOnTopSelected(bool isChecked); - void animationSpeedChanged(qreal slowdownFactor = 1.0f); + + void animationSpeedChanged(qreal slowdownFactor); + void executionPausedChanged(bool paused); private slots: void activateDesignModeOnClick(); @@ -110,16 +116,11 @@ private slots: void showAppOnTopClick(); - void changeToDefaultAnimSpeed(); - void changeToHalfAnimSpeed(); - void changeToFourthAnimSpeed(); - void changeToEighthAnimSpeed(); - void changeToTenthAnimSpeed(); + void changeAnimationSpeed(); void activateFromQml(); void updatePlayAction(); - void updatePauseAction(); void activeDebugLanguagesChanged(Debugger::DebuggerLanguages languages); @@ -135,12 +136,7 @@ private: QAction *m_showAppOnTopAction; - QAction *m_defaultAnimSpeedAction; - QAction *m_halfAnimSpeedAction; - QAction *m_fourthAnimSpeedAction; - QAction *m_eighthAnimSpeedAction; - QAction *m_tenthAnimSpeedAction; - QAction *m_menuPauseAction; + QActionGroup *m_playSpeedMenuActions; QToolButton *m_playButton; QIcon m_playIcon; @@ -149,9 +145,8 @@ private: ToolBarColorBox *m_colorBox; bool m_emitSignals; - bool m_isRunning; + bool m_paused; qreal m_animationSpeed; - qreal m_previousAnimationSpeed; DesignTool m_activeTool; diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.cpp b/src/plugins/qmljsinspector/qmljsclientproxy.cpp index 36dbfeb17d7..80c117cea61 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.cpp +++ b/src/plugins/qmljsinspector/qmljsclientproxy.cpp @@ -86,6 +86,8 @@ void ClientProxy::connectToServer() SIGNAL(selectMarqueeToolActivated())); connect(m_observerClient, SIGNAL(animationSpeedChanged(qreal)), SIGNAL(animationSpeedChanged(qreal))); + connect(m_observerClient, SIGNAL(executionPausedChanged(bool)), + SIGNAL(executionPausedChanged(bool))); connect(m_observerClient, SIGNAL(designModeBehaviorChanged(bool)), SIGNAL(designModeBehaviorChanged(bool))); connect(m_observerClient, SIGNAL(showAppOnTopChanged(bool)), @@ -545,10 +547,16 @@ void ClientProxy::setDesignModeBehavior(bool inDesignMode) m_observerClient->setDesignModeBehavior(inDesignMode); } -void ClientProxy::setAnimationSpeed(qreal slowdownFactor) +void ClientProxy::setAnimationSpeed(qreal slowDownFactor) { if (isConnected()) - m_observerClient->setAnimationSpeed(slowdownFactor); + m_observerClient->setAnimationSpeed(slowDownFactor); +} + +void ClientProxy::setExecutionPaused(bool paused) +{ + if (isConnected()) + m_observerClient->setExecutionPaused(paused); } void ClientProxy::changeToColorPickerTool() diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.h b/src/plugins/qmljsinspector/qmljsclientproxy.h index 8a72754a4c3..b6ee5ddd008 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.h +++ b/src/plugins/qmljsinspector/qmljsclientproxy.h @@ -106,7 +106,8 @@ signals: void selectToolActivated(); void selectMarqueeToolActivated(); void zoomToolActivated(); - void animationSpeedChanged(qreal slowdownFactor); + void animationSpeedChanged(qreal slowDownFactor); + void executionPausedChanged(bool paused); void designModeBehaviorChanged(bool inDesignMode); void showAppOnTopChanged(bool showAppOnTop); void serverReloaded(); @@ -120,7 +121,8 @@ public slots: void reloadQmlViewer(); void setDesignModeBehavior(bool inDesignMode); - void setAnimationSpeed(qreal slowdownFactor = 1.0f); + void setAnimationSpeed(qreal slowDownFactor); + void setExecutionPaused(bool paused); void changeToColorPickerTool(); void changeToZoomTool(); void changeToSelectTool(); diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index b6e1ab70136..f1e01395101 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -884,6 +884,8 @@ void InspectorUi::connectSignals() m_toolBar, SLOT(setSelectedColor(QColor))); connect(m_clientProxy, SIGNAL(animationSpeedChanged(qreal)), m_toolBar, SLOT(setAnimationSpeed(qreal))); + connect(m_clientProxy, SIGNAL(executionPausedChanged(bool)), + m_toolBar, SLOT(setExecutionPaused(bool))); connect(m_toolBar, SIGNAL(applyChangesFromQmlFileTriggered(bool)), this, SLOT(setApplyChangesToQmlObserver(bool))); @@ -894,6 +896,8 @@ void InspectorUi::connectSignals() m_clientProxy, SLOT(reloadQmlViewer())); connect(m_toolBar, SIGNAL(animationSpeedChanged(qreal)), m_clientProxy, SLOT(setAnimationSpeed(qreal))); + connect(m_toolBar, SIGNAL(executionPausedChanged(bool)), + m_clientProxy, SLOT(setExecutionPaused(bool))); connect(m_toolBar, SIGNAL(colorPickerSelected()), m_clientProxy, SLOT(changeToColorPickerTool())); connect(m_toolBar, SIGNAL(zoomToolSelected()), diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.cpp b/src/plugins/qmljsinspector/qmljsobserverclient.cpp index 4be4171baa0..8068f447165 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.cpp +++ b/src/plugins/qmljsinspector/qmljsobserverclient.cpp @@ -106,12 +106,21 @@ void QmlJSObserverClient::messageReceived(const QByteArray &message) break; } case ObserverProtocol::AnimationSpeedChanged: { - qreal slowdownFactor; - ds >> slowdownFactor; + qreal slowDownFactor; + ds >> slowDownFactor; - log(LogReceive, type, QString::number(slowdownFactor)); + log(LogReceive, type, QString::number(slowDownFactor)); - emit animationSpeedChanged(slowdownFactor); + emit animationSpeedChanged(slowDownFactor); + break; + } + case ObserverProtocol::ExecutionPausedChanged: { + bool paused; + ds >> paused; + + log(LogReceive, type, paused ? QLatin1String("true") : QLatin1String("false")); + + emit executionPausedChanged(paused); break; } case ObserverProtocol::SetDesignMode: { @@ -291,7 +300,7 @@ void QmlJSObserverClient::setDesignModeBehavior(bool inDesignMode) sendMessage(message); } -void QmlJSObserverClient::setAnimationSpeed(qreal slowdownFactor) +void QmlJSObserverClient::setAnimationSpeed(qreal slowDownFactor) { if (!m_connection || !m_connection->isConnected()) return; @@ -301,10 +310,27 @@ void QmlJSObserverClient::setAnimationSpeed(qreal slowdownFactor) ObserverProtocol::Message cmd = ObserverProtocol::SetAnimationSpeed; ds << cmd - << slowdownFactor; + << slowDownFactor; - log(LogSend, cmd, QString::number(slowdownFactor)); + log(LogSend, cmd, QString::number(slowDownFactor)); + + sendMessage(message); +} + +void QmlJSObserverClient::setExecutionPaused(bool paused) +{ + if (!m_connection || !m_connection->isConnected()) + return; + + QByteArray message; + QDataStream ds(&message, QIODevice::WriteOnly); + + ObserverProtocol::Message cmd = ObserverProtocol::SetExecutionPaused; + ds << cmd + << paused; + + log(LogSend, cmd, paused ? QLatin1String("true") : QLatin1String("false")); sendMessage(message); } diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.h b/src/plugins/qmljsinspector/qmljsobserverclient.h index 6688c9c8acb..5dd30d97b78 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.h +++ b/src/plugins/qmljsinspector/qmljsobserverclient.h @@ -59,7 +59,8 @@ public: void setCurrentObjects(const QList &debugIds); void reloadViewer(); void setDesignModeBehavior(bool inDesignMode); - void setAnimationSpeed(qreal slowdownFactor); + void setAnimationSpeed(qreal slowDownFactor); + void setExecutionPaused(bool paused); void changeToColorPickerTool(); void changeToSelectTool(); void changeToSelectMarqueeTool(); @@ -92,6 +93,7 @@ signals: void selectMarqueeToolActivated(); void zoomToolActivated(); void animationSpeedChanged(qreal slowdownFactor); + void executionPausedChanged(bool paused); void designModeBehaviorChanged(bool inDesignMode); void showAppOnTopChanged(bool showAppOnTop); void reloaded(); // the server has reloadetd he document From a8bf2ba5e3bae2a20a6ccce15e1bfaa15550bd1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 22 Mar 2011 10:37:14 +0100 Subject: [PATCH 12/42] QmlJSDebugger: Renamed "execution paused" to "animation paused" The latter better describes what is paused, since expressions are actually still executed. Suggested by Kai. --- .../qml/qmljsdebugger/editor/qmltoolbar.cpp | 4 +-- .../qml/qmljsdebugger/editor/qmltoolbar.h | 4 +-- .../include/qdeclarativeobserverservice.h | 2 +- .../include/qdeclarativeviewobserver.h | 6 ++-- .../qmljsdebugger/protocol/observerprotocol.h | 4 +-- .../qdeclarativeobserverservice.cpp | 6 ++-- .../qdeclarativeviewobserver.cpp | 28 +++++++++---------- .../qdeclarativeviewobserver_p.h | 2 +- .../qtcreator/qml/qmlobserver/qmlruntime.cpp | 8 +++--- .../qmljsinspector/qmlinspectortoolbar.cpp | 4 +-- .../qmljsinspector/qmlinspectortoolbar.h | 4 +-- .../qmljsinspector/qmljsclientproxy.cpp | 8 +++--- src/plugins/qmljsinspector/qmljsclientproxy.h | 4 +-- src/plugins/qmljsinspector/qmljsinspector.cpp | 8 +++--- .../qmljsinspector/qmljsobserverclient.cpp | 8 +++--- .../qmljsinspector/qmljsobserverclient.h | 4 +-- 16 files changed, 52 insertions(+), 52 deletions(-) diff --git a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp index 942a6ada10e..41c98a06036 100644 --- a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp @@ -195,7 +195,7 @@ void QmlToolBar::setAnimationSpeed(qreal slowDownFactor) m_emitSignals = true; } -void QmlToolBar::setExecutionPaused(bool paused) +void QmlToolBar::setAnimationPaused(bool paused) { if (m_paused == paused) return; @@ -240,7 +240,7 @@ void QmlToolBar::setColorBoxColor(const QColor &color) void QmlToolBar::activatePlayOnClick() { m_paused = !m_paused; - emit executionPausedChanged(m_paused); + emit animationPausedChanged(m_paused); updatePlayAction(); } diff --git a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h index de2186956b4..c2927ef4d65 100644 --- a/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h +++ b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h @@ -62,11 +62,11 @@ public slots: void activateZoom(); void setAnimationSpeed(qreal slowDownFactor); - void setExecutionPaused(bool paused); + void setAnimationPaused(bool paused); signals: void animationSpeedChanged(qreal factor); - void executionPausedChanged(bool paused); + void animationPausedChanged(bool paused); void designModeBehaviorChanged(bool inDesignMode); void colorPickerSelected(); diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h index 29b641266ff..2259858deb1 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h @@ -66,7 +66,7 @@ public: void setDesignModeBehavior(bool inDesignMode); void setCurrentObjects(QList items); void setAnimationSpeed(qreal slowDownFactor); - void setExecutionPaused(bool paused); + void setAnimationPaused(bool paused); void setCurrentTool(QmlJSDebugger::Constants::DesignTool toolId); void reloaded(); void setShowAppOnTop(bool showAppOnTop); diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h index a20dca234a3..fc4ee84f711 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h @@ -74,7 +74,7 @@ public Q_SLOTS: void setShowAppOnTop(bool appOnTop); void setAnimationSpeed(qreal factor); - void setExecutionPaused(bool paused); + void setAnimationPaused(bool paused); void setObserverContext(int contextIndex); @@ -89,7 +89,7 @@ Q_SIGNALS: void selectedColorChanged(const QColor &color); void animationSpeedChanged(qreal factor); - void executionPausedChanged(bool paused); + void animationPausedChanged(bool paused); void inspectorContextCleared(); void inspectorContextPushed(const QString &contextTitle); @@ -111,7 +111,7 @@ protected: private slots: void animationSpeedChangeRequested(qreal factor); - void executionPausedChangeRequested(bool paused); + void animationPausedChangeRequested(bool paused); private: Q_DISABLE_COPY(QDeclarativeViewObserver) diff --git a/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h b/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h index fde32fc2cb1..b13880623ed 100644 --- a/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h +++ b/share/qtcreator/qml/qmljsdebugger/protocol/observerprotocol.h @@ -49,7 +49,7 @@ class ObserverProtocol : public QObject public: enum Message { AnimationSpeedChanged = 0, - ExecutionPausedChanged = 19, // highest value + AnimationPausedChanged = 19, // highest value ChangeTool = 1, ClearComponentCache = 2, ColorChanged = 3, @@ -62,7 +62,7 @@ public: Reload = 10, Reloaded = 11, SetAnimationSpeed = 12, - SetExecutionPaused = 18, + SetAnimationPaused = 18, SetContextPathIdx = 13, SetCurrentObjects = 14, SetDesignMode = 15, diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp index e6f236f0dd2..00a59d0f1d4 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp @@ -100,7 +100,7 @@ void QDeclarativeObserverService::messageReceived(const QByteArray &message) emit animationSpeedChangeRequested(speed); break; } - case ObserverProtocol::SetExecutionPaused: { + case ObserverProtocol::SetAnimationPaused: { bool paused; ds >> paused; emit executionPauseChangeRequested(paused); @@ -239,12 +239,12 @@ void QDeclarativeObserverService::setAnimationSpeed(qreal slowDownFactor) sendMessage(message); } -void QDeclarativeObserverService::setExecutionPaused(bool paused) +void QDeclarativeObserverService::setAnimationPaused(bool paused) { QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); - ds << ObserverProtocol::ExecutionPausedChanged + ds << ObserverProtocol::AnimationPausedChanged << paused; sendMessage(message); diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp index a32f0943429..6bf346fb6ad 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp @@ -105,7 +105,7 @@ QDeclarativeViewObserverPrivate::QDeclarativeViewObserverPrivate(QDeclarativeVie q(q), designModeBehavior(false), showAppOnTop(false), - executionPaused(false), + animationPaused(false), slowDownFactor(1.0f), toolBox(0) { @@ -149,7 +149,7 @@ QDeclarativeViewObserver::QDeclarativeViewObserver(QDeclarativeView *view, QObje connect(data->debugService, SIGNAL(animationSpeedChangeRequested(qreal)), SLOT(animationSpeedChangeRequested(qreal))); connect(data->debugService, SIGNAL(executionPauseChangeRequested(bool)), - SLOT(executionPausedChangeRequested(bool))); + SLOT(animationPausedChangeRequested(bool))); connect(data->debugService, SIGNAL(colorPickerToolRequested()), data.data(), SLOT(_q_changeToColorPickerTool())); connect(data->debugService, SIGNAL(selectMarqueeToolRequested()), @@ -386,7 +386,7 @@ bool QDeclarativeViewObserver::keyReleaseEvent(QKeyEvent *event) data->subcomponentEditorTool->setCurrentItem(data->selectedItems().first()); break; case Qt::Key_Space: - setExecutionPaused(!data->executionPaused); + setAnimationPaused(!data->animationPaused); break; default: break; @@ -765,13 +765,13 @@ void QDeclarativeViewObserver::setAnimationSpeed(qreal slowDownFactor) data->debugService->setAnimationSpeed(slowDownFactor); } -void QDeclarativeViewObserver::setExecutionPaused(bool paused) +void QDeclarativeViewObserver::setAnimationPaused(bool paused) { - if (data->executionPaused == paused) + if (data->animationPaused == paused) return; - executionPausedChangeRequested(paused); - data->debugService->setExecutionPaused(paused); + animationPausedChangeRequested(paused); + data->debugService->setAnimationPaused(paused); } void QDeclarativeViewObserver::animationSpeedChangeRequested(qreal factor) @@ -781,15 +781,15 @@ void QDeclarativeViewObserver::animationSpeedChangeRequested(qreal factor) emit animationSpeedChanged(factor); } - const float effectiveFactor = data->executionPaused ? 0 : factor; + const float effectiveFactor = data->animationPaused ? 0 : factor; QDeclarativeDebugHelper::setAnimationSlowDownFactor(effectiveFactor); } -void QDeclarativeViewObserver::executionPausedChangeRequested(bool paused) +void QDeclarativeViewObserver::animationPausedChangeRequested(bool paused) { - if (data->executionPaused != paused) { - data->executionPaused = paused; - emit executionPausedChanged(paused); + if (data->animationPaused != paused) { + data->animationPaused = paused; + emit animationPausedChanged(paused); } const float effectiveFactor = paused ? 0 : data->slowDownFactor; @@ -918,7 +918,7 @@ void QDeclarativeViewObserverPrivate::createToolBox() QObject::connect(toolBar, SIGNAL(designModeBehaviorChanged(bool)), q, SLOT(setDesignModeBehavior(bool))); QObject::connect(toolBar, SIGNAL(animationSpeedChanged(qreal)), q, SLOT(setAnimationSpeed(qreal))); - QObject::connect(toolBar, SIGNAL(executionPausedChanged(bool)), q, SLOT(setExecutionPaused(bool))); + QObject::connect(toolBar, SIGNAL(animationPausedChanged(bool)), q, SLOT(setAnimationPaused(bool))); QObject::connect(toolBar, SIGNAL(colorPickerSelected()), this, SLOT(_q_changeToColorPickerTool())); QObject::connect(toolBar, SIGNAL(zoomToolSelected()), this, SLOT(_q_changeToZoomTool())); QObject::connect(toolBar, SIGNAL(selectToolSelected()), this, SLOT(_q_changeToSingleSelectTool())); @@ -929,7 +929,7 @@ void QDeclarativeViewObserverPrivate::createToolBox() this, SLOT(_q_applyChangesFromClient())); QObject::connect(q, SIGNAL(animationSpeedChanged(qreal)), toolBar, SLOT(setAnimationSpeed(qreal))); - QObject::connect(q, SIGNAL(executionPausedChanged(bool)), toolBar, SLOT(setExecutionPaused(bool))); + QObject::connect(q, SIGNAL(animationPausedChanged(bool)), toolBar, SLOT(setAnimationPaused(bool))); QObject::connect(q, SIGNAL(selectToolActivated()), toolBar, SLOT(activateSelectTool())); diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h index 7ed1103a7c8..9e64e693262 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h @@ -88,7 +88,7 @@ public: bool designModeBehavior; bool showAppOnTop; - bool executionPaused; + bool animationPaused; qreal slowDownFactor; ToolBox *toolBox; diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp index a21318ed818..e86e96e9a6f 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp @@ -787,7 +787,7 @@ void QDeclarativeViewer::createMenu() speedAction->setData(10.0f); playSpeedMenuActions->addAction(speedAction); - pauseAnimationsAction = playSpeedMenu->addAction(tr("Pause"), observer, SLOT(setExecutionPaused(bool))); + pauseAnimationsAction = playSpeedMenu->addAction(tr("Pause"), observer, SLOT(setAnimationPaused(bool))); pauseAnimationsAction->setCheckable(true); pauseAnimationsAction->setShortcut(QKeySequence("Ctrl+.")); @@ -801,7 +801,7 @@ void QDeclarativeViewer::createMenu() playSpeedAction->setMenu(playSpeedMenu); connect(observer, SIGNAL(animationSpeedChanged(qreal)), SLOT(animationSpeedChanged(qreal))); - connect(observer, SIGNAL(executionPausedChanged(bool)), pauseAnimationsAction, SLOT(setChecked(bool))); + connect(observer, SIGNAL(animationPausedChanged(bool)), pauseAnimationsAction, SLOT(setChecked(bool))); showWarningsWindow = new QAction(tr("Show Warnings"), this); showWarningsWindow->setCheckable((true)); @@ -1080,12 +1080,12 @@ void QDeclarativeViewer::toggleRecording() void QDeclarativeViewer::pauseAnimations() { - observer->setExecutionPaused(true); + observer->setAnimationPaused(true); } void QDeclarativeViewer::stepAnimations() { - observer->setExecutionPaused(false); + observer->setAnimationPaused(false); QTimer::singleShot(m_stepSize, this, SLOT(pauseAnimations())); } diff --git a/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp b/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp index d33dd8e7ea2..89ee15bd6ae 100644 --- a/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp +++ b/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp @@ -154,7 +154,7 @@ void QmlInspectorToolBar::setAnimationSpeed(qreal slowDownFactor) m_emitSignals = true; } -void QmlInspectorToolBar::setExecutionPaused(bool paused) +void QmlInspectorToolBar::setAnimationPaused(bool paused) { if (m_paused == paused) return; @@ -338,7 +338,7 @@ void QmlInspectorToolBar::activateDesignModeOnClick() void QmlInspectorToolBar::activatePlayOnClick() { m_paused = !m_paused; - emit executionPausedChanged(m_paused); + emit animationPausedChanged(m_paused); updatePlayAction(); } diff --git a/src/plugins/qmljsinspector/qmlinspectortoolbar.h b/src/plugins/qmljsinspector/qmlinspectortoolbar.h index 9ead3bc47fd..545c6149ae9 100644 --- a/src/plugins/qmljsinspector/qmlinspectortoolbar.h +++ b/src/plugins/qmljsinspector/qmlinspectortoolbar.h @@ -87,7 +87,7 @@ public slots: void activateZoomTool(); void setAnimationSpeed(qreal slowDownFactor); - void setExecutionPaused(bool paused); + void setAnimationPaused(bool paused); void setDesignModeBehavior(bool inDesignMode); void setShowAppOnTop(bool showAppOnTop); @@ -105,7 +105,7 @@ signals: void showAppOnTopSelected(bool isChecked); void animationSpeedChanged(qreal slowdownFactor); - void executionPausedChanged(bool paused); + void animationPausedChanged(bool paused); private slots: void activateDesignModeOnClick(); diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.cpp b/src/plugins/qmljsinspector/qmljsclientproxy.cpp index 80c117cea61..296d39af90b 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.cpp +++ b/src/plugins/qmljsinspector/qmljsclientproxy.cpp @@ -86,8 +86,8 @@ void ClientProxy::connectToServer() SIGNAL(selectMarqueeToolActivated())); connect(m_observerClient, SIGNAL(animationSpeedChanged(qreal)), SIGNAL(animationSpeedChanged(qreal))); - connect(m_observerClient, SIGNAL(executionPausedChanged(bool)), - SIGNAL(executionPausedChanged(bool))); + connect(m_observerClient, SIGNAL(animationPausedChanged(bool)), + SIGNAL(animationPausedChanged(bool))); connect(m_observerClient, SIGNAL(designModeBehaviorChanged(bool)), SIGNAL(designModeBehaviorChanged(bool))); connect(m_observerClient, SIGNAL(showAppOnTopChanged(bool)), @@ -553,10 +553,10 @@ void ClientProxy::setAnimationSpeed(qreal slowDownFactor) m_observerClient->setAnimationSpeed(slowDownFactor); } -void ClientProxy::setExecutionPaused(bool paused) +void ClientProxy::setAnimationPaused(bool paused) { if (isConnected()) - m_observerClient->setExecutionPaused(paused); + m_observerClient->setAnimationPaused(paused); } void ClientProxy::changeToColorPickerTool() diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.h b/src/plugins/qmljsinspector/qmljsclientproxy.h index b6ee5ddd008..191b69b4a2f 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.h +++ b/src/plugins/qmljsinspector/qmljsclientproxy.h @@ -107,7 +107,7 @@ signals: void selectMarqueeToolActivated(); void zoomToolActivated(); void animationSpeedChanged(qreal slowDownFactor); - void executionPausedChanged(bool paused); + void animationPausedChanged(bool paused); void designModeBehaviorChanged(bool inDesignMode); void showAppOnTopChanged(bool showAppOnTop); void serverReloaded(); @@ -122,7 +122,7 @@ public slots: void setDesignModeBehavior(bool inDesignMode); void setAnimationSpeed(qreal slowDownFactor); - void setExecutionPaused(bool paused); + void setAnimationPaused(bool paused); void changeToColorPickerTool(); void changeToZoomTool(); void changeToSelectTool(); diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index f1e01395101..dc9f2df203d 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -884,8 +884,8 @@ void InspectorUi::connectSignals() m_toolBar, SLOT(setSelectedColor(QColor))); connect(m_clientProxy, SIGNAL(animationSpeedChanged(qreal)), m_toolBar, SLOT(setAnimationSpeed(qreal))); - connect(m_clientProxy, SIGNAL(executionPausedChanged(bool)), - m_toolBar, SLOT(setExecutionPaused(bool))); + connect(m_clientProxy, SIGNAL(animationPausedChanged(bool)), + m_toolBar, SLOT(setAnimationPaused(bool))); connect(m_toolBar, SIGNAL(applyChangesFromQmlFileTriggered(bool)), this, SLOT(setApplyChangesToQmlObserver(bool))); @@ -896,8 +896,8 @@ void InspectorUi::connectSignals() m_clientProxy, SLOT(reloadQmlViewer())); connect(m_toolBar, SIGNAL(animationSpeedChanged(qreal)), m_clientProxy, SLOT(setAnimationSpeed(qreal))); - connect(m_toolBar, SIGNAL(executionPausedChanged(bool)), - m_clientProxy, SLOT(setExecutionPaused(bool))); + connect(m_toolBar, SIGNAL(animationPausedChanged(bool)), + m_clientProxy, SLOT(setAnimationPaused(bool))); connect(m_toolBar, SIGNAL(colorPickerSelected()), m_clientProxy, SLOT(changeToColorPickerTool())); connect(m_toolBar, SIGNAL(zoomToolSelected()), diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.cpp b/src/plugins/qmljsinspector/qmljsobserverclient.cpp index 8068f447165..a61ccc35323 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.cpp +++ b/src/plugins/qmljsinspector/qmljsobserverclient.cpp @@ -114,13 +114,13 @@ void QmlJSObserverClient::messageReceived(const QByteArray &message) emit animationSpeedChanged(slowDownFactor); break; } - case ObserverProtocol::ExecutionPausedChanged: { + case ObserverProtocol::AnimationPausedChanged: { bool paused; ds >> paused; log(LogReceive, type, paused ? QLatin1String("true") : QLatin1String("false")); - emit executionPausedChanged(paused); + emit animationPausedChanged(paused); break; } case ObserverProtocol::SetDesignMode: { @@ -318,7 +318,7 @@ void QmlJSObserverClient::setAnimationSpeed(qreal slowDownFactor) sendMessage(message); } -void QmlJSObserverClient::setExecutionPaused(bool paused) +void QmlJSObserverClient::setAnimationPaused(bool paused) { if (!m_connection || !m_connection->isConnected()) return; @@ -326,7 +326,7 @@ void QmlJSObserverClient::setExecutionPaused(bool paused) QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); - ObserverProtocol::Message cmd = ObserverProtocol::SetExecutionPaused; + ObserverProtocol::Message cmd = ObserverProtocol::SetAnimationPaused; ds << cmd << paused; diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.h b/src/plugins/qmljsinspector/qmljsobserverclient.h index 5dd30d97b78..e0259eab14b 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.h +++ b/src/plugins/qmljsinspector/qmljsobserverclient.h @@ -60,7 +60,7 @@ public: void reloadViewer(); void setDesignModeBehavior(bool inDesignMode); void setAnimationSpeed(qreal slowDownFactor); - void setExecutionPaused(bool paused); + void setAnimationPaused(bool paused); void changeToColorPickerTool(); void changeToSelectTool(); void changeToSelectMarqueeTool(); @@ -93,7 +93,7 @@ signals: void selectMarqueeToolActivated(); void zoomToolActivated(); void animationSpeedChanged(qreal slowdownFactor); - void executionPausedChanged(bool paused); + void animationPausedChanged(bool paused); void designModeBehaviorChanged(bool inDesignMode); void showAppOnTopChanged(bool showAppOnTop); void reloaded(); // the server has reloadetd he document From 14f6d9d762ae1c2b0b73449d48ab6b68997961e2 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Mar 2011 11:34:11 +0100 Subject: [PATCH 13/42] fix spelling mistakes --- doc/addressbook-sdk.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/addressbook-sdk.qdoc b/doc/addressbook-sdk.qdoc index 0c49bd2ccbc..2a6fd2c3aa2 100644 --- a/doc/addressbook-sdk.qdoc +++ b/doc/addressbook-sdk.qdoc @@ -977,7 +977,7 @@ Otherwise, instantiate a QDataStream object, \c in, set its version as above and read the serialized data into hte \c contacts data structure. The - \c contacs object is emptied before data is read into it to simplify the + \c contacts object is emptied before data is read into it to simplify the file reading process. A more advanced method would be to read the contacts into a temporary QMap object, and copy over non-duplicate contacts into \c contacts. From ce80090d194870c97fd878f88913fa0703ff3e82 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Mar 2011 12:32:46 +0100 Subject: [PATCH 14/42] help: add menu keyboard accellerators --- src/plugins/help/helpplugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 520ae722553..ce3202913c7 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -100,8 +100,8 @@ using namespace Core::Constants; using namespace Help::Internal; -const char * const SB_INDEX = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Index"); -const char * const SB_CONTENTS = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Contents"); +const char * const SB_INDEX = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "&Index"); +const char * const SB_CONTENTS = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "&Contents"); const char * const SB_BOOKMARKS = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Bookmarks"); const char * const SB_SEARCH = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Search"); From d3eaf05077e507cb3e81c825d9336673cc74cbd0 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 12:33:32 +0100 Subject: [PATCH 15/42] QmlDesigner: avoid syncronization errors when going to text mode and back To be safe to change to the base state (and back). Reviewed-by: Kai Koehne --- .../integration/designdocumentcontroller.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index 47cb7e6d72e..9b0c16d5e6e 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -161,8 +161,19 @@ void DesignDocumentController::detachNodeInstanceView() void DesignDocumentController::attachNodeInstanceView() { + QmlModelState state; if (m_d->nodeInstanceView) model()->attachView(m_d->nodeInstanceView.data()); + + //We go back to base state (and back again) to avoid side effects from text editing. + if (m_d->statesEditorView) { + state = m_d->statesEditorView->currentState(); + m_d->statesEditorView->setCurrentState(m_d->statesEditorView->baseState()); + + } + + if (state.isValid() && m_d->statesEditorView) + m_d->statesEditorView->setCurrentState(state); } QWidget *DesignDocumentController::centralWidget() const From e8984f09f18748033c09f89443ab4a791f99fbb7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 12:34:15 +0100 Subject: [PATCH 16/42] QmlDesigner.propertyEditor: do not show __properties Properties starting __ with are private api by convention. Reviewed-by: Kai Koehne --- .../qmldesigner/components/propertyeditor/propertyeditor.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index 8f215a2862e..2af517f1725 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -599,7 +599,11 @@ QString templateGeneration(NodeMetaInfo type, NodeMetaInfo superType, const QmlO qSort(orderedList); foreach (const QString &name, orderedList) { + + if (name.startsWith(QLatin1String("__"))) + continue; //private API QString properName = name; + properName.replace('.', '_'); QString typeName = type.propertyTypeName(name); From e828c425b51f0133282b1b678fe2296780551de2 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 12:35:56 +0100 Subject: [PATCH 17/42] QmlDesigner.nodeInstances: bugfix for state editing The state activeStateInstance() was always invalid as a side effect of calling deactivateState() before. So we always changed back to the base state when removing an item. Reviewed-by: Kai Koehne --- .../designercore/instances/nodeinstanceserver.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index 6f8f71f7352..e578938a947 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp @@ -258,6 +258,7 @@ void NodeInstanceServer::clearScene(const ClearSceneCommand &/*command*/) void NodeInstanceServer::removeInstances(const RemoveInstancesCommand &command) { + ServerNodeInstance oldState = activeStateInstance(); if (activeStateInstance().isValid()) activeStateInstance().deactivateState(); @@ -265,9 +266,8 @@ void NodeInstanceServer::removeInstances(const RemoveInstancesCommand &command) removeInstanceRelationsip(instanceId); } - if (activeStateInstance().isValid()) - activeStateInstance().activateState(); - + if (oldState.isValid()) + oldState.activateState(); refreshBindings(); startRenderTimer(); From 79c86386455560b11e63a499bf30c4f5611d215c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 12:37:55 +0100 Subject: [PATCH 18/42] QmlDesigner.nodeInstances: fixing updating Checking for !d->dirtySceneTransform makes no sense, since it is always true after changing states. So once the user changed the state updates where not triggered anymore. Reviewed-by: Kai Koehne --- .../designercore/instances/rendernodeinstanceserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp index 2ba844df917..cfa472362c8 100644 --- a/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/rendernodeinstanceserver.cpp @@ -64,7 +64,7 @@ void RenderNodeInstanceServer::findItemChangesAndSendChangeCommands() ServerNodeInstance instance = instanceForObject(graphicsObject); QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(item); - if((d->dirty && d->notifyBoundingRectChanged)|| (d->dirty && !d->dirtySceneTransform) || nonInstanceChildIsDirty(graphicsObject)) + if((d->dirty && d->notifyBoundingRectChanged)|| (d->dirty) || nonInstanceChildIsDirty(graphicsObject)) m_dirtyInstanceSet.insert(instance); if (d->geometryChanged) { From 866e39a0a245cceb79bccd70667e6071e92bfda8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Mar 2011 12:44:29 +0100 Subject: [PATCH 19/42] Target dialog: Set a tooltip containing Qt version info. Introduce verbose flag and display QtVersion tooltip on checkbox. Reviewed-by: dt --- src/plugins/qt4projectmanager/qt4target.cpp | 4 ++++ src/plugins/qt4projectmanager/qtoptionspage.cpp | 2 +- src/plugins/qt4projectmanager/qtversionmanager.cpp | 14 ++++++++------ src/plugins/qt4projectmanager/qtversionmanager.h | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 4019e644b43..855342da07b 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -593,6 +593,8 @@ void Qt4DefaultTargetSetupWidget::createImportWidget(const BuildConfigurationInf QCheckBox *checkBox = new QCheckBox; checkBox->setText(tr("Import build from %1").arg(info.directory)); checkBox->setChecked(m_importEnabled.at(pos)); + if (info.version) + checkBox->setToolTip(info.version->toHtml(false)); m_importLayout->addWidget(checkBox, pos, 0, 1, 2); connect(checkBox, SIGNAL(toggled(bool)), @@ -611,6 +613,8 @@ void Qt4DefaultTargetSetupWidget::setupWidgets() QCheckBox *checkbox = new QCheckBox; checkbox->setText(displayNameFrom(info)); checkbox->setChecked(m_enabled.at(i)); + if (info.version) + checkbox->setToolTip(info.version->toHtml(false)); m_newBuildsLayout->addWidget(checkbox, i * 2, 0); Utils::PathChooser *pathChooser = new Utils::PathChooser(); diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 7ad7caa4cef..45d2476b92f 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -230,7 +230,7 @@ bool QtOptionsPageWidget::eventFilter(QObject *o, QEvent *e) const int index = indexForTreeItem(item); if (index == -1) return false; - const QString tooltip = m_versions.at(index)->toHtml(); + const QString tooltip = m_versions.at(index)->toHtml(true); QToolTip::showText(helpEvent->globalPos(), tooltip, m_ui->qtdirList); helpEvent->accept(); return true; diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index c9f4bd2fabf..b4e74c24895 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -698,7 +698,7 @@ QtVersion::~QtVersion() { } -QString QtVersion::toHtml() const +QString QtVersion::toHtml(bool verbose) const { QString rc; QTextStream str(&rc); @@ -729,11 +729,13 @@ QString QtVersion::toHtml() const } // default config. str << "" << QtVersionManager::tr("Version:") << "" << qtVersionString() << ""; - const QHash vInfo = versionInfo(); - if (!vInfo.isEmpty()) { - const QHash::const_iterator vcend = vInfo.constEnd(); - for (QHash::const_iterator it = vInfo.constBegin(); it != vcend; ++it) - str << "
" << it.key() <<  "
" << it.value() << ""; + if (verbose) { + const QHash vInfo = versionInfo(); + if (!vInfo.isEmpty()) { + const QHash::const_iterator vcend = vInfo.constEnd(); + for (QHash::const_iterator it = vInfo.constBegin(); it != vcend; ++it) + str << "
" << it.key() <<  "
" << it.value() << ""; + } } } str << ""; diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 2da91fd346d..b5cb9133602 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -182,7 +182,7 @@ public: Q_DECLARE_FLAGS(QmakeBuildConfigs, QmakeBuildConfig) QmakeBuildConfigs defaultBuildConfig() const; - QString toHtml() const; + QString toHtml(bool verbose) const; bool supportsShadowBuilds() const; From 36e1a6a882d70c1e7b51fb5da6767fe8e27eacfb Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 12:54:06 +0100 Subject: [PATCH 20/42] QmlDesigner: enable Qt Quick Designer just for qml files No .js files in the visual designer. Task-number: QTCREATORBUG-4166 Reviewed-by: Kai Koehne --- src/plugins/qmldesigner/qmldesignerplugin.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 5e11f9aa447..05ea11dcb80 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -343,8 +343,7 @@ void BauhausPlugin::extensionsInitialized() { m_designMode = ExtensionSystem::PluginManager::instance()->getObject(); - m_mimeTypes << "application/x-qml" << "application/javascript" - << "application/x-javascript" << "text/javascript"; + m_mimeTypes << "application/x-qml"; m_designMode->registerDesignWidget(m_mainWidget, m_mimeTypes, m_context->context()); connect(m_designMode, SIGNAL(actionsUpdated(Core::IEditor*)), SLOT(updateActions(Core::IEditor*))); From cf5048e250e069ba5537e8061376773806a53a12 Mon Sep 17 00:00:00 2001 From: Leandro Melo Date: Tue, 22 Mar 2011 12:57:24 +0100 Subject: [PATCH 21/42] Update changes --- dist/changes-2.2.0 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dist/changes-2.2.0 b/dist/changes-2.2.0 index 32ffc5761e4..6ddfbff2003 100644 --- a/dist/changes-2.2.0 +++ b/dist/changes-2.2.0 @@ -12,6 +12,8 @@ General * Moved toolchain definitions out of Qt versions. * You can now define toolchains in Tools->Options->ToolChains * Creator now supports more than one instance of each kind of toolchain + * Support for MIME type customization through editing of patterns and + magic matchers. Editing * Add new Inkpot color scheme @@ -23,6 +25,8 @@ Editing - code completion * Add 'expand/collapse all' context menu entry to Outline pane * Support for user defined macros was contributed by Nicolas Arnaud-Cormos + * Snippet editor with syntax highlighting, indentation, and basic auto + completion for C++ and QML. Project Support * QMake project support should be more robust against syntax errors @@ -36,6 +40,7 @@ Project Support * CMake: Add Ui completion, changes in .ui files are picked up without a rebuild. * Syntax highlighting and completion for QMake project files + * Text editor behavior settings now avaiable on a per-project basis. Debugging * Rewrote debugging engine using the Microsoft Console Debugger (CDB) @@ -89,7 +94,6 @@ C++ Support * Fix indentation of labels * Highlighting for virtual functions * Navigate to correct overloaded function/method - * Snippets for class/struct/loops QML/JS Support * Add wizard for creating JavaScript files, QTCREATORBUG-3070 From facd4c360fe734095d67f5f44fe8352a1e346e53 Mon Sep 17 00:00:00 2001 From: Pawel Polanski Date: Thu, 17 Mar 2011 11:47:44 +0100 Subject: [PATCH 22/42] Symbian: SIS files are not created per project now Reviewed-by: Daniel Teske --- .../qt-s60/s60deployconfiguration.cpp | 27 ++++++++++++++++--- .../qt-s60/s60deployconfiguration.h | 2 ++ src/plugins/qt4projectmanager/qt4nodes.cpp | 1 + src/plugins/qt4projectmanager/qt4nodes.h | 3 ++- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp index e854368c29d..cff06330115 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp @@ -148,12 +148,31 @@ bool S60DeployConfiguration::isStaticLibrary(const Qt4ProFileNode &projectNode) return false; } +bool S60DeployConfiguration::isApplication(const Qt4ProFileNode &projectNode) const +{ + return projectNode.projectType() == ApplicationTemplate; +} + +bool S60DeployConfiguration::isDeployable(const Qt4ProFileNode &projectNode) const +{ + const QStringList &deployment(projectNode.variableValue(Deployment)); + // default_*deployment are default for DEPLOYMENT + const char * defaultDeploymentStart = "default_"; + const char * defaultDeploymentEnd = "deployment"; + + //we need to filter out the default_*deployment + for (int i = deployment.count() - 1; i >= 0; --i) { + const QString var = deployment.at(i); + if (!var.startsWith(QLatin1String(defaultDeploymentStart)) + || !var.endsWith(QLatin1String(defaultDeploymentEnd))) + return true; + } + return false; +} + bool S60DeployConfiguration::hasSisPackage(const Qt4ProFileNode &projectNode) const { - if (projectNode.projectType() != ApplicationTemplate - && projectNode.projectType() != LibraryTemplate) - return false; - return !isStaticLibrary(projectNode); + return isDeployable(projectNode) || isApplication(projectNode); } QStringList S60DeployConfiguration::signedPackages() const diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h index f5d8efd1fed..d961a978bbe 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h @@ -130,7 +130,9 @@ private: QString symbianTarget() const; QString createPackageName(const QString &baseName) const; bool isDebug() const; + bool isDeployable(const Qt4ProFileNode &projectNode) const; bool isStaticLibrary(const Qt4ProFileNode &projectNode) const; + bool isApplication(const Qt4ProFileNode &projectNode) const; bool hasSisPackage(const Qt4ProFileNode &projectNode) const; private: diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 35d5e70ad3b..406443121fd 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -1745,6 +1745,7 @@ void Qt4ProFileNode::applyEvaluate(EvalResult evalResult, bool async) QLatin1String("QML_IMPORT_PATH"), m_projectDir); newVarValues[Makefile] = m_readerExact->values("MAKEFILE"); newVarValues[SymbianCapabilities] = m_readerExact->values("TARGET.CAPABILITY"); + newVarValues[Deployment] = m_readerExact->values("DEPLOYMENT"); if (m_varValues != newVarValues) { Qt4VariablesHash oldValues = m_varValues; diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 369ca5a5e33..029abb8af92 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -104,7 +104,8 @@ enum Qt4Variable { ConfigVar, QmlImportPathVar, Makefile, - SymbianCapabilities + SymbianCapabilities, + Deployment }; class Qt4PriFileNode; From 3c8786dfcd4234f1f7d3a12357529bd30bca2b88 Mon Sep 17 00:00:00 2001 From: con Date: Tue, 22 Mar 2011 13:06:38 +0100 Subject: [PATCH 23/42] Fix CurrentProject:QT_INSTALL_BINS. This stopped working when renaming the Qt Creator variable. Reviewed-by: Kai Koehne --- src/plugins/qt4projectmanager/qt4projectmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index f1246a1aa32..af50c07f718 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -191,7 +191,7 @@ void Qt4Manager::updateVariable(const QString &variable) return; } QString value = qt4pro->activeTarget()->activeBuildConfiguration() - ->qtVersion()->versionInfo().value(QLatin1String(kInstallBins)); + ->qtVersion()->versionInfo().value(QLatin1String("QT_INSTALL_BINS")); Core::VariableManager::instance()->insert(QLatin1String(kInstallBins), value); } } From 90f7ab49a6862d1681dd626f3a660d93c086bbcc Mon Sep 17 00:00:00 2001 From: con Date: Tue, 22 Mar 2011 12:14:44 +0100 Subject: [PATCH 24/42] Adapt accelerators of edit menu items. Acked-by: hjk --- src/plugins/coreplugin/editormanager/editormanager.cpp | 2 +- src/plugins/coreplugin/mainwindow.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 897d25b7c23..ecff4fd6acc 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -418,7 +418,7 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) : ActionContainer *medit = am->actionContainer(Constants::M_EDIT); ActionContainer *advancedMenu = am->createMenu(Constants::M_EDIT_ADVANCED); medit->addMenu(advancedMenu, Constants::G_EDIT_ADVANCED); - advancedMenu->menu()->setTitle(tr("&Advanced")); + advancedMenu->menu()->setTitle(tr("Ad&vanced")); advancedMenu->appendGroup(Constants::G_EDIT_FORMAT); advancedMenu->appendGroup(Constants::G_EDIT_COLLAPSING); advancedMenu->appendGroup(Constants::G_EDIT_BLOCKS); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 05f0844efdc..02fec4bc54f 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -703,7 +703,7 @@ void MainWindow::registerDefaultActions() // Select All icon = QIcon::fromTheme(QLatin1String("edit-select-all")); - tmpaction = new QAction(icon, tr("&Select All"), this); + tmpaction = new QAction(icon, tr("Select &All"), this); cmd = am->registerAction(tmpaction, Constants::SELECTALL, globalContext); cmd->setDefaultKeySequence(QKeySequence::SelectAll); medit->addAction(cmd, Constants::G_EDIT_SELECTALL); From 1a6580900825dc98f406cd8a1818a5a0fa35c1f5 Mon Sep 17 00:00:00 2001 From: con Date: Tue, 22 Mar 2011 13:37:19 +0100 Subject: [PATCH 25/42] Add error reporting if executable is not found for external tool. --- src/plugins/coreplugin/externaltool.cpp | 37 +++++++++++++++++++++---- src/plugins/coreplugin/externaltool.h | 5 ++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp index a61bd038bf3..16fd9edcbdf 100644 --- a/src/plugins/coreplugin/externaltool.cpp +++ b/src/plugins/coreplugin/externaltool.cpp @@ -529,7 +529,8 @@ bool ExternalTool::operator==(const ExternalTool &other) const ExternalToolRunner::ExternalToolRunner(const ExternalTool *tool) : m_tool(new ExternalTool(tool)), m_process(0), - m_outputCodec(QTextCodec::codecForLocale()) + m_outputCodec(QTextCodec::codecForLocale()), + m_hasError(false) { run(); } @@ -540,6 +541,16 @@ ExternalToolRunner::~ExternalToolRunner() delete m_tool; } +bool ExternalToolRunner::hasError() const +{ + return m_hasError; +} + +QString ExternalToolRunner::errorString() const +{ + return m_errorString; +} + bool ExternalToolRunner::resolve() { if (!m_tool) @@ -548,14 +559,27 @@ bool ExternalToolRunner::resolve() m_resolvedArguments.clear(); m_resolvedWorkingDirectory.clear(); { // executable + QStringList expandedExecutables; /* for error message */ foreach (const QString &executable, m_tool->executables()) { - QString resolved = Utils::expandMacros(executable, + QString expanded = Utils::expandMacros(executable, Core::VariableManager::instance()->macroExpander()); + expandedExecutables << expanded; m_resolvedExecutable = - Utils::Environment::systemEnvironment().searchInPath(resolved); + Utils::Environment::systemEnvironment().searchInPath(expanded); + if (!m_resolvedExecutable.isEmpty()) + break; } - if (m_resolvedExecutable.isEmpty()) + if (m_resolvedExecutable.isEmpty()) { + m_hasError = true; + for (int i = 0; i < expandedExecutables.size(); ++i) { + m_errorString += tr("Could not find executable for '%1' (expanded '%2')\n") + .arg(m_tool->executables().at(i)) + .arg(expandedExecutables.at(i)); + } + if (!m_errorString.isEmpty()) + m_errorString.chop(1); return false; + } } { // arguments m_resolvedArguments = Utils::QtcProcess::expandMacros(m_tool->arguments(), @@ -759,7 +783,10 @@ void ExternalToolManager::menuActivated() QTC_ASSERT(action, return); ExternalTool *tool = m_tools.value(action->data().toString()); QTC_ASSERT(tool, return); - new ExternalToolRunner(tool); + ExternalToolRunner *runner = new ExternalToolRunner(tool); + if (runner->hasError()) { + ICore::instance()->messageManager()->printToOutputPane(runner->errorString(), true); + } } QMap > ExternalToolManager::toolsByCategory() const diff --git a/src/plugins/coreplugin/externaltool.h b/src/plugins/coreplugin/externaltool.h index 8edeefd3761..80c8e8a6f6e 100644 --- a/src/plugins/coreplugin/externaltool.h +++ b/src/plugins/coreplugin/externaltool.h @@ -135,6 +135,9 @@ public: ExternalToolRunner(const ExternalTool *tool); ~ExternalToolRunner(); + bool hasError() const; + QString errorString() const; + private slots: void started(); void finished(int exitCode, QProcess::ExitStatus status); @@ -157,6 +160,8 @@ private: QTextCodec::ConverterState m_errorCodecState; QString m_processOutput; QString m_expectedFileName; + bool m_hasError; + QString m_errorString; }; } // Internal From 9bc68a3d98cf7574957e4f52c16b9014fad52ecc Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Mar 2011 15:13:58 +0100 Subject: [PATCH 26/42] L10n: Update German translations for 2.2 Beta. --- share/qtcreator/translations/qtcreator_de.ts | 679 ++++++------------- 1 file changed, 197 insertions(+), 482 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index ccb41bcdb5f..f7babb111fa 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -35,7 +35,7 @@ &Core-Datei: - &Toolchain: + &Tool chain: &Toolchain: @@ -50,7 +50,7 @@ &Prozess-ID: - &Toolchain: + &Tool chain: &Toolchain: @@ -330,10 +330,6 @@ The path %1 is not a valid CMake. Der Pfad %1 ist keine gültige CMake-Installation. - - The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used toolchain here and rerun CMake. Or simply finish the wizard directly. - Das Verzeichnis %1 enthält bereits eine hinreichend aktuelle cbp-Datei. Sie können spezielle Argumente angeben oder die Toolchain ändern und cmake noch einmal ausführen. Oder beenden Sie den Wizard an dieser Stelle - The directory %1 does not contain a cbp file. Qt Creator needs to create this file by running CMake. Some projects require command line arguments to the initial CMake call. Das Verzeichnis %1 enthält keine cbp-Datei. Qt Creator muss die Datei durch einen cmake-Aufruf erzeugen. Für einige Projekte sind dazu Kommandozeilenargumente erforderlich. @@ -362,6 +358,10 @@ NMake Generator (%1) NMake-Generator (%1) + + The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used tool chain here and rerun CMake. Or simply finish the wizard directly. + Der Ordner %1 enthält bereits eine hinreichend aktuelle cbp-Datei. Sie können spezielle Argumente angeben oder die Toolchain ändern und cmake noch einmal ausführen. Oder,. beenden Sie den Wizard an dieser Stelle. + No valid CMake executable specified. Es wurde keine ausführbare cmake-Datei angegeben. @@ -409,7 +409,7 @@ Make - <b>Unknown Toolchain</b> + <b>Unknown tool chain</b> <b>Unbekannte Toolchain</b> @@ -970,14 +970,6 @@ Behavior Verhalten - - Sources - Quelldateien - - - Qt Sources: - Qt-Quellen: - CompletionSettingsPage @@ -2295,18 +2287,6 @@ Qt Creator kann sich nicht anhängen. Invalid breakpoint state. <ungültiger Zustand> - - Breakpoint at "main" - Halte bei "main" - - - Break when catching exceptions - Beim Fangen von Ausnahmen anhalten - - - Break when throwing exceptions - Beim Auslösen von Ausnahmen anhalten - Breakpoint by File and Line Halte bei Erreichen von Datei/Zeile @@ -2319,14 +2299,6 @@ Qt Creator kann sich nicht anhängen. Breakpoint by Address Halte bei Erreichen einer Adresse - - Breakpoint at "throw" - Halte bei "throw" - - - Breakpoint at "catch" - Halte bei "catch" - Breakpoint at Function "main()" Halte bei Erreichen der Funktion "main()" @@ -2483,10 +2455,6 @@ Qt Creator kann sich nicht anhängen. Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - Synchronize Breakpoints Haltepunkte synchronisieren @@ -2511,14 +2479,6 @@ Qt Creator kann sich nicht anhängen. Add Breakpoint... Haltepunkt setzen... - - Set Breakpoint at "throw" - Haltepunkt bei "throw" setzen - - - Set Breakpoint at "catch" - Haltepunkt bei "catch" setzen - Add Breakpoint Haltepunkt setzen @@ -2589,10 +2549,6 @@ Qt Creator kann sich nicht anhängen. Debugger Properties... Debugger-Einstellungen... - - Adjust Column Widths to Contents - Spaltenbreite an Inhalt anpassen - Always Adjust Column Widths to Contents Spaltenbreite immer an Inhalt anpassen @@ -3259,10 +3215,6 @@ Sie können die Umgebungsvariable PYTHONPATH setzen, um auf die Installation zu Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - Debugger::Internal::OutputCollector @@ -3328,10 +3280,6 @@ Sie können die Umgebungsvariable PYTHONPATH setzen, um auf die Installation zu Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - Debugger::Internal::ScriptEngine @@ -3448,10 +3396,6 @@ Sie können die Umgebungsvariable PYTHONPATH setzen, um auf die Installation zu Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - Debugger::Internal::StartExternalDialog @@ -3552,10 +3496,6 @@ Sie können die Umgebungsvariable PYTHONPATH setzen, um auf die Installation zu Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - Debugger::Internal::TrkGdbAdapter @@ -3877,10 +3817,6 @@ Sie können die Umgebungsvariable PYTHONPATH setzen, um auf die Installation zu Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - DebuggingHelperOptionPage @@ -5099,7 +5035,7 @@ on slow machines. In this case, the value should be increased. Generische Verwaltung - <Invalid Toolchain> + <Invalid tool chain> <Ungültige Toolchain> @@ -6195,14 +6131,6 @@ rückgängig machen? Help::Internal::HelpPlugin - - Contents - Inhalt - - - Index - Index - Search Suche @@ -6211,6 +6139,14 @@ rückgängig machen? Bookmarks Lesezeichen + + &Index + &Index + + + &Contents + &Inhalt + Home Startseite @@ -8119,10 +8055,6 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Close All Projects Alle Projekte schließen - - Session - Sitzung - Build All Alles erstellen @@ -9174,7 +9106,7 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü verwende Qt-Version: <b>%1</b><br>mit Toolchain <b>%2</b><br>Erstellung in <b>%3</b> - <Invalid ToolChain> + <Invalid tool chain> <Ungültige Toolchain> @@ -9203,10 +9135,6 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü %1 build directory Im Ordner %1 existiert ein inkompatibler Build, der überschrieben wird. - - <Invalid Toolchain> - <Ungültige Toolchain> - Manage Verwaltung @@ -9380,6 +9308,10 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü <i>Not yet built.</i> <i>Noch nicht erstellt.</i> + + <i>Not needed.</i> + <i>Nicht erforderlich.</i> + <i>Cannot be compiled.</i> <i>Kann nicht erstellt werden.</i> @@ -9450,41 +9382,6 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Argumente: - - Qt4ProjectManager::Internal::S60DevicesPreferencePane - - Form - Formular - - - Refresh - Aktualisieren - - - S60 SDKs - S60 SDKs - - - Error - Fehler - - - Add - Hinzufügen - - - Change Qt version - Qt-Version ändern - - - Remove - Entfernen - - - Change Qt Version - Qt-Version ändern - - Qt4ProjectManager::Internal::S60EmulatorRunConfiguration @@ -10130,7 +10027,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeich Haltepunkt bei '&main': - &ToolChain: + &Tool chain: &Toolchain: @@ -11463,11 +11360,6 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Choose File Datei wählen - - <not valid> - Selected path is not valid: - <ungültig> - The path must not be empty. Der Pfad darf nicht leer sein. @@ -12092,29 +11984,6 @@ p, li { white-space: pre-wrap; } Es wird das Token '%1' erwartet - - Qt4ProjectManager::Internal::S60Devices::Device - - Id: - ID: - - - Name: - Name: - - - EPOC: - EPOC: - - - Tools: - Tools: - - - Qt: - Qt: - - trk::BluetoothListener @@ -12879,10 +12748,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Adjust Column Widths to Contents Spaltenbreite an Inhalt anpassen - - Always Adjust Column Widths to Contents - Spaltenbreite immer an Inhalt anpassen - FakeVim::Internal::FakeVimExCommandsPage @@ -13172,10 +13037,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Unable to create an editor for the commit. Es konnte kein Editor für die Abgabe angelegt werden. - - Unable to create a commit editor. - Es konnte kein Editor für die Abgabe angelegt werden. - Commit changes for "%1". Änderungen in "%1" abgeben. @@ -13973,6 +13834,10 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.No qmake path set Es ist keine qmake-Pfad gesetzt + + qmake does not exist or is not executable + Die qmake-Datei existiert nicht oder ist nicht ausführbar + Qt version has no name Die Qt-Version hat keinen Namen @@ -13993,6 +13858,10 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Failed to detect the ABI(s) used by the Qt version. Die ABI(s) der Qt-Version konnten nicht bestimmt werden. + + The "Open C/C++ plugin" is not installed in the Symbian SDK or the Symbian SDK path is misconfigured + Das Plugin "Open C/C++" ist im Symbian SDK nicht installiert oder der Pfad des Symbian SDKs ist falsch konfiguriert + Desktop Qt Version is meant for the desktop @@ -14037,7 +13906,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Der Installationsordner der Qt-Version '%1' kann nicht bestimmt werden. - The Qt Version has no toolchain. + The Qt Version has no tool chain. Dieser Qt-Version ist keine Toolchain zugeordnet. @@ -15508,13 +15377,8 @@ Haben Sie Qemu gestartet? Ziele des Projekts einrichten - Target setup - Ziel einrichten - - - Qt Creator can set up the following targets for project <b>%1</b>: - %1: Project name - Qt Creator kann für das Projekt<b>%1</b> die folgenden Ziele anlegen: + <b>No valid qt versions found.</b><br> Please add a qt version in Tools/Options or via the maintenance tool of the SDK. + <b>Es konnten keine gültigen Qt-Versionen gefunden werden.</b><br>Bitte fügen Sie eine gültige Version unter Extras/Einstellungen oder mit dem SDK-Installationswerkzug hinzu. @@ -16058,51 +15922,6 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete %2 - - Qt4ProjectManager::Internal::S60DevicesBaseWidget - - Default - Vorgabe - - - SDK Location - SDK-Pfad - - - Qt Location - Qt-Pfad - - - Choose Qt folder - Qt-Ordner - - - - Qt4ProjectManager::Internal::S60DevicesModel - - No Qt installed - Qt ist nicht installiert - - - - Qt4ProjectManager::Internal::GnuPocS60DevicesWidget - - Step 1 of 2: Choose GnuPoc folder - Schritt 1 von 2: GnuPoc-Ordner wählen - - - Step 2 of 2: Choose Qt folder - Schritt 2 von 2: Qt-Ordner wählen - - - Adding GnuPoc - GnuPoc hinzufügen - - - GnuPoc and Qt folders must not be identical. - GnuPoc-Ordner und Qt-Ordner müssen sich unterscheiden. - - CodePaster::FileShareProtocolSettingsWidget @@ -16334,20 +16153,12 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Das Symbian-SDK und das Projekt müssen sich auf demselben Laufwerk befinden. - The Symbian SDK was not found for Qt version %1. - Es konnte kein Symbian-SDK für die Qt-Version %1 gefunden werden. + The Symbian tool chain does not handle spaces in the project path '%1'. + Bei der Symbian-Toolchain sind keine Leerzeichen in der Pfadangabe des Projektes '%1' zulässig. - The "Open C/C++ plugin" is not installed in the Symbian SDK or the Symbian SDK path is misconfigured for Qt version %1. - Das Plugin "Open C/C++" ist im Symbian SDK nicht installiert oder der Pfad des Symbian SDKs ist bei der Qt-Version %1 falsch konfiguriert. - - - The Symbian toolchain does not handle spaces in the project path '%1'. - Bei der Symbian-Toolchain sind keine Leerzeichen in der Pfadangabe '%1' zulässig. - - - The Symbian toolchain does not handle special characters in the project name '%1' well. - Die Sonderzeichen in der Pfadangabe '%1' können bei der Symbian-Toolchain zu Problemen führen. + The Symbian tool chain does not handle special characters in the project name '%1' well. + Die Sonderzeichen im Projektnamen '%1' können bei der Symbian-Toolchain zu Problemen führen. @@ -16473,6 +16284,10 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Only select items with content (S) Nur Elemente mit Inhalt auswählen (S) + + Reset view (R) + Ansicht zurücksetzen (R) + InvalidIdException @@ -16833,10 +16648,6 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Limit to prefix Auf Präfix beschränken - - Double click to edit item. - <Doppelklick zum Bearbeiten> - Add Hinzufügen @@ -17452,22 +17263,6 @@ Details: %3 Es wird stattdesen der Debugger-Engine '%2' benutzt. Details: %3 - - The debugger engine '%1' preferred for debugging binaries of type %2 is disabled. - Der für zum Debuggen von ausführbaren Dateien des Typs '%2' erforderliche Debugger-Engine %1 ist gegenwärtig deaktiviert. - - - This configuration requires the debugger engine %1, which is disabled. - Diese Konfiguration erfordert den Debugger-Engine '%1', der gegenwärtig deaktiviert ist. - - - The debugger engine '%1' preferred for debugging binaries of type %2 is not set up correctly: %3 - Der für zum Debuggen von ausführbaren Dateien des Typs '%2' erforderliche Debugger-Engine %1 ist nicht richtig konfiguriert: %3 - - - The debugger engine required for this configuration is not correctly configured. - Der für diese Konfiguration erforderliche Debugger-Engine ist nicht richtig konfiguriert. - Debugger::DebuggerRunControl @@ -17639,10 +17434,6 @@ wenn es außerhalb von git bash aufgerufen wird. Help::Internal::RemoteHelpFilter - - Online Documentation - Online-Dokumentation - Web Search Web-Suche @@ -17683,17 +17474,17 @@ wenn es außerhalb von git bash aufgerufen wird. Ctrl+= - Switch background + Switch Background Hintergrund umschalten + + Switch Outline + Umriss umschalten + Ctrl+[ Ctrl+[ - - Switch outline - Umriss umschalten - Ctrl+] Ctrl+] @@ -17848,12 +17639,6 @@ wenn es außerhalb von git bash aufgerufen wird. Using Old Project Settings File Projekteinstellungsdatei einer Vorgängerversion verwenden - - A versioned backup of the .user settings file will be used, because the non-versioned file was created by an incompatible newer version of Qt Creator. -Project settings changes made since the last time this version of Qt Creator was used with this project are ignored, and changes made now will <b>not</b> be propagated to the newer version. - Es wird eine versionierte Sicherungskopie der .user-Datei benutzt, da die aktuelle Datei von einer neuen, inkompatiblen Version von Qt Creator erzeugt wurde. -Änderungen der Projekteinstellungen, die nach der letzten Benutzung dieser Version von Qt Creator für dieses Projekt vorgenommen wurden, werden nicht berücksichtigt, und die jetzt folgenden Änderungen werden <b>nicht</b> auf die neue Version übertragen. - <html><head/><body><p>A versioned backup of the .user settings file will be used, because the non-versioned file was created by an incompatible newer version of Qt Creator.</p><p>Project settings changes made since the last time this version of Qt Creator was used with this project are ignored, and changes made now will <b>not</b> be propagated to the newer version.</p></body></html> <html><head/><body><p>Es wird eine versionierte Sicherungskopie der .user-Datei benutzt, da die aktuelle Datei von einer neuen, inkompatiblen Version von Qt Creator erzeugt wurde.</p><p>Änderungen der Projekteinstellungen, die nach der letzten Benutzung dieser Version von Qt Creator für dieses Projekt vorgenommen wurden, werden nicht berücksichtigt, und die jetzt folgenden Änderungen werden <b>nicht</b> auf die neue Version übertragen.</p></body></html> @@ -18673,26 +18458,14 @@ Fehlerausgabe: %1 Error reading QtMobility version Fehler beim Lesen der QtMobility-Version - - CODA version: - CODA-Version: - Screen size: Bildschirmgröße: - - OS version: - Betriebssystem-Version: - unknown unbekannt - - ROM version: - ROM-Version: - Release: Release: @@ -18705,14 +18478,6 @@ Fehlerausgabe: %1 Error reading CODA version Fehler beim Bestimmen der CODA-Version - - Screen size: - Bildschirmgröße: - - - Information about the device is not available when using CODA. - Bei Verwendung von CODA kann keine Information zum Mobilgerät angezeigt werden. - Queries the device for information Fragt Informationen vom Gerät ab @@ -18729,10 +18494,6 @@ Fehlerausgabe: %1 Address: Adresse: - - Connecting... - Verbinde... - Qt4ProjectManager::Internal::S60DeployStep @@ -18859,10 +18620,6 @@ Bitte prüfen Sie, ob das Gerät verbunden ist und die Anwendung 'TRK' Installation has finished Installation beendet - - Installation failed: %1 - Die Installation schlug fehl: %1 - Installation Installation @@ -19699,25 +19456,6 @@ Bei gdb kann eine durch '\n' getrennte Kommandosequenz angegeben werde Die Vorlagendatei '%1' konnte nicht geöffnet werden. - - Qt4ProjectManager::Internal::AbstractMobileAppWizardDialog - - Qt Versions - Qt-Versionen - - - Mobile Options - Einstellungen für Mobilgeräte - - - Symbian Specific - Symbian-spezifisch - - - Maemo Specific - Maemo-spezifisch - - MobileLibraryWizardOptionPage @@ -19879,7 +19617,7 @@ Fehler: %2 The project files listed below do not contain Maemo deployment information, which means the respective targets cannot be deployed to and/or run on a device. Qt Creator will add the missing information to these files if you check the respective rows below. - Die unten aufgeführten Projektdateien enthalten nicht die erforderliche Maemo-Deployment-Information, das heißt, für die betreffenden Ziele kann kein Deployment durchgeführt werden und/oder sie können nicht auf einem Mobilgerät ausgeführt werden. Bitte wählen Sie die Projekte aus, in denen Qt Creator die fehlenden Informationen hinzufügen soll. + Die unten aufgeführten Projektdateien enthalten nicht die erforderliche Maemo-Deployment-Information, das heißt, für die betreffenden Ziele kann kein Deployment durchgeführt werden und/oder sie können nicht auf einem Mobilgerät ausgeführt werden. Bitte wählen Sie die Projekte aus, in denen Qt Creator die fehlenden Informationen hinzufügen soll. &Check all @@ -20431,16 +20169,16 @@ Fehler: %2 OpenGL-Modus - &Hardware Acceleration + &Auto-detect + &Automatisch bestimmen + + + &Hardware acceleration &Hardware-Beschleunigung - &Software Rendering - &Software Rendering - - - &Auto-detect - &Automatisch bestimmen + &Software rendering + &Software-Rendering @@ -20518,6 +20256,18 @@ Fehler: %2 Note: Unless you chose to load a URL, all files and directories that reside in the same directory as the main HTML file are deployed. You can modify the contents of the directory any time before deploying. Hinweis: Wenn Sie keinen URL angeben, werden alle Dateien die sich im selben Ordner wie die HTML-Hauptdatei befinden, zum Deployment vorgesehen. Der Inhalt des Ordners kann vor dem Deployment-Vorgang jederzeit modifiziert werden. + + Touch optimized navigation + Für Touch-Bedienung optimierte Navigation + + + Enable touch optimized navigation + Für Touch-Bedienung optimierte Navigation aktivieren + + + Touch optimized navigation will make the HTML page flickable and enlarge the area of touch sensitive elements. If you use a JavaScript framework which optimizes the touch interaction, leave the checkbox unchecked. + Für Touch-Bedienung optimierte Navigation bewirkt, dass die HTML-Seite mittels 'Flick' bedient werden kann und der Bereich der Touch-empfindlichen Elemente vergrößert wird. Lassen Sie die Einstellung deaktiviert, wenn Sie bereits ein auf Optimierung der Touch-Interaktion ausgelegtes JavaScript-Framework benutzen. + MobileAppWizardGenericOptionsPage @@ -21056,16 +20806,6 @@ Hinweis: Unter Umständen wird die lokale Datei gelöscht. Connecting to CODA server adapter failed: Die Verbindung zum CODA-Server-Adapter schlug fehl: - - - - The reported code segment address (0x%1) might be invalid. Symbol resolution or setting breakoints may not work. - Die erhaltene Startadresse des Codesegments (%0x1) ist eventuell ungültig. Bei Auflösen von Symbolen oder beim Setzen von Haltpunkten könnten Probleme auftreten. - - - Connecting to TRK server adapter failed: - - Die Verbindung zum TRK-Server-Adapter schlug fehl: @@ -21571,10 +21311,6 @@ auf Instanzen von QML-Komponenten-Objekten und Eigenschaften zugreifen.Color Picker Farbauswahl - - Animation Speed - Animationsgeschwindigkeit - 1x 1x @@ -21595,10 +21331,6 @@ auf Instanzen von QML-Komponenten-Objekten und Eigenschaften zugreifen.0.1x 0.1x - - Pause - Pause - QmlJSTools::Internal::FunctionFilter @@ -22421,10 +22153,6 @@ Möchten Sie sie zum Projekt hinzufügen? Qt Creator is waiting for the CODA application to connect.<br>Please make sure the application is running on your mobile phone and the right IP address and/or port are configured in the project settings. Qt Creator wartet auf eine Verbindung zur CODA-Anwendung.<br>Bitte starten Sie die Anwendung auf dem Mobiltelefon und prüfen Sie die Einstellung der IP-Adresse und des Ports in der Projektkonfiguration. - - Qt Creator is waiting for the CODA application to connect.<br>Please make sure the application is running on your mobile phone and the right IP address and port are configured in the project settings. - Qt Creator wartet auf eine Verbindung zur CODA-Anwendung.<br>Bitte starten Sie die Anwendung auf dem Mobiltelefon und prüfen Sie die Einstellung der IP-Adresse und des Ports in der Projektkonfiguration. - Canceled. Abgebrochen. @@ -22618,8 +22346,8 @@ Bitte prüfen Sie, ob das Gerät verbunden ist und die Anwendung 'TRK' Dieser Wizard erstellt ein HTML5-Anwendungsprojekt. - HTML Sources - HTML-Quellen + HTML Options + HTML-Einstellungen @@ -22637,13 +22365,6 @@ You can build the application and deploy it on desktop and mobile target platfor Sie können diese Anwendung sowohl auf Desktop- als auch auf mobilen Plattformen ausführen. Dieser Projekttyp ermöglicht zum Beispiel die Estellung eines signierten Symbian Installation System (SIS)-Paketes. - - Qt4ProjectManager::Internal::Html5AppWizardSourcesPage - - Select HTML File - HTML-Datei auswählen - - Qt4ProjectManager::Internal::MobileAppWizardGenericOptionsPage @@ -23260,14 +22981,6 @@ Die Einstellung gestattet es, unter diesem Umständen fortzusetzen Ignore Unterdrücken - - Show in pane - In Panel anzeigen - - - Replace selection - Ausgewählten Text ersetzen - Error output: Fehlerausgabe: @@ -23318,6 +23031,14 @@ Die Einstellung gestattet es, unter diesem Umständen fortzusetzen <ul><li>Unterdrücken: Ausgabe nicht behandeln</li><li>In Panel anzeigen: Im Panel 'Allgemeine Ausgaben' anzeigen </li><li>Ausgewählten Text ersetzen: Der im aktuellen Dokument ausgewählte Text wird durch die Ausgabe ersetzt</li></ul></p></body></html> + + Show in Pane + In Panel anzeigen + + + Replace Selection + Ausgewählten Text ersetzen + MimeTypeMagicDialog @@ -23845,10 +23566,6 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Diff "%1" Diff für "%1" - - Alt+B,Alt+D - 'Alt+B,Alt+D - Log Current File Filelog für Datei @@ -23857,10 +23574,6 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Log "%1" Log für "%1" - - Alt+B,Alt+L - Alt+B,Alt+L - Status Current File Status der Datei @@ -23870,8 +23583,16 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Status von "%1" - Alt+B,Alt+S - Alt+B,Alt+S + ALT+Z,Alt+D + ALT+Z,Alt+D + + + ALT+Z,Alt+L + ALT+Z,Alt+L + + + ALT+Z,Alt+S + ALT+Z,Alt+S Add @@ -23930,8 +23651,8 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Abgeben... - Alt+B,Alt+C - Alt+B,Alt+C + ALT+Z,Alt+C + ALT+Z,Alt+C Create Repository... @@ -24039,10 +23760,6 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Core::Internal::ExternalToolModel - - External Tools Menu - Menü für externe Werkzeuge - Uncategorized keine @@ -24052,11 +23769,11 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Werkzeuge, die direkt unter dem Menü Externe Werkzeuge erscheinen. - New category + New Category Neue Kategorie - New tool + New Tool Neues Werkzeug @@ -24209,10 +23926,6 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. &ABI: &ABI: - - &Force 32bit compilation: - 32bit-Kompilierung: - ProjectExplorer::Internal::MingwToolChainFactory @@ -24299,7 +24012,7 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. ProjectExplorer::Internal::ToolChainOptionsPage - Toolchains + Tool Chains Toolchains @@ -24418,8 +24131,8 @@ Fehler: %2 Qt4ProjectManager::Qt4DefaultTargetSetupWidget - Import build from: - Build importieren aus: + Add build from: + Build aus hinzufügen: Add Build @@ -24532,16 +24245,6 @@ Fehler: %2 Form Form - - Choose a build configuration - Build-Konfiguration wählen - - - Only Qt versions above 4.6.3 are made available in this wizard. -This is because previous Qt Versions have limitations in building suitable sis files. - Dieser Wizard zeigt nur Qt-Versionen nach Version 4.6.3 an, da in den vorangegangenen Versionen -Einschränkungen bezüglich der Erstellung von SIS-Dateien bestehen. - Choose a build configuration: Build-Konfiguration wählen: @@ -24566,30 +24269,14 @@ Einschränkungen bezüglich der Erstellung von SIS-Dateien bestehen.Form Form - - Global Vendor Name - Eindeutiger Anbietername - - - Qt Version used in builds - Bei Erstellung verwendete Qt-Version - Current Qt Version Aktuelle Qt-Version - - App UID - UID der Anwendung - Current UID3 Aktuelle UID3 - - Capabilities - Berechtigungen: - Current set of capabilities Akuelle Berechtigungen @@ -24670,34 +24357,6 @@ Einschränkungen bezüglich der Erstellung von SIS-Dateien bestehen. Qt4ProjectManager::Internal::S60PublishingSisSettingsPageOvi - - %1 is a default vendor name used for testing and development. <br>The Vendor_Name field cannot be, or contain, the name 'Nokia' in it. <br>It is recommended to also not use the default name of 'Vendor'/'Vendor-EN', or to leave the entry blank. <br>see <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Packaging and Signing</a> for guidelines.<br> - %1 ist ein zum Testen und zur Entwicklung vorgegebener Anbietername. <br>Das Feld Vendor_Name darf nicht aus dem Namen 'Nokia' bestehen oder diesen enthalten. <br>Es davon abgeraten, den Vorgabenamen 'Vendor'/'Vendor-EN' zu verwenden oder das Feld leerzulassen. <br>siehe <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Paketierungs- und Signierungsrichtlinien</a>.<br> - - - %1 are default vendor names used for testing and development. <br>The Vendor_Name field cannot be, or contain, the name 'Nokia' in it. <br>It is recommended to also not use the default name of 'Vendor'/'Vendor-EN', or to leave the entry blank. <br>see <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Packaging and Signing</a> for guidelines.<br> - %1 sind zum Testen und zur Entwicklung vorgegebene Anbieternamen. <br>Das Feld Vendor_Name darf nicht aus dem Namen 'Nokia' bestehen oder diesen enthalten. <br>Es davon abgeraten, den Vorgabenamen 'Vendor'/'Vendor-EN' zu verwenden oder das Feld leerzulassen. <br>siehe <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Paketierungs- und Signierungsrichtlinien</a>.<br> - - - The App UID %1 is only for testing and development.<br>SIS packages built with it, cannot be distributed via the OVI Store.<br> - Die Anwendungs-UID %1 kann nur zum Testen und zur Entwicklung verwendet werden.<br>Damit erstellte SIS-Pakete können nicht über den Ovi Store verbreitet werden.<br> - - - The App UID %1 is a symbiansigned.com UID. <br>Apps with this UID will be rejected by Ovi Sign.<br>If you want to continue with this UID, sign your app on symbiansigned.com and upload the signed app to Ovi.<br> - Die Anwendungs-UID %1 wurde von symbiansigned.com vergeben.<br>Anwendungen mit dieser UID werden von Ovi Sign nicht akzeptiert.<br>Wenn Sie diese UID weiter verwenden möchten, signieren Sie bitte Ihre Anwendungauf symbiansigned.com und laden Sie die signierte Anwendung zu Ovi hoch.<br> - - - The App UID %1 is not an acceptable UID.<br> SIS packages built with it, cannot be signed by Ovi.<br> - Die Anwendungs-UID %1 ist ungültig.<br>Damit erstellte SIS-Pakete können nicht von Ovi signiert werden.<br> - - - The App UID is a global unique indentifier of the SIS package.<br> - Die Anwendungs-UID ist ein global eindeutiger Bezeichner eines SIS-Paketes.<br> - - - To get a unique App UID for your package file,<br>please register at <a href="http://info.publish.ovi.com/">publish.ovi.com</a> - Um eine eindeutige Anwendungs-UID für Ihre Paketdatei zu erhalten,<br>registrieren Sie sich bitte bei <a href="http://info.publish.ovi.com/">publish.ovi.com</a> - %1 is a default vendor name used for testing and development. <br>The Vendor_Name field cannot contain the name 'Nokia'. <br>You are advised against using the default names 'Vendor' and 'Vendor-EN'. <br>You should also not leave the entry blank. <br>see <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Packaging and Signing</a> for guidelines.<br> %1 ist ein zum Testen und zur Entwicklung vorgegebener Anbietername. <br>Das Feld Vendor_Name darf den Namen 'Nokia' nicht enthalten.<br>Es davon abgeraten, die Vorgabenamen 'Vendor' oder 'Vendor-EN' zu verwenden.<br>Das Feld sollte auch nicht leer sein.<br>siehe <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Paketierungs- und Signierungsrichtlinien</a>.<br> @@ -24753,32 +24412,6 @@ Einschränkungen bezüglich der Erstellung von SIS-Dateien bestehen. Qt4ProjectManager::Internal::S60PublishingWizardFactoryOvi - - Publish for Qt Symbian Application on Ovi Store - Veröffentlichen als Qt Symbian-Anwendung im Ovi-Store - - - This wizard will check your resulting sis file and some of your meta data to make sure it complies with Ovi Store submission regulations. - -This wizard is used to create sis files which can be submitted to publish to Ovi. - -It cannot be used if you are using UID3s from Symbian Signed. - -You cannot use it for the Certified Signed and Manufacturer level capabilities: -i.e. NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM and TCB - -Your application will also be rejected by Ovi QA if it uses an unreleased Qt Version. - Dieser Wizard prüft Ihr SIS-Paketdatei und deren Metadaten um sicherzustellen, dass sie den Bestimmungen von Ovi Store entsprechen. - -Dieser Wizard erstellt SIS-Paketdateien, die zur Veröffentlichung auf Ovi eingereicht werden können. - -Er kann nicht im Zusammenhang mit UID3s von Symbian Signed verwendet werden. - -Zertifikatssignierte oder Herstellerberechtigungen werden ebenfalls nicht unterstützt, zum Beispiel: -NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM und TCB - -Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version zurückgewiesen. - Publish Qt Symbian Applications to Ovi Store Veröffentlichen als Qt Symbian-Anwendung im Ovi-Store @@ -24824,14 +24457,6 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version Creating an Uploadable SIS File Erzeuge hochladbare SIS-Datei - - .Pro File Checks - Überprüfung der .Pro-Dateien - - - Creating Uploadable Sis File - Erzeuge hochladbare SIS-Datei - Core::Internal::MimeTypeSettingsModel @@ -25173,8 +24798,19 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version <html><head/><body><p>Sie versuchen, das Werkzeug '%1' mit einer Anwendung im Modus %2 zu betreiben. Das Werkzeug ist zur Verwendung im Modus %3 vorgesehen.</p><p>Möchten Sie trotzdem fortsetzen und es im Modus %2 laufen lassen?</p></body></html> - Run %1 in %2 mode? - Soll %1 im Modus %2 ausgeführt werden? + Tool '%1' started... + Das Werkzeug "%1" wurde gestartet... + + + Tool '%1' finished, %n issues were found. + + Das Werkzeug '%1' wurde beendet; ein Fehler wurde gefunden. + Das Werkzeug '%1' wurde beendet; %n Fehler wurden gefunden. + + + + Tool '%1' finished, no issues were found. + Das Werkzeug '%1' wurde beendet; es wurden keine Fehler gefunden. &Do not ask again @@ -25348,18 +24984,6 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version Analyze Memory Speicheranalyse - - Clear - Löschen - - - Previous Item - Vorangehender Eintrag - - - Next Item - Nächster Eintrag - Error Filter Fehlerfilter @@ -25490,6 +25114,46 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version Port unreachable Port nicht erreichbar + + The port %1 could not be opened: %2 + Der Port %1 konnte nicht geöffnet werden: %2 + + + An error occurred while waiting for read notifications from %1: %2 + Beim Lesen von %1 ist ein Fehler aufgetreten: %2 + + + An error occurred while reading from %1: %2 + Beim Lesen von %1 ist ein Fehler aufgetreten: %2 + + + An error occurred while writing to %1: %2 + Beim Schreiben zu %1 ist ein Fehler aufgetreten: %2 + + + An error occurred while syncing on waitForBytesWritten for %1: %2 + Beim Schreiben zu %1 ist ein Fehler aufgetreten: %2 + + + The port %1 could not be opened: %2 (POSIX error %3) + Der Port %1 konnte nicht geöffnet werden: %2 (POSIX-Fehler %3) + + + Unable to retrieve terminal settings of port %1: %2 (POSIX error %3) + Die Terminal-Einstellungen von Port %1 konnten nicht abgefragt werden: %3 (POSIX-Fehler %3) + + + Unable to apply terminal settings to port %1: %2 (POSIX error %3) + Die Terminal-Einstellungen von Port %1 konnten nicht gesetzt werden: %3 (POSIX-Fehler %3) + + + Cannot write to port %1: %2 (POSIX error %3) + Es konnte nicht zu Port %1 geschrieben werden: %2 (POSIX-Fehler %3) + + + The function select() returned an error on port %1: %2 (POSIX error %3) + Bei Port %1 gab die Funktion select() einen Fehler zurück: %2 (POSIX-Fehler %3) + Analyzer::Internal::AnalyzerOutputPane @@ -25502,4 +25166,55 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version Analyse + + Qt4DefaultTargetSetupWidget + + <b>Error:</b> + Severity is Task::Error + <b>Fehler:</b> + + + <b>Warning:</b> + Severity is Task::Warning + <b>Warnung:</b> + + + + Qt4ProjectManager::AbstractMobileAppWizardDialog + + Qt Versions + Qt-Versionen + + + Mobile Options + Einstellungen für Mobilgeräte + + + Symbian Specific + Symbian-spezifisch + + + Maemo Specific + Maemo-spezifisch + + + + Qt4ProjectManager::TargetSetupPage + + Target Setup + Ziel einrichten + + + Qt Creator can set up the following targets for project <b>%1</b>: + %1: Project name + Qt Creator kann für das Projekt <b>%1</b> die folgenden Ziele anlegen: + + + + Qt4ProjectManager::Internal::Html5AppWizardOptionsPage + + Select HTML File + HTML-Datei auswählen + + From 90b6005e1fc23d516ac5e3e49090cc9547fc2f62 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 22 Mar 2011 15:47:38 +0100 Subject: [PATCH 27/42] UI text: fix capitalization Reviewed-by: Friedemann Kleint --- src/plugins/bazaar/clonewizard.cpp | 2 +- src/plugins/bazaar/pullorpushdialog.ui | 6 +++--- src/plugins/qt4projectmanager/projectloadwizard.cpp | 2 +- src/plugins/vcsbase/basecheckoutwizardpage.ui | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/bazaar/clonewizard.cpp b/src/plugins/bazaar/clonewizard.cpp index cad62236155..9b836a47b6a 100644 --- a/src/plugins/bazaar/clonewizard.cpp +++ b/src/plugins/bazaar/clonewizard.cpp @@ -64,7 +64,7 @@ QString CloneWizard::description() const QString CloneWizard::displayName() const { - return tr("Bazaar Clone (or branch)"); + return tr("Bazaar Clone (Or Branch)"); } QList CloneWizard::createParameterPages(const QString &path) diff --git a/src/plugins/bazaar/pullorpushdialog.ui b/src/plugins/bazaar/pullorpushdialog.ui index eaedc39d23c..4bae81b36bc 100644 --- a/src/plugins/bazaar/pullorpushdialog.ui +++ b/src/plugins/bazaar/pullorpushdialog.ui @@ -17,13 +17,13 @@ - Branch location + Branch Location - Default Location + Default location true @@ -50,7 +50,7 @@ for example https://[user[:pass]@]host[:port]/[path] - Specify Url: + Specify URL: diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp index 6fbe43eb57c..3098610a3f7 100644 --- a/src/plugins/qt4projectmanager/projectloadwizard.cpp +++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp @@ -50,7 +50,7 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W { Q_ASSERT(project); - setWindowTitle(tr("Project setup")); + setWindowTitle(tr("Project Setup")); setupTargetPage(); diff --git a/src/plugins/vcsbase/basecheckoutwizardpage.ui b/src/plugins/vcsbase/basecheckoutwizardpage.ui index 46a58348e4e..1cca58b1026 100644 --- a/src/plugins/vcsbase/basecheckoutwizardpage.ui +++ b/src/plugins/vcsbase/basecheckoutwizardpage.ui @@ -94,12 +94,12 @@ The path in which the directory containing the checkout will be created. - Checkout Path: + Checkout path: - + @@ -107,7 +107,7 @@ The local directory that will contain the code after the checkout. - Checkout Directory: + Checkout directory: From c6bd3a49617b6c47700f7e81a3fe5b4b81d77c8d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Mar 2011 16:09:12 +0100 Subject: [PATCH 28/42] Debugger[CDB]: Make error message more verbose. Task-number: QTCREATORBUG-4185 --- src/libs/qtcreatorcdbext/symbolgroupvalue.cpp | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp index 6982c009208..ff917fc57c2 100644 --- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp +++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp @@ -89,14 +89,37 @@ bool SymbolGroupValue::isValid() const return m_node != 0 && m_context.dataspaces != 0; } +// Debug helper +static void formatNodeError(const AbstractSymbolGroupNode *n, std::ostream &os) +{ + const AbstractSymbolGroupNode::AbstractSymbolGroupNodePtrVector &children = n->children(); + const VectorIndexType size = children.size(); + if (const SymbolGroupNode *sn = n->asSymbolGroupNode()) { + os << "type: " << sn->type() << ", raw value: \"" << wStringToString(sn->symbolGroupRawValue()) + << "\", 0x" << std::hex << sn->address() << ", " << std::dec; + } + if (size) { + os << "children (" << size << "): ["; + for (VectorIndexType i = 0; i < size; i++) + os << ' ' << children.at(i)->name(); + os << ']'; + } else { + os << "No children"; + } +} + SymbolGroupValue SymbolGroupValue::operator[](unsigned index) const { if (ensureExpanded()) if (index < m_node->children().size()) if (SymbolGroupNode *n = m_node->childAt(index)->asSymbolGroupNode()) return SymbolGroupValue(n, m_context); - if (isValid() && SymbolGroupValue::verbose) - DebugPrint() << name() << "::operator[" << index << "](const char*) failed."; + if (isValid() && SymbolGroupValue::verbose) { + DebugPrint dp; + dp << name() << "::operator[](#" << index << ") failed. "; + if (m_node) + formatNodeError(m_node, dp); + } return SymbolGroupValue(m_errorMessage); } @@ -125,8 +148,12 @@ SymbolGroupValue SymbolGroupValue::operator[](const char *name) const if (AbstractSymbolGroupNode *child = m_node->childByIName(name)) if (SymbolGroupNode *n = child->asSymbolGroupNode()) return SymbolGroupValue(n, m_context); - if (isValid() && SymbolGroupValue::verbose) // Do not report subsequent errors - DebugPrint() << this->name() << "::operator[](" << name << ") failed."; + if (isValid() && SymbolGroupValue::verbose) { // Do not report subsequent errors + DebugPrint dp; + dp << this->name() << "::operator[](\"" << name << "\") failed. "; + if (m_node) + formatNodeError(m_node, dp); + } return SymbolGroupValue(m_errorMessage); } From bd89873300251500da67a0b924488d38b67dfd6e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 22 Mar 2011 16:22:47 +0100 Subject: [PATCH 29/42] L10n: German translations for 2.2 beta (case corrections). --- share/qtcreator/translations/qtcreator_de.ts | 58 +++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index f7babb111fa..eccbcbcfad1 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -1184,6 +1184,10 @@ Sollen sie überschrieben werden? Remove All Splits Alle Teilungen aufheben + + Ad&vanced + Er&weitert + Full path of the current document including file name. Vollständiger Pfad des aktuellen Dokuments einschließlich Dateiname. @@ -1208,10 +1212,6 @@ Sollen sie überschrieben werden? Save %1 &As... Speichere '%1' &unter... - - &Advanced - &Weitere - Opening File Datei Öffnen @@ -1532,7 +1532,7 @@ Sollen sie überschrieben werden? &Einfügen - &Select All + Select &All Alles Aus&wählen @@ -9010,7 +9010,7 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Qt4ProjectManager::Internal::ProjectLoadWizard - Project setup + Project Setup Projekt einrichten @@ -11564,10 +11564,6 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: WizardPage WizardPage - - Checkout Directory: - Verzeichnis: - ... ... @@ -11601,12 +11597,16 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Der Pfad, unter dem der Ordner mit dem Checkout erstellt wird. - Checkout Path: + The local directory that will contain the code after the checkout. + Der lokale Ordner, welcher nach dem Checkout den Code enthalten wird. + + + Checkout path: Checkout-Pfad: - The local directory that will contain the code after the checkout. - Der lokale Ordner, welcher nach dem Checkout den Code enthalten wird. + Checkout directory: + Verzeichnis: @@ -22833,22 +22833,10 @@ Die Einstellung gestattet es, unter diesem Umständen fortzusetzen Dialog Dialog - - Branch location - Branch - - - Default Location - Vorgabe - Local filesystem: Dateisystem: - - Specify Url: - URL: - Options Einstellungen @@ -22911,6 +22899,18 @@ This flag will allow push to proceed Normalerweise schlägt eine Branch-Operation fehl, wenn der Zielordner vorhanden ist und keinen Versionskontroll-Ordner hat. Die Einstellung gestattet es, unter diesem Umständen fortzusetzen + + Branch Location + Branch + + + Default location + Vorgabe + + + Specify URL: + URL: + Bazaar::Internal::RevertDialog @@ -23718,7 +23718,7 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Erstellt einen Clone eines Bazaar-Branches und versucht, das darin enthaltene Projekt zu laden. - Bazaar Clone (or branch) + Bazaar Clone (Or Branch) Bazaar Clone (bzw. Branch) @@ -23802,6 +23802,12 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Core::Internal::ExternalToolRunner + + Could not find executable for '%1' (expanded '%2') + + Die ausführbare Datei von '%1' (expandiert: '%2') konnte nicht gefunden werden + + Starting external tool '%1' %2 Starte externes Werkzeug '%1' %2 From c8669cc15e46b023b5b0747ffa5e70ffdc959690 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 13:46:59 +0100 Subject: [PATCH 30/42] QmlDesigner: remove change in behaivour from 2.1 Because of overriding the double click id editing was not possible anymore. ChangeToComponent is still possible in the form editor. --- src/plugins/qmldesigner/components/navigator/navigatorview.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index bbf2c04db94..93a0439b39e 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -53,7 +53,6 @@ NavigatorView::NavigatorView(QObject* parent) : m_widget->setTreeModel(m_treeModel.data()); connect(treeWidget()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(changeSelection(QItemSelection,QItemSelection))); - connect(treeWidget(), SIGNAL(doubleClicked(QModelIndex)), this, SLOT(changeToComponent(QModelIndex))); treeWidget()->setIndentation(treeWidget()->indentation() * 0.5); NameItemDelegate *idDelegate = new NameItemDelegate(this,m_treeModel.data()); From a3c3fa02ff819a77393e00b70a96b68a31483ca3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 22 Mar 2011 13:47:41 +0100 Subject: [PATCH 31/42] QmlDesigner.formEditor: crashfix This fixes a rare crash. Reviewed-by: Kai Koehne --- .../qmldesigner/components/formeditor/formeditorview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 9cc920b4684..d7ca5fb7c90 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -188,8 +188,8 @@ void FormEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode) } foreach (FormEditorItem *item, m_scene->allFormEditorItems()) { - delete item; m_scene->removeItemFromHash(item); + delete item; } QmlModelView::rootNodeTypeChanged(type, majorVersion, minorVersion); From 74914f4753a6effe0295127d4c79498bb554627a Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Mar 2011 15:17:24 +0100 Subject: [PATCH 32/42] debugger: fix spelling in irrelevant message --- src/plugins/debugger/debuggerengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index e355de2de0d..754a8ade091 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -926,7 +926,7 @@ void DebuggerEngine::notifyInferiorStopOk() void DebuggerEngine::notifyInferiorSpontaneousStop() { - showMessage(_("NOTE: INFERIOR SPONTANEOUES STOP")); + showMessage(_("NOTE: INFERIOR SPONTANEOUS STOP")); QTC_ASSERT(state() == InferiorRunOk, qDebug() << this << state()); setState(InferiorStopOk); } From 5c056505f15fc363351e06a71a0202ba9253609e Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 22 Mar 2011 17:07:19 +0100 Subject: [PATCH 33/42] Revert "help: add menu keyboard accellerators" This reverts commit ce80090d194870c97fd878f88913fa0703ff3e82. The string shows up in other places, too. --- src/plugins/help/helpplugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index ce3202913c7..520ae722553 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -100,8 +100,8 @@ using namespace Core::Constants; using namespace Help::Internal; -const char * const SB_INDEX = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "&Index"); -const char * const SB_CONTENTS = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "&Contents"); +const char * const SB_INDEX = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Index"); +const char * const SB_CONTENTS = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Contents"); const char * const SB_BOOKMARKS = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Bookmarks"); const char * const SB_SEARCH = QT_TRANSLATE_NOOP("Help::Internal::HelpPlugin", "Search"); From d732e581af52beb7aa706744c564074204a75779 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 22 Mar 2011 17:06:13 +0100 Subject: [PATCH 34/42] DebugHelper: Disable 'Build All' button if there isn't anything to build Task-number: QTCREATORBUG-4176 --- src/plugins/qt4projectmanager/qtoptionspage.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 45d2476b92f..026f2947638 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -575,10 +575,14 @@ void QtOptionsPageWidget::updateDebuggingHelperUi() const bool hasLog = currentItem && !currentItem->data(0, BuildLogRole).toString().isEmpty(); m_debuggingHelperUi->showLogButton->setEnabled(hasLog); - m_debuggingHelperUi->rebuildButton->setEnabled(!isBuildingGdbHelper - && !isBuildingQmlDumper - && !isBuildingQmlDebuggingLib - && !isBuildingQmlObserver); + m_debuggingHelperUi->rebuildButton->setEnabled((!isBuildingGdbHelper + && !isBuildingQmlDumper + && !isBuildingQmlDebuggingLib + && !isBuildingQmlObserver) + && (canBuildGdbHelper + || canBuildQmlDumper + || canBuildQmlDebuggingLib + || canBuildQmlObserver)); m_ui->debuggingHelperWidget->setVisible(true); } From 3cdacc52738639a1f478293d4d91ace3f24b1a59 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 22 Mar 2011 17:09:04 +0100 Subject: [PATCH 35/42] Improved German translation Reviewed-by: ossi --- share/qtcreator/translations/qtcreator_de.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index eccbcbcfad1..141432b800c 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -24138,7 +24138,7 @@ Fehler: %2 Qt4ProjectManager::Qt4DefaultTargetSetupWidget Add build from: - Build aus hinzufügen: + Build hinzufügen aus: Add Build From f628bcbd818b40a05d0cf5842c3977f83f24dabb Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 23 Mar 2011 09:32:37 +0100 Subject: [PATCH 36/42] Debugger[CDB]: Correct minimum version in documentation. Version 6.11 has a limitation in that it cannot handle some symbol group entries of the form (class Foo*)(address), leading to values. Task-number: QTCREATORBUG-4185 --- doc/qtcreator.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 75adc3b28ca..39f45a39993 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -7266,7 +7266,7 @@ \l{http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx} or \l{http://www.microsoft.com/whdc/devtools/debugging/install64bit.Mspx} - package (Version 6.11.1.404 for the 32-bit or the 64-bit version + package (Version 6.12 for the 32-bit or the 64-bit version of Qt Creator, respectively), which are freely available for download from the \l{http://msdn.microsoft.com/en-us/default.aspx}{Microsoft Developer Network}. From ca9d360e090ab8cc073655ad4315a0c580a8cb00 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 23 Mar 2011 09:37:27 +0100 Subject: [PATCH 37/42] Debugger[CDB]: Quote all QString-occurrences. --- src/libs/qtcreatorcdbext/symbolgroupvalue.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp index ff917fc57c2..4f4e3cfade4 100644 --- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp +++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp @@ -1244,7 +1244,7 @@ static inline bool dumpQString(const SymbolGroupValue &v, std::wostream &str) if (const SymbolGroupValue sizeValue = d["size"]) { const int size = sizeValue.intValue(); if (size >= 0) { - str << d["data"].wcharPointerData(size); + str << L'"' << d["data"].wcharPointerData(size) << L'"'; return true; } } @@ -1461,9 +1461,7 @@ static inline bool dumpQWidget(const SymbolGroupValue &v, std::wostream &str, vo return false; if (specialInfoIn) *specialInfoIn = qwPrivate.node(); - str << L'"'; dumpQString(oName, str); - str << L'"'; return true; } @@ -1475,9 +1473,7 @@ static inline bool dumpQObject(const SymbolGroupValue &v, std::wostream &str, vo if (SymbolGroupValue oName = qoPrivate["objectName"]) { if (specialInfoIn) *specialInfoIn = qoPrivate.node(); - str << L'"'; dumpQString(oName, str); - str << L'"'; return true; } } @@ -1600,10 +1596,9 @@ static bool dumpQVariant(const SymbolGroupValue &v, std::wostream &str, void **s } break; case 10: // String - str << L"(QString) \""; + str << L"(QString) "; if (const SymbolGroupValue sv = dataV.typeCast(qtInfo.prependQtCoreModule("QString *").c_str())) { dumpQString(sv, str); - str << L'"'; } break; case 11: //StringList: Dump container size From 8926297c73539a31c71df2f58f432f38cf833dad Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 23 Mar 2011 12:33:54 +0100 Subject: [PATCH 38/42] quote apostrophe --- src/plugins/debugger/Debugger.pluginspec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/debugger/Debugger.pluginspec.in b/src/plugins/debugger/Debugger.pluginspec.in index 0a3ae8d1bdf..68d3c257733 100644 --- a/src/plugins/debugger/Debugger.pluginspec.in +++ b/src/plugins/debugger/Debugger.pluginspec.in @@ -17,7 +17,7 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General - + From 106e940d1c40e181a18919b0dc9e9a8a148b449a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 23 Mar 2011 12:39:10 +0100 Subject: [PATCH 39/42] QmlDesigner.nodeInstances: fix for flickable Items with a viewport like flickable do not work in 2.2. This is a regression from 2.1. Reviewed-by: Kai Koehne Task-number: QTCREATORBUG-3998 --- .../instances/graphicsobjectnodeinstance.cpp | 24 +++++++++++++++++++ .../instances/graphicsobjectnodeinstance.h | 1 + 2 files changed, 25 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp index 6f0d2724e66..f6e075020e5 100644 --- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp @@ -72,12 +72,36 @@ QList GraphicsObjectNodeInstance::childItems() const QGraphicsObject *childObject = item->toGraphicsObject(); if (childObject && nodeInstanceServer()->hasInstanceForObject(childObject)) { instanceList.append(nodeInstanceServer()->instanceForObject(childObject)); + } else { //there might be an item in between the parent instance + //and the child instance. + //Popular example is flickable which has a viewport item between + //the flickable item and the flickable children + instanceList.append(childItemsForChild(item)); //In such a case we go deeper inside the item and + //search for child items with instances. } } return instanceList; } +QList GraphicsObjectNodeInstance::childItemsForChild(QGraphicsItem *childItem) const +{ + QList instanceList; + if (childItem) { + + foreach(QGraphicsItem *item, childItem->childItems()) + { + QGraphicsObject *childObject = item->toGraphicsObject(); + if (childObject && nodeInstanceServer()->hasInstanceForObject(childObject)) { + instanceList.append(nodeInstanceServer()->instanceForObject(childObject)); + } else { + instanceList.append(childItemsForChild(item)); + } + } + } + return instanceList; +} + void GraphicsObjectNodeInstance::setHasContent(bool hasContent) { m_hasContent = hasContent; diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h index 333d0ceaaba..e6fa5060c91 100644 --- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h +++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h @@ -76,6 +76,7 @@ public: bool hasContent() const; QList childItems() const; + QList childItemsForChild(QGraphicsItem *childItem) const; void paintUpdate(); From c18a89ffb4e1318f7c3ab5caff508a84c6f28699 Mon Sep 17 00:00:00 2001 From: Bill King Date: Wed, 23 Mar 2011 12:48:09 +0100 Subject: [PATCH 40/42] cdb: change to detection to fix for coverage tool compilation Revby: Friedemann Kleint --- src/libs/qtcreatorcdbext/cdb_detect.pri | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/libs/qtcreatorcdbext/cdb_detect.pri b/src/libs/qtcreatorcdbext/cdb_detect.pri index 6fbdee5a6c0..d6b6df07973 100644 --- a/src/libs/qtcreatorcdbext/cdb_detect.pri +++ b/src/libs/qtcreatorcdbext/cdb_detect.pri @@ -2,16 +2,14 @@ # in case MS VS compilers are used. CDB_PATH="" -win32 { - contains(QMAKE_CXX, cl) { - CDB_PATH="$$(CDB_PATH)" - isEmpty(CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows/sdk" - !exists($$CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows (x86)/sdk" - !exists($$CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows (x64)/sdk" - !exists($$CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows 64-bit/sdk" - !exists($$CDB_PATH):CDB_PATH="$$(ProgramW6432)/Debugging Tools For Windows (x86)/sdk" - !exists($$CDB_PATH):CDB_PATH="$$(ProgramW6432)/Debugging Tools For Windows (x64)/sdk" - !exists($$CDB_PATH):CDB_PATH="$$(ProgramW6432)/Debugging Tools For Windows 64-bit/sdk" - !exists($$CDB_PATH)::CDB_PATH="" - } +win32-msvc* { + CDB_PATH="$$(CDB_PATH)" + isEmpty(CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows/sdk" + !exists($$CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows (x86)/sdk" + !exists($$CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows (x64)/sdk" + !exists($$CDB_PATH):CDB_PATH="$$(ProgramFiles)/Debugging Tools For Windows 64-bit/sdk" + !exists($$CDB_PATH):CDB_PATH="$$(ProgramW6432)/Debugging Tools For Windows (x86)/sdk" + !exists($$CDB_PATH):CDB_PATH="$$(ProgramW6432)/Debugging Tools For Windows (x64)/sdk" + !exists($$CDB_PATH):CDB_PATH="$$(ProgramW6432)/Debugging Tools For Windows 64-bit/sdk" + !exists($$CDB_PATH)::CDB_PATH="" } From 81177fab7b53e6c40091722fea3564c6bacc6f70 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 23 Mar 2011 13:27:54 +0100 Subject: [PATCH 41/42] QuickDesigner: Fix assert in rewriter when quickly closing files Make sure that the transaction doesn't last across models. Reviewed-by: Thomas Hartmann Task-number: QTCREATORBUG-4136 --- .../propertyeditor/propertyeditortransaction.cpp | 10 +++++++--- .../propertyeditor/propertyeditortransaction.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.cpp index 9834de95366..39d71d1df75 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.cpp @@ -38,7 +38,7 @@ namespace QmlDesigner { -PropertyEditorTransaction::PropertyEditorTransaction(QmlDesigner::PropertyEditor *propertyEditor) : QObject(propertyEditor), m_propertyEditor(propertyEditor) +PropertyEditorTransaction::PropertyEditorTransaction(QmlDesigner::PropertyEditor *propertyEditor) : QObject(propertyEditor), m_propertyEditor(propertyEditor), m_timerId(-1) { } @@ -49,17 +49,21 @@ void PropertyEditorTransaction::start() if (m_rewriterTransaction.isValid()) m_rewriterTransaction.commit(); m_rewriterTransaction = m_propertyEditor->beginRewriterTransaction(); - startTimer(4000); + m_timerId = startTimer(4000); } void PropertyEditorTransaction::end() { - if (m_rewriterTransaction.isValid() && m_propertyEditor->model()) + if (m_rewriterTransaction.isValid() && m_propertyEditor->model()) { + killTimer(m_timerId); m_rewriterTransaction.commit(); + } } void PropertyEditorTransaction::timerEvent(QTimerEvent *timerEvent) { + if (timerEvent->timerId() != m_timerId) + return; killTimer(timerEvent->timerId()); if (m_rewriterTransaction.isValid()) m_rewriterTransaction.commit(); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.h index 4c131670455..dcf0281efe7 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.h +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditortransaction.h @@ -53,6 +53,7 @@ protected: private: QmlDesigner::PropertyEditor *m_propertyEditor; QmlDesigner::RewriterTransaction m_rewriterTransaction; + int m_timerId; }; } //QmlDesigner From b756d30c2173a4c20454622937c39dd3b7652cdf Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 23 Mar 2011 12:39:34 +0100 Subject: [PATCH 42/42] Targetsetuppage: Import failed messagebox hiding dialog Give it a better parent. Task-Nr: QTCREATORBUG-4192 --- src/plugins/qt4projectmanager/qt4target.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index 855342da07b..525cf0c59a2 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -499,7 +499,7 @@ void Qt4DefaultTargetSetupWidget::addImportClicked() } if (!info.version->supportsTargetId(m_id)) { - QMessageBox::critical(Core::ICore::instance()->mainWindow(), + QMessageBox::critical(this, tr("Incompatible build found"), tr("The Build found in %1 is incompatible with this target").arg(m_importLinePath->path())); return;