Merge remote-tracking branch 'origin/4.0'

Conflicts:
	src/plugins/projectexplorer/session.cpp
	src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp

Change-Id: I6946139f5e5fa3a9cdbb322fd50be248e2c0133f
This commit is contained in:
Eike Ziller
2016-04-20 14:58:48 +02:00
112 changed files with 794 additions and 881 deletions

20
dist/changes-4.0.0.md vendored
View File

@@ -20,6 +20,7 @@ General
* Fixed issues with HiDPI (QTCREATORBUG-15222) * Fixed issues with HiDPI (QTCREATORBUG-15222)
* Fixed that switching theme did not switch editor color scheme * Fixed that switching theme did not switch editor color scheme
(QTCREATORBUG-15229) (QTCREATORBUG-15229)
* Fixed crash when double clicking wizard (QTCREATORBUG-15968)
Editing Editing
@@ -28,15 +29,20 @@ Editing
* Added `Go to Previous Split or Window` * Added `Go to Previous Split or Window`
* Fixed whitespace cleaning for mixed tabs and spaces configurations * Fixed whitespace cleaning for mixed tabs and spaces configurations
(QTCREATORBUG-7994) (QTCREATORBUG-7994)
* Fixed download of highlighting files (QTCREATORBUG-15997)
* Fixed crash when cutting text from multiple splits (QTCREATORBUG-16046)
Help Help
* Fixed issues with scrolling to right position (QTCREATORBUG-15548) * Fixed issues with scrolling to right position (QTCREATORBUG-15548)
* Fixed images overlapping text with older Qt documentation (QTCREATORBUG-15887)
* Fixed fallback font (QTCREATORBUG-15887)
QMake Projects QMake Projects
* Added wizard for creating `Qt Labs Controls Application` * Added wizard for creating `Qt Labs Controls Application`
* Added support for `STATECHARTS` * Added support for `STATECHARTS`
* Fixed crash when switching session while project is read (QTCREATORBUG-15993)
CMake Projects CMake Projects
@@ -62,6 +68,7 @@ Qt Support
C++ Support C++ Support
* Fixed issue with negative enum values * Fixed issue with negative enum values
* Fixed completion of Doxygen tags (QTCREATORBUG-9373, QTCREATORBUG-15143)
* Clang code model * Clang code model
* Simplified activation (it is now active if the plugin is enabled) * Simplified activation (it is now active if the plugin is enabled)
* Added customizable configurations for warnings (global and per project) * Added customizable configurations for warnings (global and per project)
@@ -71,16 +78,23 @@ C++ Support
QML Support QML Support
* Fixed various issues with QML/JS Console (QTCREATORBUG-14931) * Fixed various issues with QML/JS Console (QTCREATORBUG-14931)
* Fixed resolution of `alias` directives in `.qrc` files
Debugging Debugging
* Added pretty printers for `std::set`, `std::map` and `std::multimap` * Added pretty printers for `std::set`, `std::map`, `std::multimap`
(for simple types of keys and values) (for simple types of keys and values), `std::valarray` and `QBitArray`
* Improved performance for watches * Improved performance for watches
* Improved visualization of `QByteArray` and `char[]` with non-printable * Improved visualization of `QByteArray` and `char[]` with non-printable
values (QTCREATORBUG-15549) values (QTCREATORBUG-15549)
* CDB * CDB
* Fixed showing value of `std::[w]string` (QTCREATORBUG-15016) * Fixed showing value of `std::[w]string` (QTCREATORBUG-15016)
* GDB
* Fixed import of system pretty printer (QTCREATORBUG-15923)
* Fixed changing display format for `float` (QTCREATORBUG-12800)
* LLDB
* Fixed issues with Xcode 7.3
(QTCREATORBUG-15965, QTCREATORBUG-15945, QTCREATORBUG-15949)
QML Profiler QML Profiler
@@ -95,6 +109,7 @@ QML Profiler
Clang Static Analyzer Clang Static Analyzer
* Fixed analyzing with MinGW tool chain settings * Fixed analyzing with MinGW tool chain settings
* Fixed that Clang was run with default target instead of project target
Test Integration Test Integration
@@ -102,6 +117,7 @@ Test Integration
* Fixed resolution of source file of failed test on Windows (QTCREATORBUG-15667) * Fixed resolution of source file of failed test on Windows (QTCREATORBUG-15667)
* Fixed that additional output of passing tests was ignored * Fixed that additional output of passing tests was ignored
* Fixed test detection with CMake projects (QTCREATORBUG-15813) * Fixed test detection with CMake projects (QTCREATORBUG-15813)
* Fixed crash while editing test (QTCREATORBUG-16062)
* Google Test * Google Test
* Added support for typed tests * Added support for typed tests
* Fixed parsing of file and line information * Fixed parsing of file and line information

View File

@@ -1,79 +1,38 @@
/**************************************************************************** import QtQuick 2.6
** import QtQuick.Controls 1.5
** Copyright (C) 2016 The Qt Company Ltd. import QtQuick.Layouts 1.3
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.2
Item { Item {
id: page
width: 640 width: 640
height: 480 height: 480
property alias mouseArea1: mouseArea1
property alias mouseArea3: mouseArea3
property alias mouseArea2: mouseArea2
property alias bottomLeftRect: bottomLeftRect property alias bottomLeftRect: bottomLeftRect
property alias middleRightRect: middleRightRect property alias middleRightRect: middleRightRect
property alias topLeftRect: topLeftRect property alias topLeftRect: topLeftRect
property alias icon: icon property alias icon: icon
property alias mouseArea1: mouseArea1
property alias mouseArea2: mouseArea2 Image {
property alias mouseArea3: mouseArea3 id: icon
x: 10
y: 20
source: "qt-logo.png"
}
Rectangle { Rectangle {
id: topLeftRect id: topLeftRect
width: 46 width: 55
height: 55 height: 41
color: "#00000000" color: "#00000000"
radius: 6 radius: 0
border.color: "#808080"
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: 10 anchors.leftMargin: 10
anchors.top: parent.top anchors.top: parent.top
anchors.topMargin: 20 anchors.topMargin: 20
border.color: "#808080" border.width: 1
MouseArea { MouseArea {
id: mouseArea1 id: mouseArea1
@@ -83,12 +42,12 @@ Item {
Rectangle { Rectangle {
id: middleRightRect id: middleRightRect
x: 6 x: -8
y: 6 y: 6
width: 46 width: 55
height: 55 height: 41
color: "#00000000" color: "#00000000"
radius: 6 radius: 0
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: 10 anchors.rightMargin: 10
@@ -96,32 +55,27 @@ Item {
id: mouseArea2 id: mouseArea2
anchors.fill: parent anchors.fill: parent
} }
border.width: 1
border.color: "#808080" border.color: "#808080"
} }
Rectangle { Rectangle {
id: bottomLeftRect id: bottomLeftRect
x: 0 y: -2
y: 4 width: 55
width: 46 height: 41
height: 55
color: "#00000000" color: "#00000000"
radius: 6 radius: 0
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: 20 anchors.bottomMargin: 20
anchors.left: parent.left
anchors.leftMargin: 10
MouseArea { MouseArea {
id: mouseArea3 id: mouseArea3
anchors.fill: parent anchors.fill: parent
} }
anchors.left: parent.left border.width: 1
border.color: "#808080" border.color: "#808080"
anchors.leftMargin: 10
} }
Image {
id: icon
x: 10
y: 20
source: "qt-logo.png"
}
} }

View File

@@ -1,53 +1,3 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QGuiApplication> #include <QGuiApplication>
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>

View File

@@ -1,122 +1,72 @@
/**************************************************************************** import QtQuick 2.6
** import QtQuick.Controls 1.5
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2 import QtQuick.Dialogs 1.2
ApplicationWindow { ApplicationWindow {
visible: true visible: true
title: qsTr("Transitions")
width: 330 width: 330
height: 330 height: 330
title: qsTr("Transitions")
MainForm { MainForm {
anchors.fill: parent anchors.fill: parent
id: page id: page
mouseArea1 { mouseArea1 {
onClicked: stateGroup.state = ' ' onClicked: stateGroup.state = ' '
} }
mouseArea2 { mouseArea2 {
onClicked: stateGroup.state = 'State1' onClicked: stateGroup.state = 'State1'
} }
mouseArea3 { mouseArea3 {
onClicked: stateGroup.state = 'State2' onClicked: stateGroup.state = 'State2'
} }
} }
StateGroup { StateGroup {
id: stateGroup id: stateGroup
states: [ states: [
State { State {
name: "State1" name: "State1"
PropertyChanges { PropertyChanges {
target: page.icon target: page.icon
x: page.middleRightRect.x x: page.middleRightRect.x
y: page.middleRightRect.y y: page.middleRightRect.y
} }
}, },
State { State {
name: "State2" name: "State2"
PropertyChanges { PropertyChanges {
target: page.icon target: page.icon
x: page.bottomLeftRect.x x: page.bottomLeftRect.x
y: page.bottomLeftRect.y y: page.bottomLeftRect.y
}
} }
} ]
] transitions: [
transitions: [ Transition {
Transition { from: "*"; to: "State1"
from: "*"; to: "State1" NumberAnimation {
NumberAnimation { easing.type: Easing.OutBounce
easing.type: Easing.OutBounce properties: "x,y";
properties: "x,y"; duration: 1000
duration: 1000 }
} },
}, Transition {
Transition { from: "*"; to: "State2"
from: "*"; to: "State2" NumberAnimation {
NumberAnimation { properties: "x,y";
properties: "x,y"; easing.type: Easing.InOutQuad;
easing.type: Easing.InOutQuad; duration: 2000
duration: 2000 }
} },
}, Transition {
Transition { NumberAnimation {
NumberAnimation { properties: "x,y";
properties: "x,y"; duration: 200
duration: 200 }
} }
} ]
] }
} }
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@@ -1507,7 +1507,7 @@
\li \uicontrol {All Projects} searches files matching the \li \uicontrol {All Projects} searches files matching the
defined file pattern in all currently open projects. defined file pattern in all currently open projects.
For example, to search for \c previewer only in \c {.cpp} For example, to search for a string only in \c {.cpp}
and \c {.h} files, enter in \uicontrol {File pattern} and \c {.h} files, enter in \uicontrol {File pattern}
\c {*.cpp,*.h}. \c {*.cpp,*.h}.

View File

@@ -87,6 +87,9 @@
the editor to copy all elements to the clipboard by using 300 dpi. Then the editor to copy all elements to the clipboard by using 300 dpi. Then
paste the diagram to an application that can print images. paste the diagram to an application that can print images.
To save diagrams as images, select \uicontrol Tools >
\uicontrol {Model Editor} > \uicontrol {Export Diagram}.
\section1 Creating Models \section1 Creating Models
To create models: To create models:

View File

@@ -47,7 +47,9 @@
\li Open tutorials and example projects \li Open tutorials and example projects
\li Read news from the online community and Qt labs \li Read news from the online community and Qt blogs
\li Create or manage a Qt Account
\endlist \endlist
@@ -451,6 +453,13 @@
Select toolbar buttons to run applications, to attach the debugger to the Select toolbar buttons to run applications, to attach the debugger to the
running application, and to stop running or debugging. running application, and to stop running or debugging.
To specify settings for displaying application output, select
\uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} >
\uicontrol General. You can select whether to open the
\uicontrol{Application Output} pane on output when running or debugging
applications, to clear old output on a new run, to word-wrap output, and to
limit output to the specified number of lines.
\section2 Compile Output \section2 Compile Output
The \uicontrol{Compile Output} pane provides all output from the compiler. The \uicontrol{Compile Output} pane provides all output from the compiler.
@@ -464,6 +473,11 @@
Select the \uicontrol {Cancel Build} button to cancel the build. Select the \uicontrol {Cancel Build} button to cancel the build.
To specify whether to open the \uicontrol {Compile Output} pane on output
when building applications, select \uicontrol Tools > \uicontrol Options >
\uicontrol {Build & Run} > \uicontrol General, and then select the
\uicontrol {Open Compile Output pane when building} check box.
\section2 Debugger Console \section2 Debugger Console
In the \uicontrol {Debugger Console}, you can type JavaScript expressions and use them to get In the \uicontrol {Debugger Console}, you can type JavaScript expressions and use them to get

View File

@@ -47,4 +47,13 @@
\image qtcreator-project-options-deploy.png "Project General Options" \image qtcreator-project-options-deploy.png "Project General Options"
On Windows, you can use \c jom instead of \c nmake for building the project
to distribute the compilation process to multiple CPU cores. You can download
\c jom from \l{http://download.qt.io/official_releases/jom}{Qt Downloads}.
To use \c jom, select the \uicontrol {Use jom instead of nmake} check box.
Deselect the check box if you experience build problems.
You can specify the default build directory in the
\uicontrol {Default build directory} field using \QC variables (2).
*/ */

View File

