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

View File

@@ -1,79 +1,38 @@
/****************************************************************************
**
** 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.Layouts 1.2
import QtQuick 2.6
import QtQuick.Controls 1.5
import QtQuick.Layouts 1.3
Item {
id: page
width: 640
height: 480
property alias mouseArea1: mouseArea1
property alias mouseArea3: mouseArea3
property alias mouseArea2: mouseArea2
property alias bottomLeftRect: bottomLeftRect
property alias middleRightRect: middleRightRect
property alias topLeftRect: topLeftRect
property alias icon: icon
property alias mouseArea1: mouseArea1
property alias mouseArea2: mouseArea2
property alias mouseArea3: mouseArea3
Image {
id: icon
x: 10
y: 20
source: "qt-logo.png"
}
Rectangle {
id: topLeftRect
width: 46
height: 55
width: 55
height: 41
color: "#00000000"
radius: 6
radius: 0
border.color: "#808080"
anchors.left: parent.left
anchors.leftMargin: 10
anchors.top: parent.top
anchors.topMargin: 20
border.color: "#808080"
border.width: 1
MouseArea {
id: mouseArea1
@@ -83,12 +42,12 @@ Item {
Rectangle {
id: middleRightRect
x: 6
x: -8
y: 6
width: 46
height: 55
width: 55
height: 41
color: "#00000000"
radius: 6
radius: 0
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 10
@@ -96,32 +55,27 @@ Item {
id: mouseArea2
anchors.fill: parent
}
border.width: 1
border.color: "#808080"
}
Rectangle {
id: bottomLeftRect
x: 0
y: 4
width: 46
height: 55
y: -2
width: 55
height: 41
color: "#00000000"
radius: 6
radius: 0
anchors.bottom: parent.bottom
anchors.bottomMargin: 20
anchors.left: parent.left
anchors.leftMargin: 10
MouseArea {
id: mouseArea3
anchors.fill: parent
}
anchors.left: parent.left
border.width: 1
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 <QQmlApplicationEngine>

View File

@@ -1,122 +1,72 @@
/****************************************************************************
**
** 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 2.6
import QtQuick.Controls 1.5
import QtQuick.Dialogs 1.2
ApplicationWindow {
visible: true
title: qsTr("Transitions")
width: 330
height: 330
title: qsTr("Transitions")
MainForm {
anchors.fill: parent
id: page
mouseArea1 {
onClicked: stateGroup.state = ' '
}
mouseArea2 {
onClicked: stateGroup.state = 'State1'
}
mouseArea3 {
onClicked: stateGroup.state = 'State2'
}
onClicked: stateGroup.state = ' '
}
mouseArea2 {
onClicked: stateGroup.state = 'State1'
}
mouseArea3 {
onClicked: stateGroup.state = 'State2'
}
}
StateGroup {
id: stateGroup
states: [
State {
name: "State1"
id: stateGroup
states: [
State {
name: "State1"
PropertyChanges {
target: page.icon
x: page.middleRightRect.x
y: page.middleRightRect.y
}
},
State {
name: "State2"
PropertyChanges {
target: page.icon
x: page.middleRightRect.x
y: page.middleRightRect.y
}
},
State {
name: "State2"
PropertyChanges {
target: page.icon
x: page.bottomLeftRect.x
y: page.bottomLeftRect.y
PropertyChanges {
target: page.icon
x: page.bottomLeftRect.x
y: page.bottomLeftRect.y
}
}
}
]
transitions: [
Transition {
from: "*"; to: "State1"
NumberAnimation {
easing.type: Easing.OutBounce
properties: "x,y";
duration: 1000
}
},
Transition {
from: "*"; to: "State2"
NumberAnimation {
properties: "x,y";
easing.type: Easing.InOutQuad;
duration: 2000
}
},
Transition {
NumberAnimation {
properties: "x,y";
duration: 200
]
transitions: [
Transition {
from: "*"; to: "State1"
NumberAnimation {
easing.type: Easing.OutBounce
properties: "x,y";
duration: 1000
}
},
Transition {
from: "*"; to: "State2"
NumberAnimation {
properties: "x,y";
easing.type: Easing.InOutQuad;
duration: 2000
}
},
Transition {
NumberAnimation {
properties: "x,y";
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
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}
\c {*.cpp,*.h}.

View File

@@ -87,6 +87,9 @@
the editor to copy all elements to the clipboard by using 300 dpi. Then
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
To create models:

View File

@@ -47,7 +47,9 @@
\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
@@ -451,6 +453,13 @@
Select toolbar buttons to run applications, to attach the debugger to the
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
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.
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
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"
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"
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
development PC. The \uicontrol {Remote Directory} field displays the folder
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
\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
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"
@@ -101,8 +104,8 @@
\li In the \uicontrol Id field, enter \e topLeftRect.
\li In the \uicontrol Size field, set \uicontrol W to \e 46 and
\uicontrol H to \e 55, for the rectangle size to match the image
\li In the \uicontrol Size field, set \uicontrol W to \e 55 and
\uicontrol H to \e 41, for the rectangle size to match the image
size.
\li In the \uicontrol Color field, click the
@@ -113,9 +116,6 @@
\li In the \uicontrol {Border color} field, set the border color to
\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
anchor buttons to anchor the rectangle to the top left corner of
the page.
@@ -187,6 +187,8 @@
the \uicontrol Edit mode to add animation to the application, as described
in the following section.
\image qmldesigner-tutorial-ui-ready.png "Transitions UI"
\section1 Adding Application Logic
The new project wizard adds boilerplate code to the \e main.qml file to
@@ -207,7 +209,7 @@
\quotefromfile transitions/main.qml
\skipto ApplicationWindow
\printuntil height
\printuntil title
\li Specify an id for the MainForm type to be able to use the properties
that you exported in \e MainForm.ui.qml:

View File

@@ -160,6 +160,7 @@ lldb.SBType.__str__ = lldb.SBType.GetName
class Dumper(DumperBase):
def __init__(self):
DumperBase.__init__(self)
lldb.theDumper = self
self.outputLock = threading.Lock()
self.debugger = lldb.SBDebugger.Create()
@@ -1489,6 +1490,21 @@ class Dumper(DumperBase):
bp.SetIgnoreCount(int(args["ignorecount"]))
bp.SetCondition(self.hexdecode(args["condition"]))
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):
bp.SetOneShot(bool(args["oneshot"]))
self.reportResult(self.describeBreakpoint(bp) + extra, args)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2852,16 +2852,14 @@ static inline bool dumpQSharedPointer(const SymbolGroupValue &v, std::wostream &
str << L"(null)";
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);
return true;
if (knownType(value.type(), KnownTypeAutoStripPointer | KnownTypeHasClassPrefix)
& 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 QString &proFile = QString())
{
if (qmlJSDoc.isNull())
return false;
QmlJS::AST::Node *ast = qmlJSDoc->ast();
QTC_ASSERT(ast, return false);
TestQmlVisitor qmlVisitor(qmlJSDoc);

View File

@@ -137,6 +137,13 @@ TestOutputReader::TestOutputReader(const QFutureInterface<TestResultPtr> &future
, m_buildDir(buildDirectory)
{
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,

View File

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

View File

@@ -137,7 +137,6 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface,
}
QProcess testProcess;
testProcess.setReadChannelMode(QProcess::MergedChannels);
testProcess.setReadChannel(QProcess::StandardOutput);
futureInterface.setProgressRange(0, testCaseCount);
@@ -221,6 +220,10 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface,
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 (testProcess.state() != QProcess::NotRunning) {

View File

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

View File

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

View File

@@ -37,6 +37,7 @@
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/session.h>
#include <texteditor/texteditor.h>
#include <utils/icon.h>
#include <utils/tooltip/tooltip.h>
#include <utils/qtcassert.h>
#include <utils/checkablemessagebox.h>
@@ -318,7 +319,8 @@ void BookmarkView::gotoBookmark(const QModelIndex &index)
////
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))
{
connect(ICore::instance(), &ICore::contextChanged,

View File

@@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/bookmarks" >
<file>images/bookmark.png</file>
<file>images/bookmark@2x.png</file>
</qresource>
</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_THEME[] = "Core/CreatorTheme";
const char DEFAULT_THEME[] = "default";
const char DEFAULT_THEME[] = "flat";
const char ALL_FILES_FILTER[] = QT_TRANSLATE_NOOP("Core", "All Files (*)");

View File

@@ -27,8 +27,9 @@
#include "locatorfiltersfilter.h"
#include "locatorwidget.h"
#include <coreplugin/coreicons.h>
#include <utils/icon.h>
#include <utils/qtcassert.h>
#include <utils/theme/theme.h>
using namespace Core;
using namespace Core::Internal;
@@ -39,7 +40,8 @@ LocatorFiltersFilter::LocatorFiltersFilter(Locator *plugin,
LocatorWidget *locatorWidget):
m_plugin(plugin),
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");
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::ButtonText, 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::ButtonText, 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->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text);
}
if (!(option->state & State_Enabled))
painter->setOpacity(0.8);
painter->setPen(creatorTheme()->color(Theme::ComboBoxTextColor));
painter->setPen(creatorTheme()->color((option->state & State_Enabled)
? Theme::ComboBoxTextColor
: Theme::IconsDisabledColor));
painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text);
painter->restore();

View File

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

View File

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

View File

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

View File

@@ -282,6 +282,7 @@ public slots:
void resetLocation()
{
m_lookupRequests.clear();
m_locationTimer.stop();
m_locationMark.reset();
m_stackHandler.resetLocation();
@@ -337,6 +338,9 @@ public:
Utils::FileInProjectFinder m_fileFinder;
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)
{
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;
params.partialVariable = iname;
doUpdateLocals(params);

View File

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

View File

@@ -966,6 +966,7 @@ public:
QIcon m_locationMarkIcon;
QLabel *m_threadLabel = 0;
QComboBox *m_threadBox = 0;
BaseTreeView *m_breakView = 0;
@@ -1686,13 +1687,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
cmd = ActionManager::registerAction(qmlSelectDummyAction, Constants::QML_SELECTTOOL);
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();
// 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 QLabel(tr("Threads:")));
m_threadLabel = new QLabel(tr("Threads:"));
toolbar.addWidget(m_threadLabel);
m_threadBox = new QComboBox;
m_threadBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
@@ -1810,7 +1806,6 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
// qmlToolbar.addAction(qmlShowAppOnTopDummyAction);
// qmlToolbar.addWidget(new StyledSeparator);
// qmlToolbar.addAction(qmlSelectDummyAction);
// qmlToolbar.addAction(qmlZoomDummyAction);
// qmlToolbar.addWidget(new StyledSeparator);
Perspective basePerspective({}, {
@@ -2380,6 +2375,7 @@ void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine)
engine->watchHandler()->resetWatchers();
m_localsView->hideProgressIndicator();
updateActiveLanguages();
}
static void changeFontSize(QWidget *widget, qreal size)
@@ -2498,6 +2494,8 @@ void DebuggerPluginPrivate::setInitialState()
action(AutoDerefPointers)->setEnabled(true);
action(ExpandStack)->setEnabled(false);
m_threadLabel->setEnabled(false);
}
void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
@@ -2595,6 +2593,7 @@ void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
m_attachToUnstartedApplication->setEnabled(true);
m_threadBox->setEnabled(state == InferiorStopOk || state == InferiorUnrunnable);
m_threadLabel->setEnabled(m_threadBox->isEnabled());
const bool isCore = engine->runParameters().startMode == AttachCore;
const bool stopped = state == InferiorStopOk;

View File

@@ -2233,7 +2233,7 @@ void GdbEngine::executeReturn()
setTokenBarrier();
notifyInferiorRunRequested();
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)

View File

@@ -283,6 +283,10 @@ void LldbEngine::startLldbStage2()
m_lldbProc.write("script from lldbbridge import *\n");
m_lldbProc.write("script print(dir())\n");
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()
@@ -895,6 +899,8 @@ void LldbEngine::handleStateNotification(const GdbMi &reportedState)
notifyInferiorRunOk();
else if (newState == "inferiorrunfailed")
notifyInferiorRunFailed();
else if (newState == "continueafternextstop")
m_continueAtNextSpontaneousStop = true;
else if (newState == "stopped") {
notifyInferiorSpontaneousStop();
if (m_continueAtNextSpontaneousStop) {

View File

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

View File

@@ -40,9 +40,6 @@
#include <QWidget>
QT_BEGIN_NAMESPACE
class QCheckBox;
class QSignalMapper;
class QDebug;
class QProcessEnvironment;
class QMenu;
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));
}
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);
connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome);
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);
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->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M")));
connect(m_addBookmarkAction, &QAction::triggered, this, &HelpWidget::addBookmark);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -333,12 +333,13 @@ AnalyzerRunControl *QmlProfilerTool::createRunControl(RunConfiguration *runConfi
}
auto runControl = new QmlProfilerRunControl(runConfiguration, this);
connect(runControl, &RunControl::finished, [this, runControl] {
connect(runControl, &RunControl::finished, this, [this, runControl] {
d->m_toolBusy = false;
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();
return runControl;

View File

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

View File

@@ -63,14 +63,15 @@ BehaviorSettingsWidget::BehaviorSettingsWidget(QWidget *parent)
if (firstNonNegative != mibs.end())
std::rotate(mibs.begin(), firstNonNegative, mibs.end());
foreach (int mib, mibs) {
QTextCodec *codec = QTextCodec::codecForMib(mib);
QString compoundName = QLatin1String(codec->name());
foreach (const QByteArray &alias, codec->aliases()) {
compoundName += QLatin1String(" / ");
compoundName += QString::fromLatin1(alias);
if (QTextCodec *codec = QTextCodec::codecForMib(mib)) {
QString compoundName = QLatin1String(codec->name());
foreach (const QByteArray &alias, codec->aliases()) {
compoundName += QLatin1String(" / ");
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

View File

@@ -370,6 +370,7 @@ public:
int extraAreaSelectionAnchorBlockNumber;
int extraAreaToggleMarkBlockNumber;
int extraAreaHighlightFoldedBlockNumber;
int extraAreaPreviousMarkTooltipRequestedLine;
TextEditorOverlay *m_overlay;
TextEditorOverlay *m_snippetOverlay;
@@ -489,6 +490,7 @@ TextEditorWidgetPrivate::TextEditorWidgetPrivate(TextEditorWidget *parent)
extraAreaSelectionAnchorBlockNumber(-1),
extraAreaToggleMarkBlockNumber(-1),
extraAreaHighlightFoldedBlockNumber(-1),
extraAreaPreviousMarkTooltipRequestedLine(-1),
m_overlay(0),
m_snippetOverlay(0),
m_searchResultOverlay(0),
@@ -5075,6 +5077,8 @@ void TextEditorWidget::showDefaultContextMenu(QContextMenuEvent *e, Id menuConte
void TextEditorWidget::extraAreaLeaveEvent(QEvent *)
{
d->extraAreaPreviousMarkTooltipRequestedLine = -1;
// fake missing mouse move event from Qt
QMouseEvent me(QEvent::MouseMove, QPoint(-1, -1), Qt::NoButton, 0, 0);
extraAreaMouseEvent(&me);
@@ -5133,7 +5137,9 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
if (inMarkArea) {
//Find line by cursor position
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()) {

View File

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

View File

@@ -31,8 +31,10 @@ namespace Help {
namespace Icons {
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}});
const Utils::Icon HOME({
const Utils::Icon HOME_TOOLBAR({
{QLatin1String(":/help/images/home.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon MODE_HELP_CLASSIC(
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