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