@@ -47,7 +47,7 @@
\image qtcreator-qnx-deployment.png "Deploy to device" \image qtcreator-qnx-deployment.png "Deploy to device"
The files to be installed are listed in the \uicontrol {Deployment} step, The files to be installed are listed in the \uicontrol {Deployment} step,
the \uicontrol {Files to install for subproject} field. The the \uicontrol {Files to deploy} field. The
\uicontrol {Local File Path} field displays the location of the file on the \uicontrol {Local File Path} field displays the location of the file on the
development PC. The \uicontrol {Remote Directory} field displays the folder development PC. The \uicontrol {Remote Directory} field displays the folder
where the file is installed on the device. Text in red color indicates that where the file is installed on the device. Text in red color indicates that

View File

@@ -74,8 +74,11 @@
\li In the \uicontrol Navigator, select \uicontrol RowLayout and press \li In the \uicontrol Navigator, select \uicontrol RowLayout and press
\key Delete to delete it. \key Delete to delete it.
\li Select \uicontrol Item in the navigator, and enter \e page in the
\uicontrol Id field.
\li In \uicontrol Library > \uicontrol Resources, select qt-logo.png and \li In \uicontrol Library > \uicontrol Resources, select qt-logo.png and
drag and drop it to the \uicontrol Item in the navigator. drag and drop it to the \e page in the navigator.
\image qmldesigner-tutorial-user-icon.png "Image properties" \image qmldesigner-tutorial-user-icon.png "Image properties"
@@ -101,8 +104,8 @@
\li In the \uicontrol Id field, enter \e topLeftRect. \li In the \uicontrol Id field, enter \e topLeftRect.
\li In the \uicontrol Size field, set \uicontrol W to \e 46 and \li In the \uicontrol Size field, set \uicontrol W to \e 55 and
\uicontrol H to \e 55, for the rectangle size to match the image \uicontrol H to \e 41, for the rectangle size to match the image
size. size.
\li In the \uicontrol Color field, click the \li In the \uicontrol Color field, click the
@@ -113,9 +116,6 @@
\li In the \uicontrol {Border color} field, set the border color to \li In the \uicontrol {Border color} field, set the border color to
\e #808080. \e #808080.
\li In the \uicontrol Radius field, select \e 6 to create rounded
corners for the rectangle.
\li Click \uicontrol {Layout}, and then click the top and left \li Click \uicontrol {Layout}, and then click the top and left
anchor buttons to anchor the rectangle to the top left corner of anchor buttons to anchor the rectangle to the top left corner of
the page. the page.
@@ -187,6 +187,8 @@
the \uicontrol Edit mode to add animation to the application, as described the \uicontrol Edit mode to add animation to the application, as described
in the following section. in the following section.
\image qmldesigner-tutorial-ui-ready.png "Transitions UI"
\section1 Adding Application Logic \section1 Adding Application Logic
The new project wizard adds boilerplate code to the \e main.qml file to The new project wizard adds boilerplate code to the \e main.qml file to
@@ -207,7 +209,7 @@
\quotefromfile transitions/main.qml \quotefromfile transitions/main.qml
\skipto ApplicationWindow \skipto ApplicationWindow
\printuntil height \printuntil title
\li Specify an id for the MainForm type to be able to use the properties \li Specify an id for the MainForm type to be able to use the properties
that you exported in \e MainForm.ui.qml: that you exported in \e MainForm.ui.qml:

View File

@@ -160,6 +160,7 @@ lldb.SBType.__str__ = lldb.SBType.GetName
class Dumper(DumperBase): class Dumper(DumperBase):
def __init__(self): def __init__(self):
DumperBase.__init__(self) DumperBase.__init__(self)
lldb.theDumper = self
self.outputLock = threading.Lock() self.outputLock = threading.Lock()
self.debugger = lldb.SBDebugger.Create() self.debugger = lldb.SBDebugger.Create()
@@ -1489,6 +1490,21 @@ class Dumper(DumperBase):
bp.SetIgnoreCount(int(args["ignorecount"])) bp.SetIgnoreCount(int(args["ignorecount"]))
bp.SetCondition(self.hexdecode(args["condition"])) bp.SetCondition(self.hexdecode(args["condition"]))
bp.SetEnabled(bool(args["enabled"])) bp.SetEnabled(bool(args["enabled"]))
bp.SetScriptCallbackBody('\n'.join([
"def foo(frame = frame, bp_loc = bp_loc, dict = internal_dict):",
" " + self.hexdecode(args["command"]).replace('\n', '\n '),
"from cStringIO import StringIO",
"origout = sys.stdout",
"sys.stdout = StringIO()",
"result = foo()",
"d = lldb.theDumper",
"output = d.hexencode(sys.stdout.getvalue())",
"sys.stdout = origout",
"d.report('output={channel=\"stderr\",data=\"' + output + '\"}')",
"if result is False:",
" d.reportState('continueafternextstop')",
"return True"
]))
if isinstance(bp, lldb.SBBreakpoint): if isinstance(bp, lldb.SBBreakpoint):
bp.SetOneShot(bool(args["oneshot"])) bp.SetOneShot(bool(args["oneshot"]))
self.reportResult(self.describeBreakpoint(bp) + extra, args) self.reportResult(self.describeBreakpoint(bp) + extra, args)

View File

@@ -1,5 +1,5 @@
[General] [General]
ThemeName=Default ThemeName=Classic
PreferredStyles= PreferredStyles=
[Palette] [Palette]

View File

@@ -1,5 +1,5 @@
[General] [General]
ThemeName=Default Flat ThemeName=Flat
PreferredStyles= PreferredStyles=
[Palette] [Palette]
@@ -61,13 +61,13 @@ IconsWarningColor=ffecbc1c
IconsWarningToolBarColor=fff2d76e IconsWarningToolBarColor=fff2d76e
IconsErrorColor=ffdf4f4f IconsErrorColor=ffdf4f4f
IconsErrorToolBarColor=ffdb6f71 IconsErrorToolBarColor=ffdb6f71
IconsRunColor=dda4d576 IconsRunColor=ff93be6c
IconsStopColor=ddff8c8c IconsStopColor=ffe27f7f
IconsDebugColor=toolBarItem IconsDebugColor=toolBarItem
IconsInterruptColor=dd7488db IconsInterruptColor=ff6a7bc3
IconsNavigationArrowsColor=ffebc322 IconsNavigationArrowsColor=ffebc322
IconsBuildHammerHandleColor=dddd7710 IconsBuildHammerHandleColor=ffc26b14
IconsBuildHammerHeadColor=dd989898 IconsBuildHammerHeadColor=ff868687
IconsModeWelcomeActiveColor=ff80c342 IconsModeWelcomeActiveColor=ff80c342
IconsModeEditActiveColor=ff99aaef IconsModeEditActiveColor=ff99aaef
IconsModeDesignActiveColor=ffbb6000 IconsModeDesignActiveColor=ffbb6000

View File

