From bd451b3c20d2200fbb9cca1db9871ca9fe2f7a86 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 15 Mar 2012 14:05:06 +0100 Subject: [PATCH 01/33] QmlProject: Update warning when QML Observer cannot be found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTCREATORBUG-7108 Change-Id: Id6d40f1985a1e96fd69549c5ced1b37c33f0642c Reviewed-by: Robert Löhning Reviewed-by: Leena Miettinen --- src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index ee95878663e..580e08e9c97 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -101,18 +101,18 @@ void QmlProjectPlugin::extensionsInitialized() void QmlProjectPlugin::showQmlObserverToolWarning() { QMessageBox dialog(QApplication::activeWindow()); - QPushButton *qtPref = dialog.addButton(tr("Open Qt4 Options"), + QPushButton *qtPref = dialog.addButton(tr("Open Qt Versions"), QMessageBox::ActionRole); dialog.addButton(QMessageBox::Cancel); dialog.setDefaultButton(qtPref); dialog.setWindowTitle(tr("QML Observer Missing")); - dialog.setText(tr("QML Observer could not be found.")); + dialog.setText(tr("QML Observer could not be found for this Qt version.")); dialog.setInformativeText(tr( "QML Observer is used to offer debugging features for " - "QML applications, such as interactive debugging and inspection tools. " - "It must be compiled for each used Qt version separately. " - "On the Qt4 options page, select the current Qt installation " - "and click Rebuild.")); + "Qt Quick UI projects in the Qt 4.7 series.\n\n" + "To compile QML Observer, go to the Qt Versions page, " + "select the current Qt version, " + "and click Build in the Helpers section.")); dialog.exec(); if (dialog.clickedButton() == qtPref) { Core::ICore::showOptionsDialog( From f3b4c428cdae5a04acc1c550d82f8a409d10ad80 Mon Sep 17 00:00:00 2001 From: Christiaan Janssen Date: Wed, 14 Mar 2012 17:35:40 +0100 Subject: [PATCH 02/33] QmlProfiler: fix broken recording logic from the client side This patch should not be applied back to the master branch, since the issues are already fixed by b7304e2f2e. Task-number: QTCREATORBUG-7091 Change-Id: I6f0b7752f3446b412c5bd9ae6e3d7e1847472e56 Reviewed-by: Kai Koehne --- .../qmljsdebugclient/qmlprofilereventlist.cpp | 11 ++++++--- src/plugins/qmlprofiler/qml/MainView.qml | 2 +- src/plugins/qmlprofiler/qmlprofilertool.cpp | 3 ++- src/plugins/qmlprofiler/tracewindow.cpp | 23 ++++++++++++++++--- src/plugins/qmlprofiler/tracewindow.h | 1 + 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/libs/qmljsdebugclient/qmlprofilereventlist.cpp b/src/libs/qmljsdebugclient/qmlprofilereventlist.cpp index a4079669cef..d056f92a4dd 100644 --- a/src/libs/qmljsdebugclient/qmlprofilereventlist.cpp +++ b/src/libs/qmljsdebugclient/qmlprofilereventlist.cpp @@ -644,9 +644,14 @@ void QmlProfilerEventList::setTraceStartTime( qint64 time ) void QmlProfilerEventList::complete() { - setState(ProcessingData); - d->collectV8Statistics(); - postProcess(); + if (currentState() == AcquiringData) { + setState(ProcessingData); + d->collectV8Statistics(); + postProcess(); + } else { + setState(Empty); + } + } void QmlProfilerEventList::QmlProfilerEventListPrivate::clearQmlRootEvent() diff --git a/src/plugins/qmlprofiler/qml/MainView.qml b/src/plugins/qmlprofiler/qml/MainView.qml index 9fc2e8e44ed..ae2b9a81226 100644 --- a/src/plugins/qmlprofiler/qml/MainView.qml +++ b/src/plugins/qmlprofiler/qml/MainView.qml @@ -321,7 +321,7 @@ Rectangle { id: elapsedTimer property date startDate property bool reset: true - running: connection.recording && connection.enabled + running: connection ? (connection.recording && connection.enabled) : false repeat: true onRunningChanged: { if (running) reset = true; diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 24c6887869b..645096e7f90 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -533,7 +533,8 @@ QWidget *QmlProfilerTool::createWidgets() void QmlProfilerTool::connectClient(int port) { - QTC_ASSERT(!d->m_client, return;) + if (d->m_client) + delete d->m_client; d->m_client = new QDeclarativeDebugConnection; d->m_traceWindow->reset(d->m_client); connect(d->m_client, SIGNAL(stateChanged(QAbstractSocket::SocketState)), diff --git a/src/plugins/qmlprofiler/tracewindow.cpp b/src/plugins/qmlprofiler/tracewindow.cpp index 6a4f3817fb4..f075c49ac69 100644 --- a/src/plugins/qmlprofiler/tracewindow.cpp +++ b/src/plugins/qmlprofiler/tracewindow.cpp @@ -154,6 +154,8 @@ TraceWindow::TraceWindow(QWidget *parent) setMinimumHeight(170); m_currentZoomLevel = 0; m_profiledTime = 0; + + initializeQmlViews(); } TraceWindow::~TraceWindow() @@ -276,6 +278,14 @@ void TraceWindow::reset(QDeclarativeDebugConnection *conn) connectClientSignals(); + m_v8DataReady = false; + m_qmlDataReady = false; + + m_mainView->rootContext()->setContextProperty("connection", m_plugin.data()); +} + +void TraceWindow::initializeQmlViews() +{ m_mainView->rootContext()->setContextProperty("connection", m_plugin.data()); m_mainView->rootContext()->setContextProperty("zoomControl", m_zoomControl.data()); m_timebar->rootContext()->setContextProperty("zoomControl", m_zoomControl.data()); @@ -307,9 +317,6 @@ void TraceWindow::reset(QDeclarativeDebugConnection *conn) connect(this, SIGNAL(internalClearDisplay()), m_mainView->rootObject(), SLOT(clearAll())); connect(this,SIGNAL(internalClearDisplay()), m_overview->rootObject(), SLOT(clearDisplay())); - - m_v8DataReady = false; - m_qmlDataReady = false; } void TraceWindow::connectClientSignals() @@ -476,6 +483,11 @@ void TraceWindow::qmlComplete() m_qmlDataReady = true; if (!m_v8plugin || m_v8plugin.data()->status() != QDeclarativeDebugClient::Enabled || m_v8DataReady) { m_eventList->complete(); + + // if no data was received, still notify completion + if (m_eventList->currentState() == QmlProfilerEventList::Empty) + emit viewUpdated(); + // once complete is sent, reset the flags m_qmlDataReady = false; m_v8DataReady = false; @@ -487,6 +499,11 @@ void TraceWindow::v8Complete() m_v8DataReady = true; if (!m_plugin || m_plugin.data()->status() != QDeclarativeDebugClient::Enabled || m_qmlDataReady) { m_eventList->complete(); + + // if no data was received, still notify completion + if (m_eventList->currentState() == QmlProfilerEventList::Empty) + emit viewUpdated(); + // once complete is sent, reset the flags m_v8DataReady = false; m_qmlDataReady = false; diff --git a/src/plugins/qmlprofiler/tracewindow.h b/src/plugins/qmlprofiler/tracewindow.h index 2959720db64..2c653e5c0a4 100644 --- a/src/plugins/qmlprofiler/tracewindow.h +++ b/src/plugins/qmlprofiler/tracewindow.h @@ -170,6 +170,7 @@ private: QWidget *createZoomToolbar(); void connectClientSignals(); void disconnectClientSignals(); + void initializeQmlViews(); protected: virtual void resizeEvent(QResizeEvent *event); From bb63ec80ebde8c462a7562b51b1c43ac790e19b8 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 15 Mar 2012 16:37:24 +0100 Subject: [PATCH 03/33] debugger: some adjustments to semi-automated tests Change-Id: I6512841797aa055630a984bc4bd75d6869ed2bf6 Reviewed-by: hjk --- .../manual/debugger/simple/simple_test_app.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 9b534962fa5..58a87725e1f 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -555,7 +555,7 @@ namespace qbytearray { QString s(10000, 'x'); std::string ss(10000, 'c'); BREAK_HERE; - // Check ba "\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\20..." QByteArray. + // CheckType ba QByteArray. // Check s "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..." QString. // Check ss "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc..." std::string. // Continue. @@ -571,8 +571,11 @@ namespace qbytearray { QByteArray buf2(str2); QByteArray buf3(str3); BREAK_HERE; - // Check buf1 "\356" QByteArray. - // Check buf2 "\356" QByteArray. + // Check buf1 "î" QByteArray. + // Check buf2 "î" QByteArray. + // Check buf3 "\ee" QByteArray. + // Check buf1 "î" QByteArray. + // Check buf2 "î" QByteArray. // Check buf3 "\ee" QByteArray. // CheckType str1 char *. // Continue. @@ -1152,8 +1155,8 @@ namespace qlist { BREAK_HERE; // Expand l. // Check l <3 items> QList. - // CheckType l.0 101 unsigned long long. - // CheckType l.2 102 unsigned long long. + // CheckType l.0 unsigned long long. + // CheckType l.2 unsigned long long. // Continue. dummyStatement(&l); } @@ -3445,7 +3448,7 @@ namespace formats { else u = QString::fromUtf16((ushort *)w); BREAK_HERE; - // Check u "a\366a" QString. + // Check u "aöa" QString. // CheckType w wchar_t *. // Continue. @@ -4318,7 +4321,7 @@ namespace basic { s[0] = 0; BREAK_HERE; // Expand s. - // CheckType s char [5]. + // CheckType s char [6]. // Check s.0 0 '\0' char. // Continue. From 72e303862983d51ffd25fa454351c5e005514153 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 12 Mar 2012 11:02:14 +0100 Subject: [PATCH 04/33] Editor: Fix NULL-Pointer dereference in cppfunctiondecldeflink Happen when trying to synchronize a return type in an inapropriate AST. Task-number:QTCREATORBUG-7073 Change-Id: I6621a3d5539f96c0db9e0d20423dba9a7def98fc Reviewed-by: Christian Kamm --- src/plugins/cppeditor/cppfunctiondecldeflink.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/cppeditor/cppfunctiondecldeflink.cpp b/src/plugins/cppeditor/cppfunctiondecldeflink.cpp index b7af611ae23..2534df0d97b 100644 --- a/src/plugins/cppeditor/cppfunctiondecldeflink.cpp +++ b/src/plugins/cppeditor/cppfunctiondecldeflink.cpp @@ -613,7 +613,7 @@ Utils::ChangeSet FunctionDeclDefLink::changes(const Snapshot &snapshot, int targ LookupContext targetContext(targetFile->cppDocument(), snapshot); // sync return type - { + do { // set up for rewriting return type SubstitutionEnvironment env; env.setContext(sourceContext); @@ -637,6 +637,9 @@ Utils::ChangeSet FunctionDeclDefLink::changes(const Snapshot &snapshot, int targ declarator = def->declarator; firstReplaceableSpecifier = findFirstReplaceableSpecifier( targetTranslationUnit, def->decl_specifier_list); + } else { + // no proper AST to synchronize the return type + break; } int returnTypeStart = 0; @@ -653,7 +656,7 @@ Utils::ChangeSet FunctionDeclDefLink::changes(const Snapshot &snapshot, int targ targetFile->startOf(targetFunctionDeclarator->lparen_token), replacement); } - } + } while (false); // sync parameters { From 86487d825035e55c6ef31e5f38acd53bc3428511 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 16 Mar 2012 11:30:58 +0100 Subject: [PATCH 05/33] QmlDesigner: crash fix It was a very stupid idea to call QApplication::processEvents(); here to avoid hickups. The processEvents() forces the whole designDocumentController managment to be be reentrant which it clearly is not (and should not be). The reason is simply that resetView is called from there. Adding a "flag" for the processEvents is also not a reasonable option. This was just very bad style. So I remove it. Task-number: QTCREATORBUG-7120 Change-Id: I111cf9421f63b9ce44488f0d274624ff48777cef Reviewed-by: Kai Koehne --- .../qmldesigner/components/propertyeditor/propertyeditor.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index a4c235aa6b7..530a2d951b7 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -224,7 +224,6 @@ void PropertyEditor::NodeType::setup(const QmlObjectNode &fxObjectNode, const QS m_contextObject->setSpecificsUrl(qmlSpecificsFile); m_contextObject->setStateName(stateName); - QApplication::processEvents(); if (!fxObjectNode.isValid()) return; ctxt->setContextProperty("propertyCount", QVariant(fxObjectNode.modelNode().properties().count())); From d2d9a80b1d35336fc832e20b085ad0285d1615c4 Mon Sep 17 00:00:00 2001 From: Yuchen Deng Date: Tue, 6 Mar 2012 18:40:32 +0800 Subject: [PATCH 06/33] WelcomeScreen: Improve vertical lines showing Use lighter color of vertical line, from the overall look is more consistent. At least, the current design did not feel very comfortable. Change-Id: I92d1513d475b1aadfc5ac58fc33f4ba84e6a8478 Reviewed-by: Thomas Hartmann --- share/qtcreator/welcomescreen/welcomescreen.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/welcomescreen/welcomescreen.qml b/share/qtcreator/welcomescreen/welcomescreen.qml index 03271649b2f..a069a7d65e4 100644 --- a/share/qtcreator/welcomescreen/welcomescreen.qml +++ b/share/qtcreator/welcomescreen/welcomescreen.qml @@ -85,7 +85,7 @@ Rectangle { Rectangle { visible: root.width > 1042 width: 2 - color: "#919191" + color: "#cdcdcd" anchors.left: parent.left anchors.top: parent.top anchors.bottom: parent.bottom @@ -94,7 +94,7 @@ Rectangle { Rectangle { visible: root.width > 1042 width: 2 - color: "#919191" + color: "#cdcdcd" anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom From 4334c2e361a4610602bb504d2747c19fdaa69db7 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Mar 2012 12:52:35 +0100 Subject: [PATCH 07/33] debugger: trigger column resizing by clicks on header or background Change-Id: I702f9fc32310b01021bf3389c9c8cb88d9a1738a Reviewed-by: hjk --- src/plugins/debugger/basewindow.cpp | 15 +++++++++++++++ src/plugins/debugger/basewindow.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/plugins/debugger/basewindow.cpp b/src/plugins/debugger/basewindow.cpp index 2db19710203..133dc86be0e 100644 --- a/src/plugins/debugger/basewindow.cpp +++ b/src/plugins/debugger/basewindow.cpp @@ -59,11 +59,14 @@ BaseWindow::BaseWindow(QWidget *parent) setUniformRowHeights(true); header()->setDefaultAlignment(Qt::AlignLeft); + header()->setClickable(true); connect(act, SIGNAL(toggled(bool)), SLOT(setAlternatingRowColorsHelper(bool))); connect(this, SIGNAL(activated(QModelIndex)), SLOT(rowActivatedHelper(QModelIndex))); + connect(header(), SIGNAL(sectionClicked(int)), + SLOT(headerSectionClicked(int))); m_adjustColumnsAction = new QAction(tr("Adjust Column Widths to Contents"), 0); m_alwaysAdjustColumnsAction = 0; @@ -110,6 +113,13 @@ void BaseWindow::setModel(QAbstractItemModel *model) setAlwaysResizeColumnsToContents(m_alwaysAdjustColumnsAction->isChecked()); } +void BaseWindow::mousePressEvent(QMouseEvent *ev) +{ + QTreeView::mousePressEvent(ev); + if (!indexAt(ev->pos()).isValid()) + resizeColumnsToContents(); +} + void BaseWindow::resizeColumnsToContents() { const int columnCount = model()->columnCount(); @@ -124,6 +134,11 @@ void BaseWindow::setAlwaysResizeColumnsToContents(bool on) header()->setResizeMode(0, mode); } +void BaseWindow::headerSectionClicked(int logicalIndex) +{ + resizeColumnToContents(logicalIndex); +} + void BaseWindow::reset() { QTreeView::reset(); diff --git a/src/plugins/debugger/basewindow.h b/src/plugins/debugger/basewindow.h index 5b42fad78cd..1592df42020 100644 --- a/src/plugins/debugger/basewindow.h +++ b/src/plugins/debugger/basewindow.h @@ -51,6 +51,7 @@ public: void setModel(QAbstractItemModel *model); virtual void rowActivated(const QModelIndex &) {} + void mousePressEvent(QMouseEvent *ev); public slots: void resizeColumnsToContents(); @@ -59,6 +60,7 @@ public slots: private slots: void setAlternatingRowColorsHelper(bool on) { setAlternatingRowColors(on); } void rowActivatedHelper(const QModelIndex &index) { rowActivated(index); } + void headerSectionClicked(int logicalIndex); void reset(); private: From 65b8b14b7cc62c0ee06f37853ca8c6a922a32af6 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Mar 2012 12:12:32 +0100 Subject: [PATCH 08/33] debugger: add missing 'type' column when copying watch contents Change-Id: I5303814f38deba238120e57ebaad765ab089704c Reviewed-by: hjk --- src/plugins/debugger/watchhandler.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 7a3b7361c6e..139d30f7904 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1833,6 +1833,8 @@ void WatchHandler::showInEditorHelper(QString *contents, WatchItem *item, int de contents->append(item->name); contents->append(tab); contents->append(item->value); + contents->append(tab); + contents->append(item->type); contents->append(nl); foreach (WatchItem *child, item->children) showInEditorHelper(contents, child, depth + 1); From 764ce45ea7758b97367bb638beb52fdd4e6fed72 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 16 Mar 2012 11:34:20 +0100 Subject: [PATCH 09/33] Task list: Fix 'overlaying' arrows for sub-menu Change-Id: I7331ef9a9342347bd9610e9b2df6d671ed057fa7 Task-number: QTCREATORBUG-7135 Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/taskwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index 2c3eabbb012..1f564db5d96 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -281,6 +281,7 @@ TaskWindow::TaskWindow(TaskHub *taskhub) : d(new TaskWindowPrivate) d->m_categoriesButton = new QToolButton; d->m_categoriesButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); d->m_categoriesButton->setToolTip(tr("Filter by categories")); + d->m_categoriesButton->setProperty("noArrow", true); d->m_categoriesButton->setAutoRaise(true); d->m_categoriesButton->setPopupMode(QToolButton::InstantPopup); From 8e8168fc5c006a073fa00cc34971dc156b523460 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 8 Mar 2012 08:42:29 +0100 Subject: [PATCH 10/33] Fix reloading behavior of image viewer. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The image viewer is not able to save, so we should not ask. Task-number: QTCREATORBUG-5966 Change-Id: I947520d7450704abda8395e8aaae56dfe7842328 Reviewed-by: Robert Löhning Reviewed-by: Eike Ziller --- src/plugins/coreplugin/documentmanager.cpp | 8 ++++++-- src/plugins/imageviewer/imageviewerfile.cpp | 9 +++++++++ src/plugins/imageviewer/imageviewerfile.h | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index c170d248dc6..878c2fb612f 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -667,7 +667,8 @@ bool DocumentManager::saveDocument(IDocument *document, const QString &fileName, } *isReadOnly = false; } - QMessageBox::critical(d->m_mainWindow, tr("File Error"), errorString); + QMessageBox::critical(d->m_mainWindow, tr("File Error"), + tr("Error while saving file: %1").arg(errorString)); out: ret = false; } @@ -992,7 +993,10 @@ void DocumentManager::checkForReload() // check if IDocument wants us to ask if (document->reloadBehavior(trigger, type) == IDocument::BehaviorSilent) { // content change or removed, IDocument wants silent handling - success = document->reload(&errorString, IDocument::FlagReload, type); + if (type == IDocument::TypeRemoved) + editorsToClose << EditorManager::instance()->editorsForDocument(document); + else + success = document->reload(&errorString, IDocument::FlagReload, type); // IDocument wants us to ask } else if (type == IDocument::TypeContents) { // content change, IDocument wants to ask user diff --git a/src/plugins/imageviewer/imageviewerfile.cpp b/src/plugins/imageviewer/imageviewerfile.cpp index 46caff8e6f9..c332af750f2 100644 --- a/src/plugins/imageviewer/imageviewerfile.cpp +++ b/src/plugins/imageviewer/imageviewerfile.cpp @@ -65,6 +65,15 @@ ImageViewerFile::~ImageViewerFile() delete d; } +Core::IDocument::ReloadBehavior ImageViewerFile::reloadBehavior(ChangeTrigger state, ChangeType type) const +{ + if (type == TypeRemoved || type == TypePermissions) + return BehaviorSilent; + if (type == TypeContents && state == TriggerInternal && !isModified()) + return BehaviorSilent; + return BehaviorAsk; +} + bool ImageViewerFile::reload(QString *errorString, Core::IDocument::ReloadFlag flag, Core::IDocument::ChangeType type) diff --git a/src/plugins/imageviewer/imageviewerfile.h b/src/plugins/imageviewer/imageviewerfile.h index 2aa820b6fea..ffbb5d64dc8 100644 --- a/src/plugins/imageviewer/imageviewerfile.h +++ b/src/plugins/imageviewer/imageviewerfile.h @@ -61,6 +61,7 @@ public: bool isModified() const; bool isSaveAsAllowed() const; + virtual ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const; bool reload(QString *errorString, ReloadFlag flag, ChangeType type); void setMimetype(const QString &mimetype); From 7c0a7a50dc0a8b8eb6d01b5a09abd93b12d89437 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Mar 2012 13:34:00 +0100 Subject: [PATCH 11/33] debugger: fix display/use of module name in ModulesView Change-Id: I335ce9427f4c7abea84e109323869226c07e7f7c Reviewed-by: Friedemann Kleint --- src/plugins/debugger/gdb/gdbengine.cpp | 36 ++++++++++++++++---------- src/plugins/debugger/moduleswindow.cpp | 11 ++++---- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index ba1e99b9de8..f163acc2a6a 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3140,10 +3140,10 @@ void GdbEngine::removeBreakpoint(BreakpointModelId id) // ////////////////////////////////////////////////////////////////////// -void GdbEngine::loadSymbols(const QString &moduleName) +void GdbEngine::loadSymbols(const QString &modulePath) { // FIXME: gdb does not understand quoted names here (tested with 6.8) - postCommand("sharedlibrary " + dotEscape(moduleName.toLocal8Bit())); + postCommand("sharedlibrary " + dotEscape(modulePath.toLocal8Bit())); reloadModulesInternal(); reloadBreakListInternal(); reloadStack(true); @@ -3170,7 +3170,7 @@ void GdbEngine::loadSymbolsForStack() if (module.startAddress <= frame.address && frame.address < module.endAddress) { postCommand("sharedlibrary " - + dotEscape(module.moduleName.toLocal8Bit())); + + dotEscape(module.modulePath.toLocal8Bit())); needUpdate = true; } } @@ -3184,7 +3184,7 @@ void GdbEngine::loadSymbolsForStack() } } -void GdbEngine::requestModuleSymbols(const QString &moduleName) +void GdbEngine::requestModuleSymbols(const QString &modulePath) { QTemporaryFile tf(QDir::tempPath() + _("/gdbsymbols")); if (!tf.open()) @@ -3192,15 +3192,15 @@ void GdbEngine::requestModuleSymbols(const QString &moduleName) QString fileName = tf.fileName(); tf.close(); postCommand("maint print msymbols " + fileName.toLocal8Bit() - + ' ' + moduleName.toLocal8Bit(), + + ' ' + modulePath.toLocal8Bit(), NeedsStop, CB(handleShowModuleSymbols), - QVariant(moduleName + QLatin1Char('@') + fileName)); + QVariant(modulePath + QLatin1Char('@') + fileName)); } void GdbEngine::handleShowModuleSymbols(const GdbResponse &response) { const QString cookie = response.cookie.toString(); - const QString moduleName = cookie.section(QLatin1Char('@'), 0, 0); + const QString modulePath = cookie.section(QLatin1Char('@'), 0, 0); const QString fileName = cookie.section(QLatin1Char('@'), 1, 1); if (response.resultClass == GdbResultDone) { Symbols rc; @@ -3251,7 +3251,7 @@ void GdbEngine::handleShowModuleSymbols(const GdbResponse &response) } file.close(); file.remove(); - debuggerCore()->showModuleSymbols(moduleName, rc); + debuggerCore()->showModuleSymbols(modulePath, rc); } else { showMessageBox(QMessageBox::Critical, tr("Cannot Read Symbols"), tr("Cannot read symbols for module \"%1\".").arg(fileName)); @@ -3270,6 +3270,11 @@ void GdbEngine::reloadModulesInternal() postCommand("info shared", NeedsStop, CB(handleModulesList)); } +static QString nameFromPath(const QString &path) +{ + return QFileInfo(path).baseName(); +} + void GdbEngine::handleModulesList(const GdbResponse &response) { Modules modules; @@ -3285,7 +3290,8 @@ void GdbEngine::handleModulesList(const GdbResponse &response) QTextStream ts(&line, QIODevice::ReadOnly); if (line.startsWith(QLatin1String("0x"))) { ts >> module.startAddress >> module.endAddress >> symbolsRead; - module.moduleName = ts.readLine().trimmed(); + module.modulePath = ts.readLine().trimmed(); + module.moduleName = nameFromPath(module.modulePath); module.symbolsRead = (symbolsRead == QLatin1String("Yes") ? Module::ReadOk : Module::ReadFailed); modules.append(module); @@ -3295,7 +3301,8 @@ void GdbEngine::handleModulesList(const GdbResponse &response) QTC_ASSERT(symbolsRead == QLatin1String("No"), continue); module.startAddress = 0; module.endAddress = 0; - module.moduleName = ts.readLine().trimmed(); + module.modulePath = ts.readLine().trimmed(); + module.moduleName = nameFromPath(module.modulePath); modules.append(module); } } @@ -3307,8 +3314,9 @@ void GdbEngine::handleModulesList(const GdbResponse &response) // shlib-info={...}... foreach (const GdbMi &item, response.data.children()) { Module module; - module.moduleName = + module.modulePath = QString::fromLocal8Bit(item.findChild("path").data()); + module.moduleName = nameFromPath(module.modulePath); module.symbolsRead = (item.findChild("state").data() == "Y") ? Module::ReadOk : Module::ReadFailed; module.startAddress = @@ -3327,8 +3335,8 @@ void GdbEngine::examineModules() foreach (Module module, modulesHandler()->modules()) { if (module.symbolsType == Module::UnknownType) { QProcess proc; - qDebug() << _("objdump -h \"%1\"").arg(module.moduleName); - proc.start(_("objdump -h \"%1\"").arg(module.moduleName)); + qDebug() << _("objdump -h \"%1\"").arg(module.modulePath); + proc.start(_("objdump -h \"%1\"").arg(module.modulePath)); if (!proc.waitForStarted()) continue; if (!proc.waitForFinished()) @@ -3338,7 +3346,7 @@ void GdbEngine::examineModules() module.symbolsType = Module::FastSymbols; else module.symbolsType = Module::PlainSymbols; - modulesHandler()->updateModule(module.moduleName, module); + modulesHandler()->updateModule(module.modulePath, module); } } } diff --git a/src/plugins/debugger/moduleswindow.cpp b/src/plugins/debugger/moduleswindow.cpp index 60571885191..70948ed4293 100644 --- a/src/plugins/debugger/moduleswindow.cpp +++ b/src/plugins/debugger/moduleswindow.cpp @@ -72,7 +72,8 @@ void ModulesWindow::moduleActivated(const QModelIndex &index) { DebuggerEngine *engine = debuggerCore()->currentEngine(); QTC_ASSERT(engine, return); - engine->gotoLocation(index.data().toString()); + if (index.isValid()) + engine->gotoLocation(index.sibling(index.row(), 1).data().toString()); } void ModulesWindow::contextMenuEvent(QContextMenuEvent *ev) @@ -156,17 +157,17 @@ void ModulesWindow::contextMenuEvent(QContextMenuEvent *ev) if (act == actUpdateModuleList) engine->reloadModules(); else if (act == actShowModuleSources) - engine->loadSymbols(name); + engine->loadSymbols(fileName); else if (act == actLoadSymbolsForAllModules) engine->loadAllSymbols(); else if (act == actExamineAllModules) engine->examineModules(); else if (act == actLoadSymbolsForModule) - engine->loadSymbols(name); + engine->loadSymbols(fileName); else if (act == actEditFile) - engine->gotoLocation(name); + engine->gotoLocation(fileName); else if (act == actShowModuleSymbols) - engine->requestModuleSymbols(name); + engine->requestModuleSymbols(fileName); else if (actShowDependencies && act == actShowDependencies) QProcess::startDetached(QLatin1String("depends"), QStringList(fileName)); else From cec1150d5586d348ba7d533670971f7baba7865c Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Mar 2012 14:43:15 +0100 Subject: [PATCH 12/33] texteditor: allow quickfixes also in overwrite mode We now temporily switch to insert mode instead. Completely blocking would break quickfixes in fakevim, as it keeps the texteditor in overwrite mode most of the time. Change-Id: Ibc492c80bf02fd2a203a607edc6966c338854a9f Reviewed-by: Joerg Bornemann --- src/plugins/texteditor/basetexteditor.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 9f8540965cb..a59e2ff895f 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -6473,10 +6473,11 @@ void BaseTextEditorWidget::inSnippetMode(bool *active) void BaseTextEditorWidget::invokeAssist(AssistKind kind, IAssistProvider *provider) { - if (overwriteMode()) - return; + bool previousMode = overwriteMode(); + setOverwriteMode(false); ensureCursorVisible(); d->m_codeAssistant->invoke(kind, provider); + setOverwriteMode(previousMode); } IAssistInterface *BaseTextEditorWidget::createAssistInterface(AssistKind kind, From d880c74554db7fb586fc00c571a313c994d42e61 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 16 Mar 2012 15:45:16 +0100 Subject: [PATCH 13/33] Doc: fix links to point to qt-project.org Change-Id: I3fd949a1b99422749aabb2548b2b57cd67b4971b Reviewed-by: Casper van Donderen --- doc/config/qt-html-templates-online.qdocconf | 38 ++++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/doc/config/qt-html-templates-online.qdocconf b/doc/config/qt-html-templates-online.qdocconf index 9fe93e211d9..91c5e5c0bbd 100644 --- a/doc/config/qt-html-templates-online.qdocconf +++ b/doc/config/qt-html-templates-online.qdocconf @@ -10,9 +10,9 @@ HTML.postheader = \ "
\n" \ " \n" \ @@ -36,12 +36,12 @@ HTML.postheader = \ " API Lookup\n" \ "
\n" \ " \n" \ "
\n" \ "
\n" \ @@ -50,13 +50,13 @@ HTML.postheader = \ " Qt Topics\n" \ " \n" \ " \n" \ @@ -65,10 +65,10 @@ HTML.postheader = \ " Examples\n" \ "
\n" \ " \n" \ "
\n" \ " \n" \ From 38fe616d857234845b9169576433c28aa54fee89 Mon Sep 17 00:00:00 2001 From: kh1 Date: Fri, 16 Mar 2012 15:41:59 +0100 Subject: [PATCH 14/33] Curly-braces in "Help -> Search for..." crashes Creator. Task-number: QTCREATORBUG-6212 We need to escape special characters that are used inside the search engine as field delimiter. As soon as the search engine proccesses the search string it will remove the character and we might end up with an invalid string, forcing it to throw an exception thats not catched. Change-Id: I8b66c87c3137a1f175ead5df85c7f53fdcb5193e Reviewed-by: Eike Ziller --- src/plugins/help/searchwidget.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/plugins/help/searchwidget.cpp b/src/plugins/help/searchwidget.cpp index 07b11cf2aac..236f25e6390 100644 --- a/src/plugins/help/searchwidget.cpp +++ b/src/plugins/help/searchwidget.cpp @@ -153,8 +153,33 @@ void SearchWidget::showEvent(QShowEvent *event) void SearchWidget::search() const { - QList query = searchEngine->queryWidget()->query(); - searchEngine->search(query); + static QStringList charsToEscapeList; + if (charsToEscapeList.isEmpty()) { + charsToEscapeList << QLatin1String("\\") << QLatin1String("+") + << QLatin1String("-") << QLatin1String("!") << QLatin1String("(") + << QLatin1String(")") << QLatin1String(":") << QLatin1String("^") + << QLatin1String("[") << QLatin1String("]") << QLatin1String("{") + << QLatin1String("}") << QLatin1String("~"); + } + + static QString escapeChar(QLatin1String("\\")); + static QRegExp regExp(QLatin1String("[\\+\\-\\!\\(\\)\\^\\[\\]\\{\\}~:]")); + + QList escapedQueries; + const QList queries = searchEngine->queryWidget()->query(); + foreach (const QHelpSearchQuery &query, queries) { + QHelpSearchQuery escapedQuery; + escapedQuery.fieldName = query.fieldName; + foreach (QString word, query.wordList) { + if (word.contains(regExp)) { + foreach (const QString &charToEscape, charsToEscapeList) + word.replace(charToEscape, escapeChar + charToEscape); + escapedQuery.wordList.append(word); + } + } + escapedQueries.append(escapedQuery); + } + searchEngine->search(escapedQueries); } void SearchWidget::searchingStarted() From 126d0af4d67498d7f8158ce68ac0cffc56dc5036 Mon Sep 17 00:00:00 2001 From: kh1 Date: Fri, 16 Mar 2012 16:10:21 +0100 Subject: [PATCH 15/33] Fix 38fe616d857234845b9169576433c28aa54fee89 Obviously it helps to add the search term even if it does not contain special characters. Change-Id: If32e3e0b8b64fde99a3247dd6eee29928995591f Reviewed-by: Eike Ziller --- src/plugins/help/searchwidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/help/searchwidget.cpp b/src/plugins/help/searchwidget.cpp index 236f25e6390..6c8c056f002 100644 --- a/src/plugins/help/searchwidget.cpp +++ b/src/plugins/help/searchwidget.cpp @@ -174,8 +174,8 @@ void SearchWidget::search() const if (word.contains(regExp)) { foreach (const QString &charToEscape, charsToEscapeList) word.replace(charToEscape, escapeChar + charToEscape); - escapedQuery.wordList.append(word); } + escapedQuery.wordList.append(word); } escapedQueries.append(escapedQuery); } From fdbdf2d14f4a7188ab029d99af83b7eb2dc490ee Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 16 Mar 2012 12:55:00 +0100 Subject: [PATCH 16/33] QmlEngine: Fix crash when trying to connect Since we directly called beginConnection in connectionStartupFailed we got a stack overflow over time. Instead, only try to connect every 3 seconds. Also remove special logic for mixed debugging: They should behave the same (except maybe where you're breaking inside QQmlDebugServer, but that's a corner case). Change-Id: Idf2f55e3d905a01065c123c708b50dbb88388d1f Reviewed-by: Aurindam Jana --- src/plugins/debugger/qml/qmlengine.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 3e31aeddc4d..1da0baf8ab0 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -364,7 +364,10 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, SLOT(documentUpdated(QmlJS::Document::Ptr))); // we won't get any debug output - d->m_retryOnConnectFail = startParameters.useTerminal; + if (startParameters.useTerminal) { + d->m_noDebugOutputTimer.setInterval(0); + d->m_retryOnConnectFail = true; + } } QmlEngine::~QmlEngine() @@ -416,6 +419,7 @@ void QmlEngine::connectionEstablished() void QmlEngine::tryToConnect(quint16 port) { + showMessage(QLatin1String("QML Debugger: No application output received in time, trying to connect ..."), LogStatus); d->m_retryOnConnectFail = true; beginConnection(port); } @@ -447,15 +451,9 @@ void QmlEngine::beginConnection(quint16 port) void QmlEngine::connectionStartupFailed() { - if (isSlaveEngine()) { - if (masterEngine()->state() != InferiorRunOk) { - // we're right now debugging C++, just try longer ... - beginConnection(); - return; - } - } if (d->m_retryOnConnectFail) { - beginConnection(); + // retry after 3 seconds ... + QTimer::singleShot(3000, this, SLOT(beginConnection())); return; } From e4494288a1934b45315535921d6823bc4d5be6bf Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 15 Mar 2012 15:28:48 +0100 Subject: [PATCH 17/33] QmlProfiler: Exit if we get an error message E.g. when we detect that the port is in use, we have to stop the noDebugOutputTimer. Change-Id: Idb3f4b91f78c55ab849e55c908e58abf052c3d00 Reviewed-by: Christiaan Janssen --- src/plugins/qmlprofiler/qmlprofilerengine.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmlprofiler/qmlprofilerengine.cpp b/src/plugins/qmlprofiler/qmlprofilerengine.cpp index 5487711e68d..d16ec2b8406 100644 --- a/src/plugins/qmlprofiler/qmlprofilerengine.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerengine.cpp @@ -275,6 +275,7 @@ void QmlProfilerEngine::finishProcess() if (d->m_running) { d->m_running = false; d->m_runningTimer.stop(); + d->m_noDebugOutputTimer.stop(); if (d->m_runner) d->m_runner->stop(); emit finished(); @@ -305,11 +306,7 @@ void QmlProfilerEngine::wrongSetupMessageBox(const QString &errorMessage) infoBox->show(); - d->m_running = false; - d->m_runningTimer.stop(); - AnalyzerManager::stopTool(); - emit finished(); - emit recordingChanged(d->m_fetchDataFromStart); + finishProcess(); } void QmlProfilerEngine::wrongSetupMessageBoxFinished(int button) From c68e41d021680a6910a0a0a3593cae17dc2b39aa Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Mon, 19 Mar 2012 15:38:22 +0100 Subject: [PATCH 18/33] ZeroConf: Fix uninitialized values reported by valgrind. Change-Id: I521b43a5348599609c7d34c4bc1ad471e640bc44 Reviewed-by: Fawzi Mohamed --- src/libs/zeroconf/servicebrowser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/zeroconf/servicebrowser.cpp b/src/libs/zeroconf/servicebrowser.cpp index a7b147e8d04..9d3d9b07b03 100644 --- a/src/libs/zeroconf/servicebrowser.cpp +++ b/src/libs/zeroconf/servicebrowser.cpp @@ -1200,7 +1200,7 @@ ServiceBrowserPrivate::ServiceBrowserPrivate(const QString &serviceType, const Q bool requireAddresses, MainConnectionPtr mconn): q(0), serviceType(serviceType), domain(domain), mainConnection(mconn), serviceConnection(0), flags(0), interfaceIndex(0), delayDeletesUntil(std::numeric_limits::min()), failed(false), browsing(false), - autoResolveAddresses(requireAddresses), requireAddresses(requireAddresses) + autoResolveAddresses(requireAddresses), requireAddresses(requireAddresses), shouldRefresh(false) { } @@ -1462,7 +1462,7 @@ void MainConnection::stop(bool wait) } MainConnection::MainConnection(): - lib(zeroConfLibInstance()->defaultLib()), m_lock(QMutex::Recursive), m_mainRef(0), + flowStatus(NormalRFS), lib(zeroConfLibInstance()->defaultLib()), m_lock(QMutex::Recursive), m_mainRef(0), m_failed(false), m_status(Starting), m_nErrs(0) { if (lib.isNull()){ From faf684e309a78f66addefde1fcd39f27d8d610eb Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 15 Mar 2012 15:55:49 +0100 Subject: [PATCH 19/33] Translation: Update and fixed German translations. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTCREATORBUG-7107 Task-number: QTCREATORBUG-7106 Task-number: QTCREATORBUG-7109 Change-Id: I89d760464baa5216e7f34fe82f9bf97714119520 Reviewed-by: Robert Löhning Reviewed-by: Friedemann Kleint --- share/qtcreator/translations/qtcreator_de.ts | 1305 +++--------------- 1 file changed, 158 insertions(+), 1147 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index c57b541a08b..2c480821dc9 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -257,17 +257,13 @@ Run in Terminal In Terminal ausführen - - Debugger: - Debugger: - Run Environment Ausführungsumgebung Base environment for this runconfiguration: - Basisumgebung für diese Ausführungskonfiguration + Basisumgebung für diese Ausführungskonfiguration: Clean Environment @@ -641,7 +637,7 @@ Revert failed: %1 - Fehler beim Rücksetzen der Änderungen: %1 + Fehler beim Zurücksetzen der Änderungen: %1 The file has been changed. Do you want to revert it? @@ -1085,10 +1081,6 @@ <b>Warning:</b> You are changing a read-only file. <b>Hinweis:</b> Sie sind im Begriff, eine schreibgeschützte Datei zu ändern. - - Make writable - Schreibbar machen - Next Open Document in History Nächstes geöffnetes Dokument im Verlauf @@ -1158,65 +1150,6 @@ Abbrechen - - Core::FileManager - - File Error - Dateifehler - - - Overwrite? - Überschreiben? - - - An item named '%1' already exists at this location. Do you want to overwrite it? - Es existiert bereits eine Datei des Namens '%1' an dieser Stelle. Wollen Sie sie überschreiben? - - - Save File As - Datei speichern - - - Open File - Datei öffnen - - - File Is Read Only - Die Datei ist schreibgeschützt - - - Make Writable - Schreibbar machen - - - Save As... - Speichern als... - - - File is Read Only - Die Datei ist schreibgeschützt - - - The file <i>%1</i> is read only. - Die Datei <i>%1</i> ist schreibgeschützt. - - - Open with VCS (%1) - Öffnen mittels Versionskontrollsystem (%1) - - - Make writable - Schreibbar machen - - - Save as... - Speichern als... - - - Cannot reload %1 - %1 konnte nicht neu geladen werden - - Core::Internal::EditMode @@ -1292,7 +1225,7 @@ Reset - Rücksetzen + Zurücksetzen Auto-save modified files @@ -1499,7 +1432,7 @@ About &Plugins... - Plugins... + &Plugins... New @@ -1559,14 +1492,6 @@ %1 Templates Vorlagen für %1 - - All templates - Alle Vorlagen - - - %1 templates - Vorlagen für %1 - Platform independent Plattformunabhängig @@ -2310,7 +2235,7 @@ Qt Creator kann sich nicht anhängen. Breakpoint Type: - Typ des Haltepunkts + Typ des Haltepunkts: State: @@ -2500,7 +2425,7 @@ Qt Creator kann sich nicht anhängen. Threads - Threads: + Threads Data at 0x%1 @@ -2763,10 +2688,6 @@ Qt Creator kann sich nicht anhängen. Break on "raise" Bei "raise" anhalten - - Use dynamic object type for display - Dynamischen Objekttyp in Anzeige verwenden - Automatically Quit Debugger Debugger automatisch beenden @@ -2803,10 +2724,6 @@ Qt Creator kann sich nicht anhängen. Register For Post-Mortem Debugging Qt Creator als Post-Mortem-Debugger registrieren - - Provide More Options to Start Debugging - Mehr Einstellungen zum Start des Debuggers zeigen - Reload Full Stack Stack vollständig neu laden @@ -2823,10 +2740,6 @@ Qt Creator kann sich nicht anhängen. This switches the Locals&&Watchers view to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level. Bewirkt, dass Zeiger im Fenster "Lokale Variablen und Überwachte Ausdrücke" automatisch dereferenziert werden. Das vereinfacht die Baumanzeige, allerdings fehlt die Information über die Zwischenebene. - - Break on "abort" - Bei "abort" anhalten - Use Dynamic Object Type for Display Dynamischen Objekttyp in Anzeige verwenden @@ -2932,7 +2845,7 @@ Qt Creator kann sich nicht anhängen. The debugger settings point to a script file at '%1' which is not accessible. If a script file is not needed, consider clearing that entry to avoid this warning. - Auf die in den Debugger-Einstellungen angegebene Skriptdatei '%1' kann nicht zugegriffen werden. Wenn kein Skript benötigt wird, können Sie die Einstellung rücksetzen, um diese Warnung zu umgehen. + Auf die in den Debugger-Einstellungen angegebene Skriptdatei '%1' kann nicht zugegriffen werden. Wenn kein Skript benötigt wird, können Sie die Einstellung zurücksetzen, um diese Warnung zu umgehen. Retrieving data for stack view... @@ -3324,10 +3237,6 @@ markers in the source code editor. Stop when raise() is called Bei Aufruf von raise() anhalten - - Show more start modes in the Debug->Start Debugging menu - Mehr Startmodi im Menü Debuggen ->Debuggen anzeigen - The options below should be used with care. Die untenstehenden Einstellungen sollten mit Vorsicht verwendet werden. @@ -3353,10 +3262,6 @@ at debugger startup. Stop when a qFatal is issued Bei qFatal anhalten - - Stop when abort is called - Bei Aufruf von abort() anhalten - Enable reverse debugging Rückwärts Debuggen aktivieren @@ -3524,7 +3429,7 @@ at debugger startup. Open Memory Editor at 0x%1 - Speicher-Editor bei 0x%1 öffnen + Speicher-Editor an 0x%1 öffnen Open Memory View at Value of Register %1 0x%2 @@ -3575,7 +3480,7 @@ at debugger startup. '%1' contains no identifier. - '%1' enthält keinen Bezeichner + '%1' enthält keinen Bezeichner. String literal %1. @@ -3585,18 +3490,6 @@ at debugger startup. Cowardly refusing to evaluate expression '%1' with potential side effects. Werte Ausdruck '%1' mit potentiellen Seiteneffekten nicht aus. - - '%1' contains no identifier - '%1' enthält keinen Bezeichner - - - String literal %1 - Zeichenketten-Literal %1 - - - Cowardly refusing to evaluate expression '%1' with potential side effects - Werte Ausdruck '%1' mit potentiellen Seiteneffekten nicht aus - Stopped at %1:%2. Angehalten bei %1:%2. @@ -3680,11 +3573,7 @@ at debugger startup. Open Memory Editor at 0x%1 - Speicher-Editor bei 0x%1 öffnen - - - Open Disassembler... - Disassembler öffnen... + Speicher-Editor an 0x%1 öffnen Open Disassembler at 0x%1 @@ -3704,7 +3593,7 @@ at debugger startup. Open Disassembler at address... - Disassembler bei 0x%1 öffnen... + Disassembler an Adresse öffnen... Disassemble Function... @@ -3760,10 +3649,6 @@ at debugger startup. Debugger::Internal::StartRemoteDialog - - Select Debugger - Debugger auswählen - Select Location of Debugging Information Pfad zu Debug-Information @@ -3792,10 +3677,6 @@ at debugger startup. Start Debugger Debugger starten - - &Debugger: - &Debugger: - Local &executable: Ausführbare Datei (&lokal): @@ -3808,18 +3689,10 @@ at debugger startup. &Architecture: &Architektur: - - &GNU target: - &GNU-Zielplattform: - Sys&root: Sys&root: - - Location of debugging information: - Pfad zu Debug-Information: - Override host GDB s&tart script: Startskript auf Host &überschreiben: @@ -3897,7 +3770,7 @@ at debugger startup. Core - Prozessorkern: + Prozessorkern State @@ -4083,6 +3956,10 @@ at debugger startup. <Edit> <Editieren> + + returned value + Rückgabewert + Name Name @@ -4100,7 +3977,7 @@ at debugger startup. Debugger::Internal::WatchWindow Change Display for Type "%1": - Anzeigeformat für den Typ '%1' ändern: + Anzeigeformat für den Typ "%1" ändern: Automatic @@ -4124,11 +4001,11 @@ at debugger startup. Open Memory Editor at Object's Address (0x%1) - Speicher-Editor bei der Adresse des Objekts (0x%1) öffnen + Speicher-Editor an Adresse des Objekts (0x%1) öffnen Open Memory Editor at Referenced Address (0x%1) - Speicher-Editor bei der referenzierten Adresse (0x%1) öffnen + Speicher-Editor an der referenzierten Adresse (0x%1) öffnen Memory Referenced by Pointer "%1" (0x%2) @@ -4154,10 +4031,6 @@ at debugger startup. Show Unprintable Characters as Hexadecimal Nicht druckbare Zeichen hexadezimal anzeigen - - Use Display Format Based on Type - Anzeigeformat per Typ verwenden' - Change Display for Type or Item... Anzeigeformat für Typ oder Element ändern... @@ -4212,6 +4085,14 @@ at debugger startup. Show Unprintable Characters as Escape Sequences Nicht druckbare Zeichen als Escape-Sequenz anzeigen + + Use Format for Type (Currently %1) + Anzeigeformat per Typ verwenden (%1) + + + Use Display Format Based on Type + Anzeigeformat per Typ verwenden + Add Data Breakpoint... Daten-Haltepunkt setzen... @@ -4258,7 +4139,7 @@ at debugger startup. Open Memory Editor at Object's Address - Speicher-Editor bei der Adresse des Objekts (0x%1) öffnen + Speicher-Editor an Adresse des Objekts öffnen Open Memory View at Object's Address @@ -4270,7 +4151,7 @@ at debugger startup. Open Memory Editor at Referenced Address - Speicher-Editor bei der referenzierten Adresse öffnen + Speicher-Editor an der referenzierten Adresse öffnen Open Memory View at Referenced Address @@ -4290,7 +4171,7 @@ at debugger startup. Refresh Code Model Snapshot - Code-Modell Stand auf aktuellen Stand bringen. + Code-Modell auf aktuellen Stand bringen Show View Contents in Editor @@ -4604,7 +4485,7 @@ Versuchen Sie, das Projekt neu zu erstellen. The class containing '%1' could not be found in %2. Please verify the #include-directives. - Die Klasse, die '%1' enthält, konnte nicht gefunden werden. + Die Klasse, die '%1' enthält, konnte nicht innerhalb von '%2' gefunden werden. Bitte prüfen Sie die #include-Anweisungen. @@ -5347,10 +5228,6 @@ Grund: %3 Select a Git Commit Wählen Sie einen Commit aus - - Select Git Repository - Wählen ein Git-Repository aus - Select Working Directory Wählen Sie das Arbeitsverzeichnis aus @@ -5363,10 +5240,6 @@ Grund: %3 Selected directory is not a Git repository Das ausgewählte Verzeichnis ist kein Git-Repository - - Repository location: - Repository: - Select Auswählen @@ -5795,7 +5668,7 @@ Grund: %3 Amend Last Commit... - Letzte Abgabe ändern + Letzte Abgabe ändern... Push @@ -5805,10 +5678,6 @@ Grund: %3 Branches... Branches... - - Show Commit... - Commit anzeigen... - Subversion Subversion @@ -5882,7 +5751,7 @@ rückgängig machen? Clean... - Repository bereinigen + Repository bereinigen... Remotes... @@ -6005,10 +5874,6 @@ rückgängig machen? Git Settings Git-Einstellungen - - PATH: - Pfad-Variable: - <b>Note:</b> <b>Hinweis:</b> @@ -6037,10 +5902,6 @@ rückgängig machen? Pull with rebase pull mit rebase - - From System - Vom System - Set "HOME" environment variable Umgebungsvariable "HOME" setzen @@ -6057,10 +5918,6 @@ rückgängig machen? Log count: Log-Anzeige beschränken auf: - - Customize Environment: - Umgebung anpassen: - Git needs to find Perl in the environment. Git benötigt Perl. @@ -6086,7 +5943,7 @@ rückgängig machen? Open source projects that use Git. - Open-Source-Projekte, die git verwenden + Open-Source-Projekte, die git verwenden. @@ -6165,7 +6022,7 @@ rückgängig machen? Choose a project from '%1' - Wählen Sie ein Projekt von '%1'. + Wählen Sie ein Projekt von '%1' @@ -6403,7 +6260,7 @@ Add, modify, and remove document filters, which determine the documentation set Reset - Rücksetzen + Zurücksetzen Help Bookmarks @@ -7090,7 +6947,7 @@ Add, modify, and remove document filters, which determine the documentation set Revert Unchanged - Angeforderte, ungeänderte Dateien rücksetzen + Angeforderte, ungeänderte Dateien zurücksetzen Revert Unchanged Files of Project "%1" @@ -7381,7 +7238,7 @@ Add, modify, and remove document filters, which determine the documentation set The option %1 requires an argument. - Das Kommandozeilenargument %1erfordert ein Argument + Das Kommandozeilenargument %1 erfordert ein Argument. Failed Plugins @@ -7505,7 +7362,7 @@ Add, modify, and remove document filters, which determine the documentation set Finished %1 of %n steps Schritt %1 von %n beendet - + Schritt %1 von %n beendet @@ -7597,7 +7454,7 @@ Add, modify, and remove document filters, which determine the documentation set Reason: %2 Die Ausgabe-Hilfsbibliothek konnte in keinem der folgenden Verzeichnisse erstellt werden: -- $1 +- %1 Fehler: %2 @@ -7623,7 +7480,7 @@ Fehler: %2 &Reset - &Rücksetzen + Zu&rücksetzen &Unset @@ -7635,7 +7492,7 @@ Fehler: %2 Unset <a href="%1"><b>%1</b></a> - <a href="%1"><b>%1</b></a> rücksetzen + <a href="%1"><b>%1</b></a> zurücksetzen Set <a href="%1"><b>%1</b></a> to <b>%2</b> @@ -7806,22 +7663,10 @@ Fehler: %2 Base environment for this run configuration: Basisumgebung für diese Ausführungskonfiguration: - - Run in &Terminal - In &Terminal ausführen - - - Debugger: - Debugger: - Run Environment Ausführungsumgebung - - Base environment for this runconfiguration: - Basisumgebung für diese Ausführungskonfiguration - Clean Environment Umgebung löschen @@ -7911,11 +7756,6 @@ Fehler: %2 Custom Process Step Benutzerdefinierter Verarbeitungsschritt - - %1 (disabled) - %1 is the custom process step summary - %1 (deaktiviert) - ProjectExplorer::Internal::ProcessStepWidget @@ -7923,10 +7763,6 @@ Fehler: %2 Command: Kommando: - - Enable custom process step - Benutzerdefinierten Verarbeitungsschritt aktivieren - Working directory: Arbeitsverzeichnis: @@ -8182,7 +8018,7 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Deployment - Deployment: + Deployment Method: @@ -8276,17 +8112,6 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Bei Start letzte Sitzung laden - - ProjectExplorer::Internal::SessionFile - - Session - Sitzung - - - Failed to open project - Das Projekt konnte nicht geöffnet werden - - ProjectExplorer::Internal::TaskDelegate @@ -8320,10 +8145,6 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Project Management Projektverwaltung - - Manage ... - Verwaltung... - Manage... Verwaltung... @@ -8349,7 +8170,7 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Session Manager... - Sitzungsverwaltung + Sitzungsverwaltung... New Project... @@ -8361,7 +8182,7 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Load Project... - Projekt laden + Projekt laden... Ctrl+Shift+O @@ -8457,11 +8278,11 @@ konnte dem Projekt '%2' nicht hinzugefügt werden. Add New... - Hinzufügen + Hinzufügen... Add Existing Files... - Existierende Datei hinzufügen + Existierende Datei hinzufügen... Remove File... @@ -8562,10 +8383,6 @@ Möchten Sie sie ignorieren? No project loaded Kein Projekt geladen - - Currently building the active project - Das aktive Projekt wird gerade erstellt - Project has no build settings Das Projekt hat keine Build-Einstellungen @@ -8583,22 +8400,6 @@ Möchten Sie sie ignorieren? Das Erstellen von "%1" ist deaktiviert: %2 - - No active project - Kein aktives Projekt - - - The project '%1' has no active target - Das Projekt "%1" hat kein aktives Ziel - - - The target '%1' for project '%2' has no active run configuration - Das Ziel "%1" des Projektes "%2" hat keine aktive Ausführungskonfiguration - - - Cannot run '%1' in mode '%2'. - "%1" kann nicht im Modus "%2" ausgeführt werden. - A build is still in progress. Zur Zeit läuft ein Build-Vorgang. @@ -8677,10 +8478,6 @@ Möchten Sie sie ignorieren? Recent P&rojects Zuletzt bearbeitete P&rojekte - - Recent Sessions - Zuletzt benutzte Sitzungen - Build Project "%1" Projekt "%1" erstellen @@ -8732,7 +8529,7 @@ Möchten Sie sie ignorieren? The target '%1' for the project '%2' has no active run configuration. - Das Ziel '%1' des Projektes '%2' hat keine aktive Ausführungskonfiguration + Das Ziel '%1' des Projektes '%2' hat keine aktive Ausführungskonfiguration. Cannot run '%1'. @@ -8910,7 +8707,7 @@ unter Versionsverwaltung (%2) gestellt werden? Icon file: - Icon-Datei: + Symbol-Datei: &Link library @@ -8954,11 +8751,11 @@ unter Versionsverwaltung (%2) gestellt werden? Select Icon - Icon auswählen + Symbol auswählen Icon files (*.png *.ico *.jpg *.xpm *.tif *.svg) - Icon-Dateien (*.png *.ico *.jpg *.xpm *.tif *.svg) + Symbol-Dateien (*.png *.ico *.jpg *.xpm *.tif *.svg) The header file has to be specified in source code. @@ -9030,7 +8827,7 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Plugin name: - Name des Plugins + Name des Plugins: Resource file: @@ -9234,13 +9031,6 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Die Erzeugung von mehreren Bibliotheken (%1, %2) in einem Projekt (%3) wird nicht unterstützen. - - Qt4ProjectManager::Internal::ProjectLoadWizard - - Project Setup - Projekt einrichten - - Qt4ProjectManager::Internal::QMakeStepFactory @@ -9392,10 +9182,6 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Qt4 Run Configuration Qt 4-Ausführungskonfiguration - - Qt4 RunConfiguration - Qt4 RunConfiguration - Qt4ProjectManager::Internal::Qt4RunConfigurationWidget @@ -9419,18 +9205,10 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Base environment for this run configuration: Basisumgebung für diese Ausführungskonfiguration: - - Debugger: - Debugger: - Run Environment Ausführungsumgebung - - Base environment for this runconfiguration: - Basisumgebung für diese Ausführungskonfiguration - Clean Environment Umgebung löschen @@ -9484,10 +9262,6 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Arguments: Argumente: - - Debugger: - Debugger: - Qt4ProjectManager::Internal::S60EmulatorRunConfiguration @@ -9563,10 +9337,6 @@ S60 emulator run configuration default display name, %1 is base pro-File nameQt4 MakeStep display name. Make - - Qt Creator needs a buildconfiguration set up to build. Configure a tool chain in Project mode. - Qt Creator benötigt eine Build-Konfiguration zum Erstellen. Bitte richten Sie eine Toolchain im Projektmodus ein. - Qt Creator needs a build configuration set up to build. Configure a tool chain in Project mode. Qt Creator benötigt eine Build-Konfiguration zum Erstellen. Bitte richten Sie eine Toolchain im Projektmodus ein. @@ -9596,11 +9366,7 @@ S60 emulator run configuration default display name, %1 is base pro-File name No Qt4 build configuration. - Keine Qt4-Build-Konfiguration - - - No qt4 buildconfiguration. - Es ist keine Qt4-Build-Konfiguration vorhanden. + Keine Qt4-Build-Konfiguration. <b>Make:</b> %1 not found in the environment. @@ -9665,10 +9431,6 @@ S60 emulator run configuration default display name, %1 is base pro-File name<b>Warning:</b> The tool chain suggests using another mkspec. <b>Warnung:</b> Die Toolchain gibt eine andere mkspec vor. - - <b>Warning:</b> The tool chain suggested "%1" as mkspec. - <b>Warnung:</b> Die Toolchain gibt "%1" als mkspec an. - Enable QML debugging: QML-Debuggen aktivieren: @@ -9684,10 +9446,6 @@ S60 emulator run configuration default display name, %1 is base pro-File name Qt4ProjectManager::Qt4Manager - - Full path to the bin/ install directory of the current project's Qt version. - Vollständiger Pfad des bin-Ordners der vom aktuellen Projekt verwendeten Qt-Version. - Full path to the bin directory of the current project's Qt version. Vollständiger Pfad des bin-Ordners der vom aktuellen Projekt verwendeten Qt-Version. @@ -10688,14 +10446,6 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Go to Block End Zum Blockende gehen - - Go to Block Start With Selection - Bis Blockanfang markieren - - - Go to Block End With Selection - Bis Blockende markieren - Shift+Del Shift+Del @@ -10728,22 +10478,6 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Ctrl+Ins Ctrl+Ins - - Delete Word From The Cursor On - Ganzes Wort nach Einfügemarke löschen - - - Delete Word Camel Case From The Cursor On - Wort nach Einfügemarke löschen (Camel Case) - - - Delete Word Up To The Cursor - Ganzes Wort vor Einfügemarke löschen - - - Delete Word Camel Case Up To The Cursor - Wort vor Einfügemarke löschen (Camel Case) - Ctrl+< Ctrl+< @@ -10976,86 +10710,6 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Go to Next Word Camel Case with Selection Nächstes Wort markieren (Camel Case) - - Goto Line Start - Zeilenanfang - - - Goto Line End - Zeilenende - - - Goto Next Line - Nächste Zeile - - - Goto Previous Line - Vorangehende Zeile - - - Goto Previous Character - Vorangehendes Zeichen - - - Goto Next Character - Nächstes Zeichen - - - Goto Previous Word - Vorangehendes Wort - - - Goto Next Word - Nächstes Wort - - - Goto Previous Word Camel Case - Vorangehendes Wort (Camel Case) - - - Goto Next Word Camel Case - Nächstes Wort (Camel Case) - - - Goto Line Start With Selection - Bis Zeilenanfang markieren - - - Goto Line End With Selection - Bis Zeilenende markieren - - - Goto Next Line With Selection - Bis zur nächsten Zeile markieren - - - Goto Previous Line With Selection - Bis zur vorangehenden Zeile markieren - - - Goto Previous Character With Selection - Vorangehendes Zeichen markieren - - - Goto Next Character With Selection - Nächstes Zeichen markieren - - - Goto Previous Word With Selection - Vorangehendes Wort markieren - - - Goto Next Word With Selection - Nächstes Wort markieren - - - Goto Previous Word Camel Case With Selection - Vorangehendes Wort markieren (Camel Case) - - - Goto Next Word Camel Case With Selection - Nächstes Wort markieren (Camel Case) - <line number> <Zeilennummer> @@ -11274,10 +10928,6 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Utils::CheckableMessageBox - - Dialog - Dialog - Do not ask again Nicht noch einmal nachfragen @@ -11322,7 +10972,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Quoting error in command. - Quotierungsfehler im Kommando + Falsch gesetzte Anführungszeichen im Kommando. Debugging complex shell commands in a terminal is currently not supported. @@ -11628,11 +11278,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Descriptio&n - &Beschreibung: - - - Check &all - &Alle markieren + &Beschreibung Check a&ll @@ -11709,6 +11355,11 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: Checkout Auschecken + + No job running, please abort. + Looks like an internal/assert error. + Kein laufender Job, bitte abbrechen. + Checkout started... Checkout begonnen... @@ -11842,7 +11493,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: The check script '%1' crashed. - Das Skript zur Überprüfung der Beschreibung ist abgestürzt. + Das Skript '%1' zur Überprüfung der Beschreibung ist abgestürzt. The check script returned exit code %1. @@ -12006,7 +11657,7 @@ Die folgenden Encodings scheinen der Datei zu entsprechen: %1 cannot be restored since the repository is modified. You can choose between stashing the changes or discarding them. %1 kann nicht wiederhergestellt werden, da Änderungen im Repository vorhanden sind. -Sie können die Änderungen in einem Stash ablegen oder rücksetzen. +Sie können die Änderungen in einem Stash ablegen oder zurücksetzen. Stash @@ -12014,7 +11665,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. Discard - Rücksetzen + Zurücksetzen Restore Stash to Branch @@ -12132,7 +11783,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. The number of recent commit logs to show, choose 0 to see all entries. - Zahl der anzuzeigenden Logeinträge, 0 für unbegrenzt + Zahl der anzuzeigenden Logeinträge, 0 für unbegrenzt. @@ -12234,7 +11885,7 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. Type: - Typ + Typ: Test @@ -12313,10 +11964,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.The executable is not built by the current build configuration Die ausführbare Datei wurde nicht von der gegenwärtigen Build-Konfiguration erstellt - - The executable is not built by the current buildconfiguration - Die ausführbare Datei wurde nicht von der gegenwärtigen Build-Konfiguration erstellt - (disabled) (deaktiviert) @@ -13010,18 +12657,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.<style type=text/css>a:link {color: rgb(128, 128, 255, 240);}</style>The project <b>%1</b> is not yet configured<br/><br/>You can configure it in the <a href="projectmode">Projects mode</a><br/> <style type=text/css>a:link {color: rgb(128, 128, 255, 240);}</style>Das Projekt <b>%1</b> ist noch nicht konfiguriert<br/><br/>Sie können es im <a href="projectmode">Projektmodus</a> konfigurieren<br/> - - <b>Build:</b> %1<br/> - <b>Erstellung:</b> %1<br/> - - - <b>Deploy:</b> %1<br/> - <b>Ziel:</b> %1<br/> - - - <html><nobr><b>Project:</b> %1<br/>%2%3%4<b>Run:</b> %5%6</html> - <html><nobr><b>Projekt:</b> %1<br/>%2%3%4<b>Ausführung:</b> %5%6</html> - Project: <b>%1</b><br/> Projekt: <b>%1</b><br/> @@ -13042,14 +12677,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Run: <b>%1</b><br/> Ausführung: <b>%1</b><br/> - - <b>Target:</b> %1<br/> - <b>Ziel:</b> %1<br/> - - - <br/>%1 - <br/>%1 - ProjectExplorer::ProjectConfiguration @@ -13064,10 +12691,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Build & Run Erstellung und Ausführung - - Other Qt Project - Anderes Qt-Projekt - Other Project Anderes Projekt @@ -13082,11 +12705,11 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen. Non-Qt Project - Anderes Projekt + C/C++ Projekte (ohne Qt) Import Project - Projekts importieren + Projekt importieren Qt Application @@ -13462,13 +13085,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.QML-Analyse - - QmlProjectManager - - Qt Quick Project - Qt Quick-Projekt - - QmlProjectManager::Internal::Manager @@ -13486,10 +13102,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Qt Versions Qt Versionen - - Unconfigured Project Settings - Nicht konfigurierte Projekte - Unconfigured Project Nicht konfiguriertes Projekt @@ -13587,12 +13199,6 @@ Sie können die Änderungen in einem Stash ablegen oder rücksetzen.Cannot determine the installation path for Qt version '%1'. Der Installationsordner der Qt-Version '%1' kann nicht bestimmt werden. - - Building helper(s) with toolchain '%1' ... - - Erstelle Ausgabe-Hilfsbibliothek mit der Toolchain '%1'... - - Building helper(s) with toolchain '%1'... @@ -13943,14 +13549,6 @@ Qt Quick-UI-Projekte benötigen keine Erstellung und können direkt im QML-Betra Erfordert <b>Qt 4.7.4</b> oder neuer. - - Creates a Qt Quick UI project with a single QML file that contains the main view. - -You can review Qt Quick UI projects in the QML Viewer and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of projects. - Erstellt ein Qt Quick-UI-Projekt aus einer einzelnen QML-Datei, die die Hauptansicht enthält. - -Qt Quick-UI-Projekte benötigen keine Erstellung und können direkt im QML-Betrachter ausgeführt werden. Zur Erstellung und Ausführung dieser Projekte ist keine Entwicklungsumgebung erforderlich. - QmlProjectManager::QmlProjectRunConfiguration @@ -14166,10 +13764,6 @@ Qt Quick-UI-Projekte benötigen keine Erstellung und können direkt im QML-Betra Core::EditorToolBar - - Close Document - Dokument schließen - Split Teilen @@ -14186,10 +13780,6 @@ Qt Quick-UI-Projekte benötigen keine Erstellung und können direkt im QML-Betra Make Writable Schreibbar machen - - Make writable - Schreibbar machen - File is writable Die Datei ist schreibbar @@ -14258,7 +13848,7 @@ Qt Quick-UI-Projekte benötigen keine Erstellung und können direkt im QML-Betra Ignore patching for this packaging step. - Kein Patchen bei diesem Schritt durchführen + Kein Patchen bei diesem Schritt durchführen. The process "%1" exited normally. @@ -14418,13 +14008,6 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Der QML-Modul enthält C++-Plugins, lese Typinformationen aus... - - CodePaster::PasteBinDotComSettings - - Pastebin.com - Pastebin.com - - ExpressionEditor @@ -14436,7 +14019,7 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte ExtendedFunctionButton Reset - Rücksetzen + Zurücksetzen Set Expression @@ -14865,14 +14448,6 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Qt Creator can set up the following targets: Qt Creator kann die folgenden Ziele einrichten: - - Setup targets for your project - Ziele des Projekts einrichten - - - <html><head/><body><p><b>No valid Qt versions found.</b></p><p>Please add a Qt version in <i>Tools/Options</i> or via the maintenance tool of the SDK.</p></body></html> - <html><head/><body><p><b>Es konnten keine gültigen Qt-Versionen gefunden werden.</b><br>Bitte fügen Sie eine gültige Version unter <i>Extras/Einstellungen</i> oder mit dem SDK-Installationswerkzeug hinzu.</p></body></html> - Set up Targets for Your Project Ziele des Projekts einrichten @@ -14909,7 +14484,7 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Non-Qt Project - Anderes Projekt + C/C++ Projekte (ohne Qt) Creates a plain C project using CMake, not using the Qt library. @@ -14939,10 +14514,6 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Custom QML Extension Plugin Plugin zur Erweiterung von QML - - QML Extension Plugin - Plugin zur Erweiterung von QML - Custom QML Extension Plugin Parameters QML Runtime Plug-in Parameters @@ -14984,13 +14555,9 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Qt Creator Plugin Qt Creator-Plugin - - Other Qt Project - Anderes Qt-Projekt - Plugin Information - Plugin-Information: + Plugin-Information Plugin name: @@ -15206,14 +14773,6 @@ with a password, which you can enter below. Do Not Encrypt Key File Schlüsseldatei nicht verschlüsseln - - Encrypt key file - Schlüsseldatei verschlüsseln - - - Do not encrypt key file - Schlüsseldatei nicht verschlüsseln - CodePaster::FileShareProtocol @@ -15468,7 +15027,7 @@ with a password, which you can enter below. emptyPane None or multiple items selected. - Keines oder mehrere Elemente ausgewählt + Keines oder mehrere Elemente ausgewählt. @@ -15866,22 +15425,6 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. ImageViewer::Internal::ImageViewerToolbar - - Show background - Hintergrund anzeigen - - - Show outline - Umriss anzeigen - - - Fit image in the screen - Bild an Schirmgröße anpassen - - - Original size - Originalgröße - Zoom In Vergrößern @@ -15970,7 +15513,7 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Linkage: - Linken + Linken: Dynamic @@ -16050,25 +15593,6 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Datei öffnen - - Utils::DebuggerLanguageChooser - - C++ - C++ - - - QML - QML - - - Debug port: - Port für Debugger: - - - <a href="qthelp://com.nokia.qtcreator/doc/creator-debugging-qml.html">What are the prerequisites?</a> - <a href="qthelp://com.nokia.qtcreator/doc/creator-debugging-qml.html">Was sind die Voraussetzungen?</a> - - Utils::SynchronousProcess @@ -16333,7 +15857,7 @@ Flags: %3 Value 0 obtained from evaluating the condition of breakpoint %1, continuing. - Wert 0 von Bedingung des bedingten Haltepunkts %2 erhalten, setze fort. + Wert 0 von Bedingung des bedingten Haltepunkts %1 erhalten, setze fort. "Select Widget to Watch": Please stop the application first. @@ -16383,11 +15907,7 @@ Flags: %3 Only one executable allowed! - Es ist nur eine ausführbare Datei zulässig! - - - The parameter '%1' of option '%2' does not match the pattern <server:port>@<executable>@<architecture>. - Der Parameter '%1' der Option '%2' entspricht nicht dem Muster <Server:Portnummer>@<Ausführbare Datei>@<Architektur>. + Es ist nur eine ausführbare Datei erlaubt! The parameter '%1' of option '%2' does not match the pattern <handle>:<pid>. @@ -16582,10 +16102,6 @@ wenn es außerhalb von git bash aufgerufen wird. Close Document Dokument schließen - - Close - Schließen - Help::Internal::OpenPagesManager @@ -16779,7 +16295,7 @@ wenn es außerhalb von git bash aufgerufen wird. Show task location in an editor. - Fundstelle in Editor anzeigen + Fundstelle in Editor anzeigen. @@ -16790,7 +16306,7 @@ wenn es außerhalb von git bash aufgerufen wird. Show output generating this issue. - Zum Problem gehörende Ausgabe anzeigen + Zum Problem gehörende Ausgabe anzeigen. @@ -17209,11 +16725,6 @@ Der Pfad zur Bibliothek und der Pfad zu den Headerdateien werden zur .pro-Datei Unable to rename file '%1' to '%2': %3 Die Datei '%1' konnte nicht in '%2' umbenannt werden: %3 - - Deploy - Qt4 Deploystep display name - Deployment - Renaming new package '%1' to '%2' Die Paketdatei wird von '%1' zu '%2' umbenannt @@ -17328,13 +16839,6 @@ Der Pfad zur Bibliothek und der Pfad zu den Headerdateien werden zur .pro-Datei Die Verbindung zum Gerät '%1' wurde getrennt - - Qt4ProjectManager::Internal::S60DeployStepWidget - - Deploy SIS Package - Deployment der SIS-Paketdatei - - Qt4ProjectManager::Internal::S60DeployStepFactory @@ -17361,7 +16865,7 @@ Der Pfad zur Bibliothek und der Pfad zu den Headerdateien werden zur .pro-Datei Recipe %1 failed with exit code %2. %1 is the SBSv2 build recipe name, %2 the return code of the failed command - Recipe %1 schlug mit demRückgabewert %2 fehl + Recipe %1 schlug mit Rückgabewert %2 fehl. @@ -17397,10 +16901,6 @@ Der Pfad zur Bibliothek und der Pfad zu den Headerdateien werden zur .pro-Datei Select existing QML file Verwende existierende QML-Datei - - Application Type - Typ der Anwendung - TaskList::Internal::StopMonitoringHandler @@ -17495,7 +16995,7 @@ Der Pfad zur Bibliothek und der Pfad zu den Headerdateien werden zur .pro-Datei Clear Selection - Auswahl rücksetzen + Auswahl zurücksetzen Invert Selection @@ -17652,7 +17152,7 @@ Bitte prüfen Sie die Zugriffsrechte des Ordners. Stopped in thread %1 by: %2. - Im Thread %1 angehalten durch: %2 + Im Thread %1 angehalten durch: %2. Interrupted. @@ -17932,18 +17432,6 @@ Wählt Qt-Versionen für Simulator und mobile Ziele aus, sofern sie verfügbar s Qt4ProjectManager::Internal::QtQuickAppWizard - - Qt Quick Application - Neue Qt Quick-Anwendung - - - Creates a Qt Quick application project that can contain both QML and C++ code and includes a QDeclarativeView. - -You can build the application and deploy it on desktop and mobile target platforms. For example, you can create signed Symbian Installation System (SIS) packages for this type of projects. Moreover, you can select to use a set of premade UI components in your Qt Quick application. To utilize the components, Qt 4.7.4 or newer is required. - Erstellt ein Qt Quick-Projekt, welches QML- und C++-Code enthält und eine Instanz der Klasse QDeclarativeView verwendet. - -Sie können diese Anwendung sowohl auf Desktop- als auch auf mobilen Plattformen ausführen. Dieser Projekttyp ermöglicht zum Beispiel die Erstellung eines signierten Symbian Installation System (SIS)-Paketes. Zusätzlich gestattet es die Verwendung vorgefertigter UI-Komponenten in Ihrer Qt Quick-Anwendung. Dies erfordert Qt 4.7.3 oder neuer. - Creates a Qt Quick application project that can contain both QML and C++ code and includes a QDeclarativeView. @@ -18174,24 +17662,6 @@ Bei GDB kann eine durch '\n' getrennte Kommandosequenz angegeben werde &Meldung: - - Debugger::Internal::Console - - Clear Contents - Inhalt löschen - - - Save Contents - Inhalt speichern - - - - Debugger::Internal::ConsoleWindow - - Console - Konsole - - Debugger::Internal::DebuggerPane @@ -18312,13 +17782,6 @@ Bei GDB kann eine durch '\n' getrennte Kommandosequenz angegeben werde - - QmlJsEditor - - QML - QML - - QmlJSEditor::FindReferences @@ -18703,10 +18166,6 @@ Hinweis: Unter Umständen wird die lokale Datei gelöscht. The debugging helper is used to nicely format the values of some Qt and Standard Library data types. It must be compiled for each used Qt version separately. In the Qt Creator Build and Run preferences page, select a Qt version, expand the Details section and click Build All. Die Ausgabe-Hilfsbibliothek dient zur Ausgabe der Werte einiger Datentypen aus Qt- und den Standardbibliotheken. Sie muss mit jeder benutzten Qt-Version compiliert werden. Das geschieht in der Seite 'Erstellung und Ausführung' durch Auswahl der Qt-Installation und Klicken auf 'Erstellen' für die Ausgabe-Hilfsbibliothek. - - Starting debugger '%1' for ABI '%2'... - Starte Debugger '%1' für ABI '%2'... - Debugger finished. Debuggen beendet. @@ -18806,14 +18265,6 @@ Hinweis: Unter Umständen wird die lokale Datei gelöscht. The debugger could not load the debugging helper library. Der Debugger konnte die Ausgabe-Hilfsbibliothek nicht finden. - - The debugging helper is used to nicely format the values of some Qt and Standard Library data types. It must be compiled for each used Qt version separately. On the Qt4 options page, select a Qt installation and click Rebuild. - Die Ausgabe-Hilfsbibliothek dient zur Ausgabe der Werte einiger Datentypen aus Qt- und den Standardbibliotheken. Sie muss mit jeder benutzten Qt-Version compiliert werden. Das geschieht in der Seite 'Qt-Einstellungen' durch Auswahl der Qt-Installation und Klicken auf 'Erstellen' für die Ausgabe-Hilfsbibliothek. - - - QML Script Console - QML Skript-Konsole - Starting debugger "%1" for ABI "%2"... Starte Debugger "%1" für ABI "%2"... @@ -19115,13 +18566,6 @@ Soll es noch einmal versucht werden? QML Debugger: Could not connect to service '%1'. QML-Debugger: Es konnte keine Verbindung zum Debug-Dienst '%1' hergestellt werden. - - Could not connect to the in-process QML debugger: -%1 - %1 is detailed error message - QML-Debugger: Es konnte keine Verbindung zur Debug-Komponente im Prozess hergestellt werden: -%1 - JS Source for %1 JS-Quelle für %1 @@ -19569,10 +19013,6 @@ Fehler: %2 Main QML file: QML-Hauptdatei: - - Debugger: - Debugger: - Run Environment Ausführungsumgebung @@ -19821,7 +19261,7 @@ Sie können diese Anwendung sowohl auf Desktop- als auch auf mobilen Plattformen Error reverting snippet. - Fehler beim Rücksetzen des Snippets. + Fehler beim Zurücksetzen des Snippets. @@ -20110,7 +19550,7 @@ Lokale Commits werden nicht zum Master-Branch gepusht, bis ein normaler Commit e By default, branch will fail if the target directory exists, but does not already have a control directory. This flag will allow branch 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 +Die Einstellung gestattet es, unter diesen Umständen fortzusetzen. Create a stacked branch referring to the source branch. @@ -20132,7 +19572,7 @@ Der neue Branch benötigt den Quell-Branch für alle Operationen. Create a branch without a working-tree. - Branch ohne Arbeitsdateibaum erzeugen + Branch ohne Arbeitsdateibaum erzeugen. @@ -20322,11 +19762,11 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt. Revert tool to default - Werkzeug auf Vorgabewert rücksetzen + Werkzeug auf Vorgabewert zurücksetzen Reset - Rücksetzen + Zurücksetzen Description: @@ -20686,7 +20126,7 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Bazaar::Internal::OptionsPageWidget Bazaar Command - Bazaar-Kommando: + Bazaar-Kommando @@ -20718,10 +20158,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.This tool prints a line of useful text Dieses Werkzeug gibt eine Zeile hilfreichen Texts aus - - /c echo Useful text - /c echo Hilfreicher Text - Useful text Sample external tool text @@ -20967,7 +20403,7 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt. Reset - Rücksetzen + Zurücksetzen @@ -21132,18 +20568,6 @@ Fehler: %2 Add Build Build hinzufügen - - Create Build Configurations: - Build-Konfigurationen erstellen: - - - Use Shadow Building - Shadow-Build verwenden - - - Qt Version: - Qt-Version: - debug Debug build @@ -21154,22 +20578,10 @@ Fehler: %2 release build release - - No build found - Keine Builds gefunden - No build found in %1 matching project %2. In %1 wurde kein dem Projekt %2 entsprechender Build gefunden. - - The build found in %1 is incompatible with this target - Der im Ordner %1 befindliche Build ist nicht zu diesem Ziel kompatibel. - - - Incompatible build found - Inkompatibler Build gefunden - Create build configurations: Build-Konfigurationen erstellen: @@ -21192,7 +20604,7 @@ Fehler: %2 Shadow build - Shadow-Build: + Shadow-Build Qt version: @@ -21216,24 +20628,12 @@ Fehler: %2 The build found in %1 is already imported. - Der Build in %1 ist bereits importiert + Der Build in %1 ist bereits importiert. Import build from %1. Build aus %1 importieren. - - Already imported build - Build bereits importiert - - - The build found in %1 is already imported - Der Build in %1 ist bereits importiert - - - Import build from %1 - Build aus %1 importieren - <b>Error:</b> Severity is Task::Error @@ -21387,7 +20787,7 @@ Fehler: %2 Created %1. - %1 wurde erstellt + %1 wurde erstellt. @@ -21883,13 +21283,6 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version Analyse - - Analyzer::AnalyzerProjectSettings - - Analyzer Settings - Analyse-Einstellungen - - Analyzer::IAnalyzerTool @@ -22011,11 +21404,11 @@ Außerdem wird die Anwendung bei Verwendung einer nicht freigegebenen Qt-Version 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) + Die Terminal-Einstellungen von Port %1 konnten nicht abgefragt werden: %2 (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) + Die Terminal-Einstellungen von Port %1 konnten nicht gesetzt werden: %2 (POSIX-Fehler %3) Cannot write to port %1: %2 (POSIX error %3) @@ -22311,7 +21704,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. &Push - Push + &Push @@ -22353,7 +21746,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. QML Observer: - QML-Observer: + QML-Beobachter: Build @@ -22373,7 +21766,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Show compiler output of last build. - Compiler-Ausgabe des letzten Erstellungsvorgangs anzeigen + Compiler-Ausgabe des letzten Erstellungsvorgangs anzeigen. Show Log @@ -22383,10 +21776,6 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Build All Alles erstellen - - Tool Chain: - Toolchain: - Tool chain: Toolchain: @@ -22432,10 +21821,6 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Valgrind::Internal::SuppressionDialog - - Dialog - Dialog - Suppression File: Ausschluss-Datei: @@ -22740,7 +22125,7 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Move animation duration of the highlight delegate. - Dauer der Bewegungsanimation des hervorgehobenen Delegates + Dauer der Bewegungsanimation des hervorgehobenen Delegates. Move speed @@ -22839,7 +22224,7 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Move animation duration of the highlight delegate. - Dauer der Bewegungsanimation des hervorgehobenen Delegates + Dauer der Bewegungsanimation des hervorgehobenen Delegates. Move speed @@ -22855,7 +22240,7 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Resize animation duration of the highlight delegate. - Dauer der Größenänderungsanimation des hervorgehobenen Delegates + Dauer der Größenänderungsanimation des hervorgehobenen Delegates. Resize speed @@ -22898,7 +22283,7 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Drag margin - Rand bei Drag-Operation: + Rand bei Drag-Operation Flick deceleration @@ -22942,7 +22327,7 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Move animation duration of the highlight delegate. - Dauer der Bewegungsanimation des hervorgehobenen Delegates + Dauer der Bewegungsanimation des hervorgehobenen Delegates. Preferred begin @@ -23141,17 +22526,6 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Die Prozess-ID konnte nicht bestimmt werden. - - Analyzer::AnalyzerRunConfigWidget - - Analyzer Settings - Analyse-Einstellungen - - - Available settings: %1 - Verfügbare Einstellungen: %1 - - Bazaar::Internal::BazaarDiffParameterWidget @@ -23163,17 +22537,6 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Leerzeilen nicht berücksichtigen - - BinEditorFile - - Cannot open %1: %2 - Die Datei %1 kann nicht geöffnet werden: %2 - - - File Error - Dateifehler - - CMakeProjectManager::Internal::CMakeEditor @@ -23200,14 +22563,6 @@ Would you like to overwrite them? Sollen sie überschrieben werden? - - Core::IFile - - File was restored from auto-saved copy. Use <i>Save</i> to confirm, or <i>Revert to Saved</i> to discard changes. - Refers to menu entries. - Die Datei wurde von einer Sicherheitskopie wiederhergestellt. Wählen Sie <i>Speichern</i> zur Bestätigung oder <i>Wiederherstellen</i> um die Änderungen zu verwerfen. - - Core::InfoBarDisplay @@ -23301,13 +22656,9 @@ Sollen sie überschrieben werden? ImageViewer::Internal::ImageViewer - - Cannot open image file %1 - Die Bilddatei %1 kann nicht geöffnet werden. - Cannot open image file %1. - Die Bilddatei %1. kann nicht geöffnet werden. + Die Bilddatei %1 kann nicht geöffnet werden. @@ -24191,7 +23542,7 @@ Einschränkungen bezüglich der Erstellung von SIS-Dateien bestehen. Reset all event counters. - Alle Ereigniszähler rücksetzen. + Alle Ereigniszähler zurücksetzen. Pause event logging. No events are counted which will speed up program execution during profiling. @@ -24706,12 +24057,6 @@ Sie bleiben bestehen. RemoteLinux::AbstractRemoteLinuxDebugSupport - - Preparing remote side ... - - Bereite Gegenseite vor... - - Preparing remote side... @@ -24781,18 +24126,6 @@ Sie bleiben bestehen. Working directory: Arbeitsverzeichnis: - - C++ - C++ - - - QML - QML - - - Debugging type: - Debuggen: - Base environment for this run configuration: Basisumgebung für diese Ausführungskonfiguration: @@ -24820,12 +24153,6 @@ Sie bleiben bestehen. RemoteLinux::AbstractRemoteLinuxRunControl - - Starting remote process ... - - Starte entfernten Prozess... - - Starting remote process... @@ -24923,7 +24250,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Reset Code Model - Code-Modell rücksetzen + Code-Modell zurücksetzen @@ -24998,7 +24325,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Reset z property - Z-Wert rücksetzen + Z-Wert zurücksetzen Edit @@ -25026,7 +24353,7 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Reset - Rücksetzen + Zurücksetzen Layout @@ -25151,17 +24478,6 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Feedback - - RecentSessions - - %1 (last session) - %1 (zuletzt benutzt) - - - %1 (current session) - %1 (aktuelle Sitzung) - - QtSupport::Internal::GettingStartedWelcomePage @@ -25179,50 +24495,6 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Select Existing QML file Verwende existierende QML-Datei - - Qt Quick Application Type - Qt Quick-Anwendung - - - Built-in elements only (for all platforms) - Nur eingebaute Elemente (alle Plattformen) - - - Qt Quick Components for Symbian - Qt Quick-Komponenten für Symbian - - - Qt Quick Components for MeeGo/Harmattan - Qt Quick-Komponenten für Meego/Harmattan - - - Use an existing .qml file - Verwende existierende .qml-Datei - - - The built-in elements in the QtQuick namespace allow you to write cross-platform applications with a custom look and feel. - -Requires Qt 4.7.1 or newer. - Die eingebauten Elemente im QtQuick-Namensraum erlauben es, plattformübergreifende Anwendungen mit benutzerdefinierbarem Look and Feel zu erstellen. - -Erfordert Qt 4.7.1 oder neuer. - - - The Qt Quick Components for Symbian are a set of ready-made components that are designed with specific native appearance for the Symbian platform. - -Requires Qt 4.7.4 or newer, and the component set installed for your Qt version. - Die Qt Quick-Komponenten für Symbian sind ein Satz vorgefertigter Komponenten, die entworfen worden, um das Symbian-spezifische Erscheinungsbild wiederzugeben. - -Erfordert Qt 4.7.4 oder neuer sowie die Installation des Komponentensatzes für diese Qt-Version. - - - The Qt Quick Components for MeeGo/Harmattan are a set of ready-made components that are designed with specific native appearance for the MeeGo/Harmattan platform. - -Requires Qt 4.7.4 or newer, and the component set installed for your Qt version. - Die Qt Quick-Komponenten für Meego/Harmattan sind ein Satz vorgefertigter Komponenten, die entworfen worden, um das spezifische Erscheinungsbild der Meego/Harmattan-Plattformen wiederzugeben. - -Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-Version voraus. - All files and directories that reside in the same directory as the main QML file are deployed. You can modify the contents of the directory any time before deploying. Alle Dateien und Ordner, die sich im selben Ordner wie die QML-Hauptdatei befinden, sind zum Deployment vorgesehen. Der Inhalt des Ordners kann vor dem Deployment-Vorgang jederzeit modifiziert werden. @@ -25275,20 +24547,6 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Es ist kein Analysewerkzeug ausgewählt. - - Valgrind::Internal::ValgrindRunControlFactory - - Analyzer - Analyse - - - - QmlProfiler::Internal::QmlProfilerRunControlFactory - - QML Profiler - QML-Profiler - - QmlProfiler::Internal::TraceWindow @@ -25309,7 +24567,7 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V View event information on mouseover - Information zu Ereignis anzeigen, wenn die sich der Mauszeiger darüber befindet + Information zu Ereignis anzeigen, wenn sich der Mauszeiger darüber befindet @@ -25319,14 +24577,6 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V (auf entferntem, generischem Linux-Host) - - CodePaster::PasteBinDotComProtocol - - <Unknown> - Unknown user of paste. - <Unbekannt> - - StatusDisplay @@ -25363,20 +24613,24 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V QmlProjectManager::QmlProjectPlugin - Open Qt4 Options - Einstellungen zur Qt4-Bibliothek öffnen + Open Qt Versions + Einstellungen zur Qt-Bibliothek öffnen QML Observer Missing QML-Beobachter fehlt - QML Observer could not be found. - Der QML-Beobachter konnte nicht gefunden werden. + QML Observer could not be found for this Qt version. + Der QML-Beobachter für diese Qt-Version konnte nicht gefunden werden. - QML Observer is used to offer debugging features for QML applications, such as interactive debugging and inspection tools. It must be compiled for each used Qt version separately. On the Qt4 options page, select the current Qt installation and click Rebuild. - Der QML-Beobachter stellt zusätzliche Debugging-Funktionalität für QML-Anwendungen zur Verfügung, wie zum Beispiel interaktives Debuggen und weitere Werkzeuge zur Untersuchung. Er muss für jede verwendete Qt-Version separat übersetzt werden. Gehen Sie auf die Qt4-Einstellungsseite, wählen Sie die betreffende Qt-Installation aus und klicken Sie auf 'Neu Erstellen'. + QML Observer is used to offer debugging features for Qt Quick UI projects in the Qt 4.7 series. + +To compile QML Observer, go to the Qt Versions page, select the current Qt version, and click Build in the Helpers section. + Der QML-Beobachter stellt zusätzliche Debugging-Funktionalität für Qt Quick-UI-Anwendungen in Qt 4.7 zur Verfügung. + +Um den QML-Beobachter zu erstellen, gehen Sie auf die Qt-Einstellungsseite, wählen Sie die betreffende Qt-Version aus und klicken Sie auf Erstellen im Bereich Hilfskomponenten. @@ -25723,15 +24977,11 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Debugger::Internal::QScriptDebuggerClient <p>An uncaught exception occurred:</p><p>%1</p> - <p>Eine unbehandelte Ausnahme ist aufgetreten:</p><p>%2</p> + <p>Eine unbehandelte Ausnahme ist aufgetreten:</p><p>%1</p> <p>An uncaught exception occurred in '%1':</p><p>%2</p> - <p>In '%1' ist eine unbehandelte Ausnahme ist aufgetreten:</p><p>%2</p> - - - <p>An uncaught exception occurred in <i>%1</i>:</p><p>%2</p> - <p>In <i>%1</i> ist eine unbehandelte Ausnahme ist aufgetreten :</p><p>%2</p> + <p>In '%1' ist eine unbehandelte Ausnahme aufgetreten:</p><p>%2</p> Uncaught Exception @@ -26012,11 +25262,11 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Choose Icon (will be scaled to %1x%1 pixels, if necessary) - Wählen Sie ein Icon aus (wird auf %1x%1 Pixel skaliert, falls erforderlich) + Wählen Sie ein Symbol aus (wird auf %1x%1 Pixel skaliert, falls erforderlich) Invalid Icon - Ungültiges Icon + Ungültiges Symbol Unable to read image @@ -26024,11 +25274,11 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Failed to Save Icon - Das Icon konnte nicht gespeichert werden + Das Symbol konnte nicht gespeichert werden Could not save icon to '%1'. - Das Icon konnte nicht unter '%1' gespeichert werden + Das Symbol konnte nicht unter '%1' gespeichert werden. Form @@ -26040,7 +25290,7 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Add Launcher Icon... - Icon für Starter hinzufügen... + Symbol für Starter hinzufügen... @@ -26153,10 +25403,6 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Creating keys... Erzeuge Schlüssel... - - Creating keys ... - Erzeuge Schlüssel... - Key creation failed: %1 Bei der Erzeugung der Schlüssel trat ein Fehler auf: %1 @@ -26286,10 +25532,6 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Installing package to sysroot... Installiere Paket auf sysroot... - - Installing package to sysroot ... - Installiere Paket auf sysroot... - Installation to sysroot failed, continuing anyway. Die Installation des Paketes auf sysroot schlug fehl, setze fort. @@ -26323,10 +25565,6 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Copying files to sysroot... Kopiere Dateien auf sysroot... - - Copying files to sysroot ... - Kopiere Dateien auf sysroot... - Sysroot installation failed: %1 Continuing anyway. @@ -26351,10 +25589,6 @@ Setzt Qt 4.7.4 oder neuer sowie die Installation der Komponenten für diese Qt-V Package up to date. Paket ist auf aktuellem Stand. - - Creating package file ... - Erzeuge Paketdatei... - Package created. Paketdatei erzeugt. @@ -26466,7 +25700,7 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Could not read icon - Die Icon-Datei konnte nicht gelesen werden + Die Symbol-Datei konnte nicht gelesen werden Images @@ -26474,11 +25708,11 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Choose Image (will be scaled to %1x%2 pixels if necessary) - Wählen Sie ein Icon aus (wird auf %1x%2 Pixel skaliert, falls erforderlich) + Wählen Sie ein Symbol aus (wird auf %1x%2 Pixel skaliert, falls erforderlich) Could Not Set New Icon - Icon nicht verwendbar + Symbol nicht verwendbar File Error @@ -26534,7 +25768,7 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Icon to be displayed in Package Manager: - In Paketverwaltung anzuzeigendes Icon: + In Paketverwaltung anzuzeigendes Symbol: Adapt Debian file: @@ -26589,22 +25823,14 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Publishing failed: Missing project information. Veröffentlichung schlug fehl: Fehlende Informationen. - - Removing left-over temporary directory ... - Löschen der verbliebenen temporären Ordner... - Error removing temporary directory: %1 - Fehlschlag beim Löschen der temporären Ordner: %1 + Fehlschlag beim Löschen des temporären Ordners: %1 Publishing failed: Could not create source package. Veröffentlichung schlug fehl: Es konnten kein Quellpaket erstellt werden. - - Setting up temporary directory ... - Erstelle temporären Ordner... - Error: Could not create temporary directory. Fehler: Es konnte kein temporärer Ordner erstellt werden. @@ -26619,15 +25845,11 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Publishing failed: Could not create package. - Veröffentlichung schlug fehl: Es kein Paket erstellt werden. - - - Cleaning up temporary directory ... - Temporären Ordner bereinigen... + Veröffentlichung schlug fehl: Es konnte kein Paket erstellt werden. Removing left-over temporary directory... - Löschen verbliebenen temporären Ordner... + Lösche verbliebenen temporären Ordner... Setting up temporary directory... @@ -26647,7 +25869,7 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Could not copy file '%1' to '%2': %3. - Die Datei '%1' konnte nicht nach '%2' kopiert werden: %3 + Die Datei '%1' konnte nicht nach '%2' kopiert werden: %3. Error: Failed to start dpkg-buildpackage. @@ -26687,10 +25909,6 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Uploading file %1... Lade Datei %1 hoch... - - Starting scp ... - Starte scp... - SSH error: %1 SSH-Fehler: %1 @@ -26715,13 +25933,9 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete Upload succeeded. You should shortly receive an email informing you about the outcome of the build process. Das Hochladen wurde erfolgreich beendet. Sie werden in Kürze eine E-Mail mit Informationen über den Ausgang des Build-Prozesses erhalten. - - Uploading file %1 ... - Lade Datei %1 hoch... - Cannot open file for reading: %1. - Die Datei %1. kann nicht zum Lesen geöffnet werden. + Die Datei %1 kann nicht zum Lesen geöffnet werden. Cannot read file: %1 @@ -26737,7 +25951,7 @@ Es wird versucht eine Paketdatei zu erstellen, es können aber Probleme auftrete You have not set an icon for the package manager. The icon must be set in Projects -> Run -> Create Package -> Details. - Sie haben kein Icon für die Paketverwaltung angegeben werden. Es muss unter Projekte -> Ausführung -> Paketerzeugung -> Details angegeben werden. + Sie haben kein Symbol für die Paketverwaltung angegeben. Es muss unter Projekte -> Ausführung -> Paketerzeugung -> Details angegeben werden. @@ -27104,10 +26318,6 @@ Möchten Sie sie zum Projekt hinzufügen?</html> Do you want to remove the packaging files associated with the target '%1'? Möchten Sie die Paketdateien löschen, die zum Ziel '%1' gehören? - - Do you want to remove the packaging file(s) associated with the target '%1'? - Möchten Sie die Paketdateien löschen, die zum Ziel '%1' gehören? - Error creating packaging directory '%1'. Fehler beim Anlegen des Paket-Ordners '%1'. @@ -27133,7 +26343,7 @@ Möchten Sie sie zum Projekt hinzufügen?</html> Invalid icon data in Debian control file. - Die Debian-Kontrolldatei enthält ungültige Icon-Daten. + Die Debian-Kontrolldatei enthält ungültige Symbol-Daten. Could not read image file '%1'. @@ -27155,18 +26365,6 @@ Möchten Sie sie zum Projekt hinzufügen?</html> Unable to create debian templates: dh_make failed (%1). Es konnten keine Debian-Vorlagedateien erstellt werden: dh_make schlug fehl (%1). - - Unable to create Debian templates: No Qt version set - Es konnten keine Debian-Vorlagen erstellt werden: Es ist keine Qt-Version eingestellt. - - - Unable to create Debian templates: dh_make failed (%1) - Es konnten keine Debian-Vorlagedateien erstellt werden: dh_make schlug fehl (%1) - - - Unable to create debian templates: dh_make failed (%1) - Es konnten keine Debian-Vorlagedateien erstellt werden: dh_make schlug fehl (%1) - Unable to move new debian directory to '%1'. Der Debian-Ordner konnte nicht zu %1 verschoben werden. @@ -27259,11 +26457,11 @@ Qt Creator know about a likely URI. Qt4ProjectManager::Internal::PngIconScaler Wrong Icon Size - Ungültige Icon-Größe + Ungültige Symbol-Größe The icon needs to be %1x%2 pixels big, but is not. Do you want Qt Creator to scale it? - Das Icon hat nicht die erforderliche Größe von %1x%2 Pixel. Soll Qt Creator es skalieren? + Das Symbol hat nicht die erforderliche Größe von %1x%2 Pixel. Soll Qt Creator es skalieren? File Error @@ -27271,7 +26469,7 @@ Qt Creator know about a likely URI. Could not copy icon file: %1 - Die Icon-Datei konnte nicht kopiert werden: %1 + Die Symbol-Datei konnte nicht kopiert werden: %1 @@ -27311,10 +26509,6 @@ Ist das Gerät verbunden und für Netzwerkzugriff eingerichtet? RemoteLinux::AbstractRemoteLinuxDeployStep - - Deployment failed: %1 - Deployment fehlgeschlagen: %1 - Cannot deploy: %1 Fehlschlag beim Deployment von %1 @@ -27355,7 +26549,7 @@ Ist das Gerät verbunden und für Netzwerkzugriff eingerichtet? Upload of file '%1' failed. The server said: '%2'. - Das Hochladen der Datei '%1' schlug fehl. Der Server antwortete: '%2' + Das Hochladen der Datei '%1' schlug fehl. Der Server antwortete: '%2'. If '%1' is currently running on the remote host, you might need to stop it first. @@ -27363,7 +26557,7 @@ Ist das Gerät verbunden und für Netzwerkzugriff eingerichtet? Failed to upload file '%1'. - Das Hochladen der Datei '%1' schlug fehl: %2 + Das Hochladen der Datei '%1' schlug fehl. Failed to upload file '%1': Could not open for reading. @@ -27433,10 +26627,6 @@ Ist das Gerät verbunden und für Netzwerkzugriff eingerichtet? RemoteLinux::Internal::LinuxDeviceConfigurationsSettingsWidget - - You will need at least one port. - Sie benötigen mindestens einen freien Port. - Physical Device Physisches Gerät @@ -27465,66 +26655,6 @@ Ist das Gerät verbunden und für Netzwerkzugriff eingerichtet? Device type: Gerätetyp: - - Authentication type: - Art der Authentifizierung: - - - Password - Passwort - - - &Key - Schl&üssel - - - &Host name: - &Hostname: - - - IP or host name of the device - IP-Adresse oder Hostname des Geräts - - - &SSH port: - &SSH-Port: - - - Free ports: - Freie Ports: - - - You can enter lists and ranges like this: 1024,1026-1028,1030 - Sie können Listen und Bereiche wie folgt angeben: 1024,1026-1028,1030 - - - Timeout: - Zeitlimit: - - - s - s - - - &Username: - &Nutzername: - - - &Password: - &Passwort: - - - Show password - Passwort anzeigen - - - Private key file: - Private Schlüsseldatei: - - - Set as Default - Als Vorgabe setzen - &Add... &Hinzufügen... @@ -27720,13 +26850,6 @@ Setze dennoch fort. (Kein Gerät) - - RemoteLinux::RemoteLinuxDeployStepWidget - - <b>%1</b> - <b>%1</b> - - RemoteLinux::Internal::RemoteLinuxEnvironmentReader @@ -28051,7 +27174,7 @@ Fehlerausgabe: %1 Copy Built-in Code Style - Eingebauter Coding-Stil. + Kopiere eingebauten Coding-Stil %1 (Copy) @@ -28240,7 +27363,7 @@ Wenn Sie abbrechen, wird Qt Creator die Datei nicht laden. Remote command finished successfully. - Das entfernte Kommando '%1' wurde erfolgreich ausgeführt. + Das entfernte Kommando wurde erfolgreich ausgeführt. @@ -28396,7 +27519,7 @@ Wenn Sie abbrechen, wird Qt Creator die Datei nicht laden. Reset All - Alle rücksetzen + Alle zurücksetzen Import... @@ -28416,11 +27539,11 @@ Wenn Sie abbrechen, wird Qt Creator die Datei nicht laden. Reset to default - Auf Vorgabe rücksetzen + Auf Vorgabe zurücksetzen Reset - Rücksetzen + Zurücksetzen @@ -28439,7 +27562,7 @@ Wenn Sie abbrechen, wird Qt Creator die Datei nicht laden. Reset All - Alle rücksetzen + Alle zurücksetzen Details @@ -28786,7 +27909,7 @@ Die Ausgabe-Hilfsbibliothek dient lediglich zur formatierten Ausgabe von Objekte Yes, and the private key is located at - Ja, und der private Schlüssel befindet sich: + Ja, und der private Schlüssel befindet sich No @@ -29040,7 +28163,7 @@ Die Ausgabe-Hilfsbibliothek dient lediglich zur formatierten Ausgabe von Objekte Application icon (80x80): - Icon der Anwendung (80x80): + Symbol der Anwendung (80x80): Generate code to speed up the launching on the device. @@ -29059,7 +28182,7 @@ Die Ausgabe-Hilfsbibliothek dient lediglich zur formatierten Ausgabe von Objekte Application icon (64x64): - Icon der Anwendung (64x64): + Symbol der Anwendung (64x64): @@ -29070,7 +28193,7 @@ Die Ausgabe-Hilfsbibliothek dient lediglich zur formatierten Ausgabe von Objekte Application icon (.svg): - Icon der Anwendung (.svg): + Symbol der Anwendung (.svg): Target UID3: @@ -29366,17 +28489,9 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Enable scroll &wheel zooming Zoom mittels Maus&rad aktivieren - - Enable hover &tooltips only when Shift key is down - &Maus-Tooltips nur bei gedrückter Umschalttaste zeigen - - - Enable &keyboard tooltips when pressing and releasing the Alt key - &Tastatur-Tooltips nur bei Drücken und Loslassen der Alt-Taste zeigen - Enable built-in camel case &navigation - Eingebaute CamelCase-Navigation aktivieren + Eingebaute CamelCase-&Navigation aktivieren Show help tooltips: @@ -29450,7 +28565,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Highlight &blocks - Blöcke hervorheben + &Blöcke hervorheben Mark &text changes @@ -29546,15 +28661,15 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Revert Built-in - Internes Snippet rücksetzen + Internes Snippet zurücksetzen Restore Removed Built-ins - Alle internen Snippets rücksetzen + Alle internen Snippets zurücksetzen Reset All - Alle rücksetzen + Alle zurücksetzen @@ -29782,14 +28897,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Develop Entwicklung - - Recently used sessions - Zuletzt benutzte Sitzungen - - - Recently used Projects - Zuletzt bearbeitete Projekte - Sessions Sitzungen @@ -30188,26 +29295,14 @@ should a repository require SSH-authentication (see documentation on SSH and the Rename Umbenennen - - Remove %1 - %1 entfernen - Do you really want to delete the configuration <b>%1</b>? Möchten Sie wirklich die Konfiguration <b>%1</b> löschen? - - Do you really want to delete the %1 <b>%2</b>? - Möchten Sie %1 <b>%2</b> wirklich löschen? - New name for configuration <b>%1</b>: Neuer Name der Konfiguration <b>%1</b>: - - New name for %1: <b>%2</b>: - Neuer Name %1 <b>%2</b>: - Rename... Umbenennen... @@ -30499,7 +29594,7 @@ should a repository require SSH-authentication (see documentation on SSH and the Debugger::Internal::TypeFormatsDialog Reset - Rücksetzen + Zurücksetzen Type Formats @@ -30529,60 +29624,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Debugger-Test - - Debugger::Internal::QmlJSScriptConsoleWidget - - Clear Console - Konsole löschen - - - Log - Log - - - Warning - Warnung - - - Error - Fehler - - - - Debugger::Internal::QmlJSScriptConsole - - Current Selected Object: - Ausgewähltes Objekt: - - - Context: - Kontext: - - - Context: %1 - Kontext: %1 - - - Cut - Ausschneiden - - - Copy - Kopieren - - - Paste - Einfügen - - - Select All - Alles auswählen - - - Clear - Löschen - - Git::Internal::CommitData @@ -30874,13 +29915,6 @@ Möchten Sie es beenden? Das Projekt konnte nicht geöffnet werden - - RemoteLinux::Internal::EmbeddedLinuxTarget - - Embedded Linux - Embedded Linux - - RemoteLinux::Internal::EmbeddedLinuxTargetFactory @@ -30975,13 +30009,6 @@ Möchten Sie es beenden? %1 gefunden - - Utils::CheckableMessageBoxPrivate - - Do not ask again - Nicht noch einmal nachfragen - - Analyzer::Internal::AnalyzerToolDetailWidget @@ -30991,10 +30018,6 @@ Möchten Sie es beenden? Analyzer::Internal::AnalyzerRunConfigWidget - - Analyzer Settings: - Analyse-Einstellungen - Analyzer settings: Analyse-Einstellungen: @@ -31056,10 +30079,6 @@ Möchten Sie es beenden? VcsBase::Internal::UrlTextCursorHandler - - Open URL in browser ... - URL in Browser öffnen... - Open URL in browser... URL in Browser öffnen... @@ -31071,10 +30090,6 @@ Möchten Sie es beenden? VcsBase::Internal::EmailTextCursorHandler - - Send email to ... - Sende E-Mail an... - Send email to... Sende E-Mail an... @@ -31116,10 +30131,6 @@ Möchten Sie es beenden? Configure Project Projekt konfigurieren - - <p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses the Qt version: <b>%2</b> and the tool chain: <b>%3</b> to parse the project. You can edit these in the <b><a href="edit">settings</a></b></p> - <p>Das Projekt <b>%1</b> ist noch nicht konfiguriert.</p><p>Qt Creator verwendet die Qt-Version: <b>%2</b> und die Toolchain: <b>%3</b> um es zu einzulesen. Sie können dies unter <b><a href="edit">Einstellungen</a></b> ändern.</p> - <p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses the Qt version: <b>%2</b> and the tool chain: <b>%3</b> to parse the project. You can edit these in the <b><a href="edit">options.</a></b></p> <p>Das Projekt <b>%1</b> ist noch nicht konfiguriert.</p><p>Qt Creator verwendet die Qt-Version: <b>%2</b> und die Toolchain: <b>%3</b> um es zu einzulesen. Sie können dies unter <b><a href="edit">Einstellungen</a></b> ändern.</p> @@ -31130,7 +30141,7 @@ Möchten Sie es beenden? <p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses <b>no Qt version</b> and the tool chain: <b>%2</b> to parse the project. You can edit these in the <b><a href="edit">settings</a></b></p> - <p>Das Projekt <b>%1</b> ist noch nicht konfiguriert.</p><p>Qt Creator verwendet die Toolchain: <b>%3</b> ohne Qt-Version <b>%3</b> um es zu einzulesen. Sie können dies unter <b><a href="edit">Einstellungen</a></b> ändern.</p> + <p>Das Projekt <b>%1</b> ist noch nicht konfiguriert.</p><p>Qt Creator verwendet <b>keine Qt-Version</b> und die Toolchain: <b>%2</b> um es zu einzulesen. Sie können dies unter <b><a href="edit">Einstellungen</a></b> ändern.</p> <p>The project <b>%1</b> is not yet configured.</p><p>Qt Creator uses <b>no Qt version</b> and <b>no tool chain</b> to parse the project. You can edit these in the <b><a href="edit">settings</a></b></p> @@ -31264,7 +30275,7 @@ Die C++- beziehungsweise QML-Codemodelle benötigen eine Qt-Version und eine Too Icon - Icon + Symbol Color @@ -31295,7 +30306,7 @@ Die C++- beziehungsweise QML-Codemodelle benötigen eine Qt-Version und eine Too Reset - Rücksetzen + Zurücksetzen Scanning scope From 24477fd293f963bc1fa046d21d0e0a17f8c71209 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 19 Mar 2012 14:12:29 +0100 Subject: [PATCH 20/33] debugger: fix handling of watchpoint notification with gdb 7.4 Task-number: QTCREATORBUG-7144 Change-Id: I204062de55e241ea7954f0e3bce123973028e076 Reviewed-by: hjk --- src/plugins/debugger/breakhandler.cpp | 28 +++++++++++++++----------- src/plugins/debugger/breakhandler.h | 3 +-- src/plugins/debugger/gdb/gdbengine.cpp | 26 +++++++++++++++++------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index e3d8e1e107d..6e892b54b02 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -604,10 +604,15 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const //|| data.type == BreakpointAtVFork || data.type == BreakpointAtSysCall) return typeToString(data.type); - if (data.type == WatchpointAtAddress) - return tr("Data at 0x%1").arg(data.address, 0, 16); - if (data.type == WatchpointAtExpression) - return tr("Data at %1").arg(data.expression); + if (data.type == WatchpointAtAddress) { + quint64 address = response.address ? response.address : data.address; + return tr("Data at 0x%1").arg(address, 0, 16); + } + if (data.type == WatchpointAtExpression) { + QString expression = !response.expression.isEmpty() + ? response.expression : data.expression; + return tr("Data at %1").arg(expression); + } return empty; } break; @@ -1052,11 +1057,14 @@ void BreakHandler::appendBreakpoint(const BreakpointParameters &data) scheduleSynchronization(); } -void BreakHandler::handleAlienBreakpoint(BreakpointModelId id, - const BreakpointResponse &response, DebuggerEngine *engine) +void BreakHandler::handleAlienBreakpoint(const BreakpointResponse &response, DebuggerEngine *engine) { - if (response.id.isMinor()) { - insertSubBreakpoint(id, response); + BreakpointModelId id = findSimilarBreakpoint(response); + if (id.isValid()) { + if (response.id.isMinor()) + insertSubBreakpoint(id, response); + else + setResponse(id, response); } else { BreakpointModelId id(++currentId); const int row = m_storage.size(); @@ -1066,10 +1074,6 @@ void BreakHandler::handleAlienBreakpoint(BreakpointModelId id, endInsertRows(); it->data = response; - it->data.type = BreakpointByFileAndLine; - it->data.functionName.clear(); - it->data.address = 0; - it->response = response; it->state = BreakpointInserted; it->engine = engine; diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h index ca003552f91..04475bc80d6 100644 --- a/src/plugins/debugger/breakhandler.h +++ b/src/plugins/debugger/breakhandler.h @@ -70,8 +70,7 @@ public: // The only way to add a new breakpoint. void appendBreakpoint(const BreakpointParameters &data); - void handleAlienBreakpoint(BreakpointModelId id, - const BreakpointResponse &response, DebuggerEngine *engine); + void handleAlienBreakpoint(const BreakpointResponse &response, DebuggerEngine *engine); void insertSubBreakpoint(BreakpointModelId id, const BreakpointResponse &data); void removeAlienBreakpoint(BreakpointModelId id); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index f163acc2a6a..7e0a941122e 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -518,13 +518,15 @@ void GdbEngine::handleResponse(const QByteArray &buff) } else if (asyncClass == "breakpoint-created") { // "{bkpt={number="1",type="breakpoint",disp="del",enabled="y", // addr="",pending="main",times="0", - //original-location="main"}}" + // original-location="main"}}" -- or -- + // {bkpt={number="2",type="hw watchpoint",disp="keep",enabled="y", + // what="*0xbfffed48",times="0",original-location="*0xbfffed48" BreakHandler *handler = breakHandler(); foreach (const GdbMi &bkpt, result.children()) { BreakpointResponse br; + br.type = BreakpointByFileAndLine; updateResponse(br, bkpt); - BreakpointModelId id = handler->findBreakpointByResponseId(br.id); - handler->handleAlienBreakpoint(id, br, this); + handler->handleAlienBreakpoint(br, this); } } else if (asyncClass == "breakpoint-deleted") { // "breakpoint-deleted" "{id="1"}" @@ -2380,11 +2382,21 @@ void GdbEngine::updateResponse(BreakpointResponse &response, const GdbMi &bkpt) } else if (child.hasName("thread")) { response.threadSpec = child.data().toInt(); } else if (child.hasName("type")) { - // "breakpoint", "hw breakpoint", "tracepoint" - if (child.data().contains("tracepoint")) + // "breakpoint", "hw breakpoint", "tracepoint", "hw watchpoint" + // {bkpt={number="2",type="hw watchpoint",disp="keep",enabled="y", + // what="*0xbfffed48",times="0",original-location="*0xbfffed48" + if (child.data().contains("tracepoint")) { response.tracepoint = true; - else if (!child.data().contains("reakpoint")) - response.type = WatchpointAtAddress; + } else if (child.data() == "hw watchpoint" || child.data() == "watchpoint") { + QByteArray what = bkpt.findChild("what").data(); + if (what.startsWith("*0x")) { + response.type = WatchpointAtAddress; + response.address = what.mid(1).toULongLong(0, 0); + } else { + response.type = WatchpointAtExpression; + response.expression = QString::fromLocal8Bit(what); + } + } } else if (child.hasName("original-location")) { originalLocation = child.data(); } From 6e9214e995f8f480d3b227d7931f4ac7dc83e03f Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Mon, 19 Mar 2012 17:03:00 +0100 Subject: [PATCH 21/33] QmlProfiler: Set sysroot for embedded targets Change-Id: I4ea618fecb8901038b9be716fa8e7e54fa3cd931 Reviewed-by: Christiaan Janssen --- src/plugins/qmlprofiler/qmlprofilertool.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 645096e7f90..fa01ea592d5 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -392,6 +392,19 @@ bool QmlProfilerTool::canRun(RunConfiguration *runConfiguration, RunMode mode) c return false; } +static QString sysroot(RunConfiguration *runConfig) +{ + QTC_ASSERT(runConfig, return QString()) + if (Qt4ProjectManager::Qt4BuildConfiguration *buildConfig = + qobject_cast( + runConfig->target()->activeBuildConfiguration())) { + if (QtSupport::BaseQtVersion *qtVersion = buildConfig->qtVersion()) + return qtVersion->systemRoot(); + } + + return QString(); +} + AnalyzerStartParameters QmlProfilerTool::createStartParameters(RunConfiguration *runConfiguration, RunMode mode) const { Q_UNUSED(mode); @@ -426,6 +439,7 @@ AnalyzerStartParameters QmlProfilerTool::createStartParameters(RunConfiguration sp.connParams = rc3->deviceConfig()->sshParameters(); sp.analyzerCmdPrefix = rc3->commandPrefix(); sp.displayName = rc3->displayName(); + sp.sysroot = sysroot(rc3); } else if (Qt4ProjectManager::S60DeviceRunConfiguration *rc4 = qobject_cast(runConfiguration)) { Qt4ProjectManager::S60DeployConfiguration *deployConf = @@ -435,6 +449,7 @@ AnalyzerStartParameters QmlProfilerTool::createStartParameters(RunConfiguration sp.displayName = rc4->displayName(); sp.connParams.host = deployConf->deviceAddress(); sp.connParams.port = rc4->debuggerAspect()->qmlDebugServerPort(); + sp.sysroot = sysroot(rc4); } else { // What could that be? QTC_ASSERT(false, return sp); From 280c7877d85680bd8715a81f7f0572063117e44b Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 19 Mar 2012 16:30:19 +0200 Subject: [PATCH 22/33] Debugger: Clear message on attach to core If a usable engine was found, there is no reason to display errors set by another engines Task-number: QTCREATORBUG-7150 Change-Id: I50cec27a127a0af34b5287c389df6ce6a797bb3e Reviewed-by: hjk --- src/plugins/debugger/debuggerrunner.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 32f6d3ceb0e..fcb8fc788ec 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -747,6 +747,7 @@ DEBUGGER_EXPORT ConfigurationCheck checkDebugConfiguration(const DebuggerStartPa QList unavailableTypes; foreach (DebuggerEngineType et, requiredTypes) { if (canUseEngine(et, sp, cmdLineEnabledEngines, &result)) { + result.errorDetails.clear(); usableType = et; break; } else { From a250157106d34f9b93914d26bfe92e7cac87a728 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 19 Mar 2012 16:34:08 +0200 Subject: [PATCH 23/33] Changelog: Locator execute and debugger "Break on raise" Change-Id: I7fb98ad20fdac0e1f0cf55a2d499fb210af645e4 Reviewed-by: Eike Ziller Reviewed-by: Leena Miettinen --- dist/changes-2.5.0 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dist/changes-2.5.0 b/dist/changes-2.5.0 index 44173097b37..980503c8040 100644 --- a/dist/changes-2.5.0 +++ b/dist/changes-2.5.0 @@ -12,6 +12,8 @@ General a located file (QTCREATORBUG-3805) * Add "Search Again" to recent searches (QTCREATORBUG-621) * Allow multiple parallel searches (QTCREATORBUG-6101) + * Add Execute filter to the locator, for executing external commands [by + Yuchen Deng] Editing * Use the QML/JS editor for opening json files (QTCREATORBUG-4639) @@ -60,6 +62,7 @@ Debugging * Make entering commands in the log view more convenient * Re-enable debugging of Python scripts * Add pretty-printing for D arrays and strings + * Add "Break on raise()" option for GDB/Windows Debugging QML/JS * Relocate breakpoints to next executable code From 964b0596de98c7bf1020837fcce99f4365c65088 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 20 Mar 2012 09:47:29 +0100 Subject: [PATCH 24/33] QmlProject: Fix typo Change-Id: Ib481931d637c8df04f1b2bd87bbd759d5f299e9c Reviewed-by: Kai Koehne --- src/plugins/qmlprojectmanager/qmlproject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index cce723a2643..e3f454df8a7 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -130,7 +130,7 @@ void QmlProject::parseProject(RefreshOptions options) messageManager->printToOutputPane( tr("Warning while loading project file %1.").arg(m_fileName)); messageManager->printToOutputPane( - tr("File '%' does not exist or is not readable.").arg(mainFilePath), true); + tr("File '%1' does not exist or is not readable.").arg(mainFilePath), true); } } } From 30fc5d56edefa504d733f5192d3b989344c3ddba Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 20 Mar 2012 11:25:25 +0100 Subject: [PATCH 25/33] debugger: increase max number of vtable entried from 20 to 100 Change-Id: I9cc62402830f9ca5b2af389df5f790515ed0383c Reviewed-by: hjk --- share/qtcreator/dumper/dumper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py index 78b63128bf5..4a1af665c25 100644 --- a/share/qtcreator/dumper/dumper.py +++ b/share/qtcreator/dumper/dumper.py @@ -1785,7 +1785,7 @@ class Dumper: if field.name.startswith("_vptr."): with SubItem(self, "[vptr]"): # int (**)(void) - n = 20 + n = 100 self.putType(" ") self.putValue(value[field.name]) self.putNumChild(n) From 1b5648b51a60ebc9b5ddd2c990ad45bab1a3e523 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Tue, 20 Mar 2012 09:28:47 +0100 Subject: [PATCH 26/33] CrumblePath: Fix Crash QWidget::mousePressEvent() closes the widget if the position is not within the rect. A subsequent call to update() amounts to accessing potentially corrupt memory. Hence call update() before calling QWidget::mousePressEvent(). Change-Id: I850471d3a1dfdb0a4f0541a69fd2f239dbf8b5fa Reviewed-by: Kai Koehne --- src/libs/utils/crumblepath.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/utils/crumblepath.cpp b/src/libs/utils/crumblepath.cpp index a69258802a1..80c273c97b7 100644 --- a/src/libs/utils/crumblepath.cpp +++ b/src/libs/utils/crumblepath.cpp @@ -173,34 +173,34 @@ void CrumblePathButton::tintImages() void CrumblePathButton::leaveEvent(QEvent *e) { - QPushButton::leaveEvent(e); m_isHovering = false; update(); + QPushButton::leaveEvent(e); } void CrumblePathButton::mouseMoveEvent(QMouseEvent *e) { if (!isEnabled()) return; - QPushButton::mouseMoveEvent(e); m_isHovering = true; update(); + QPushButton::mouseMoveEvent(e); } void CrumblePathButton::mousePressEvent(QMouseEvent *e) { if (!isEnabled()) return; - QPushButton::mousePressEvent(e); m_isPressed = true; update(); + QPushButton::mousePressEvent(e); } void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e) { - QPushButton::mouseReleaseEvent(e); m_isPressed = false; update(); + QPushButton::mouseReleaseEvent(e); } void CrumblePathButton::changeEvent(QEvent *e) From 68c843fc350f387c0a8b40fe3e7241890fcd11d0 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 20 Mar 2012 12:58:23 +0100 Subject: [PATCH 27/33] Doc: update images Change-Id: Iccf19ca1c6cd2bd41ad0fb9194f1ee560e498565 Reviewed-by: Virva Auvinen --- doc/images/numbers/01.png | Bin 363 -> 1242 bytes doc/images/numbers/02.png | Bin 253 -> 1438 bytes doc/images/numbers/03.png | Bin 260 -> 1493 bytes doc/images/numbers/04.png | Bin 238 -> 1373 bytes doc/images/numbers/05.png | Bin 246 -> 1447 bytes doc/images/numbers/06.png | Bin 277 -> 1479 bytes doc/images/numbers/07.png | Bin 236 -> 1374 bytes doc/images/numbers/08.png | Bin 271 -> 1518 bytes doc/images/numbers/09.png | Bin 277 -> 1476 bytes doc/images/numbers/10.png | Bin 297 -> 1600 bytes 10 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/images/numbers/01.png b/doc/images/numbers/01.png index d6565f2a44e4bd7606cd967fad311a2a8b64c782..4f788994c6c2a218a189f9fdf48ac94fe8c8a37e 100644 GIT binary patch literal 1242 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjqqGgn6=CpQZd zHzPwsLsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKz2o6RQ&p5JLCWN_xf$|_I5^pe*d1m ztMJH?Gsg}b(>!qC1WVvKkJU#Qxa7+G9NFC5o?U!md&yX*%5Ia%A~4Soh6Rf@1< z61Du_D8MGsIH9wZSI2+qg65}-FNT=^`Fyb?V0ZU5UXKO_W(M9D_EVU79%O<_8&6k1 Jmvv4FO#m>Dq~QPn delta 335 zcmcb``Ibz(6>o6NkXiLP@vrZs=&lNDL`0r*3H&w&Z%UCo9!6+>lYr*mO|x^rBrsJmJ&lDqh>lrSN$MN9FH3UzB;~ z%k5Ryl$dcr$jr2XL717B;VjQzhd#Hr8p$z1@(yis3RfNMEFIZSbA=o9vdSd1sQvrR z!o{C-kU1eNw52sud1}*U!MzSQ{S(7jr*7&Qd1BNg`Wr6tzrK?O)Qs bd*Y~Etyf*v)j*Kz4b+1E9_?d0j_i5>&%$~B diff --git a/doc/images/numbers/02.png b/doc/images/numbers/02.png index 9d8b02bd409006ca2989a31286718b8ad3b00278..7d165287a87b69cfee942be9459a362d2d58762a 100644 GIT binary patch literal 1438 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjqqGgn6=CpTvk zHzPwsLsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy-s-bS~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8_WV6Mp>fS5!STLGf7lw1?Nf_dC3k*J8Q* z|3A;(&3#5X5rq>PJ6n4n9^8DNXSu!|llRY^nZ`ALe@uCJ{=NJZ_Pal`^Cjy3{y1^q zr1G%?r_M1S*~7#1rzXMDE>5paKK{Nz!AH-gry83&CU(wj>}}@HVH7sjZeAi`-aN67 zCF0$yuk1Yk8xDT^e?R_I?U55FjvP2~hVA+E<*yFj)V?mCl92e6#kyhDNo#et$&R6p z3}^0b{LXXu*V^ThH+Hrh)a=g^Yt;F;VKVdP@^{v!17eKXWz6U7N#Z%9BQu3vc9-hs zX>ZbA%-+}7I6J9Fn&|9f-(BryL^ z^gQO{P`P2L&zUJ|`DtunW^x8{Yt`DykDANQ_>*z3frZ0>;oP;F&vRz(5CN5#p00i_ I>zopr0JOsn$p8QV delta 224 zcmbQo{g+X(Gr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg{4@9E+gQgJKk z%~Sp41q=p;0c>u&>crM8dh=%v-`jm}{>c0(YI?p*e&?;CXv`S$CR@d8K9 z>8Ir7cYc3)vHH>-{wq9&FTOr~?hroVW&MJ`i*`+N_h9~(UZ6v(@GS+zuIJcKw-n0f}=eg$1eUc fU-FfiMS?+}-@#sT(z`tj3=9mOu6{1-oD!M{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjrFOD7{^6H8MQ zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy(W0|S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8bd*rD3gI)K=qNQOMCbL%y=_a`>mD=0U zB_+N2W@#B8qrQ^QW5-Xt#g+Fz?VW4>ezs)L-zR?+8uC)il_vQLafGE#O;z7^OZP#a zlKT|pQ!OR4`<+DXu7v#fxJR>sSAKTf(I;or^z>Xgnmhy#ZC|ut*`kGUhhH~lUNPNw zbhEhphVAt&-==BpdBvqzS;t|V`@uUsQtj8hnxp4iMLqb;g91KQr}jVn@~Pdz`ey4y zuMghlmcq_P6B}+vbF@ElEu1L7)pV(j`NvejV^1x8ECe|8YyQ2(P~KkIjPaOXGSzJ~U9d>00mhtNxqXmB>xX z{F>fJ4_z`lto2oBifvKQPoZyVp9EWX%N<_2BynbD8ryVr`Av(`K1E00?m5wPGV^_d z_}{%-FL3!R=~X#ps())%>9pS;vn7|O|Ibi;c+76sRLOnkj|*Iqe{gyCH6Ag03&$^? zWfm>oe5KdbC&8U-3}Sswj$`muIvwC;jQ&pxjAm@;=ugrdmw z{&@^j8u*g<9T)W#Z`$+L=bhcA?i*?w(%;S6abGERN@z`!61!W>Kt3=C?eMh7Pbz*B4z4e45R%yG=s!RBBSkj^2;gFNH?Wq|N|GQs$MTPBPlC-z0yFYWQ)C;i%nht^sx*t5` lV(eM`GvDJiJBI;-c$LGi^P9IXVPIfj@O1TaS?83{1OO9nVV?j1 diff --git a/doc/images/numbers/04.png b/doc/images/numbers/04.png index 40ac6f3ce807cdedc5a02e89bce19fed3d1a818d..2376d8c2298048dcbf898bf4349e1848dd6de9ff 100644 GIT binary patch literal 1373 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjrFOD7{^6H7}I zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy%u=&S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8~3-x%p=5+iFR@yT8sHICJRSffFZOY~@v1Rvpk~ zY}A*ZXYl9Gw`mXm@85rgdsjj^Yny<7YMXR<+<~KY|Nk8M@cesu+yDRn1CJ|-TE?{< zNhn>QsxSF#dHxdLqzM8~Q!+G7QY*fF5_Wbw>BE+m7IsUe?Nf*?n_OO4ThFDNJn{Sf zB|dl{ws4>8FR3P;Ra{I7-zH^7N_^U^{=_KfMqy*(t4XhUe0%&jfn+`3Wg@RMyC8)}05_zxeIelJ7C?s delta 209 zcmcc1^^Q@oGr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg{4;OXKRQgJKk z%~Sp41q=p;0c>txAG6kZKR&c=$>f#sN26yq&!6n``{qweUG122zV=P=_S|}$-!m7o zYne}eS-;@4y=~S1A17>^e$BjVxyI1->m;2cB}=y~_Gw__T-jOF{n_qDHTUW|w?8lA zueqJvbf|Rdc^`#n>r+2oZQ7i2Ox=F|9EA%C3ZAq6F8-N5;Wayl0mGFw3iVsBNUvgG PU|{fc^>bP0l+XkKmyTFO diff --git a/doc/images/numbers/05.png b/doc/images/numbers/05.png index af55ddd1be6b236c1297a2f0e1531fe5c252b358..305f8709dbf9b8744f0c4f8f7148fd691feceb31 100644 GIT binary patch literal 1447 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjrFOD7{^6H6Bp zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKz0P>`S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8kJHxS3O-ELn>~)nP%^C*g@pj{wJ5rG}mtZS}!P~sS#1I z`N5KAzC1lYzPv@Vt-2N~bxdBMU}dTCVi8~19G39X3yYjv%LKU}Etq!8#J8qAt01sz zA>SqOKAFmsf8XsZe;>Of#p$?)Ga=kS5OG{Y{ z&9DAlyT3k#Td$wrsMwnMpwZiRH@--n(|>K$`j=A37ubNF$fBWy7Ba?Oe_7g98Hl3;avu=q{iWv8ay(u65%xDWdu~1#?=%F_T zt7@e3CVihV!?x)aZ>@IhNmY+UH>>uTu2`4vzCyF>b%@~akKPYocbF{N8P-0p{+X2Z zWWPlVwDo+qe4jD1qGD3c{#7CgPvR3+F`k(8>9>uPY}W$46D=(*f)5Iu4}4Q!7i@6$ zQNOkp=aZ`v&z2{>$SJS{$>B<+rY>$Ri*8` T%41tjP|@k>>gTe~DWM4fCnyhu delta 217 zcmZ3^{f$wvGr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg{4;pyTSQgJKk z%~Sp41q=p;0c>u&>cnD%-d#R)q(rs8?hj+i`cE@GH`Ucy9t^eHTvzwUZ`tpkPgpp! zjxGOxdGYte=u5$Rp&9OylONZ2%y%tadT84cTe~9u3>nLZ|9^eje0}bP0l+XkK+|OLO diff --git a/doc/images/numbers/06.png b/doc/images/numbers/06.png index 85220c7512525bf5045dd6118a7185c64ed5f4a7..0d83cb15f403253d84a26e2fdaa690c188afe6c1 100644 GIT binary patch literal 1479 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjqKXA=`sCuc_! zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy_R_OS~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8}1T`YVv_t=306HYor8_Z=*>D<$0=9^nt z@jOdSn0fAj6|RfL4l;6Uc6~Kvk+jK4mB{g3`XDL#+ugJodp;;Jb8D+JD+_Z!6=U74 zZJ@%oy7^}4+t-rcWcD07z+y6^vvqFcT<-~uoilqIX9jhLJgIm%&1cTesfoYWJ?5EX zlT^U%urDzwX_?K7HN8h4=~nuoI1wKw@q~R z`lh2v&SxZbzW$V~tNYKe?d|+f7N5b!|$4>H*z*H=Qky=gw_1#yy~uSovWZenWHc`h2xW9Yqx$x zVaLM!S5j(E`_D14(n zA)t`^gi*mqFNVjx@~c%X!UgUb6Mw<&;$SlJr>FU delta 248 zcmX@kJ(WqZGr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg{)?&;zfQgJKk z%~Sp41q=p;0c>u&>cnh{wC>$A74NDXqG|ue~hZF!p4B|GoETqIyp&y!qDs%Bykf+Nd1sk6)iYpC+oeWat0O zi_0By1-?yIEPmm!{MdK5rl{$F1mi63DNbQ0EoS|1+fvuSz|7$B*~@(YHmOJk1_lOCS3j3^P6{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjqKXA=`sCudg^ zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy)Jn5S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8BG5DHZ?Y@#=vej-6m$SBoR|_31f+@&IeQUv+tiSczG?IElsS9&CN~ilkTclc85Ov zeVyGFf8XBd&+qTzI%X?Xdk&rnnE3GW^Y=X4^I{Tze4X6i*zDe8)GaYHLgI$S56Kxb zZ%Y1SUbwN3<%W>JjJ*ZihY!2^OR^mKDIuZBYo(SJ#%7jQ$HulGRY5>BgJqe0?Z0Ci z(k>UW@#S%{nU%#YXr8fhy2P5^qYWQbxzf%@ZkhY=w|?3JS0x^uHFFg92cKWmqF}ls zKP=zo)Pa-ATs&cRd-f^bR4R|oWb+Kn%ea%He9K%VTI3O|?=3gO)=zpTF=PzI9gpz`jKGWll*o&LyAzeR^x|9B{0v z?fiRrqdz}>O>6A-=gOF9!E8KnpW-bg0S3ua$_l3s9MwK};K-q42TmPp-Yl}zopr0O%OurvLx| delta 207 zcmcb|^@dTgGr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg{~^K@|xskoK& z=Ba-20tN%a05-Q>bz*B4E!q{-_jaFv+59;VR-Zm^=Blsc`2Y3k^I<>Fv}`!MZApA| z*)*T;r*CO6zTLn1tJch4TNnBCmA_Fl{?lN_{C0oW?T;*9qQiDPy58e&f1yY;e{J#Q z{sXRC7Wa5wSTCDel=ti6eEI!{dsUgO*gY0$Cd-_ycaE}mXkcXcm7wnaX5$WV1_lNO MPgg&ebxsLQ04C#DGynhq diff --git a/doc/images/numbers/08.png b/doc/images/numbers/08.png index f22f322b7480638fc4698853217530553b8f5296..96ddeab1c7dd03fa348ad36b17e540f8a2ffccb0 100644 GIT binary patch literal 1518 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1DjqKXA=`sCl@0V zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy@q)8S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8xk|{S04E|T2|M2}h|AJHhr$nYK zP~=$l|NsBf1s@-ovWbQHwS5kcZ$4U4X(5r~`rqi!uaBG>{tI2t$Ja7muGtgAWBl7l zLZ>HG@=VW^gGv7L_9gBpc`A0p{r~^}i*@>*t=o6%z`4~*15ztMD*FxJ<*!^u7Haj!tNcwz9 zY1I3FSm4=WKC$0leo7xcSNpv2Bl9We9uXC`1^2FHE|*vrQ-44}I_a3fQe`&1tr=GX z+eEX!8}0e|p}*08hJ3z_;KWxFk`Xs{NM3tid1^z+-I9d5pC=BSIKuOV(byus@sr5> z4JOR&(*>A?jk!}#N5=3&spdZf$mEV{Y~ERN@z`!61!W>Kt3=C?eMh7Pbz(6>w*rryx_3+F&m4LAz4vEs?K1iO^9hTtc8s~Je$-QA;S;8( zwkZ1ATidG}eSd!Z{gR#kzdlWWzD(Y8X9(jJ&XWIEQ`0@S#UG9SU2!~bf#xPNF9);C zZ_Lc^uRcu|$gZ#Z!}#U@+_mAJ9vkFegpofRAo=F{rd0l xG|i*O#;)l7<;CAmXi2(%zCYm_zd!;*D4W}y&R?RB7#J8BJYD@<);T3K0RT-YWvc)H diff --git a/doc/images/numbers/09.png b/doc/images/numbers/09.png index ea0196acff8e29e50f62f0b29f115a6c41f6a551..316acbced8b666c0794c4af7d4faf82460acf3cb 100644 GIT binary patch literal 1476 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1Djq~XG>#e7XwQZ zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKy%u=&S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV8FoJDv&-U`x?S0&3=RI)9{=$Cdbz@T`&6-mO|Sp9_w(rF#PGz_2=V0G z88sdKQL$4(Wa$lwy8nN8zKFJpH9lfa(-1b+7T9cPV5qq0`}_IwJoR<;=|BFz*H0B| zRQmgC?Q)*5v?!ierylYA|MxHL!NauH)AfJ8h{~jku*+(so{cJ#db9Xw@a4vp{&O8Y zr%CJm|MJs%0sqWK9k)}H%r$<-?fyUYpjn32;r{jc5;Gbd&3D>L>1@wBtk|~x{(mEm zkDHARnsgT*PzsPsOnjX7;Mw%Fgy$j&8XiWe23MyuvppAX<1{uiE-2t+ep=b^O5=;5 z#^$C^f;=|WKRXj&{rSsNEcP}bA@zCcgNKt-5*UBYdbD77!CTX2?=wbi^6~c?g2fFg z8DdSG8lQrbc%K^88nFuer}5Apo}_m^>(G)Lpf*{xHVCF*4kC?qfQi)8Op vPPpLEl)hz_#5vLXB?-H`pYeJ$FfcQe3r_v=QR`6$s9g1Q^>bP0l+XkK7)BK| delta 248 zcmX@YJ(WqZGr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg{)?&;zfQgJKk z%~Sp41q=p;0c>u&>cnD%wC>%C3OpwBXU=*(d+UImGfjT~e8M7otF}CCZQN61;S<;T zjMRMXFML{k`rN-iKV(nr+xBKnPp?ttuSToJYln9J@yJ>9r#}6)>0%%0@0p1X%|}X> z)-}jFHPtQHc66JtYw6Mkp3_{{{nXvxO%kqOuW!%H)-q$Aih)i;%$kKA#{U`~^7AzL z_upIpX(nr@-~wkk`JL<{j$y|vX8mv5QrE!1%&@r3NtdfUVFm*O1B0ilpUXO@geCwP C!e%W1 diff --git a/doc/images/numbers/10.png b/doc/images/numbers/10.png index c8c3af49aae64c599621fe74f94bffd575538124..3eea5544cd594fc562c190b42ecb14423e12e827 100644 GIT binary patch literal 1600 zcmeAS@N?(olHy`uVBq!ia0y~yV2}b~4mJh`hLv7E=NK3mBuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&vz zGto0NF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7B|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9ucp-l$oBHmzd*{pIn-onpfiKVyje< zTcDScnPO#NY++z%Xl`O)Ze(C)VQ6S+Y2xhaXklh*W@&C>;A9Fj1Djq~XG>#e7Xud) zHzP|!Lsvsf11C#o7b9asGb0ycb7ymyUeCPZlEl2^RG7V)nJHFKz0P>`S~(Y`CYIzE zh2-bwz*0a!Mt(_taYlZDf^)E`o}q$oVsd64NCXr?;Lx{nNiE7OOHFYr%Fk5*hp<&9 z78e*8q59m()yc)p&D6=s%*@Tj(!^2;syBt4P}8?lu+ax452WM*6AE&112MrV87-1I{L53Geu0haZBg>8Lyq5S-<^ux6H(J{eR=W>8&jVB z{s+Fi5fW(^m(e%lyF1fcP-ftj;_Vv!{741A^z_Br6~A&Ao1Ppv ztbRJ@?T;UIAC8%ee3dzS=9t4C1?RG|38qtX*Y)*@26@}9J)+oQ6p|~wFFlJ<>ec%N z9!nBuJxy~E5?P)f+hgvv;PlaBTSKN*9u|(US-Jl7#)avcT*t&Vo-;YAFfnePQh@Q9 zCC9l+gZs^tH@eK~mFr*q>}fuW*V3ZsVE2psqKn?#d8odcH|=L$Qc~zV{XL1A8*Kh+ zFZkWRC`U$yBk4_nyq6o}Vr9l{X5SO!cJAQ}EE9}qRVe*^@tD=BQ`alFmh0QKsbrsN zwzakKlY4!9A#?4vbG^3(Thf&aDtE1XSEXou=SqLvb@oj+J}FOju$!&Ym8P-MDlnpP zMMlAjxdmCVZ>DL8dFsz~P@KMHa^AGl6J8Wt72d#oEvqJJv(+X(<9gAUrSmM@lC$SG zo&OelFHd6?f2wo(E*nGt1+UYC!vnVV{Zk2B#Cq}Iy)ye>_EPtGF0OxSKf#_=g5kd6 VQDx4@ryqdIbWc}5mvv4FO#nqDPEh~= delta 268 zcmX@Wvyw@%Gr-TCmrII^fq{Y7)59f*fq_93ggKZP7#P$_jSfy!RIg_^?djqeQgJKk z%~Sp41q=p;0c>txlNlnVRrfC~T(m2wK=7@`;|;nm`QGk(^Jfmr7iQCJ*O?zqa~6Fl zc5n&VvvuoYA2T=oUq3&#|K1Y7^h;iT=XT?4(E!buBN~^}>YqNFFTY>@{S97|xhelo z-_Y2*?+?$Ry4s(Xvjn&B|M%~|mvp$fckcYhj~9Pm@{+x+qieg^goEnp940S>SJjC% z{c1e;jK9xs!Fm3WJh#cIM`rzRSk?HA;joNlTzqU@pH9>Hx{3zn-$^F_FFM#eG%zw8 YSmzm?aB06E0|Nttr>mdKI;Vst0IjWc0RR91 From 5be4214b289196ad7531958e6685b8c342ee0915 Mon Sep 17 00:00:00 2001 From: Flex Ferrum Date: Mon, 19 Mar 2012 23:48:39 +0400 Subject: [PATCH 28/33] C++: Fix lambda declarator processing Now Qt Creator does not warn about lambda declaration with not empty parameters list. Task-number: QTCREATORBUG-6243 Change-Id: I07121a80fbca98c36820d1d8bb1be6e82ab96b12 Reviewed-by: Erik Verbruggen --- src/libs/3rdparty/cplusplus/Bind.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp index 4ed0fdd099c..0d006911e4b 100644 --- a/src/libs/3rdparty/cplusplus/Bind.cpp +++ b/src/libs/3rdparty/cplusplus/Bind.cpp @@ -1099,7 +1099,12 @@ void Bind::lambdaDeclarator(LambdaDeclaratorAST *ast) return; - Function *fun = 0; // ### implement me + Function *fun = control()->newFunction(0, 0); + fun->setStartOffset(tokenAt(ast->firstToken()).begin()); + fun->setEndOffset(tokenAt(ast->lastToken() - 1).end()); + if (ast->trailing_return_type) + _type = this->trailingReturnType(ast->trailing_return_type, _type); + fun->setReturnType(_type); // unsigned lparen_token = ast->lparen_token; FullySpecifiedType type; @@ -1110,7 +1115,6 @@ void Bind::lambdaDeclarator(LambdaDeclaratorAST *ast) } // unsigned mutable_token = ast->mutable_token; type = this->exceptionSpecification(ast->exception_specification, type); - type = this->trailingReturnType(ast->trailing_return_type, type); } bool Bind::visit(TrailingReturnTypeAST *ast) From 19f1f6ca7962c5c3c3506a1a3b5a612827137f6e Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 20 Mar 2012 13:59:38 +0100 Subject: [PATCH 29/33] Added test for lambda function definitions. Change-Id: I2233aa98a07e9c23463d4bec0b09dcccb89deb58 Reviewed-by: Roberto Raggi --- .../auto/cplusplus/semantic/tst_semantic.cpp | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/tests/auto/cplusplus/semantic/tst_semantic.cpp b/tests/auto/cplusplus/semantic/tst_semantic.cpp index 994785a02ca..c8a0dd78bc9 100644 --- a/tests/auto/cplusplus/semantic/tst_semantic.cpp +++ b/tests/auto/cplusplus/semantic/tst_semantic.cpp @@ -52,6 +52,9 @@ #include //TESTED_COMPONENT=src/libs/cplusplus + +#define NO_PARSER_OR_SEMANTIC_ERROR_MESSAGES + using namespace CPlusPlus; class tst_Semantic: public QObject @@ -68,13 +71,15 @@ public: TranslationUnit *parse(const QByteArray &source, TranslationUnit::ParseMode mode, bool enableObjc, - bool qtMocRun) + bool qtMocRun, + bool enableCxx11) { const StringLiteral *fileId = control->stringLiteral(""); TranslationUnit *unit = new TranslationUnit(control.data(), fileId); unit->setSource(source.constData(), source.length()); unit->setObjCEnabled(enableObjc); unit->setQtMocRunEnabled(qtMocRun); + unit->setCxxOxEnabled(enableCxx11); unit->parse(mode); return unit; } @@ -84,7 +89,9 @@ public: public: Document(TranslationUnit *unit) - : unit(unit), globals(unit->control()->newNamespace(0, 0)), errorCount(0) + : unit(unit) + , globals(unit->control()->newNamespace(0, 0)) + , errorCount(0) { } ~Document() @@ -114,23 +121,31 @@ public: { } virtual void report(int /*level*/, - const StringLiteral * /*fileName*/, - unsigned /*line*/, unsigned /*column*/, - const char * /*format*/, va_list /*ap*/) + const StringLiteral *fileName, + unsigned line, unsigned column, + const char *format, va_list ap) { ++errorCount; -// qDebug() << fileName->chars()<<':'<chars()<<':'< document(const QByteArray &source, bool enableObjc = false, bool qtMocRun = false) + QSharedPointer document(const QByteArray &source, bool enableObjc = false, bool qtMocRun = false, bool enableCxx11 = false) { diag.errorCount = 0; // reset the error count. - TranslationUnit *unit = parse(source, TranslationUnit::ParseTranlationUnit, enableObjc, qtMocRun); + TranslationUnit *unit = parse(source, TranslationUnit::ParseTranlationUnit, enableObjc, qtMocRun, enableCxx11); QSharedPointer doc(new Document(unit)); doc->check(); doc->errorCount = diag.errorCount; @@ -164,6 +179,8 @@ private slots: void q_enum_1(); + void lambda_1(); + void diagnostic_error(); }; @@ -697,6 +714,17 @@ void tst_Semantic::q_enum_1() QCOMPARE(e->name->identifier()->chars(), "e"); } +void tst_Semantic::lambda_1() +{ + QSharedPointer doc = document("\n" + "void f() {\n" + " auto func = [](int a, int b) {return a + b;};\n" + "}\n", false, false, true); + + QCOMPARE(doc->errorCount, 0U); + QCOMPARE(doc->globals->memberCount(), 1U); +} + void tst_Semantic::diagnostic_error() { QSharedPointer doc = document("\n" From 47fe6ab600b621bda58735d9cae4ff23ac1b637b Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 20 Mar 2012 15:46:34 +0100 Subject: [PATCH 30/33] debugger: Added comment how to make USE_AUTORUN usable Task-number: QTCREATORBUG-6951 Change-Id: Ib271f8f2c22705dae5cb799454ee52c22c5bec9d Reviewed-by: hjk --- tests/manual/debugger/simple/simple_test_app.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 58a87725e1f..1d0afbc44ff 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -62,6 +62,8 @@ // Same as 1, except that the debugger will stop automatically when // a test after a BREAK_HERE failed // Default: 0 +// Before using this, make sure that "Show a message box when receiving a signal" +// is disabled in "Tools" -> "Options..." -> "Debugger" -> "GDB". #ifndef USE_AUTORUN #define USE_AUTORUN 0 #endif From 13c6b4384c8d1ff9138593410e9aa3175b336811 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 20 Mar 2012 13:01:08 +0100 Subject: [PATCH 31/33] Doc: changes in the new project wizard Update screenshot Change-Id: I08e43f52c6a7dfa8c27452eed2d10d9b453873b3 Reviewed-by: Friedemann Kleint --- .../qtcreator-custom-project-wizards.png | Bin 27982 -> 37723 bytes .../creator-projects-custom-wizards.qdoc | 16 +++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/images/qtcreator-custom-project-wizards.png b/doc/images/qtcreator-custom-project-wizards.png index 183b7ffacbabaa04a5a7b7d8c56ba980b8126e47..6f9379279affe3e6cb9dde0b56085d649e84f01a 100644 GIT binary patch literal 37723 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∈94inT0uSVE1tO5R<;6gm0Z@ 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 literal 27982 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 diff --git a/doc/src/projects/creator-projects-custom-wizards.qdoc b/doc/src/projects/creator-projects-custom-wizards.qdoc index 3ae6cc5ce5a..ae576e9aa8f 100644 --- a/doc/src/projects/creator-projects-custom-wizards.qdoc +++ b/doc/src/projects/creator-projects-custom-wizards.qdoc @@ -52,7 +52,9 @@ \c {\share\qtcreator\templates\wizards\listmodel\helloworld} and \c {\share\qtcreator\templates\wizards\listmodel\listmodels} folders. After you restart \QC, the \gui {Custom Classes} - and \gui {Custom Projects} categories appear in the \gui New dialog. + and \gui {Custom Projects} categories (1) appear in the \gui New dialog. For + each category, an icon (2), a display name (3), and a description (4) are + displayed. \image qtcreator-custom-project-wizards.png "The New dialog with custom projects and classes" @@ -163,14 +165,14 @@ \list + \o \c displayCategory appears in the \gui New dialog, under + \gui Projects. - \o \c icon appears next to the \c displayName. + \o \c icon appears next to the \c displayName in the middle panel + when \c displayCategory is selected. - \o \c description appears at the bottom of the \gui New dialog when - you select the display name. - - \o \c displayName appears in the \gui New dialog, under the - \c displayCategory. + \o \c description appears in the right-most panel when + \c displayCategory is selected. You can add translations as values for the text elements. Specify the target language as an attribute for the element. Use locale names (QLocale). From 7f21eb8b4d44ce6b25920f22ac8802701f7cd369 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Thu, 15 Mar 2012 16:34:07 +0100 Subject: [PATCH 32/33] debugger: continue after breakpoint in self-test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Done-by: hjk Change-Id: I8405f88c963df359a9ae7f2a779ef0401b3c5994 Reviewed-by: Robert Löhning Reviewed-by: hjk --- tests/manual/debugger/simple/simple_test_app.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 1d0afbc44ff..a477ed9e8b3 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -5900,6 +5900,7 @@ namespace bug6933 { BREAK_HERE; // Expand b b.bug6933::Base // Check b.[bug6933::Base].[vptr] + // Continue. dummyStatement(&d, b); } } From 0e9bd4677ca3d5a0fd7f449a118222ee2f41c955 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 20 Mar 2012 18:05:12 +0100 Subject: [PATCH 33/33] debugger: fix quote style and capitalization in gutter menu Change-Id: I054230bb910bdb400bd2494a449993bdb0bbf011 Reviewed-by: hjk --- src/plugins/debugger/debuggerplugin.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index d072f370ae9..f4fb7e95518 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1919,7 +1919,7 @@ void DebuggerPluginPrivate::requestContextMenu(ITextEditor *editor, // Handle non-existing breakpoint. const QString text = args.address ? tr("Set Breakpoint at 0x%1").arg(args.address, 0, 16) - : tr("Set Breakpoint at line %1").arg(lineNumber); + : tr("Set Breakpoint at Line %1").arg(lineNumber); QAction *act = new QAction(text, menu); act->setData(QVariant::fromValue(args)); act->setEnabled(contextUsable); @@ -1930,7 +1930,7 @@ void DebuggerPluginPrivate::requestContextMenu(ITextEditor *editor, args.mode = BreakpointMenuContextData::MessageTracePoint; const QString tracePointText = args.address ? tr("Set Message Tracepoint at 0x%1...").arg(args.address, 0, 16) - : tr("Set Message Tracepoint at line %1...").arg(lineNumber); + : tr("Set Message Tracepoint at Line %1...").arg(lineNumber); act = new QAction(tracePointText, menu); act->setData(QVariant::fromValue(args)); act->setEnabled(contextUsable); @@ -1966,7 +1966,8 @@ void DebuggerPluginPrivate::requestContextMenu(ITextEditor *editor, frame.function = cppFunctionAt(fileName, lineNumber); frame.line = 42; // trick gdb into mixed mode. if (!frame.function.isEmpty()) { - const QString text = tr("Disassemble '%1()'").arg(frame.function); + const QString text = tr("Disassemble Function \"%1\"") + .arg(frame.function); QAction *disassembleAction = new QAction(text, menu); disassembleAction->setData(QVariant::fromValue(frame)); connect(disassembleAction, SIGNAL(triggered()), SLOT(slotDisassembleFunction()));