@@ -341,7 +341,7 @@
</message> </message>
<message> <message>
<source>The process &quot;%1&quot; crashed.</source> <source>The process &quot;%1&quot; crashed.</source>
<translation>Процесс «%1» завершился крахом.</translation> <translation>Процесс «%1» аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>Another application with the same package id but signed with different certificate already exists. <source>Another application with the same package id but signed with different certificate already exists.
@@ -791,7 +791,7 @@ Do you want to uninstall the existing package?</source>
</message> </message>
<message> <message>
<source>&quot;%1&quot; died.</source> <source>&quot;%1&quot; died.</source>
<translation>«%1» завершился крахом.</translation> <translation>«%1» аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>Unable to start &quot;%1&quot;.</source> <source>Unable to start &quot;%1&quot;.</source>
@@ -3633,8 +3633,8 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<context> <context>
<name>CMakeProjectManager::CMakeBuildStep</name> <name>CMakeProjectManager::CMakeBuildStep</name>
<message> <message>
<source>Qt Creator needs a cmake tool set up to build. Configure a cmake tool in the kit options.</source> <source>Qt Creator needs a CMake Tool set up to build. Configure a CMake Tool in the kit options.</source>
<translation>Для сборки необходимо, чтобы была задана утилита cmake. Задайте её в настройках комлекта.</translation> <translation>Для сборки необходимо, чтобы была задана утилита CMake. Задайте её в настройках комлекта.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -3790,7 +3790,7 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
</message> </message>
<message> <message>
<source>*** cmake process crashed!</source> <source>*** cmake process crashed!</source>
<translation>*** процесс cmake завершился крахом!</translation> <translation>*** процесс cmake аварийно завершился!</translation>
</message> </message>
<message> <message>
<source>*** cmake process exited with exit code %1.</source> <source>*** cmake process exited with exit code %1.</source>
@@ -4172,9 +4172,9 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<name>ClangStaticAnalyzer</name> <name>ClangStaticAnalyzer</name>
<message> <message>
<source>The chosen file &quot;%1&quot; seems to point to an icecc binary not suitable for analyzing. <source>The chosen file &quot;%1&quot; seems to point to an icecc binary not suitable for analyzing.
Please set a real clang executable.</source> Please set a real Clang executable.</source>
<translation>Кажется, выбранный файл «%1» указывает на программу icecc непригодную для анализа. <translation>Кажется, выбранный файл «%1» указывает на программу icecc непригодную для анализа.
Укажите реальную программу clang.</translation> Укажите реальный исполняемый файл Clang.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4203,7 +4203,7 @@ Please set a real clang executable.</source>
<translation>Сообщение:</translation> <translation>Сообщение:</translation>
</message> </message>
<message> <message>
<source>Extended Message:</source> <source>Extended message:</source>
<translation>Подробное сообщение:</translation> <translation>Подробное сообщение:</translation>
</message> </message>
<message> <message>
@@ -4248,7 +4248,7 @@ Please set a real clang executable.</source>
<context> <context>
<name>ClangStaticAnalyzer::Internal::ClangStaticAnalyzerDiagnosticView</name> <name>ClangStaticAnalyzer::Internal::ClangStaticAnalyzerDiagnosticView</name>
<message> <message>
<source>Suppress this diagnostic</source> <source>Suppress This Diagnostic</source>
<translation>Подавить эту диагностику</translation> <translation>Подавить эту диагностику</translation>
</message> </message>
</context> </context>
@@ -4262,8 +4262,8 @@ Please set a real clang executable.</source>
<context> <context>
<name>ClangStaticAnalyzer::Internal::ClangStaticAnalyzerPlugin</name> <name>ClangStaticAnalyzer::Internal::ClangStaticAnalyzerPlugin</name>
<message> <message>
<source>Clang Static Analyzer Settings</source> <source>Clang Static Analyzer</source>
<translation>Настройки статического анализатора Clang</translation> <translation>Статический анализатор Clang</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4328,8 +4328,8 @@ Please set a real clang executable.</source>
<translation>К следующей проблеме.</translation> <translation>К следующей проблеме.</translation>
</message> </message>
<message> <message>
<source>Clang Static Analyzer uses the analyzer from the clang project to find bugs.</source> <source>Clang Static Analyzer uses the analyzer from the Clang project to find bugs.</source>
<translation>Статический анализатор Clang использует анализатор из проекта clang для поиска проблем.</translation> <translation>Статический анализатор Clang использует анализатор из проекта Clang для поиска ошибок.</translation>
</message> </message>
<message> <message>
<source>Clang Static Analyzer</source> <source>Clang Static Analyzer</source>
@@ -4356,7 +4356,7 @@ Please set a real clang executable.</source>
<translation>Запустить статический анализатор Clang.</translation> <translation>Запустить статический анализатор Clang.</translation>
</message> </message>
<message> <message>
<source>Clang Static Analyzer running.</source> <source>Clang Static Analyzer is running.</source>
<translation>Статический анализатор Clang работает.</translation> <translation>Статический анализатор Clang работает.</translation>
</message> </message>
<message> <message>
@@ -4382,10 +4382,6 @@ Please set a real clang executable.</source>
<source>Form</source> <source>Form</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Suppressed Diagnostics:</source>
<translation>Подавляемые диагностики:</translation>
</message>
<message> <message>
<source>Remove Selected</source> <source>Remove Selected</source>
<translation>Удалить выбранное</translation> <translation>Удалить выбранное</translation>
@@ -4394,6 +4390,10 @@ Please set a real clang executable.</source>
<source>Remove All</source> <source>Remove All</source>
<translation>Удалить всё</translation> <translation>Удалить всё</translation>
</message> </message>
<message>
<source>Suppressed diagnostics:</source>
<translation>Подавляемые диагностики:</translation>
</message>
</context> </context>
<context> <context>
<name>ClangStaticAnalyzer::Internal::SuppressedDiagnosticsModel</name> <name>ClangStaticAnalyzer::Internal::SuppressedDiagnosticsModel</name>
@@ -7037,18 +7037,10 @@ Do you want to kill it?</source>
<source>Recent &amp;Files</source> <source>Recent &amp;Files</source>
<translation>Недавние фа&amp;йлы</translation> <translation>Недавние фа&amp;йлы</translation>
</message> </message>
<message>
<source>&amp;Save</source>
<translation>&amp;Сохранить</translation>
</message>
<message> <message>
<source>Save</source> <source>Save</source>
<translation>Сохранить</translation> <translation>Сохранить</translation>
</message> </message>
<message>
<source>Save &amp;As...</source>
<translation>Сохранить &amp;как...</translation>
</message>
<message> <message>
<source>Ctrl+Shift+S</source> <source>Ctrl+Shift+S</source>
<translation>Ctrl+Shift+S</translation> <translation>Ctrl+Shift+S</translation>
@@ -7811,7 +7803,7 @@ Do you want to kill it?</source>
</message> </message>
<message> <message>
<source>Automatically creates temporary copies of modified files. If Qt Creator is restarted after a crash or power failure, it asks whether to recover the auto-saved content.</source> <source>Automatically creates temporary copies of modified files. If Qt Creator is restarted after a crash or power failure, it asks whether to recover the auto-saved content.</source>
<translation>Автоматически создавать копии изменённых файлов. Если работа Qt Creator завершилась в результате краха или сбоя питания, то при перезапуске он предложит восстановить их содержимое.</translation> <translation>Автоматически создавать копии изменённых файлов. Если работа Qt Creator завершится аварийно или из-за сбоя питания, то при перезапуске он предложит восстановить их содержимое.</translation>
</message> </message>
<message> <message>
<source>Auto-save modified files</source> <source>Auto-save modified files</source>
@@ -8007,7 +7999,7 @@ Do you want to kill it?</source>
</message> </message>
<message> <message>
<source>&quot;%1&quot; crashed.</source> <source>&quot;%1&quot; crashed.</source>
<translation>«%1» завершился аварийно.</translation> <translation>«%1» аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>&quot;%1&quot; failed (exit code %2).</source> <source>&quot;%1&quot; failed (exit code %2).</source>
@@ -11498,11 +11490,11 @@ Affected are breakpoints %1</source>
</message> </message>
<message> <message>
<source>Crashed process %1</source> <source>Crashed process %1</source>
<translation>Завершившийся крахом процесс %1</translation> <translation>Аварийно завершившийся процесс %1</translation>
</message> </message>
<message> <message>
<source>Attaching to crashed process %1</source> <source>Attaching to crashed process %1</source>
<translation>Подключение к завершившемуся крахом процессу %1</translation> <translation>Подключение к аварийно завершившемуся процессу %1</translation>
</message> </message>
<message> <message>
<source>Process Already Under Debugger Control</source> <source>Process Already Under Debugger Control</source>
@@ -12248,7 +12240,7 @@ Qt Creator не может подключиться к нему.</translation>
</message> </message>
<message> <message>
<source>The gdb process crashed some time after starting successfully.</source> <source>The gdb process crashed some time after starting successfully.</source>
<translation>Процесс gdb завершился крахом через некоторое время после успешного запуска.</translation> <translation>Процесс gdb аварийно завершился через некоторое время после успешного запуска.</translation>
</message> </message>
<message> <message>
<source>The gdb process was ended forcefully</source> <source>The gdb process was ended forcefully</source>
@@ -12913,7 +12905,7 @@ markers in the source code editor.</source>
</message> </message>
<message> <message>
<source>The LLDB process crashed some time after starting successfully.</source> <source>The LLDB process crashed some time after starting successfully.</source>
<translation>Процесс LLDB завершился крахом через некоторое время после успешного старта.</translation> <translation>Процесс LLDB аварийно завершился через некоторое время после успешного старта.</translation>
</message> </message>
<message> <message>
<source>An error occurred when attempting to write to the LLDB process. For example, the process may not be running, or it may have closed its input channel.</source> <source>An error occurred when attempting to write to the LLDB process. For example, the process may not be running, or it may have closed its input channel.</source>
@@ -13304,10 +13296,6 @@ Do you want to retry?</source>
<source>QML Debugger disconnected.</source> <source>QML Debugger disconnected.</source>
<translation>Отладчик QML отключён.</translation> <translation>Отладчик QML отключён.</translation>
</message> </message>
<message>
<source>Context:</source>
<translation>Контекст:</translation>
</message>
</context> </context>
<context> <context>
<name>Debugger::Internal::QmlInspectorAgent</name> <name>Debugger::Internal::QmlInspectorAgent</name>
@@ -16176,7 +16164,7 @@ will also disable the following plugins:
</message> </message>
<message> <message>
<source>%1 crashed.</source> <source>%1 crashed.</source>
<translation>%1 завершился крахом.</translation> <translation>%1 аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>%1 returned %2.</source> <source>%1 returned %2.</source>
@@ -16455,7 +16443,7 @@ Partial names can be used if they are unambiguous.</source>
</message> </message>
<message> <message>
<source>%1 crashed.</source> <source>%1 crashed.</source>
<translation>%1 завершился крахом.</translation> <translation>%1 аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>%1 returned %2.</source> <source>%1 returned %2.</source>
@@ -18259,7 +18247,7 @@ Leave empty to search through the file system.</source>
<message> <message>
<source>Ref: %1 <source>Ref: %1
%2</source> %2</source>
<translation type="unfinished">Ссылка: %1 <translation>Ссылка: %1
%2</translation> %2</translation>
</message> </message>
<message> <message>
@@ -19140,7 +19128,7 @@ Would you like to overwrite it?</source>
<translation>Ctrl+0</translation> <translation>Ctrl+0</translation>
</message> </message>
<message> <message>
<source>Fit To Screen</source> <source>Fit to Screen</source>
<translation>На весь экран</translation> <translation>На весь экран</translation>
</message> </message>
<message> <message>
@@ -20009,80 +19997,80 @@ Ids must begin with a lowercase letter.</source>
</message> </message>
<message> <message>
<source>Polish</source> <source>Polish</source>
<translation type="unfinished">Полировка</translation> <translation>Полировка</translation>
</message> </message>
<message> <message>
<source>Wait</source> <source>Wait</source>
<translation type="unfinished">Ожидание</translation> <translation>Ожидание</translation>
</message> </message>
<message> <message>
<source>GUI Thread Sync</source> <source>GUI Thread Sync</source>
<translation type="unfinished">Синхронизация с потоком GUI</translation> <translation>Синхронизация с потоком GUI</translation>
</message> </message>
<message> <message>
<source>Render Thread Sync</source> <source>Render Thread Sync</source>
<translation type="unfinished">Синхронизация с потоком рендера</translation> <translation>Синхронизация с потоком рендера</translation>
</message> </message>
<message> <message>
<source>Render</source> <source>Render</source>
<translation type="unfinished">Рендер</translation> <translation>Рендер</translation>
</message> </message>
<message> <message>
<source>Swap</source> <source>Swap</source>
<translation type="unfinished">Переключение</translation> <translation>Переключение</translation>
</message> </message>
<message> <message>
<source>Render Preprocess</source> <source>Render Preprocess</source>
<translation type="unfinished">Рендер - преобработка</translation> <translation>Рендер - преобработка</translation>
</message> </message>
<message> <message>
<source>Render Update</source> <source>Render Update</source>
<translation type="unfinished">Рендер - обновление</translation> <translation>Рендер - обновление</translation>
</message> </message>
<message> <message>
<source>Render Bind</source> <source>Render Bind</source>
<translation type="unfinished">Рендер - привязка</translation> <translation>Рендер - привязка</translation>
</message> </message>
<message> <message>
<source>Render Render</source> <source>Render Render</source>
<translation type="unfinished">Рендер - рендеринг</translation> <translation>Рендер - рендеринг</translation>
</message> </message>
<message> <message>
<source>Material Compile</source> <source>Material Compile</source>
<translation type="unfinished">Компиляция материала</translation> <translation>Компиляция материала</translation>
</message> </message>
<message> <message>
<source>Glyph Render</source> <source>Glyph Render</source>
<translation type="unfinished">Отрисовка глифов</translation> <translation>Отрисовка глифов</translation>
</message> </message>
<message> <message>
<source>Glyph Upload</source> <source>Glyph Upload</source>
<translation type="unfinished">Выгрузка глифов</translation> <translation>Выгрузка глифов</translation>
</message> </message>
<message> <message>
<source>Texture Bind</source> <source>Texture Bind</source>
<translation type="unfinished">Текстуры - привязка</translation> <translation>Текстуры - привязка</translation>
</message> </message>
<message> <message>
<source>Texture Convert</source> <source>Texture Convert</source>
<translation type="unfinished">Текстуры - преобразование</translation> <translation>Текстуры - преобразование</translation>
</message> </message>
<message> <message>
<source>Texture Swizzle</source> <source>Texture Swizzle</source>
<translatorcomment>не знаю, как выбор/обмен цветовых каналов перевести на русский</translatorcomment> <translatorcomment>не знаю, как выбор/обмен цветовых каналов перевести на русский</translatorcomment>
<translation type="unfinished">Текстуры - смешивание</translation> <translation>Текстуры - смешивание</translation>
</message> </message>
<message> <message>
<source>Texture Upload</source> <source>Texture Upload</source>
<translation type="unfinished">Текстуры - выгрузка</translation> <translation>Текстуры - выгрузка</translation>
</message> </message>
<message> <message>
<source>Texture Mipmap</source> <source>Texture Mipmap</source>
<translation type="unfinished">Текстуры - мипмамминг</translation> <translation>Текстуры - мипмамминг</translation>
</message> </message>
<message> <message>
<source>Texture Delete</source> <source>Texture Delete</source>
<translation type="unfinished">Текстуры - удаление</translation> <translation>Текстуры - удаление</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -20738,7 +20726,7 @@ Ids must begin with a lowercase letter.</source>
<translation>Выбор особого каталога настроек</translation> <translation>Выбор особого каталога настроек</translation>
</message> </message>
<message> <message>
<source>Config Path:</source> <source>Config path:</source>
<translation>Путь к настройкам:</translation> <translation>Путь к настройкам:</translation>
</message> </message>
<message> <message>
@@ -21801,6 +21789,10 @@ Ids must begin with a lowercase letter.</source>
<source>Name of current build</source> <source>Name of current build</source>
<translation>Имя текущей сборки</translation> <translation>Имя текущей сборки</translation>
</message> </message>
<message>
<source>The currently active run configuration&apos;s name.</source>
<translation>Имя текущей активной конфигурации запуска.</translation>
</message>
</context> </context>
<context> <context>
<name>ProjectExplorer::AbiWidget</name> <name>ProjectExplorer::AbiWidget</name>
@@ -21833,7 +21825,7 @@ Ids must begin with a lowercase letter.</source>
</message> </message>
<message> <message>
<source>The process &quot;%1&quot; crashed.</source> <source>The process &quot;%1&quot; crashed.</source>
<translation>Процесс «%1» завершился крахом.</translation> <translation>Процесс «%1» завершился аварийно.</translation>
</message> </message>
<message> <message>
<source>Could not start process &quot;%1&quot; %2</source> <source>Could not start process &quot;%1&quot; %2</source>
@@ -21984,7 +21976,7 @@ Ids must begin with a lowercase letter.</source>
</message> </message>
<message> <message>
<source>The process crashed.</source> <source>The process crashed.</source>
<translation>Процесс завершился крахом.</translation> <translation>Процесс аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>The process returned exit code %1: <source>The process returned exit code %1:
@@ -22504,7 +22496,7 @@ Ids must begin with a lowercase letter.</source>
</message> </message>
<message> <message>
<source>Remote process crashed: %1</source> <source>Remote process crashed: %1</source>
<translation>Внешний процесс завершился крахом: %1</translation> <translation>Внешний процесс аварийно завершился: %1</translation>
</message> </message>
<message> <message>
<source>Remote process failed; exit code was %1.</source> <source>Remote process failed; exit code was %1.</source>
@@ -23482,8 +23474,8 @@ Ids must begin with a lowercase letter.</source>
<translation>Запускается %1...</translation> <translation>Запускается %1...</translation>
</message> </message>
<message> <message>
<source>%1 crashed</source> <source>%1 crashed.</source>
<translation>%1 завершился крахом</translation> <translation>%1 аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>%1 exited with code %2</source> <source>%1 exited with code %2</source>
@@ -25874,6 +25866,10 @@ Please close all running instances of your application before starting a build.<
<source>The name of the currently active kit.</source> <source>The name of the currently active kit.</source>
<translation>Название активного комплекта.</translation> <translation>Название активного комплекта.</translation>
</message> </message>
<message>
<source>The currently active run configuration&apos;s name.</source>
<translation>Имя текущей активной конфигурации запуска.</translation>
</message>
<message> <message>
<source>Cancel Build &amp;&amp; Unload</source> <source>Cancel Build &amp;&amp; Unload</source>
<translation>Отменить сборку и выгрузить</translation> <translation>Отменить сборку и выгрузить</translation>
@@ -26411,6 +26407,10 @@ These files are preserved.</source>
</context> </context>
<context> <context>
<name>ProjectExplorer::SshDeviceProcess</name> <name>ProjectExplorer::SshDeviceProcess</name>
<message>
<source>Internal error</source>
<translation>Внутренняя ошибка</translation>
</message>
<message> <message>
<source>Failed to kill remote process: %1</source> <source>Failed to kill remote process: %1</source>
<translation>Не удалось завершить удалённый процесс: %1</translation> <translation>Не удалось завершить удалённый процесс: %1</translation>
@@ -26436,7 +26436,7 @@ These files are preserved.</source>
</message> </message>
<message> <message>
<source>Error: Process listing command crashed: %1</source> <source>Error: Process listing command crashed: %1</source>
<translation>Ошибка: Команда вывода списка завершилась крахом: %1</translation> <translation>Ошибка: Команда вывода списка аварийно завершилась: %1</translation>
</message> </message>
<message> <message>
<source>Process listing command failed with exit code %1.</source> <source>Process listing command failed with exit code %1.</source>
@@ -26696,7 +26696,7 @@ These files are preserved.</source>
</message> </message>
<message> <message>
<source>%1 crashed</source> <source>%1 crashed</source>
<translation>%1 завершился крахом</translation> <translation>%1 аварийно завершился</translation>
</message> </message>
<message> <message>
<source>%1 exited with code %2</source> <source>%1 exited with code %2</source>
@@ -26839,15 +26839,15 @@ Maybe raise the timeout?</source>
<translation>Ожидается целочисленный элемент.</translation> <translation>Ожидается целочисленный элемент.</translation>
</message> </message>
<message> <message>
<source>An error occurred with the clang static analyzer process.</source> <source>An error occurred with the Clang Static Analyzer process.</source>
<translation>Возникла ошибка при статическом анализе Clang.</translation> <translation>Возникла ошибка при статическом анализе Clang.</translation>
</message> </message>
<message> <message>
<source>Clang static analyzer crashed.</source> <source>Clang Static Analyzer crashed.</source>
<translation>Статический анализ Clang завершился крахом.</translation> <translation>Статический анализ Clang аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>Clang static analyzer finished with exit code: %1.</source> <source>Clang Static Analyzer finished with exit code: %1.</source>
<translation>Статический анализ Clang завершился с кодом %1.</translation> <translation>Статический анализ Clang завершился с кодом %1.</translation>
</message> </message>
<message> <message>
@@ -26873,7 +26873,7 @@ Output:
</message> </message>
<message> <message>
<source>The SFTP server crashed: %1.</source> <source>The SFTP server crashed: %1.</source>
<translation>Сервер SFTP завершился крахом: %1.</translation> <translation>Сервер SFTP аварийно завершился: %1.</translation>
</message> </message>
<message> <message>
<source>Unexpected packet of type %1.</source> <source>Unexpected packet of type %1.</source>
@@ -27598,6 +27598,10 @@ Output:
<source>Parsing of .qbs files has failed.</source> <source>Parsing of .qbs files has failed.</source>
<translation>Не удалось обработать файлы .qbs.</translation> <translation>Не удалось обработать файлы .qbs.</translation>
</message> </message>
<message>
<source>Error retrieving run environment: %1</source>
<translation>Не удалось получить среду запуска: %1</translation>
</message>
<message> <message>
<source>Qbs Run Configuration</source> <source>Qbs Run Configuration</source>
<translation>Конфигурация выполнения Qbs</translation> <translation>Конфигурация выполнения Qbs</translation>
@@ -28941,8 +28945,8 @@ Neither the path to the library nor the path to its includes is added to the .pr
<translation>Формы</translation> <translation>Формы</translation>
</message> </message>
<message> <message>
<source>StateCharts</source> <source>State charts</source>
<translation type="unfinished">Диаграммы состояний</translation> <translation>Диаграммы состояний</translation>
</message> </message>
<message> <message>
<source>Resources</source> <source>Resources</source>
@@ -29457,7 +29461,7 @@ Neither the path to the library nor the path to its includes is added to the .pr
</message> </message>
<message> <message>
<source>Qt Quick emulation layer crashed</source> <source>Qt Quick emulation layer crashed</source>
<translation>Слой эмуляции Qt Quick завершился крахом</translation> <translation>Слой эмуляции Qt Quick аварийно завершился</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -29709,17 +29713,17 @@ Neither the path to the library nor the path to its includes is added to the .pr
<source>Show property editor warnings</source> <source>Show property editor warnings</source>
<translation>Показывать предупреждения редактора свойств</translation> <translation>Показывать предупреждения редактора свойств</translation>
</message> </message>
<message>
<source>Forward puppet output:</source>
<translation>Перенаправление вывода:</translation>
</message>
<message> <message>
<source>Show warn exceptions</source> <source>Show warn exceptions</source>
<translation>Предупреждающие исключения</translation> <translation>Предупреждающие исключения</translation>
</message> </message>
<message> <message>
<source>Debug puppet:</source> <source>Forward QML emulation layer output:</source>
<translation>Отладка эмулятора:</translation> <translation>Перенаправление вывода эмулятора QML:</translation>
</message>
<message>
<source>Debug QML emulation layer:</source>
<translation>Отладка эмулятора QML:</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -29822,11 +29826,11 @@ This is independent of the visibility property in QML.</source>
</message> </message>
<message> <message>
<source>QML Emulation Layer (QML Puppet) Crashed</source> <source>QML Emulation Layer (QML Puppet) Crashed</source>
<translation>Слой эмуляции QML (QML Puppet) завершился крахом</translation> <translation>Слой эмуляции QML (QML Puppet) аварийно завершился</translation>
</message> </message>
<message> <message>
<source>You are recording a puppet stream and the emulations layer crashed. It is recommended to reopen the Qt Quick Designer and start again.</source> <source>You are recording a puppet stream and the emulations layer crashed. It is recommended to reopen the Qt Quick Designer and start again.</source>
<translation>Эмуляция завершилась крахом при записи puppet-потока. Рекомендуется переоткрыть Qt Quick Designer и запустить запись снова.</translation> <translation>Эмуляция аварийно завершилась при записи puppet-потока. Рекомендуется переоткрыть Qt Quick Designer и запустить запись снова.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -31687,13 +31691,21 @@ references to elements in other files, loops, and so on.)</source>
<translation>Профайлер QML (внешний)</translation> <translation>Профайлер QML (внешний)</translation>
</message> </message>
<message> <message>
<source>A Qml Profiler analysis is still in progress.</source> <source>A QML Profiler analysis is still in progress.</source>
<translation>Выполняется профилирование QML.</translation> <translation>Выполняется профилирование QML.</translation>
</message> </message>
<message> <message>
<source>Start Qml Profiler analysis.</source> <source>Start QML Profiler analysis.</source>
<translation>Начать профилирование QML.</translation> <translation>Начать профилирование QML.</translation>
</message> </message>
<message>
<source>Disable Profiling</source>
<translation>Отключить профилирование</translation>
</message>
<message>
<source>Enable Profiling</source>
<translation>Включить профилирование</translation>
</message>
<message> <message>
<source>%1 s</source> <source>%1 s</source>
<translation>%1 сек</translation> <translation>%1 сек</translation>
@@ -31734,14 +31746,6 @@ Do you want to save the data first?</source>
<source>Hide or show event categories.</source> <source>Hide or show event categories.</source>
<translation>Показ или скрытие категорий событий.</translation> <translation>Показ или скрытие категорий событий.</translation>
</message> </message>
<message>
<source>Disable profiling</source>
<translation>Отключить профилирование</translation>
</message>
<message>
<source>Enable profiling</source>
<translation>Включить профилирование</translation>
</message>
</context> </context>
<context> <context>
<name>QmlProfiler::Internal::QmlProfilerTraceView</name> <name>QmlProfiler::Internal::QmlProfilerTraceView</name>
@@ -32078,12 +32082,12 @@ Do you want to save the data first?</source>
<context> <context>
<name>QmlProfilerExtension::Internal::QmlProfilerExtensionPlugin</name> <name>QmlProfilerExtension::Internal::QmlProfilerExtensionPlugin</name>
<message> <message>
<source>Action triggered</source> <source>Action Triggered</source>
<translation>Действие сработало</translation> <translation>Действие сработало</translation>
</message> </message>
<message> <message>
<source>This is an action from QmlProfilerExtension.</source> <source>This is an action from QML Profiler Extension.</source>
<translation>Это действие из QmlProfilerExtension.</translation> <translation>Это действие из расширения QML Profiler.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -33765,6 +33769,10 @@ In addition, device connectivity will be tested.</source>
</context> </context>
<context> <context>
<name>RemoteLinux::Internal::RemoteLinuxEnvironmentReader</name> <name>RemoteLinux::Internal::RemoteLinuxEnvironmentReader</name>
<message>
<source>Error: No device</source>
<translation>Ошибка: Нет устройства</translation>
</message>
<message> <message>
<source>Error: %1</source> <source>Error: %1</source>
<translation>Ошибка: %1</translation> <translation>Ошибка: %1</translation>
@@ -33872,7 +33880,7 @@ In addition, device connectivity will be tested.</source>
</message> </message>
<message> <message>
<source>Remote process crashed.</source> <source>Remote process crashed.</source>
<translation>Удалённый процесс завершился крахом.</translation> <translation>Удалённый процесс аварийно завершился.</translation>
</message> </message>
<message> <message>
<source>Unexpected output from remote process: &quot;%1&quot;</source> <source>Unexpected output from remote process: &quot;%1&quot;</source>
@@ -37470,8 +37478,8 @@ Will not be applied to whitespace in comments and strings.</source>
<translation>Удалить</translation> <translation>Удалить</translation>
</message> </message>
<message> <message>
<source>To-Do Settings</source> <source>To-Do</source>
<translation>Настройки To-Do</translation> <translation>To-Do</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -38789,7 +38797,7 @@ Will not be applied to whitespace in comments and strings.</source>
<context> <context>
<name>Valgrind::Internal::CallgrindTool</name> <name>Valgrind::Internal::CallgrindTool</name>
<message> <message>
<source>Valgrind Function Profile uses the Callgrind tool to record function calls when a program runs.</source> <source>Valgrind Function Profiler uses the Callgrind tool to record function calls when a program runs.</source>
<translation>Профайлер функций Valgrind использует утилиту Callgrind для записи вызовов функций при работе программы.</translation> <translation>Профайлер функций Valgrind использует утилиту Callgrind для записи вызовов функций при работе программы.</translation>
</message> </message>
<message> <message>
@@ -38869,9 +38877,17 @@ Will not be applied to whitespace in comments and strings.</source>
<translation>Цены, относительные к родительской</translation> <translation>Цены, относительные к родительской</translation>
</message> </message>
<message> <message>
<source>Show costs relative to parent functions inclusive cost.</source> <source>Show costs relative to parent function&apos;s inclusive cost.</source>
<translation>Показывать цены относительно общей цены вызвавшей функции.</translation> <translation>Показывать цены относительно общей цены вызвавшей функции.</translation>
</message> </message>
<message>
<source>Remove template parameter lists when displaying function names.</source>
<translation>Убирать списки шаблонных параметров при отображении имён функций.</translation>
</message>
<message>
<source>Select This Function in the Analyzer Output</source>
<translation>Выбрать эту функцию в выводе анализатора</translation>
</message>
<message> <message>
<source>Cost Format</source> <source>Cost Format</source>
<translation>Формат цены</translation> <translation>Формат цены</translation>
@@ -38880,10 +38896,6 @@ Will not be applied to whitespace in comments and strings.</source>
<source>Enable cycle detection to properly handle recursive or circular function calls.</source> <source>Enable cycle detection to properly handle recursive or circular function calls.</source>
<translation>Включить определение циклов для корректной обработки рекурсивных и циклических вызовов.</translation> <translation>Включить определение циклов для корректной обработки рекурсивных и циклических вызовов.</translation>
</message> </message>
<message>
<source>This removes template parameter lists when displaying function names.</source>
<translation>Убирает списки шаблонных параметров при отображении имён функций.</translation>
</message>
<message> <message>
<source>Show Project Costs Only</source> <source>Show Project Costs Only</source>
<translation>Показать только цены проекта</translation> <translation>Показать только цены проекта</translation>
@@ -38924,10 +38936,6 @@ Will not be applied to whitespace in comments and strings.</source>
<source>Parsing failed.</source> <source>Parsing failed.</source>
<translation>Не удалось обработать.</translation> <translation>Не удалось обработать.</translation>
</message> </message>
<message>
<source>Select this Function in the Analyzer Output</source>
<translation>Выберите эту функцию в выводе анализатора</translation>
</message>
<message> <message>
<source>Populating...</source> <source>Populating...</source>
<translation>Заполнение...</translation> <translation>Заполнение...</translation>

View File

@@ -191,10 +191,10 @@ const StringLiteral *Symbol::fileId() const
} }
const char *Symbol::fileName() const const char *Symbol::fileName() const
{ return fileId()->chars(); } { return _fileId ? _fileId->chars() : ""; }
unsigned Symbol::fileNameLength() const unsigned Symbol::fileNameLength() const
{ return fileId()->size(); } { return _fileId ? _fileId->size() : 0; }
const Name *Symbol::unqualifiedName() const const Name *Symbol::unqualifiedName() const
{ {

View File

@@ -233,12 +233,12 @@ void ConnectionClient::printLocalSocketError(QLocalSocket::LocalSocketError sock
void ConnectionClient::printStandardOutput() void ConnectionClient::printStandardOutput()
{ {
QTextStream(stdout) << stdOutPrefixer.prefix(process_->readAllStandardOutput()); qDebug("%s", stdOutPrefixer.prefix(process_->readAllStandardOutput()).constData());
} }
void ConnectionClient::printStandardError() void ConnectionClient::printStandardError()
{ {
QTextStream(stderr) << stdErrPrefixer.prefix(process_->readAllStandardError()); qDebug("%s", stdErrPrefixer.prefix(process_->readAllStandardError()).constData());
} }
void ConnectionClient::finishProcess() void ConnectionClient::finishProcess()

View File

@@ -2852,16 +2852,14 @@ static inline bool dumpQSharedPointer(const SymbolGroupValue &v, std::wostream &
str << L"(null)"; str << L"(null)";
return true; return true;
} }
std::ostringstream namestr;
namestr << "*(" << SymbolGroupValue::stripClassPrefixes(value.type()) << ")("
<< std::showbase << std::hex << value.pointerValue() << ')';
SymbolGroupNode *valueNode
= v.node()->symbolGroup()->addSymbol(v.module(), namestr.str(), std::string(), &std::string());
if (!valueNode)
return false;
str << valueNode->simpleDumpValue(v.context(), encoding); if (knownType(value.type(), KnownTypeAutoStripPointer | KnownTypeHasClassPrefix)
return true; & KT_HasSimpleDumper) {
str << value.node()->simpleDumpValue(v.context(), encoding);
return true;
}
return false;
} }
} }

View File

@@ -434,6 +434,8 @@ static bool checkQmlDocumentForTestCode(QFutureInterface<TestParseResult> future
const QmlJS::Document::Ptr &qmlJSDoc, const QmlJS::Document::Ptr &qmlJSDoc,
const QString &proFile = QString()) const QString &proFile = QString())
{ {
if (qmlJSDoc.isNull())
return false;
QmlJS::AST::Node *ast = qmlJSDoc->ast(); QmlJS::AST::Node *ast = qmlJSDoc->ast();
QTC_ASSERT(ast, return false); QTC_ASSERT(ast, return false);
TestQmlVisitor qmlVisitor(qmlJSDoc); TestQmlVisitor qmlVisitor(qmlJSDoc);

View File

@@ -137,6 +137,13 @@ TestOutputReader::TestOutputReader(const QFutureInterface<TestResultPtr> &future
, m_buildDir(buildDirectory) , m_buildDir(buildDirectory)
{ {
connect(m_testApplication, &QProcess::readyRead, this, &TestOutputReader::processOutput); connect(m_testApplication, &QProcess::readyRead, this, &TestOutputReader::processOutput);
connect(m_testApplication, &QProcess::readyReadStandardError,
this, &TestOutputReader::processStdError);
}
void TestOutputReader::processStdError()
{
qWarning() << "Ignored plain output:" << m_testApplication->readAllStandardError();
} }
QtTestOutputReader::QtTestOutputReader(const QFutureInterface<TestResultPtr> &futureInterface, QtTestOutputReader::QtTestOutputReader(const QFutureInterface<TestResultPtr> &futureInterface,

View File

@@ -48,6 +48,7 @@ public:
protected: protected:
virtual void processOutput() = 0; virtual void processOutput() = 0;
virtual void processStdError();
QFutureInterface<TestResultPtr> m_futureInterface; QFutureInterface<TestResultPtr> m_futureInterface;
QProcess *m_testApplication; // not owned QProcess *m_testApplication; // not owned
QString m_buildDir; QString m_buildDir;

View File

@@ -137,7 +137,6 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface,
} }
QProcess testProcess; QProcess testProcess;
testProcess.setReadChannelMode(QProcess::MergedChannels);
testProcess.setReadChannel(QProcess::StandardOutput); testProcess.setReadChannel(QProcess::StandardOutput);
futureInterface.setProgressRange(0, testCaseCount); futureInterface.setProgressRange(0, testCaseCount);
@@ -221,6 +220,10 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface,
eventLoop.processEvents(); eventLoop.processEvents();
} }
} }
if (testProcess.exitStatus() == QProcess::CrashExit) {
futureInterface.reportResult(TestResultPtr(new FaultyTestResult(Result::MessageFatal,
QString::fromLatin1("Test for project \"%1\" crashed.").arg(testConfiguration->displayName()))));
}
if (canceledByTimeout) { if (canceledByTimeout) {
if (testProcess.state() != QProcess::NotRunning) { if (testProcess.state() != QProcess::NotRunning) {

View File

@@ -631,7 +631,7 @@ void TestTreeModel::markForRemoval(const QString &filePath)
TestTreeItem *child = root->childItem(childRow); TestTreeItem *child = root->childItem(childRow);
// Qt + named Quick Tests // Qt + named Quick Tests
if (child->filePath() == filePath) { if (child->filePath() == filePath) {
child->markForRemoval(true); child->markForRemovalRecursively(true);
} else { } else {
// unnamed Quick Tests and GTest and Qt Tests with separated source/header // unnamed Quick Tests and GTest and Qt Tests with separated source/header
int grandChildRow = child->childCount() - 1; int grandChildRow = child->childCount() - 1;

View File

@@ -82,7 +82,7 @@ bool TestVisitor::visit(CPlusPlus::Class *symbol)
CPlusPlus::Function *functionDefinition = m_symbolFinder.findMatchingDefinition( CPlusPlus::Function *functionDefinition = m_symbolFinder.findMatchingDefinition(
func, CppTools::CppModelManager::instance()->snapshot(), true); func, CppTools::CppModelManager::instance()->snapshot(), true);
if (functionDefinition) { if (functionDefinition && functionDefinition->fileId()) {
locationAndType.m_name = QString::fromUtf8(functionDefinition->fileName()); locationAndType.m_name = QString::fromUtf8(functionDefinition->fileName());
locationAndType.m_line = functionDefinition->line(); locationAndType.m_line = functionDefinition->line();
locationAndType.m_column = functionDefinition->column() - 1; locationAndType.m_column = functionDefinition->column() - 1;

View File

@@ -37,6 +37,7 @@
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
#include <projectexplorer/session.h> #include <projectexplorer/session.h>
#include <texteditor/texteditor.h> #include <texteditor/texteditor.h>
#include <utils/icon.h>
#include <utils/tooltip/tooltip.h> #include <utils/tooltip/tooltip.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/checkablemessagebox.h> #include <utils/checkablemessagebox.h>
@@ -318,7 +319,8 @@ void BookmarkView::gotoBookmark(const QModelIndex &index)
//// ////
BookmarkManager::BookmarkManager() : BookmarkManager::BookmarkManager() :
m_bookmarkIcon(QLatin1String(":/bookmarks/images/bookmark.png")), m_bookmarkIcon(Utils::Icon({{QLatin1String(":/bookmarks/images/bookmark.png"),
Theme::Bookmarks_TextMarkColor}}, Icon::Tint).pixmap()),
m_selectionModel(new QItemSelectionModel(this, this)) m_selectionModel(new QItemSelectionModel(this, this))
{ {
connect(ICore::instance(), &ICore::contextChanged, connect(ICore::instance(), &ICore::contextChanged,

View File

@@ -1,5 +1,6 @@
<RCC> <RCC>
<qresource prefix="/bookmarks" > <qresource prefix="/bookmarks" >
<file>images/bookmark.png</file> <file>images/bookmark.png</file>
<file>images/bookmark@2x.png</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 913 B

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

View File

@@ -197,7 +197,7 @@ const char SETTINGS_ID_MIMETYPES[] = "E.MimeTypes";
const char SETTINGS_DEFAULTTEXTENCODING[] = "General/DefaultFileEncoding"; const char SETTINGS_DEFAULTTEXTENCODING[] = "General/DefaultFileEncoding";
const char SETTINGS_THEME[] = "Core/CreatorTheme"; const char SETTINGS_THEME[] = "Core/CreatorTheme";
const char DEFAULT_THEME[] = "default"; const char DEFAULT_THEME[] = "flat";
const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)"); const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)");

View File

@@ -27,8 +27,9 @@
#include "locatorfiltersfilter.h" #include "locatorfiltersfilter.h"
#include "locatorwidget.h" #include "locatorwidget.h"
#include <coreplugin/coreicons.h> #include <utils/icon.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/theme/theme.h>
using namespace Core; using namespace Core;
using namespace Core::Internal; using namespace Core::Internal;
@@ -39,7 +40,8 @@ LocatorFiltersFilter::LocatorFiltersFilter(Locator *plugin,
LocatorWidget *locatorWidget): LocatorWidget *locatorWidget):
m_plugin(plugin), m_plugin(plugin),
m_locatorWidget(locatorWidget), m_locatorWidget(locatorWidget),
m_icon(Icons::NEXT.icon()) m_icon(Utils::Icon({{QLatin1String(":/core/images/next.png"), Utils::Theme::IconsWarningColor}},
Utils::Icon::Tint).pixmap())
{ {
setId("FiltersFilter"); setId("FiltersFilter");
setDisplayName(tr("Available filters")); setDisplayName(tr("Available filters"));

View File

@@ -245,7 +245,10 @@ QPalette panelPalette(const QPalette &oldPalette, bool lightColored = false)
pal.setBrush(QPalette::All, QPalette::WindowText, color); pal.setBrush(QPalette::All, QPalette::WindowText, color);
pal.setBrush(QPalette::All, QPalette::ButtonText, color); pal.setBrush(QPalette::All, QPalette::ButtonText, color);
pal.setBrush(QPalette::All, QPalette::Foreground, color); pal.setBrush(QPalette::All, QPalette::Foreground, color);
color.setAlpha(100); if (lightColored)
color.setAlpha(100);
else
color = creatorTheme()->color(Theme::IconsDisabledColor);
pal.setBrush(QPalette::Disabled, QPalette::WindowText, color); pal.setBrush(QPalette::Disabled, QPalette::WindowText, color);
pal.setBrush(QPalette::Disabled, QPalette::ButtonText, color); pal.setBrush(QPalette::Disabled, QPalette::ButtonText, color);
pal.setBrush(QPalette::Disabled, QPalette::Foreground, color); pal.setBrush(QPalette::Disabled, QPalette::Foreground, color);
@@ -740,9 +743,9 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
painter->setPen(StyleHelper::toolBarDropShadowColor()); painter->setPen(StyleHelper::toolBarDropShadowColor());
painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text); painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text);
} }
if (!(option->state & State_Enabled)) painter->setPen(creatorTheme()->color((option->state & State_Enabled)
painter->setOpacity(0.8); ? Theme::ComboBoxTextColor
painter->setPen(creatorTheme()->color(Theme::ComboBoxTextColor)); : Theme::IconsDisabledColor));
painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text); painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text);
painter->restore(); painter->restore();

View File

@@ -157,10 +157,12 @@ void ClangDiagnosticConfigsWidget::syncConfigChooserToModel(const Core::Id &conf
connectConfigChooserCurrentIndex(); connectConfigChooserCurrentIndex();
if (configToSelectIndex != -1) if (configToSelectIndex != -1) {
m_ui->configChooserComboBox->setCurrentIndex(configToSelectIndex); m_ui->configChooserComboBox->setCurrentIndex(configToSelectIndex);
else if (previousCurrentIndex != m_ui->configChooserComboBox->currentIndex()) } else if (previousCurrentIndex != m_ui->configChooserComboBox->currentIndex()) {
syncOtherWidgetsToComboBox();
emit currentConfigChanged(currentConfigId()); emit currentConfigChanged(currentConfigId());
}
} }
void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox() void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox()

View File

@@ -733,6 +733,7 @@ PROPERTY(QString, functionName, setFunctionName)
PROPERTY(BreakpointType, type, setType) PROPERTY(BreakpointType, type, setType)
PROPERTY(int, threadSpec, setThreadSpec) PROPERTY(int, threadSpec, setThreadSpec)
PROPERTY(QByteArray, condition, setCondition) PROPERTY(QByteArray, condition, setCondition)
PROPERTY(QString, command, setCommand)
PROPERTY(quint64, address, setAddress) PROPERTY(quint64, address, setAddress)
PROPERTY(QString, expression, setExpression) PROPERTY(QString, expression, setExpression)
PROPERTY(QString, message, setMessage) PROPERTY(QString, message, setMessage)
@@ -757,6 +758,7 @@ void Breakpoint::addToCommand(DebuggerCommand *cmd) const
cmd->arg("type", type()); cmd->arg("type", type());
cmd->arg("ignorecount", ignoreCount()); cmd->arg("ignorecount", ignoreCount());
cmd->arg("condition", condition().toHex()); cmd->arg("condition", condition().toHex());
cmd->arg("command", command().toUtf8().toHex());
cmd->arg("function", functionName().toUtf8()); cmd->arg("function", functionName().toUtf8());
cmd->arg("oneshot", isOneShot()); cmd->arg("oneshot", isOneShot());
cmd->arg("enabled", isEnabled()); cmd->arg("enabled", isEnabled());

View File

@@ -112,6 +112,8 @@ public:
QString expression() const; QString expression() const;
void setExpression(const QString &expression); void setExpression(const QString &expression);
QString message() const; QString message() const;
QString command() const;
void setCommand(const QString &command);
void setMessage(const QString &m); void setMessage(const QString &m);
BreakpointType type() const; BreakpointType type() const;
void setType(const BreakpointType &type); void setType(const BreakpointType &type);

View File

@@ -282,6 +282,7 @@ public slots:
void resetLocation() void resetLocation()
{ {
m_lookupRequests.clear();
m_locationTimer.stop(); m_locationTimer.stop();
m_locationMark.reset(); m_locationMark.reset();
m_stackHandler.resetLocation(); m_stackHandler.resetLocation();
@@ -337,6 +338,9 @@ public:
Utils::FileInProjectFinder m_fileFinder; Utils::FileInProjectFinder m_fileFinder;
QByteArray m_qtNamespace; QByteArray m_qtNamespace;
// Safety net to avoid infinite lookups.
QSet<QByteArray> m_lookupRequests; // FIXME: Integrate properly.
}; };
@@ -2022,6 +2026,23 @@ bool DebuggerEngine::canHandleToolTip(const DebuggerToolTipContext &context) con
void DebuggerEngine::updateItem(const QByteArray &iname) void DebuggerEngine::updateItem(const QByteArray &iname)
{ {
if (d->m_lookupRequests.contains(iname)) {
showMessage(QString::fromLatin1("IGNORING REPEATED REQUEST TO EXPAND " + iname));
WatchHandler *handler = watchHandler();
WatchItem *item = handler->findItem(iname);
if (!item->hasChildren()) {
handler->notifyUpdateStarted({iname});
item->setValue(decodeData({}, "notaccessible"));
item->setHasChildren(false);
item->outdated = false;
item->update();
handler->notifyUpdateFinished();
return;
}
// We could legitimately end up here after expanding + closing + re-expaning an item.
}
d->m_lookupRequests.insert(iname);
UpdateParameters params; UpdateParameters params;
params.partialVariable = iname; params.partialVariable = iname;
doUpdateLocals(params); doUpdateLocals(params);

View File

@@ -81,12 +81,16 @@ DebuggerMainWindow::~DebuggerMainWindow()
{ {
// As we have to setParent(0) on dock widget that are not selected, // As we have to setParent(0) on dock widget that are not selected,
// we keep track of all and make sure we don't leak any // we keep track of all and make sure we don't leak any
foreach (QDockWidget *dock, m_dockForDockId) {
if (dock && !dock->parentWidget())
delete dock;
}
foreach (const Perspective &perspective, m_perspectiveForPerspectiveId) { foreach (const Perspective &perspective, m_perspectiveForPerspectiveId) {
foreach (const Perspective::Operation &operation, perspective.operations()) { foreach (const Perspective::Operation &operation, perspective.operations()) {
if (operation.widget && !operation.widget->parentWidget()) { if (operation.widget && !operation.widget->parentWidget()) {
// These are from inactive perspectives. We call setParent(0) when deactivating // These are from perspectives that never got enabled. We've taken ownership for
// a perspective so that the widgets can't be accidentally enabled in the wrong // those, so we need to delete them.
// perspectives. That's why we have to delete them manually here.
delete operation.widget; delete operation.widget;
} }
} }
@@ -154,7 +158,7 @@ void DebuggerMainWindow::finalizeSetup()
hbox->addWidget(m_perspectiveChooser); hbox->addWidget(m_perspectiveChooser);
hbox->addWidget(m_controlsStackWidget); hbox->addWidget(m_controlsStackWidget);
hbox->addWidget(m_statusLabel); hbox->addWidget(m_statusLabel);
hbox->addStretch(); hbox->addStretch(1);
hbox->addWidget(new Utils::StyledSeparator); hbox->addWidget(new Utils::StyledSeparator);
hbox->addWidget(viewButton); hbox->addWidget(viewButton);

View File

@@ -966,6 +966,7 @@ public:
QIcon m_locationMarkIcon; QIcon m_locationMarkIcon;
QLabel *m_threadLabel = 0;
QComboBox *m_threadBox = 0; QComboBox *m_threadBox = 0;
BaseTreeView *m_breakView = 0; BaseTreeView *m_breakView = 0;
@@ -1686,13 +1687,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
cmd = ActionManager::registerAction(qmlSelectDummyAction, Constants::QML_SELECTTOOL); cmd = ActionManager::registerAction(qmlSelectDummyAction, Constants::QML_SELECTTOOL);
debugMenu->addAction(cmd); debugMenu->addAction(cmd);
auto qmlZoomDummyAction = new QAction(tr("Zoom"), this);
qmlZoomDummyAction->setCheckable(true);
qmlZoomDummyAction->setIcon(Core::Icons::ZOOM_TOOLBAR.icon());
qmlZoomDummyAction->setEnabled(false);
cmd = ActionManager::registerAction(qmlZoomDummyAction, Constants::QML_ZOOMTOOL);
debugMenu->addAction(cmd);
debugMenu->addSeparator(); debugMenu->addSeparator();
// Don't add '1' to the string as it shows up in the shortcut dialog. // Don't add '1' to the string as it shows up in the shortcut dialog.
@@ -1795,7 +1789,9 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
} }
toolbar.addWidget(new StyledSeparator); toolbar.addWidget(new StyledSeparator);
toolbar.addWidget(new QLabel(tr("Threads:")));
m_threadLabel = new QLabel(tr("Threads:"));
toolbar.addWidget(m_threadLabel);
m_threadBox = new QComboBox; m_threadBox = new QComboBox;
m_threadBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); m_threadBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
@@ -1810,7 +1806,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
// qmlToolbar.addAction(qmlShowAppOnTopDummyAction); // qmlToolbar.addAction(qmlShowAppOnTopDummyAction);
// qmlToolbar.addWidget(new StyledSeparator); // qmlToolbar.addWidget(new StyledSeparator);
// qmlToolbar.addAction(qmlSelectDummyAction); // qmlToolbar.addAction(qmlSelectDummyAction);
// qmlToolbar.addAction(qmlZoomDummyAction);
// qmlToolbar.addWidget(new StyledSeparator); // qmlToolbar.addWidget(new StyledSeparator);
Perspective basePerspective({}, { Perspective basePerspective({}, {
@@ -2380,6 +2375,7 @@ void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine)
engine->watchHandler()->resetWatchers(); engine->watchHandler()->resetWatchers();
m_localsView->hideProgressIndicator(); m_localsView->hideProgressIndicator();
updateActiveLanguages();
} }
static void changeFontSize(QWidget *widget, qreal size) static void changeFontSize(QWidget *widget, qreal size)
@@ -2498,6 +2494,8 @@ void DebuggerPluginPrivate::setInitialState()
action(AutoDerefPointers)->setEnabled(true); action(AutoDerefPointers)->setEnabled(true);
action(ExpandStack)->setEnabled(false); action(ExpandStack)->setEnabled(false);
m_threadLabel->setEnabled(false);
} }
void DebuggerPluginPrivate::updateState(DebuggerEngine *engine) void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
@@ -2595,6 +2593,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
m_attachToUnstartedApplication->setEnabled(true); m_attachToUnstartedApplication->setEnabled(true);
m_threadBox->setEnabled(state == InferiorStopOk || state == InferiorUnrunnable); m_threadBox->setEnabled(state == InferiorStopOk || state == InferiorUnrunnable);
m_threadLabel->setEnabled(m_threadBox->isEnabled());
const bool isCore = engine->runParameters().startMode == AttachCore; const bool isCore = engine->runParameters().startMode == AttachCore;
const bool stopped = state == InferiorStopOk; const bool stopped = state == InferiorStopOk;

View File

@@ -2233,7 +2233,7 @@ void GdbEngine::executeReturn()
setTokenBarrier(); setTokenBarrier();
notifyInferiorRunRequested(); notifyInferiorRunRequested();
showStatusMessage(tr("Immediate return from function requested..."), 5000); showStatusMessage(tr("Immediate return from function requested..."), 5000);
runCommand({"-exec-finish", RunRequest, CB(handleExecuteReturn)}); runCommand({"-exec-return", RunRequest, CB(handleExecuteReturn)});
} }
void GdbEngine::handleExecuteReturn(const DebuggerResponse &response) void GdbEngine::handleExecuteReturn(const DebuggerResponse &response)

View File

@@ -283,6 +283,10 @@ void LldbEngine::startLldbStage2()
m_lldbProc.write("script from lldbbridge import *\n"); m_lldbProc.write("script from lldbbridge import *\n");
m_lldbProc.write("script print(dir())\n"); m_lldbProc.write("script print(dir())\n");
m_lldbProc.write("script theDumper = Dumper()\n"); // This triggers reportState("enginesetupok") m_lldbProc.write("script theDumper = Dumper()\n"); // This triggers reportState("enginesetupok")
const QString commands = stringSetting(GdbStartupCommands);
if (!commands.isEmpty())
m_lldbProc.write(commands.toLocal8Bit());
} }
void LldbEngine::setupInferior() void LldbEngine::setupInferior()
@@ -895,6 +899,8 @@ void LldbEngine::handleStateNotification(const GdbMi &reportedState)
notifyInferiorRunOk(); notifyInferiorRunOk();
else if (newState == "inferiorrunfailed") else if (newState == "inferiorrunfailed")
notifyInferiorRunFailed(); notifyInferiorRunFailed();
else if (newState == "continueafternextstop")
m_continueAtNextSpontaneousStop = true;
else if (newState == "stopped") { else if (newState == "stopped") {
notifyInferiorSpontaneousStop(); notifyInferiorSpontaneousStop();
if (m_continueAtNextSpontaneousStop) { if (m_continueAtNextSpontaneousStop) {

View File

@@ -36,53 +36,51 @@
#include "branchadddialog.h" #include "branchadddialog.h"
#include "gerrit/gerritplugin.h" #include "gerrit/gerritplugin.h"
#include <vcsbase/submitfilemodel.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/idocument.h>
#include <coreplugin/vcsmanager.h>
#include <coreplugin/id.h> #include <coreplugin/id.h>
#include <coreplugin/idocument.h>
#include <coreplugin/iversioncontrol.h> #include <coreplugin/iversioncontrol.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/vcsmanager.h>
#include <utils/fileutils.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/synchronousprocess.h> #include <utils/synchronousprocess.h>
#include <utils/fileutils.h>
#include <vcsbase/vcscommand.h> #include <vcsbase/submitfilemodel.h>
#include <vcsbase/vcsbaseeditor.h> #include <vcsbase/vcsbaseeditor.h>
#include <vcsbase/vcsbaseeditorparameterwidget.h> #include <vcsbase/vcsbaseeditorparameterwidget.h>
#include <vcsbase/vcsoutputwindow.h>
#include <vcsbase/vcsbaseplugin.h> #include <vcsbase/vcsbaseplugin.h>
#include <vcsbase/vcscommand.h>
#include <vcsbase/vcsoutputwindow.h>
#include <diffeditor/diffeditorconstants.h> #include <diffeditor/diffeditorconstants.h>
#include <diffeditor/diffeditorcontroller.h> #include <diffeditor/diffeditorcontroller.h>
#include <diffeditor/diffutils.h> #include <diffeditor/diffutils.h>
#include <QAction>
#include <QCoreApplication> #include <QCoreApplication>
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
#include <QHash> #include <QHash>
#include <QRegExp>
#include <QSignalMapper>
#include <QTemporaryFile>
#include <QAction>
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#include <QPushButton> #include <QPushButton>
#include <QToolButton> #include <QRegExp>
#include <QTemporaryFile>
#include <QTextCodec> #include <QTextCodec>
#include <QToolButton>
static const char GIT_DIRECTORY[] = ".git"; const char GIT_DIRECTORY[] = ".git";
static const char graphLogFormatC[] = "%h %d %an %s %ci"; const char graphLogFormatC[] = "%h %d %an %s %ci";
static const char HEAD[] = "HEAD"; const char HEAD[] = "HEAD";
static const char CHERRY_PICK_HEAD[] = "CHERRY_PICK_HEAD"; const char CHERRY_PICK_HEAD[] = "CHERRY_PICK_HEAD";
static const char noColorOption[] = "--no-color"; const char noColorOption[] = "--no-color";
static const char decorateOption[] = "--decorate"; const char decorateOption[] = "--decorate";
static const char showFormatC[] = const char showFormatC[] =
"--pretty=format:commit %H%n" "--pretty=format:commit %H%n"
"Author: %an <%ae>, %ad (%ar)%n" "Author: %an <%ae>, %ad (%ar)%n"
"Committer: %cn <%ce>, %cd (%cr)%n" "Committer: %cn <%ce>, %cd (%cr)%n"

View File

@@ -40,9 +40,6 @@
#include <QWidget> #include <QWidget>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QCheckBox;
class QSignalMapper;
class QDebug;
class QProcessEnvironment; class QProcessEnvironment;
class QMenu; class QMenu;
QT_END_NAMESPACE QT_END_NAMESPACE

View File

@@ -159,7 +159,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_switchToHelp, cmd)); layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_switchToHelp, cmd));
} }
m_homeAction = new QAction(Icons::HOME.icon(), tr("Home"), this); m_homeAction = new QAction(Icons::HOME_TOOLBAR.icon(), tr("Home"), this);
cmd = Core::ActionManager::registerAction(m_homeAction, Constants::HELP_HOME, context); cmd = Core::ActionManager::registerAction(m_homeAction, Constants::HELP_HOME, context);
connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome); connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome);
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_homeAction, cmd)); layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_homeAction, cmd));
@@ -186,7 +186,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
button->setPopupMode(QToolButton::DelayedPopup); button->setPopupMode(QToolButton::DelayedPopup);
layout->addWidget(button); layout->addWidget(button);
m_addBookmarkAction = new QAction(Icons::BOOKMARK.icon(), tr("Add Bookmark"), this); m_addBookmarkAction = new QAction(Icons::BOOKMARK_TOOLBAR.icon(), tr("Add Bookmark"), this);
cmd = Core::ActionManager::registerAction(m_addBookmarkAction, Constants::HELP_ADDBOOKMARK, context); cmd = Core::ActionManager::registerAction(m_addBookmarkAction, Constants::HELP_ADDBOOKMARK, context);
cmd->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M"))); cmd->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M")));
connect(m_addBookmarkAction, &QAction::triggered, this, &HelpWidget::addBookmark); connect(m_addBookmarkAction, &QAction::triggered, this, &HelpWidget::addBookmark);

View File

@@ -151,6 +151,8 @@ void ImageViewer::ctor()
this, &ImageViewer::imageSizeUpdated); this, &ImageViewer::imageSizeUpdated);
connect(d->file.data(), &ImageViewerFile::openFinished, connect(d->file.data(), &ImageViewerFile::openFinished,
d->imageView, &ImageView::createScene); d->imageView, &ImageView::createScene);
connect(d->file.data(), &ImageViewerFile::openFinished,
this, &ImageViewer::updateToolButtons);
connect(d->file.data(), &ImageViewerFile::aboutToReload, connect(d->file.data(), &ImageViewerFile::aboutToReload,
d->imageView, &ImageView::reset); d->imageView, &ImageView::reset);
connect(d->file.data(), &ImageViewerFile::reloadFinished, connect(d->file.data(), &ImageViewerFile::reloadFinished,
@@ -159,12 +161,6 @@ void ImageViewer::ctor()
this, &ImageViewer::updatePauseAction); this, &ImageViewer::updatePauseAction);
connect(d->imageView, &ImageView::scaleFactorChanged, connect(d->imageView, &ImageView::scaleFactorChanged,
this, &ImageViewer::scaleFactorUpdate); this, &ImageViewer::scaleFactorUpdate);
connect(d->file.data(), &ImageViewerFile::openFinished,
this, [this](bool success)
{
d->ui_toolbar.toolButtonExportImage->setEnabled(success && d->file->type() == ImageViewerFile::TypeSvg);
});
} }
ImageViewer::~ImageViewer() ImageViewer::~ImageViewer()
@@ -188,6 +184,8 @@ Core::IEditor *ImageViewer::duplicate()
{ {
auto other = new ImageViewer(d->file); auto other = new ImageViewer(d->file);
other->d->imageView->createScene(); other->d->imageView->createScene();
other->updateToolButtons();
other->d->ui_toolbar.labelImageSize->setText(d->ui_toolbar.labelImageSize->text());
return other; return other;
} }
@@ -241,6 +239,12 @@ void ImageViewer::fitToScreen()
d->ui_toolbar.toolButtonFitToScreen->click(); d->ui_toolbar.toolButtonFitToScreen->click();
} }
void ImageViewer::updateToolButtons()
{
d->ui_toolbar.toolButtonExportImage->setEnabled(d->file->type() == ImageViewerFile::TypeSvg);
updatePauseAction();
}
void ImageViewer::togglePlay() void ImageViewer::togglePlay()
{ {
d->ui_toolbar.toolButtonPlayPause->click(); d->ui_toolbar.toolButtonPlayPause->click();
@@ -254,15 +258,13 @@ void ImageViewer::playToggled()
void ImageViewer::updatePauseAction() void ImageViewer::updatePauseAction()
{ {
bool isMovie = d->file->type() == ImageViewerFile::TypeMovie; bool isMovie = d->file->type() == ImageViewerFile::TypeMovie;
d->ui_toolbar.toolButtonPlayPause->setVisible(isMovie); if (isMovie && !d->file->isPaused()) {
if (isMovie) { d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation"));
if (d->file->isPaused()) { d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.icon());
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation")); } else {
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.pixmap()); d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation"));
} else { d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.icon());
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation")); d->ui_toolbar.toolButtonPlayPause->setEnabled(isMovie);
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.pixmap());
}
} }
} }

View File

@@ -65,6 +65,7 @@ public slots:
void zoomOut(); void zoomOut();
void resetToOriginalSize(); void resetToOriginalSize();
void fitToScreen(); void fitToScreen();
void updateToolButtons();
void togglePlay(); void togglePlay();
private slots: private slots:

View File

@@ -108,7 +108,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons
if (format.startsWith("svg")) { if (format.startsWith("svg")) {
m_tempSvgItem = new QGraphicsSvgItem(fileName); m_tempSvgItem = new QGraphicsSvgItem(fileName);
QRectF bound = m_tempSvgItem->boundingRect(); QRectF bound = m_tempSvgItem->boundingRect();
if (bound.width() == 0 && bound.height() == 0) { if (qFuzzyIsNull(bound.width()) && qFuzzyIsNull(bound.height())) {
delete m_tempSvgItem; delete m_tempSvgItem;
m_tempSvgItem = 0; m_tempSvgItem = 0;
if (errorString) if (errorString)
@@ -116,7 +116,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString, cons
return OpenResult::CannotHandle; return OpenResult::CannotHandle;
} }
m_type = TypeSvg; m_type = TypeSvg;
emit imageSizeChanged(QSize()); emit imageSizeChanged(m_tempSvgItem->boundingRect().size().toSize());
} else } else
#endif #endif
if (QMovie::supportedFormats().contains(format)) { if (QMovie::supportedFormats().contains(format)) {

View File

@@ -79,11 +79,7 @@ exists($$LLVM_INSTALL_DIR) {
isEmpty(IDE_PACKAGE_MODE) { isEmpty(IDE_PACKAGE_MODE) {
SUBDIRS += \ SUBDIRS += \
helloworld #\ helloworld
#updateinfo
#} else:!isEmpty(UPDATEINFO_ENABLE) {
# SUBDIRS += \
# updateinfo
} }
for(p, SUBDIRS) { for(p, SUBDIRS) {

View File

@@ -67,7 +67,7 @@ private:
void setJomVisible(bool); void setJomVisible(bool);
Ui::ProjectExplorerSettingsPageUi m_ui; Ui::ProjectExplorerSettingsPageUi m_ui;
QUuid m_environmentId; mutable ProjectExplorerSettings m_settings;
}; };
ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) : ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) :
@@ -97,39 +97,37 @@ void ProjectExplorerSettingsWidget::setJomVisible(bool v)
ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
{ {
ProjectExplorerSettings pes; m_settings.buildBeforeDeploy = m_ui.buildProjectBeforeDeployCheckBox->isChecked();
pes.buildBeforeDeploy = m_ui.buildProjectBeforeDeployCheckBox->isChecked(); m_settings.deployBeforeRun = m_ui.deployProjectBeforeRunCheckBox->isChecked();
pes.deployBeforeRun = m_ui.deployProjectBeforeRunCheckBox->isChecked(); m_settings.saveBeforeBuild = m_ui.saveAllFilesCheckBox->isChecked();
pes.saveBeforeBuild = m_ui.saveAllFilesCheckBox->isChecked(); m_settings.showCompilerOutput = m_ui.showCompileOutputCheckBox->isChecked();
pes.showCompilerOutput = m_ui.showCompileOutputCheckBox->isChecked(); m_settings.showRunOutput = m_ui.showRunOutputCheckBox->isChecked();
pes.showRunOutput = m_ui.showRunOutputCheckBox->isChecked(); m_settings.showDebugOutput = m_ui.showDebugOutputCheckBox->isChecked();
pes.showDebugOutput = m_ui.showDebugOutputCheckBox->isChecked(); m_settings.cleanOldAppOutput = m_ui.cleanOldAppOutputCheckBox->isChecked();
pes.cleanOldAppOutput = m_ui.cleanOldAppOutputCheckBox->isChecked(); m_settings.mergeStdErrAndStdOut = m_ui.mergeStdErrAndStdOutCheckBox->isChecked();
pes.mergeStdErrAndStdOut = m_ui.mergeStdErrAndStdOutCheckBox->isChecked(); m_settings.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked();
pes.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked(); m_settings.useJom = m_ui.jomCheckbox->isChecked();
pes.useJom = m_ui.jomCheckbox->isChecked(); m_settings.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked();
pes.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked(); m_settings.maxAppOutputLines = m_ui.maxAppOutputBox->value();
pes.maxAppOutputLines = m_ui.maxAppOutputBox->value(); m_settings.stopBeforeBuild = ProjectExplorerSettings::StopBeforeBuild(m_ui.stopBeforeBuildComboBox->currentIndex());
pes.environmentId = m_environmentId; return m_settings;
pes.stopBeforeBuild = ProjectExplorerSettings::StopBeforeBuild(m_ui.stopBeforeBuildComboBox->currentIndex());
return pes;
} }
void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings &pes) void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings &pes)
{ {
m_ui.buildProjectBeforeDeployCheckBox->setChecked(pes.buildBeforeDeploy); m_settings = pes;
m_ui.deployProjectBeforeRunCheckBox->setChecked(pes.deployBeforeRun); m_ui.buildProjectBeforeDeployCheckBox->setChecked(m_settings.buildBeforeDeploy);
m_ui.saveAllFilesCheckBox->setChecked(pes.saveBeforeBuild); m_ui.deployProjectBeforeRunCheckBox->setChecked(m_settings.deployBeforeRun);
m_ui.showCompileOutputCheckBox->setChecked(pes.showCompilerOutput); m_ui.saveAllFilesCheckBox->setChecked(m_settings.saveBeforeBuild);
m_ui.showRunOutputCheckBox->setChecked(pes.showRunOutput); m_ui.showCompileOutputCheckBox->setChecked(m_settings.showCompilerOutput);
m_ui.showDebugOutputCheckBox->setChecked(pes.showDebugOutput); m_ui.showRunOutputCheckBox->setChecked(m_settings.showRunOutput);
m_ui.cleanOldAppOutputCheckBox->setChecked(pes.cleanOldAppOutput); m_ui.showDebugOutputCheckBox->setChecked(m_settings.showDebugOutput);
m_ui.mergeStdErrAndStdOutCheckBox->setChecked(pes.mergeStdErrAndStdOut); m_ui.cleanOldAppOutputCheckBox->setChecked(m_settings.cleanOldAppOutput);
m_ui.wrapAppOutputCheckBox->setChecked(pes.wrapAppOutput); m_ui.mergeStdErrAndStdOutCheckBox->setChecked(m_settings.mergeStdErrAndStdOut);
m_ui.jomCheckbox->setChecked(pes.useJom); m_ui.wrapAppOutputCheckBox->setChecked(m_settings.wrapAppOutput);
m_ui.promptToStopRunControlCheckBox->setChecked(pes.prompToStopRunControl); m_ui.jomCheckbox->setChecked(m_settings.useJom);
m_ui.maxAppOutputBox->setValue(pes.maxAppOutputLines); m_ui.promptToStopRunControlCheckBox->setChecked(m_settings.prompToStopRunControl);
m_environmentId = pes.environmentId; m_ui.maxAppOutputBox->setValue(m_settings.maxAppOutputLines);
m_ui.stopBeforeBuildComboBox->setCurrentIndex(pes.stopBeforeBuild); m_ui.stopBeforeBuildComboBox->setCurrentIndex(pes.stopBeforeBuild);
} }

View File

@@ -843,10 +843,11 @@ QStringList QMakeStepConfig::toArguments() const
else if (archConfig == PPC64) else if (archConfig == PPC64)
arguments << QLatin1String("CONFIG+=ppc64"); arguments << QLatin1String("CONFIG+=ppc64");
// TODO: make that depend on the actual Qt version that is used
if (osType == IphoneSimulator) if (osType == IphoneSimulator)
arguments << QLatin1String("CONFIG+=iphonesimulator"); arguments << QLatin1String("CONFIG+=iphonesimulator") << QLatin1String("CONFIG+=simulator") /*since Qt 5.7*/;
else if (osType == IphoneOS) else if (osType == IphoneOS)
arguments << QLatin1String("CONFIG+=iphoneos"); arguments << QLatin1String("CONFIG+=iphoneos") << QLatin1String("CONFIG+=device") /*since Qt 5.7*/;
if (linkQmlDebuggingQQ2) if (linkQmlDebuggingQQ2)
arguments << QLatin1String("CONFIG+=qml_debug"); arguments << QLatin1String("CONFIG+=qml_debug");

View File

@@ -292,10 +292,8 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q
m_backendAnchorBinding.setup(qmlObjectNode.modelNode()); m_backendAnchorBinding.setup(qmlObjectNode.modelNode());
context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding); context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding);
context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data()); context()->setContextProperty(QLatin1String("transaction"), m_propertyEditorTransaction.data());
// model node // model node
m_backendModelNode.setup(qmlObjectNode.modelNode()); m_backendModelNode.setup(qmlObjectNode.modelNode());
context()->setContextProperty(QLatin1String("modelNodeBackend"), &m_backendModelNode); context()->setContextProperty(QLatin1String("modelNodeBackend"), &m_backendModelNode);

View File

@@ -148,9 +148,8 @@ void PropertyEditorValue::setValueWithEmit(const QVariant &value)
void PropertyEditorValue::setValue(const QVariant &value) void PropertyEditorValue::setValue(const QVariant &value)
{ {
if (!compareVariants(m_value, value) && if (!compareVariants(m_value, value) &&
!cleverDoubleCompare(value, m_value) && !cleverDoubleCompare(value, m_value) &&
!cleverColorCompare(value, m_value)) !cleverColorCompare(value, m_value))
m_value = value; m_value = value;
fixAmbigousColorNames(modelNode(), name(), &m_value); fixAmbigousColorNames(modelNode(), name(), &m_value);

View File

@@ -112,13 +112,18 @@ void QmlProfilerClientManager::setTcpConnection(QString host, Utils::Port port)
{ {
d->tcpHost = host; d->tcpHost = host;
d->tcpPort = port; d->tcpPort = port;
d->localSocket.clear();
disconnectClient(); disconnectClient();
// Wait for the application to announce the port before connecting.
} }
void QmlProfilerClientManager::setLocalSocket(QString file) void QmlProfilerClientManager::setLocalSocket(QString file)
{ {
d->localSocket = file; d->localSocket = file;
d->tcpHost.clear();
d->tcpPort = Utils::Port(); d->tcpPort = Utils::Port();
disconnectClient();
// We open the server and the application connects to it, so let's do that right away.
connectLocalClient(file); connectLocalClient(file);
} }

View File

@@ -101,7 +101,7 @@ QmlProfilerRunControl::QmlProfilerRunControl(RunConfiguration *runConfiguration,
QmlProfilerRunControl::~QmlProfilerRunControl() QmlProfilerRunControl::~QmlProfilerRunControl()
{ {
if (d->m_profilerState) if (d->m_running && d->m_profilerState)
stop(); stop();
delete d; delete d;
} }

View File

@@ -333,12 +333,13 @@ AnalyzerRunControl *QmlProfilerTool::createRunControl(RunConfiguration *runConfi
} }
auto runControl = new QmlProfilerRunControl(runConfiguration, this); auto runControl = new QmlProfilerRunControl(runConfiguration, this);
connect(runControl, &RunControl::finished, [this, runControl] { connect(runControl, &RunControl::finished, this, [this, runControl] {
d->m_toolBusy = false; d->m_toolBusy = false;
updateRunActions(); updateRunActions();
disconnect(d->m_stopAction, &QAction::triggered, runControl, &QmlProfilerRunControl::stop);
}); });
connect(d->m_stopAction, &QAction::triggered, runControl, [runControl] { runControl->stop(); }); connect(d->m_stopAction, &QAction::triggered, runControl, &QmlProfilerRunControl::stop);
updateRunActions(); updateRunActions();
return runControl; return runControl;

View File

@@ -124,27 +124,26 @@ class LinuxPortsGatheringMethod : public PortsGatheringMethod
{ {
QByteArray commandLine(QAbstractSocket::NetworkLayerProtocol protocol) const QByteArray commandLine(QAbstractSocket::NetworkLayerProtocol protocol) const
{ {
QString procFilePath; // We might encounter the situation that protocol is given IPv6
int addressLength; // but the consumer of the free port information decides to open
if (protocol == QAbstractSocket::IPv4Protocol) { // an IPv4(only) port. As a result the next IPv6 scan will
procFilePath = QLatin1String("/proc/net/tcp"); // report the port again as open (in IPv6 namespace), while the
addressLength = 8; // same port in IPv4 namespace might still be blocked, and
} else { // re-use of this port fails.
procFilePath = QLatin1String("/proc/net/tcp6"); // GDBserver behaves exactly like this.
addressLength = 32;
} Q_UNUSED(protocol)
return QString::fromLatin1("sed "
"'s/.*: [[:xdigit:]]\\{%1\\}:\\([[:xdigit:]]\\{4\\}\\).*/\\1/g' %2") // /proc/net/tcp* covers /proc/net/tcp and /proc/net/tcp6
.arg(addressLength).arg(procFilePath).toUtf8(); return "sed -e 's/.*: [[:xdigit:]]*:\\([[:xdigit:]]\\{4\\}\\).*/\\1/g' /proc/net/tcp*";
} }
QList<Utils::Port> usedPorts(const QByteArray &output) const QList<Utils::Port> usedPorts(const QByteArray &output) const
{ {
QList<Utils::Port> ports; QList<Utils::Port> ports;
QList<QByteArray> portStrings = output.split('\n'); QList<QByteArray> portStrings = output.split('\n');
portStrings.removeFirst();
foreach (const QByteArray &portString, portStrings) { foreach (const QByteArray &portString, portStrings) {
if (portString.isEmpty()) if (portString.size() != 4)
continue; continue;
bool ok; bool ok;
const Utils::Port port(portString.toInt(&ok, 16)); const Utils::Port port(portString.toInt(&ok, 16));

View File

@@ -63,14 +63,15 @@ BehaviorSettingsWidget::BehaviorSettingsWidget(QWidget *parent)
if (firstNonNegative != mibs.end()) if (firstNonNegative != mibs.end())
std::rotate(mibs.begin(), firstNonNegative, mibs.end()); std::rotate(mibs.begin(), firstNonNegative, mibs.end());
foreach (int mib, mibs) { foreach (int mib, mibs) {
QTextCodec *codec = QTextCodec::codecForMib(mib); if (QTextCodec *codec = QTextCodec::codecForMib(mib)) {
QString compoundName = QLatin1String(codec->name()); QString compoundName = QLatin1String(codec->name());
foreach (const QByteArray &alias, codec->aliases()) { foreach (const QByteArray &alias, codec->aliases()) {
compoundName += QLatin1String(" / "); compoundName += QLatin1String(" / ");
compoundName += QString::fromLatin1(alias); compoundName += QString::fromLatin1(alias);
}
d->m_ui.encodingBox->addItem(compoundName);
d->m_codecs.append(codec);
} }
d->m_ui.encodingBox->addItem(compoundName);
d->m_codecs.append(codec);
} }
// Qt5 doesn't list the system locale (QTBUG-34283), so add it manually // Qt5 doesn't list the system locale (QTBUG-34283), so add it manually

View File

@@ -370,6 +370,7 @@ public:
int extraAreaSelectionAnchorBlockNumber; int extraAreaSelectionAnchorBlockNumber;
int extraAreaToggleMarkBlockNumber; int extraAreaToggleMarkBlockNumber;
int extraAreaHighlightFoldedBlockNumber; int extraAreaHighlightFoldedBlockNumber;
int extraAreaPreviousMarkTooltipRequestedLine;
TextEditorOverlay *m_overlay; TextEditorOverlay *m_overlay;
TextEditorOverlay *m_snippetOverlay; TextEditorOverlay *m_snippetOverlay;
@@ -489,6 +490,7 @@ TextEditorWidgetPrivate::TextEditorWidgetPrivate(TextEditorWidget *parent)
extraAreaSelectionAnchorBlockNumber(-1), extraAreaSelectionAnchorBlockNumber(-1),
extraAreaToggleMarkBlockNumber(-1), extraAreaToggleMarkBlockNumber(-1),
extraAreaHighlightFoldedBlockNumber(-1), extraAreaHighlightFoldedBlockNumber(-1),
extraAreaPreviousMarkTooltipRequestedLine(-1),
m_overlay(0), m_overlay(0),
m_snippetOverlay(0), m_snippetOverlay(0),
m_searchResultOverlay(0), m_searchResultOverlay(0),
@@ -5075,6 +5077,8 @@ void TextEditorWidget::showDefaultContextMenu(QContextMenuEvent *e, Id menuConte
void TextEditorWidget::extraAreaLeaveEvent(QEvent *) void TextEditorWidget::extraAreaLeaveEvent(QEvent *)
{ {
d->extraAreaPreviousMarkTooltipRequestedLine = -1;
// fake missing mouse move event from Qt // fake missing mouse move event from Qt
QMouseEvent me(QEvent::MouseMove, QPoint(-1, -1), Qt::NoButton, 0, 0); QMouseEvent me(QEvent::MouseMove, QPoint(-1, -1), Qt::NoButton, 0, 0);
extraAreaMouseEvent(&me); extraAreaMouseEvent(&me);
@@ -5133,7 +5137,9 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
if (inMarkArea) { if (inMarkArea) {
//Find line by cursor position //Find line by cursor position
int line = cursor.blockNumber() + 1; int line = cursor.blockNumber() + 1;
emit markTooltipRequested(this, mapToGlobal(e->pos()), line); if (d->extraAreaPreviousMarkTooltipRequestedLine != line)
emit markTooltipRequested(this, mapToGlobal(e->pos()), line);
d->extraAreaPreviousMarkTooltipRequestedLine = line;
} }
if (e->buttons() & Qt::LeftButton && !d->m_markDragStart.isNull()) { if (e->buttons() & Qt::LeftButton && !d->m_markDragStart.isNull()) {

View File

@@ -3,8 +3,6 @@ import qbs 1.0
QtcPlugin { QtcPlugin {
name: "UpdateInfo" name: "UpdateInfo"
condition: false // Severely broken atm.
Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] } Depends { name: "Qt"; submodules: ["widgets", "xml", "network"] }
Depends { name: "Utils" } Depends { name: "Utils" }

View File

@@ -31,8 +31,10 @@ namespace Help {
namespace Icons { namespace Icons {
const Utils::Icon BOOKMARK({ const Utils::Icon BOOKMARK({
{QLatin1String(":/help/images/bookmark.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::Tint);
const Utils::Icon BOOKMARK_TOOLBAR({
{QLatin1String(":/help/images/bookmark.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/help/images/bookmark.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon HOME({ const Utils::Icon HOME_TOOLBAR({
{QLatin1String(":/help/images/home.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/help/images/home.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon MODE_HELP_CLASSIC( const Utils::Icon MODE_HELP_CLASSIC(
QLatin1String(":/help/images/mode_help.png")); QLatin1String(":/help/images/mode_help.png"));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 599 B

View File

@@ -1,109 +0,0 @@
<!DOCTYPE ProItemInfo>
<proiteminfo>
<scope>
<id>win32</id>
<name>Windows</name>
</scope>
<scope>
<id>unix</id>
<name>Unix</name>
</scope>
<scope>
<id>mac</id>
<name>Mac</name>
</scope>
<variable multiple="false">
<id>TARGET</id>
<name>Output Target</name>
<description>This specifies the name of the target file.</description>
</variable>
<variable multiple="false">
<id>TEMPLATE</id>
<name>Output Template</name>
<description>This variable contains the name of the template to use when generating the project.</description>
<value>
<id>app</id>
<name>Application</name>
</value>
<value>
<id>lib</id>
<name>Library</name>
</value>
<value>
<id>subdirs</id>
<name>Subdirectories</name>
</value>
</variable>
<variable multiple="true" operator="0">
<id>HEADERS</id>
<name>Header Files</name>
<description>Defines the header files for the project</description>
</variable>
<variable multiple="true" operator="0">
<id>SOURCES</id>
<name>Source Files</name>
<description>Defines the source files for the project</description>
</variable>
<variable multiple="true" operator="0">
<id>INCLUDEPATH</id>
<name>Include Path</name>
<description>Defines the include path for the project</description>
</variable>
<variable multiple="true" operator="0">
<id>FORMS</id>
<name>Form Files</name>
<description>Defines the form files for the project</description>
</variable>
<variable multiple="true" operator="0">
<id>RESOURCES</id>
<name>Resource Files</name>
<description>Defines the resource files for the project</description>
</variable>
<variable multiple="true" operator="0">
<id>QT</id>
<name>Qt Modules</name>
<description>The values stored in the QT variable control which of the Qt modules are used by your project.</description>
<value>
<id>core</id>
<name>QtCore module</name>
</value>
<value>
<id>gui</id>
<name>QtGui module</name>
</value>
<value>
<id>network</id>
<name>QtNetwork module</name>
</value>
<value>
<id>opengl</id>
<name>QtOpenGL module</name>
</value>
<value>
<id>sql</id>
<name>QtSql module</name>
</value>
<value>
<id>svg</id>
<name>QtSvg module</name>
</value>
<value>
<id>xml</id>
<name>QtXml module</name>
</value>
<value>
<id>qt3support</id>
<name>Qt3Support module</name>
</value>
</variable>
</proiteminfo>

Some files were not shown because too many files have changed in this diff Show More