Merge remote-tracking branch 'origin/4.1'
Conflicts: README.md src/plugins/modeleditor/actionhandler.cpp Change-Id: I65c2885593b881eda94872168a3891cab9cafe71
@@ -21,6 +21,7 @@ Prerequisites:
|
|||||||
* jom
|
* jom
|
||||||
* On Mac OS X: latest Xcode
|
* On Mac OS X: latest Xcode
|
||||||
* On Linux: g++ 4.8 or later
|
* On Linux: g++ 4.8 or later
|
||||||
|
* LLVM 3.8.0 or later for the Clang Code Model
|
||||||
|
|
||||||
The installed toolchains have to match the one Qt was compiled with.
|
The installed toolchains have to match the one Qt was compiled with.
|
||||||
|
|
||||||
@@ -114,7 +115,7 @@ For detailed information on the supported compilers, see
|
|||||||
command...` error. If a `sh.exe` is found, the compile process will fail.
|
command...` error. If a `sh.exe` is found, the compile process will fail.
|
||||||
You have to remove it from the path.
|
You have to remove it from the path.
|
||||||
|
|
||||||
10. To enable the Clang-based code model: Install Clang (>= version 3.6.2)
|
10. To enable the Clang-based code model: Install Clang (>= version 3.8.0)
|
||||||
and set the environment variable LLVM_INSTALL_DIR to point to the
|
and set the environment variable LLVM_INSTALL_DIR to point to the
|
||||||
installation location.
|
installation location.
|
||||||
|
|
||||||
|
|||||||
195
dist/changes-4.1.0.md
vendored
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
Qt Creator version 4.1 contains bug fixes and new features.
|
||||||
|
|
||||||
|
The most important changes are listed in this document. For a complete
|
||||||
|
list of changes, see the Git log for the Qt Creator sources that
|
||||||
|
you can check out from the public Git repository. For example:
|
||||||
|
|
||||||
|
git clone git://code.qt.io/qt-creator/qt-creator.git
|
||||||
|
git log --cherry-pick --pretty=oneline origin/4.0..v4.1.0
|
||||||
|
|
||||||
|
General
|
||||||
|
|
||||||
|
* Added `Flat Dark` and `Flat Light` themes
|
||||||
|
* Added `Ctrl+N` and `Ctrl+P` shortcuts for navigating in Locator
|
||||||
|
* Added experimental support for the `Nim` programming language
|
||||||
|
|
||||||
|
Editing
|
||||||
|
|
||||||
|
* Added automatic release of resources for unmodified documents that have
|
||||||
|
not been visible a long time (QTCREATORBUG-10016)
|
||||||
|
* Added separate options for automatically inserted characters
|
||||||
|
* Added highlighting of automatically inserted characters
|
||||||
|
* Added option for skipping automatically inserted character, and changed
|
||||||
|
it to do this only as long as the cursor stays before it
|
||||||
|
* Fixed that replacing could change the selection (QTCREATORBUG-15623)
|
||||||
|
|
||||||
|
All Projects
|
||||||
|
|
||||||
|
* Improved feedback when build results in errors and there
|
||||||
|
are issues with the kit (QTCREATORBUG-16079)
|
||||||
|
* Fixed issue with building in paths with non-ASCII characters
|
||||||
|
(QTCREATORBUG-15855)
|
||||||
|
* Fixed that `%{buildDir}` and `%{sourceDir}` stopped working in
|
||||||
|
run configurations (QTCREATORBUG-16338)
|
||||||
|
|
||||||
|
QMake Projects
|
||||||
|
|
||||||
|
* Added `Duplicate File` to context menu in project tree (QTCREATORBUG-15952)
|
||||||
|
* Added `QtWebEngine` to modules list
|
||||||
|
* Changed `Run Qmake` from `qmake -r` to `qmake && make qmake_all` for Qt 5
|
||||||
|
* Fixed renaming files used in QRC files (QTCREATORBUG-15786)
|
||||||
|
|
||||||
|
CMake Projects
|
||||||
|
|
||||||
|
* Improved parsing of errors
|
||||||
|
* Added workaround for CMake issue that include paths are in random order
|
||||||
|
(QTCREATORBUG-16432)
|
||||||
|
* Added option for disabling automatic running of CMake to Build & Run > CMake
|
||||||
|
(QTCREATORBUG-15934)
|
||||||
|
* Fixed that CMake was automatically run even if the Qt Creator application
|
||||||
|
is not in the foreground (QTCREATORBUG-16354)
|
||||||
|
|
||||||
|
Qbs Projects
|
||||||
|
|
||||||
|
* Added support for `qtcRunnable` property, similar to `qtc_runnable` for
|
||||||
|
Qmake projects
|
||||||
|
|
||||||
|
C++ Support
|
||||||
|
|
||||||
|
* Added separate highlighting for function declarations and usages
|
||||||
|
(QTCREATORBUG-15564)
|
||||||
|
* Added highlighting option for global variables
|
||||||
|
* Added coding style option for preferring getters with `get`
|
||||||
|
* Fixed parsing of `-std=gnu++XX` option (QTCREATORBUG-16290)
|
||||||
|
* Fixed refactoring of methods with ref-qualifier
|
||||||
|
|
||||||
|
QML Support
|
||||||
|
|
||||||
|
* Added formal parameters of JavaScript functions to outline and Locator
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
|
||||||
|
* Added support for copying selected values from `Locals and Expressions`
|
||||||
|
(QTCREATORBUG-14956)
|
||||||
|
* Fixed jumping to address in binary editor (QTCREATORBUG-11064)
|
||||||
|
* GDB
|
||||||
|
* Fixed that `qint8` values where shown as unsigned values
|
||||||
|
(QTCREATORBUG-16353)
|
||||||
|
|
||||||
|
QML Profiler
|
||||||
|
|
||||||
|
* Improved progress information
|
||||||
|
* Improved performance when many events are involved
|
||||||
|
|
||||||
|
Qt Quick Designer
|
||||||
|
|
||||||
|
* Added support for Qt Quick Controls 2 styles
|
||||||
|
* Added `Move to Component` action
|
||||||
|
* Added `Add new Signal Handler` action
|
||||||
|
* Improved performance
|
||||||
|
* Improved error dialog (QTCREATORBUG-15772)
|
||||||
|
* Fixed crumble bar for component navigation
|
||||||
|
* Fixed that `Connections` was not allowed in `.ui.qml` files
|
||||||
|
* Fixed crashes with spaces in properties (QTCREATORBUG-16059)
|
||||||
|
* Fixed that child items of `State` were rendered (QTCREATORBUG-13003)
|
||||||
|
|
||||||
|
Version Control Systems
|
||||||
|
|
||||||
|
* Git
|
||||||
|
* Added date and time information to branch dialog
|
||||||
|
* Added support for running `git blame` only on selected lines
|
||||||
|
(QTCREATORBUG-16055)
|
||||||
|
* Fixed that branch dialog suggested existing branch name for new branch
|
||||||
|
(QTCREATORBUG-16264)
|
||||||
|
* SVN
|
||||||
|
* Added conflicted files to file list in submit editor
|
||||||
|
|
||||||
|
Test Integration
|
||||||
|
|
||||||
|
* Fixed that test case summary stayed visible even if no entries matched
|
||||||
|
the applied filter
|
||||||
|
* Fixed parsing of failure location for Google Test on Windows
|
||||||
|
|
||||||
|
FakeVim
|
||||||
|
|
||||||
|
* Added expansion of `~` in file names (QTCREATORBUG-11160)
|
||||||
|
|
||||||
|
Model Editor
|
||||||
|
|
||||||
|
* Added zooming of diagrams
|
||||||
|
|
||||||
|
Beautifier
|
||||||
|
|
||||||
|
* Added option to automatically format files on save
|
||||||
|
* Uncrustify
|
||||||
|
* Fixed issues with non-C++ files (QTCREATORBUG-15575)
|
||||||
|
|
||||||
|
Platform Specific
|
||||||
|
|
||||||
|
Windows
|
||||||
|
|
||||||
|
* Added detection of MSVC amd64_x86 toolchain
|
||||||
|
|
||||||
|
macOS
|
||||||
|
|
||||||
|
* Fixed include search order with frameworks (QTCREATORBUG-11599)
|
||||||
|
|
||||||
|
Remote Linux
|
||||||
|
|
||||||
|
* Added support for TCP/IP forward tunneling with SSH
|
||||||
|
|
||||||
|
iOS
|
||||||
|
|
||||||
|
* Fixed that deployment could fail if device and host are in same WiFi network
|
||||||
|
(QTCREATORBUG-16061)
|
||||||
|
* Fixed missing human readable error messages (QTCREATORBUG-16328)
|
||||||
|
|
||||||
|
Credits for these changes go to:
|
||||||
|
Albert Astals Cid
|
||||||
|
Alessandro Portale
|
||||||
|
Alexander Drozdov
|
||||||
|
Andre Hartmann
|
||||||
|
André Pönitz
|
||||||
|
Antoine Poliakov
|
||||||
|
Arnold Dumas
|
||||||
|
BogDan Vatra
|
||||||
|
Christian Kandeler
|
||||||
|
Christian Stenger
|
||||||
|
Cristian Adam
|
||||||
|
David Schulz
|
||||||
|
Dmitry Ashkadov
|
||||||
|
Eike Ziller
|
||||||
|
Erik Verbrüggen
|
||||||
|
Filippo Cucchetto
|
||||||
|
Finn Brudal
|
||||||
|
Georger Araújo
|
||||||
|
Jake Petroules
|
||||||
|
Jaroslaw Kobus
|
||||||
|
Jean Gressmann
|
||||||
|
Jochen Becher
|
||||||
|
Leena Miettinen
|
||||||
|
Lorenz Haas
|
||||||
|
Lukas Holecek
|
||||||
|
Marco Benelli
|
||||||
|
Marco Bubke
|
||||||
|
Marc Reilly
|
||||||
|
Mashrab Kuvatov
|
||||||
|
Maurice Kalinowski
|
||||||
|
Nikita Baryshnikov
|
||||||
|
Nikolai Kosjar
|
||||||
|
Orgad Shaneh
|
||||||
|
Oswald Buddenhagen
|
||||||
|
Philip Lorenz
|
||||||
|
Robert Löhning
|
||||||
|
Shinnok
|
||||||
|
Takumi ASAKI
|
||||||
|
Thiago Macieira
|
||||||
|
Thomas Hartmann
|
||||||
|
Tim Jenssen
|
||||||
|
Tobias Hunger
|
||||||
|
Ulf Hermann
|
||||||
|
Unai IRIGOYEN
|
||||||
|
Victor Heng
|
||||||
|
Vikas Pachdha
|
||||||
|
Vlad Seryakov
|
||||||
|
Wolfgang Bremer
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
|
|
||||||
\li Acquire Clang 3.6.2 or higher in one of the following ways:
|
\li Acquire Clang 3.8.0 or higher in one of the following ways:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ QtcProduct {
|
|||||||
name: "Qt.test"
|
name: "Qt.test"
|
||||||
}
|
}
|
||||||
|
|
||||||
cpp.createSymlinks: false
|
cpp.internalVersion: ""
|
||||||
cpp.defines: base.concat([name.toUpperCase() + "_LIBRARY"])
|
cpp.defines: base.concat([name.toUpperCase() + "_LIBRARY"])
|
||||||
cpp.sonamePrefix: qbs.targetOS.contains("osx")
|
cpp.sonamePrefix: qbs.targetOS.contains("osx")
|
||||||
? "@rpath"
|
? "@rpath"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
var Environment = loadExtension("qbs.Environment")
|
var Environment = loadExtension("qbs.Environment")
|
||||||
var File = loadExtension("qbs.File")
|
var File = loadExtension("qbs.File")
|
||||||
var MinimumLLVMVersion = "3.6.2"
|
var MinimumLLVMVersion = "3.8.0"
|
||||||
var Process = loadExtension("qbs.Process")
|
var Process = loadExtension("qbs.Process")
|
||||||
|
|
||||||
function readOutput(executable, args)
|
function readOutput(executable, args)
|
||||||
@@ -27,8 +27,7 @@ function llvmConfig(qbs, qtcFunctions)
|
|||||||
{
|
{
|
||||||
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
|
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
|
||||||
var llvmConfigVariants = [
|
var llvmConfigVariants = [
|
||||||
"llvm-config", "llvm-config-3.2", "llvm-config-3.3", "llvm-config-3.4",
|
"llvm-config", "llvm-config-3.8", "llvm-config-3.9", "llvm-config-4.0", "llvm-config-4.1"
|
||||||
"llvm-config-3.5", "llvm-config-3.6", "llvm-config-4.0", "llvm-config-4.1"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// Prefer llvm-config* from LLVM_INSTALL_DIR
|
// Prefer llvm-config* from LLVM_INSTALL_DIR
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import "qtc.js" as HelperFunctions
|
|||||||
Module {
|
Module {
|
||||||
property string ide_version_major: '4'
|
property string ide_version_major: '4'
|
||||||
property string ide_version_minor: '0'
|
property string ide_version_minor: '0'
|
||||||
property string ide_version_release: '82'
|
property string ide_version_release: '83'
|
||||||
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
|
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
|
||||||
+ ide_version_release
|
+ ide_version_release
|
||||||
|
|
||||||
property string ide_compat_version_major: '4'
|
property string ide_compat_version_major: '4'
|
||||||
property string ide_compat_version_minor: '0'
|
property string ide_compat_version_minor: '0'
|
||||||
property string ide_compat_version_release: '82'
|
property string ide_compat_version_release: '83'
|
||||||
property string qtcreator_compat_version: ide_compat_version_major + '.'
|
property string qtcreator_compat_version: ide_compat_version_major + '.'
|
||||||
+ ide_compat_version_minor + '.' + ide_compat_version_release
|
+ ide_compat_version_minor + '.' + ide_compat_version_release
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
!isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included")
|
!isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included")
|
||||||
QTCREATOR_PRI_INCLUDED = 1
|
QTCREATOR_PRI_INCLUDED = 1
|
||||||
|
|
||||||
QTCREATOR_VERSION = 4.0.82
|
QTCREATOR_VERSION = 4.0.83
|
||||||
QTCREATOR_COMPAT_VERSION = 4.0.82
|
QTCREATOR_COMPAT_VERSION = 4.0.83
|
||||||
VERSION = $$QTCREATOR_VERSION
|
VERSION = $$QTCREATOR_VERSION
|
||||||
BINARY_ARTIFACTS_BRANCH = master
|
BINARY_ARTIFACTS_BRANCH = 4.1
|
||||||
|
|
||||||
# enable c++11
|
# enable c++11
|
||||||
CONFIG += c++11
|
CONFIG += c++11
|
||||||
|
|||||||
@@ -49,8 +49,7 @@ Project {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var fullQtcInstallDir
|
var fullQtcInstallDir = FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix);
|
||||||
= FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix, qbs.InstallDir);
|
|
||||||
var fullLibInstallDir = FileInfo.joinPaths(fullQtcInstallDir, qtc.ide_library_path);
|
var fullLibInstallDir = FileInfo.joinPaths(fullQtcInstallDir, qtc.ide_library_path);
|
||||||
var fullPluginInstallDir = FileInfo.joinPaths(fullQtcInstallDir, qtc.ide_plugin_path);
|
var fullPluginInstallDir = FileInfo.joinPaths(fullQtcInstallDir, qtc.ide_plugin_path);
|
||||||
path = Qt.core.binPath + ";" + fullLibInstallDir + ";" + fullPluginInstallDir
|
path = Qt.core.binPath + ";" + fullLibInstallDir + ";" + fullPluginInstallDir
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ cd ${TEMPSOURCES} || exit 1
|
|||||||
tar xf __qtcreator_main.tar || exit 1
|
tar xf __qtcreator_main.tar || exit 1
|
||||||
tar xf __qtcreator_qbs.tar || exit 1
|
tar xf __qtcreator_qbs.tar || exit 1
|
||||||
tar czf "${RESULTDIR}/${PREFIX}.tar.gz" ${PREFIX}/ || exit 1
|
tar czf "${RESULTDIR}/${PREFIX}.tar.gz" ${PREFIX}/ || exit 1
|
||||||
|
tar cJf "${RESULTDIR}/${PREFIX}.tar.xz" ${PREFIX}/ || exit 1
|
||||||
|
|
||||||
echo "Creating zip archive..."
|
echo "Creating zip archive..."
|
||||||
echo " Filtering binary vs text files..."
|
echo " Filtering binary vs text files..."
|
||||||
|
|||||||
@@ -346,3 +346,28 @@ def qdump__KDSoapValue(d, value):
|
|||||||
p = (value.cast(lookupType("char*")) + 4).dereference().cast(lookupType("QString"))
|
p = (value.cast(lookupType("char*")) + 4).dereference().cast(lookupType("QString"))
|
||||||
d.putStringValue(p)
|
d.putStringValue(p)
|
||||||
d.putPlainChildren(value["d"]["d"].dereference())
|
d.putPlainChildren(value["d"]["d"].dereference())
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
#
|
||||||
|
# Webkit
|
||||||
|
#
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
def qdump__WTF__String(d, value):
|
||||||
|
# WTF::String -> WTF::RefPtr<WTF::StringImpl> -> WTF::StringImpl*
|
||||||
|
data = value['m_impl']['m_ptr']
|
||||||
|
d.checkPointer(data)
|
||||||
|
|
||||||
|
stringLength = int(data['m_length'])
|
||||||
|
d.check(0 <= stringLength and stringLength <= 100000000)
|
||||||
|
|
||||||
|
# WTF::StringImpl* -> WTF::StringImpl -> sizeof(WTF::StringImpl)
|
||||||
|
offsetToData = data.type.target().sizeof
|
||||||
|
bufferPtr = data.cast(d.charPtrType()) + offsetToData
|
||||||
|
|
||||||
|
is8Bit = data['m_is8Bit']
|
||||||
|
charSize = 1
|
||||||
|
if not is8Bit:
|
||||||
|
charSize = 2
|
||||||
|
|
||||||
|
d.putCharArrayHelper(bufferPtr, stringLength, charSize)
|
||||||
|
|||||||
@@ -54,7 +54,11 @@ Rectangle {
|
|||||||
style: ButtonStyle {
|
style: ButtonStyle {
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
color: control.hovered ? Qt.lighter(baseColor, 1.2) : "transparent"
|
color: control.hovered ? Qt.lighter(baseColor, 1.2) : "transparent"
|
||||||
radius: 2
|
Image {
|
||||||
|
source: "image://icons/close"
|
||||||
|
height: 16
|
||||||
|
width: 16
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +68,6 @@ Rectangle {
|
|||||||
anchors.verticalCenter: stateNameField.verticalCenter
|
anchors.verticalCenter: stateNameField.verticalCenter
|
||||||
height: 16
|
height: 16
|
||||||
width: 16
|
width: 16
|
||||||
iconSource: "images/darkclose.png"
|
|
||||||
visible: !isBaseState
|
visible: !isBaseState
|
||||||
|
|
||||||
onClicked: root.deleteState(internalNodeId)
|
onClicked: root.deleteState(internalNodeId)
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ FocusScope {
|
|||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
width: Math.max(parent.height / 2 - 8, 18)
|
width: Math.max(parent.height / 2 - 8, 18)
|
||||||
height: width
|
height: width
|
||||||
iconSource: "images/plus.png"
|
|
||||||
|
|
||||||
onClicked: root.createNewState()
|
onClicked: root.createNewState()
|
||||||
|
|
||||||
@@ -113,6 +112,13 @@ FocusScope {
|
|||||||
property color buttonBaseColor: "#6f6f6f"
|
property color buttonBaseColor: "#6f6f6f"
|
||||||
color: control.hovered ? Qt.lighter(buttonBaseColor, 1.2) : buttonBaseColor
|
color: control.hovered ? Qt.lighter(buttonBaseColor, 1.2) : buttonBaseColor
|
||||||
border.width: 1
|
border.width: 1
|
||||||
|
Image {
|
||||||
|
source: "image://icons/plus"
|
||||||
|
width: 16
|
||||||
|
height: 16
|
||||||
|
anchors.centerIn: parent
|
||||||
|
smooth: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 312 B |
|
Before Width: | Height: | Size: 197 B |
@@ -70,8 +70,8 @@ IconsInterruptColor=ff587ff7
|
|||||||
IconsInterruptToolBarColor=ff6a7bc3
|
IconsInterruptToolBarColor=ff6a7bc3
|
||||||
IconsDebugColor=toolBarItem
|
IconsDebugColor=toolBarItem
|
||||||
IconsNavigationArrowsColor=ffebc322
|
IconsNavigationArrowsColor=ffebc322
|
||||||
IconsBuildHammerHandleColor=ffc26b14
|
IconsBuildHammerHandleColor=ffb06112
|
||||||
IconsBuildHammerHeadColor=ff868687
|
IconsBuildHammerHeadColor=ff828384
|
||||||
IconsModeWelcomeActiveColor=ff80c342
|
IconsModeWelcomeActiveColor=ff80c342
|
||||||
IconsModeEditActiveColor=ff99aaef
|
IconsModeEditActiveColor=ff99aaef
|
||||||
IconsModeDesignActiveColor=ffbb6000
|
IconsModeDesignActiveColor=ffbb6000
|
||||||
@@ -89,8 +89,8 @@ IconsCodeModelMacroColor=ff476ba0
|
|||||||
IconsCodeModelAttributeColor=ff316511
|
IconsCodeModelAttributeColor=ff316511
|
||||||
IconsCodeModelUniformColor=ff994899
|
IconsCodeModelUniformColor=ff994899
|
||||||
IconsCodeModelVaryingColor=ffa08833
|
IconsCodeModelVaryingColor=ffa08833
|
||||||
IconsCodeModelOverlayBackgroundColor=70ffffff
|
IconsCodeModelOverlayBackgroundColor=70000000
|
||||||
IconsCodeModelOverlayForegroundColor=ff232425
|
IconsCodeModelOverlayForegroundColor=ffd0d0d0
|
||||||
InfoBarBackground=ff505000
|
InfoBarBackground=ff505000
|
||||||
InfoBarText=text
|
InfoBarText=text
|
||||||
MenuBarEmptyAreaBackgroundColor=shadowBackground
|
MenuBarEmptyAreaBackgroundColor=shadowBackground
|
||||||
@@ -127,21 +127,21 @@ TreeViewArrowColorNormal=hoverBackground
|
|||||||
TreeViewArrowColorSelected=text
|
TreeViewArrowColorSelected=text
|
||||||
|
|
||||||
OutputPanes_DebugTextColor=text
|
OutputPanes_DebugTextColor=text
|
||||||
OutputPanes_ErrorMessageTextColor=ffaa0000
|
OutputPanes_ErrorMessageTextColor=ffff6c6c
|
||||||
OutputPanes_MessageOutput=ff0000aa
|
OutputPanes_MessageOutput=ff008787
|
||||||
OutputPanes_NormalMessageTextColor=ff0000aa
|
OutputPanes_NormalMessageTextColor=text
|
||||||
OutputPanes_StdErrTextColor=ffaa0000
|
OutputPanes_StdErrTextColor=ffff6666
|
||||||
OutputPanes_StdOutTextColor=ff000000
|
OutputPanes_StdOutTextColor=text
|
||||||
OutputPanes_WarningMessageTextColor=ff808000
|
OutputPanes_WarningMessageTextColor=fff3c300
|
||||||
OutputPanes_TestPassTextColor=ff009900
|
OutputPanes_TestPassTextColor=ff00b400
|
||||||
OutputPanes_TestFailTextColor=ffa00000
|
OutputPanes_TestFailTextColor=ffcf4848
|
||||||
OutputPanes_TestXFailTextColor=ff28f028
|
OutputPanes_TestXFailTextColor=ff28dc28
|
||||||
OutputPanes_TestXPassTextColor=fff02828
|
OutputPanes_TestXPassTextColor=ffdc2828
|
||||||
OutputPanes_TestSkipTextColor=ff787878
|
OutputPanes_TestSkipTextColor=ff828282
|
||||||
OutputPanes_TestWarnTextColor=ffd0bb00
|
OutputPanes_TestWarnTextColor=ffc8c800
|
||||||
OutputPanes_TestFatalTextColor=ff640000
|
OutputPanes_TestFatalTextColor=ffc82828
|
||||||
OutputPanes_TestDebugTextColor=ff329696
|
OutputPanes_TestDebugTextColor=ff329696
|
||||||
OutputPaneButtonFlashColor=ffff0000
|
OutputPaneButtonFlashColor=error
|
||||||
OutputPaneToggleButtonTextColorChecked=fancyBarsNormalTextColor
|
OutputPaneToggleButtonTextColorChecked=fancyBarsNormalTextColor
|
||||||
OutputPaneToggleButtonTextColorUnchecked=fancyBarsNormalTextColor
|
OutputPaneToggleButtonTextColorUnchecked=fancyBarsNormalTextColor
|
||||||
|
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ PluginView::PluginView(QWidget *parent)
|
|||||||
m_categoryView->setSelectionMode(QAbstractItemView::SingleSelection);
|
m_categoryView->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
m_categoryView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
m_categoryView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
|
||||||
m_model = new LeveledTreeModel<CollectionItem, PluginItem>(this);
|
m_model = new LeveledTreeModel<TreeItem, CollectionItem, PluginItem>(this);
|
||||||
m_model->setHeader({ tr("Name"), tr("Load"), tr("Version"), tr("Vendor") });
|
m_model->setHeader({ tr("Name"), tr("Load"), tr("Version"), tr("Vendor") });
|
||||||
|
|
||||||
m_sortModel = new CategorySortFilterModel(this);
|
m_sortModel = new CategorySortFilterModel(this);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ private:
|
|||||||
bool setPluginsEnabled(const QSet<PluginSpec *> &plugins, bool enable);
|
bool setPluginsEnabled(const QSet<PluginSpec *> &plugins, bool enable);
|
||||||
|
|
||||||
Utils::TreeView *m_categoryView;
|
Utils::TreeView *m_categoryView;
|
||||||
Utils::LeveledTreeModel<Internal::CollectionItem, Internal::PluginItem> *m_model;
|
Utils::LeveledTreeModel<Utils::TreeItem, Internal::CollectionItem, Internal::PluginItem> *m_model;
|
||||||
QSortFilterProxyModel *m_sortModel;
|
QSortFilterProxyModel *m_sortModel;
|
||||||
|
|
||||||
friend class Internal::CollectionItem;
|
friend class Internal::CollectionItem;
|
||||||
|
|||||||
@@ -63,6 +63,18 @@ struct DebugPrint : public std::ostringstream {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Bench
|
||||||
|
{
|
||||||
|
Bench(const std::string &what) : m_initialTickCount(GetTickCount()), m_what(what) {}
|
||||||
|
~Bench()
|
||||||
|
{
|
||||||
|
DebugPrint() << m_what << " took "
|
||||||
|
<< GetTickCount() - m_initialTickCount << "ms to execute." << std::endl;
|
||||||
|
}
|
||||||
|
const DWORD m_initialTickCount;
|
||||||
|
const std::string m_what;
|
||||||
|
};
|
||||||
|
|
||||||
ULONG currentThreadId(IDebugSystemObjects *sysObjects);
|
ULONG currentThreadId(IDebugSystemObjects *sysObjects);
|
||||||
ULONG currentThreadId(CIDebugClient *client);
|
ULONG currentThreadId(CIDebugClient *client);
|
||||||
ULONG currentProcessId(IDebugSystemObjects *sysObjects);
|
ULONG currentProcessId(IDebugSystemObjects *sysObjects);
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import QtQuick.Controls.Styles 1.2
|
|||||||
|
|
||||||
ToolBar {
|
ToolBar {
|
||||||
id: buttons
|
id: buttons
|
||||||
readonly property int buttonWidth: 30
|
|
||||||
|
|
||||||
signal jumpToPrev()
|
signal jumpToPrev()
|
||||||
signal jumpToNext()
|
signal jumpToNext()
|
||||||
@@ -63,7 +62,7 @@ ToolBar {
|
|||||||
}
|
}
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: "#9B9B9B"
|
color: creatorTheme.PanelStatusBarBackgroundColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,62 +70,56 @@ ToolBar {
|
|||||||
spacing: 0
|
spacing: 0
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
ToolButton {
|
ImageToolButton {
|
||||||
id: jumpToPrevButton
|
id: jumpToPrevButton
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
implicitWidth: buttonWidth
|
|
||||||
|
|
||||||
iconSource: "qrc:/timeline/ico_prev.png"
|
imageSource: "image://icons/prev"
|
||||||
tooltip: qsTr("Jump to previous event.")
|
tooltip: qsTr("Jump to previous event.")
|
||||||
onClicked: buttons.jumpToPrev()
|
onClicked: buttons.jumpToPrev()
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton {
|
ImageToolButton {
|
||||||
id: jumpToNextButton
|
id: jumpToNextButton
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
implicitWidth: buttonWidth
|
|
||||||
|
|
||||||
iconSource: "qrc:/timeline/ico_next.png"
|
imageSource: "image://icons/next"
|
||||||
tooltip: qsTr("Jump to next event.")
|
tooltip: qsTr("Jump to next event.")
|
||||||
onClicked: buttons.jumpToNext()
|
onClicked: buttons.jumpToNext()
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton {
|
ImageToolButton {
|
||||||
id: zoomControlButton
|
id: zoomControlButton
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
implicitWidth: buttonWidth
|
|
||||||
|
|
||||||
iconSource: "qrc:/timeline/ico_zoom.png"
|
imageSource: "image://icons/zoom"
|
||||||
tooltip: qsTr("Show zoom slider.")
|
tooltip: qsTr("Show zoom slider.")
|
||||||
checkable: true
|
checkable: true
|
||||||
checked: false
|
checked: false
|
||||||
onCheckedChanged: buttons.zoomControlChanged()
|
onCheckedChanged: buttons.zoomControlChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton {
|
ImageToolButton {
|
||||||
id: rangeButton
|
id: rangeButton
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
implicitWidth: buttonWidth
|
|
||||||
|
|
||||||
iconSource: checked ? "qrc:/timeline/ico_rangeselected.png" :
|
imageSource: "image://icons/" + (checked ? "rangeselected" : "rangeselection");
|
||||||
"qrc:/timeline/ico_rangeselection.png"
|
|
||||||
tooltip: qsTr("Select range.")
|
tooltip: qsTr("Select range.")
|
||||||
checkable: true
|
checkable: true
|
||||||
checked: false
|
checked: false
|
||||||
onCheckedChanged: buttons.rangeSelectChanged()
|
onCheckedChanged: buttons.rangeSelectChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton {
|
ImageToolButton {
|
||||||
id: lockButton
|
id: lockButton
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
implicitWidth: buttonWidth
|
|
||||||
|
|
||||||
iconSource: "qrc:/timeline/ico_selectionmode.png"
|
imageSource: "image://icons/selectionmode"
|
||||||
tooltip: qsTr("View event information on mouseover.")
|
tooltip: qsTr("View event information on mouseover.")
|
||||||
checkable: true
|
checkable: true
|
||||||
checked: false
|
checked: false
|
||||||
|
|||||||
51
src/libs/timeline/qml/ImageToolButton.qml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3 as published by the Free Software
|
||||||
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||||
|
** included in the packaging of this file. Please review the following
|
||||||
|
** information to ensure the GNU General Public License requirements will
|
||||||
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.1
|
||||||
|
import QtQuick.Controls 1.0
|
||||||
|
import QtQuick.Controls.Styles 1.2
|
||||||
|
|
||||||
|
ToolButton {
|
||||||
|
implicitWidth: 30
|
||||||
|
|
||||||
|
property string imageSource
|
||||||
|
|
||||||
|
Image {
|
||||||
|
source: parent.enabled ? parent.imageSource : parent.imageSource + "/disabled"
|
||||||
|
width: 16
|
||||||
|
height: 16
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
style: ButtonStyle {
|
||||||
|
background: Rectangle {
|
||||||
|
color: (control.checked || control.pressed)
|
||||||
|
? creatorTheme.FancyToolButtonSelectedColor
|
||||||
|
: control.hovered
|
||||||
|
? creatorTheme.FancyToolButtonHoverColor
|
||||||
|
: "#00000000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 619 B |
|
Before Width: | Height: | Size: 647 B |
|
Before Width: | Height: | Size: 167 B After Width: | Height: | Size: 154 B |
BIN
src/libs/timeline/qml/ico_rangeselected@2x.png
Normal file
|
After Width: | Height: | Size: 191 B |
|
Before Width: | Height: | Size: 158 B After Width: | Height: | Size: 145 B |
BIN
src/libs/timeline/qml/ico_rangeselection@2x.png
Normal file
|
After Width: | Height: | Size: 183 B |
|
Before Width: | Height: | Size: 261 B After Width: | Height: | Size: 150 B |
BIN
src/libs/timeline/qml/ico_selectionmode@2x.png
Normal file
|
After Width: | Height: | Size: 236 B |
|
Before Width: | Height: | Size: 518 B |
@@ -17,11 +17,11 @@
|
|||||||
<file>arrow_right.png</file>
|
<file>arrow_right.png</file>
|
||||||
<file>range_handle.png</file>
|
<file>range_handle.png</file>
|
||||||
<file>ico_selectionmode.png</file>
|
<file>ico_selectionmode.png</file>
|
||||||
<file>ico_zoom.png</file>
|
<file>ico_selectionmode@2x.png</file>
|
||||||
<file>ico_prev.png</file>
|
|
||||||
<file>ico_next.png</file>
|
|
||||||
<file>ico_rangeselection.png</file>
|
<file>ico_rangeselection.png</file>
|
||||||
|
<file>ico_rangeselection@2x.png</file>
|
||||||
<file>ico_rangeselected.png</file>
|
<file>ico_rangeselected.png</file>
|
||||||
|
<file>ico_rangeselected@2x.png</file>
|
||||||
<file>ico_note.png</file>
|
<file>ico_note.png</file>
|
||||||
<file>ButtonsBar.qml</file>
|
<file>ButtonsBar.qml</file>
|
||||||
<file>timelineitems.vert</file>
|
<file>timelineitems.vert</file>
|
||||||
@@ -33,5 +33,6 @@
|
|||||||
<file>RowLabel.qml</file>
|
<file>RowLabel.qml</file>
|
||||||
<file>SynchronousReloader.qml</file>
|
<file>SynchronousReloader.qml</file>
|
||||||
<file>TimelineText.qml</file>
|
<file>TimelineText.qml</file>
|
||||||
|
<file>ImageToolButton.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ SOURCES += \
|
|||||||
$$PWD/timelinerenderstate.cpp \
|
$$PWD/timelinerenderstate.cpp \
|
||||||
$$PWD/timelinenotesmodel.cpp \
|
$$PWD/timelinenotesmodel.cpp \
|
||||||
$$PWD/timelineabstractrenderer.cpp \
|
$$PWD/timelineabstractrenderer.cpp \
|
||||||
$$PWD/timelineoverviewrenderer.cpp
|
$$PWD/timelineoverviewrenderer.cpp \
|
||||||
|
$$PWD/timelinetheme.cpp
|
||||||
|
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
@@ -37,7 +38,8 @@ HEADERS += \
|
|||||||
$$PWD/timelineabstractrenderer.h \
|
$$PWD/timelineabstractrenderer.h \
|
||||||
$$PWD/timelineabstractrenderer_p.h \
|
$$PWD/timelineabstractrenderer_p.h \
|
||||||
$$PWD/timelineoverviewrenderer_p.h \
|
$$PWD/timelineoverviewrenderer_p.h \
|
||||||
$$PWD/timelineoverviewrenderer.h
|
$$PWD/timelineoverviewrenderer.h \
|
||||||
|
$$PWD/timelinetheme.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
$$PWD/qml/timeline.qrc
|
$$PWD/qml/timeline.qrc
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ Project {
|
|||||||
"timelinerenderpass.cpp", "timelinerenderpass.h",
|
"timelinerenderpass.cpp", "timelinerenderpass.h",
|
||||||
"timelinerenderstate.cpp", "timelinerenderstate.h", "timelinerenderstate_p.h",
|
"timelinerenderstate.cpp", "timelinerenderstate.h", "timelinerenderstate_p.h",
|
||||||
"timelineselectionrenderpass.cpp", "timelineselectionrenderpass.h",
|
"timelineselectionrenderpass.cpp", "timelineselectionrenderpass.h",
|
||||||
|
"timelinetheme.cpp", "timelinetheme.h",
|
||||||
"timelinezoomcontrol.cpp", "timelinezoomcontrol.h"
|
"timelinezoomcontrol.cpp", "timelinezoomcontrol.h"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
99
src/libs/timeline/timelinetheme.cpp
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3 as published by the Free Software
|
||||||
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||||
|
** included in the packaging of this file. Please review the following
|
||||||
|
** information to ensure the GNU General Public License requirements will
|
||||||
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "timelinetheme.h"
|
||||||
|
|
||||||
|
#include <utils/icon.h>
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/utilsicons.h>
|
||||||
|
#include <utils/theme/theme.h>
|
||||||
|
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QQmlContext>
|
||||||
|
#include <QQmlEngine>
|
||||||
|
#include <QQmlPropertyMap>
|
||||||
|
#include <QQuickImageProvider>
|
||||||
|
|
||||||
|
namespace Timeline {
|
||||||
|
|
||||||
|
class TimelineImageIconProvider : public QQuickImageProvider
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TimelineImageIconProvider()
|
||||||
|
: QQuickImageProvider(Pixmap)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override
|
||||||
|
{
|
||||||
|
Q_UNUSED(requestedSize)
|
||||||
|
|
||||||
|
const QStringList idElements = id.split(QLatin1Char('/'));
|
||||||
|
|
||||||
|
QTC_ASSERT(!idElements.isEmpty(), return QPixmap());
|
||||||
|
const QString &iconName = idElements.first();
|
||||||
|
const QIcon::Mode iconMode = (idElements.count() > 1
|
||||||
|
&& idElements.at(1) == QLatin1String("disabled"))
|
||||||
|
? QIcon::Disabled : QIcon::Normal;
|
||||||
|
|
||||||
|
Utils::Icon icon;
|
||||||
|
if (iconName == QLatin1String("prev"))
|
||||||
|
icon = Utils::Icons::PREV_TOOLBAR;
|
||||||
|
else if (iconName == QLatin1String("next"))
|
||||||
|
icon = Utils::Icons::NEXT_TOOLBAR;
|
||||||
|
else if (iconName == QLatin1String("zoom"))
|
||||||
|
icon = Utils::Icons::ZOOM_TOOLBAR;
|
||||||
|
else if (iconName == QLatin1String("rangeselection"))
|
||||||
|
icon = Utils::Icon({{QLatin1String(":/timeline/ico_rangeselection.png"),
|
||||||
|
Utils::Theme::IconsBaseColor}});
|
||||||
|
else if (iconName == QLatin1String("rangeselected"))
|
||||||
|
icon = Utils::Icon({{QLatin1String(":/timeline/ico_rangeselected.png"),
|
||||||
|
Utils::Theme::IconsBaseColor}});
|
||||||
|
else if (iconName == QLatin1String("selectionmode"))
|
||||||
|
icon = Utils::Icon({{QLatin1String(":/timeline/ico_selectionmode.png"),
|
||||||
|
Utils::Theme::IconsBaseColor}});
|
||||||
|
|
||||||
|
const QSize iconSize(16, 16);
|
||||||
|
const QPixmap result = icon.icon().pixmap(iconSize, iconMode);
|
||||||
|
|
||||||
|
if (size)
|
||||||
|
*size = result.size();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void TimelineTheme::setupTheme(QQmlEngine *engine)
|
||||||
|
{
|
||||||
|
QQmlPropertyMap *themePropertyMap = new QQmlPropertyMap(engine);
|
||||||
|
const QVariantHash creatorTheme = Utils::creatorTheme()->values();
|
||||||
|
for (auto it = creatorTheme.constBegin(); it != creatorTheme.constEnd(); ++it)
|
||||||
|
themePropertyMap->insert(it.key(), it.value());
|
||||||
|
|
||||||
|
engine->rootContext()->setContextProperty(QLatin1String("creatorTheme"), themePropertyMap);
|
||||||
|
|
||||||
|
engine->addImageProvider(QLatin1String("icons"), new TimelineImageIconProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Timeline
|
||||||
39
src/libs/timeline/timelinetheme.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3 as published by the Free Software
|
||||||
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||||
|
** included in the packaging of this file. Please review the following
|
||||||
|
** information to ensure the GNU General Public License requirements will
|
||||||
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "timeline_global.h"
|
||||||
|
|
||||||
|
QT_FORWARD_DECLARE_CLASS(QQmlEngine)
|
||||||
|
|
||||||
|
namespace Timeline {
|
||||||
|
|
||||||
|
class TIMELINE_EXPORT TimelineTheme {
|
||||||
|
public:
|
||||||
|
static void setupTheme(QQmlEngine* engine);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Timeline
|
||||||
@@ -155,6 +155,9 @@ struct functionTraits<Callable&&> : public functionTraits<Callable>
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <typename F>
|
||||||
|
using functionResult_t = typename functionTraits<F>::ResultType;
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// functionTakesArgument
|
// functionTakesArgument
|
||||||
////////////////////
|
////////////////////
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename ResultType, typename Function, typename... Args>
|
template <typename ResultType, typename Function, typename... Args>
|
||||||
typename functionTraits<Function>::ResultType
|
functionResult_t<Function>
|
||||||
callWithMaybeFutureInterfaceDispatch(std::false_type, QFutureInterface<ResultType> &,
|
callWithMaybeFutureInterfaceDispatch(std::false_type, QFutureInterface<ResultType> &,
|
||||||
Function &&function, Args&&... args)
|
Function &&function, Args&&... args)
|
||||||
{
|
{
|
||||||
@@ -251,7 +251,7 @@ callWithMaybeFutureInterfaceDispatch(std::false_type, QFutureInterface<ResultTyp
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename ResultType, typename Function, typename... Args>
|
template <typename ResultType, typename Function, typename... Args>
|
||||||
typename functionTraits<Function>::ResultType
|
functionResult_t<Function>
|
||||||
callWithMaybeFutureInterfaceDispatch(std::true_type, QFutureInterface<ResultType> &futureInterface,
|
callWithMaybeFutureInterfaceDispatch(std::true_type, QFutureInterface<ResultType> &futureInterface,
|
||||||
Function &&function, Args&&... args)
|
Function &&function, Args&&... args)
|
||||||
{
|
{
|
||||||
@@ -259,7 +259,7 @@ callWithMaybeFutureInterfaceDispatch(std::true_type, QFutureInterface<ResultType
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename ResultType, typename Function, typename... Args>
|
template <typename ResultType, typename Function, typename... Args>
|
||||||
typename functionTraits<Function>::ResultType
|
functionResult_t<Function>
|
||||||
callWithMaybeFutureInterface(QFutureInterface<ResultType> &futureInterface,
|
callWithMaybeFutureInterface(QFutureInterface<ResultType> &futureInterface,
|
||||||
Function &&function, Args&&... args)
|
Function &&function, Args&&... args)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ struct resultTypeWithArgument<Function, QFutureInterface<ResultType>&>
|
|||||||
template <typename Function, typename Arg>
|
template <typename Function, typename Arg>
|
||||||
struct resultTypeWithArgument
|
struct resultTypeWithArgument
|
||||||
{
|
{
|
||||||
using type = typename functionTraits<Function>::ResultType;
|
using type = functionResult_t<Function>;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename Function, int index>
|
template <typename Function, int index>
|
||||||
@@ -110,7 +110,7 @@ struct resultTypeTakesArguments<Function, index, true>
|
|||||||
template <typename Function, int index>
|
template <typename Function, int index>
|
||||||
struct resultTypeTakesArguments<Function, index, false>
|
struct resultTypeTakesArguments<Function, index, false>
|
||||||
{
|
{
|
||||||
using type = typename functionTraits<Function>::ResultType;
|
using type = functionResult_t<Function>;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename Function>
|
template <typename Function>
|
||||||
|
|||||||
@@ -182,10 +182,8 @@ void Theme::readSettings(QSettings &settings)
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
settings.beginGroup(QLatin1String("Palette"));
|
settings.beginGroup(QLatin1String("Palette"));
|
||||||
foreach (const QString &key, settings.allKeys()) {
|
foreach (const QString &key, settings.allKeys())
|
||||||
QColor c = readColor(settings.value(key).toString());
|
d->palette[key] = readNamedColor(settings.value(key).toString()).first;
|
||||||
d->palette[key] = c;
|
|
||||||
}
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -617,17 +617,12 @@ TreeItem::~TreeItem()
|
|||||||
removeChildren();
|
removeChildren();
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeItem *TreeItem::child(int pos) const
|
TreeItem *TreeItem::childAt(int pos) const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(pos >= 0, return 0);
|
QTC_ASSERT(pos >= 0, return 0);
|
||||||
return pos < m_children.size() ? m_children.at(pos) : 0;
|
return pos < m_children.size() ? m_children.at(pos) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeItem::rowCount() const
|
|
||||||
{
|
|
||||||
return m_children.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant TreeItem::data(int column, int role) const
|
QVariant TreeItem::data(int column, int role) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(column);
|
Q_UNUSED(column);
|
||||||
@@ -651,7 +646,7 @@ Qt::ItemFlags TreeItem::flags(int column) const
|
|||||||
|
|
||||||
bool TreeItem::hasChildren() const
|
bool TreeItem::hasChildren() const
|
||||||
{
|
{
|
||||||
return canFetchMore() || rowCount() > 0;
|
return canFetchMore() || childCount() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TreeItem::canFetchMore() const
|
bool TreeItem::canFetchMore() const
|
||||||
@@ -692,11 +687,11 @@ void TreeItem::insertChild(int pos, TreeItem *item)
|
|||||||
|
|
||||||
void TreeItem::removeChildren()
|
void TreeItem::removeChildren()
|
||||||
{
|
{
|
||||||
if (rowCount() == 0)
|
if (childCount() == 0)
|
||||||
return;
|
return;
|
||||||
if (m_model) {
|
if (m_model) {
|
||||||
QModelIndex idx = index();
|
QModelIndex idx = index();
|
||||||
m_model->beginRemoveRows(idx, 0, rowCount() - 1);
|
m_model->beginRemoveRows(idx, 0, childCount() - 1);
|
||||||
clear();
|
clear();
|
||||||
m_model->endRemoveRows();
|
m_model->endRemoveRows();
|
||||||
} else {
|
} else {
|
||||||
@@ -707,7 +702,7 @@ void TreeItem::removeChildren()
|
|||||||
void TreeItem::sortChildren(const std::function<bool(const TreeItem *, const TreeItem *)> &cmp)
|
void TreeItem::sortChildren(const std::function<bool(const TreeItem *, const TreeItem *)> &cmp)
|
||||||
{
|
{
|
||||||
if (m_model) {
|
if (m_model) {
|
||||||
if (const int n = rowCount()) {
|
if (const int n = childCount()) {
|
||||||
QVector<TreeItem *> tmp = m_children;
|
QVector<TreeItem *> tmp = m_children;
|
||||||
std::sort(tmp.begin(), tmp.end(), cmp);
|
std::sort(tmp.begin(), tmp.end(), cmp);
|
||||||
if (tmp == m_children) {
|
if (tmp == m_children) {
|
||||||
@@ -850,8 +845,8 @@ QModelIndex TreeModel::parent(const QModelIndex &idx) const
|
|||||||
if (!grandparent)
|
if (!grandparent)
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
|
|
||||||
for (int i = 0, n = grandparent->rowCount(); i < n; ++i)
|
for (int i = 0, n = grandparent->childCount(); i < n; ++i)
|
||||||
if (grandparent->child(i) == parent)
|
if (grandparent->childAt(i) == parent)
|
||||||
return createIndex(i, 0, (void*) parent);
|
return createIndex(i, 0, (void*) parent);
|
||||||
|
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
@@ -861,12 +856,12 @@ int TreeModel::rowCount(const QModelIndex &idx) const
|
|||||||
{
|
{
|
||||||
CHECK_INDEX(idx);
|
CHECK_INDEX(idx);
|
||||||
if (!idx.isValid())
|
if (!idx.isValid())
|
||||||
return m_root->rowCount();
|
return m_root->childCount();
|
||||||
if (idx.column() > 0)
|
if (idx.column() > 0)
|
||||||
return 0;
|
return 0;
|
||||||
const TreeItem *item = itemForIndex(idx);
|
const TreeItem *item = itemForIndex(idx);
|
||||||
QTC_ASSERT(item, return 0);
|
QTC_ASSERT(item, return 0);
|
||||||
return item->rowCount();
|
return item->childCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
int TreeModel::columnCount(const QModelIndex &idx) const
|
int TreeModel::columnCount(const QModelIndex &idx) const
|
||||||
@@ -985,9 +980,9 @@ QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent) con
|
|||||||
|
|
||||||
const TreeItem *item = itemForIndex(parent);
|
const TreeItem *item = itemForIndex(parent);
|
||||||
QTC_ASSERT(item, return QModelIndex());
|
QTC_ASSERT(item, return QModelIndex());
|
||||||
if (row >= item->rowCount())
|
if (row >= item->childCount())
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
return createIndex(row, column, (void*)(item->child(row)));
|
return createIndex(row, column, (void*)(item->childAt(row)));
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeItem *TreeModel::itemForIndex(const QModelIndex &idx) const
|
TreeItem *TreeModel::itemForIndex(const QModelIndex &idx) const
|
||||||
@@ -1049,6 +1044,11 @@ TreeItem *TreeModel::takeItem(TreeItem *item)
|
|||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TreeModel::destroyItem(TreeItem *item)
|
||||||
|
{
|
||||||
|
delete takeItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
StaticTreeItem::StaticTreeItem(const QStringList &displays)
|
StaticTreeItem::StaticTreeItem(const QStringList &displays)
|
||||||
: m_displays(displays)
|
: m_displays(displays)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -41,10 +41,6 @@ public:
|
|||||||
TreeItem();
|
TreeItem();
|
||||||
virtual ~TreeItem();
|
virtual ~TreeItem();
|
||||||
|
|
||||||
TreeItem *parent() const { return m_parent; }
|
|
||||||
virtual TreeItem *child(int pos) const;
|
|
||||||
virtual int rowCount() const;
|
|
||||||
|
|
||||||
virtual QVariant data(int column, int role) const;
|
virtual QVariant data(int column, int role) const;
|
||||||
virtual bool setData(int column, const QVariant &data, int role);
|
virtual bool setData(int column, const QVariant &data, int role);
|
||||||
virtual Qt::ItemFlags flags(int column) const;
|
virtual Qt::ItemFlags flags(int column) const;
|
||||||
@@ -53,6 +49,8 @@ public:
|
|||||||
virtual bool canFetchMore() const;
|
virtual bool canFetchMore() const;
|
||||||
virtual void fetchMore() {}
|
virtual void fetchMore() {}
|
||||||
|
|
||||||
|
TreeItem *parent() const { return m_parent; }
|
||||||
|
|
||||||
void prependChild(TreeItem *item);
|
void prependChild(TreeItem *item);
|
||||||
void appendChild(TreeItem *item);
|
void appendChild(TreeItem *item);
|
||||||
void insertChild(int pos, TreeItem *item);
|
void insertChild(int pos, TreeItem *item);
|
||||||
@@ -67,7 +65,7 @@ public:
|
|||||||
|
|
||||||
void setFlags(Qt::ItemFlags flags);
|
void setFlags(Qt::ItemFlags flags);
|
||||||
int childCount() const { return m_children.size(); }
|
int childCount() const { return m_children.size(); }
|
||||||
TreeItem *childAt(int index) const { return m_children.at(index); }
|
TreeItem *childAt(int index) const;
|
||||||
QVector<TreeItem *> children() const { return m_children; }
|
QVector<TreeItem *> children() const { return m_children; }
|
||||||
QModelIndex index() const;
|
QModelIndex index() const;
|
||||||
|
|
||||||
@@ -230,6 +228,7 @@ public:
|
|||||||
void fetchMore(const QModelIndex &idx) override;
|
void fetchMore(const QModelIndex &idx) override;
|
||||||
|
|
||||||
TreeItem *takeItem(TreeItem *item); // item is not destroyed.
|
TreeItem *takeItem(TreeItem *item); // item is not destroyed.
|
||||||
|
void destroyItem(TreeItem *item); // item is destroyed.
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void requestExpansion(QModelIndex);
|
void requestExpansion(QModelIndex);
|
||||||
|
|||||||
@@ -231,7 +231,10 @@ bool AndroidToolChain::isSecondaryToolChain() const
|
|||||||
|
|
||||||
void AndroidToolChain::setSecondaryToolChain(bool b)
|
void AndroidToolChain::setSecondaryToolChain(bool b)
|
||||||
{
|
{
|
||||||
|
if (m_secondaryToolChain == b)
|
||||||
|
return;
|
||||||
m_secondaryToolChain = b;
|
m_secondaryToolChain = b;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
GccToolChain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const
|
GccToolChain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file>images/autotest.png</file>
|
<file>images/autotest.png</file>
|
||||||
<file>images/expand.png</file>
|
|
||||||
<file>images/expand@2x.png</file>
|
|
||||||
<file>images/collapse.png</file>
|
|
||||||
<file>images/collapse@2x.png</file>
|
|
||||||
<file>images/sort.png</file>
|
<file>images/sort.png</file>
|
||||||
<file>images/sort@2x.png</file>
|
<file>images/sort@2x.png</file>
|
||||||
<file>images/leafsort.png</file>
|
<file>images/leafsort.png</file>
|
||||||
|
|||||||
@@ -30,10 +30,6 @@
|
|||||||
namespace Autotest {
|
namespace Autotest {
|
||||||
namespace Icons {
|
namespace Icons {
|
||||||
|
|
||||||
const Utils::Icon EXPAND({
|
|
||||||
{QLatin1String(":/images/expand.png"), Utils::Theme::IconsBaseColor}});
|
|
||||||
const Utils::Icon COLLAPSE({
|
|
||||||
{QLatin1String(":/images/collapse.png"), Utils::Theme::IconsBaseColor}});
|
|
||||||
const Utils::Icon SORT_ALPHABETICALLY({
|
const Utils::Icon SORT_ALPHABETICALLY({
|
||||||
{QLatin1String(":/images/sort.png"), Utils::Theme::IconsBaseColor}});
|
{QLatin1String(":/images/sort.png"), Utils::Theme::IconsBaseColor}});
|
||||||
const Utils::Icon SORT_NATURALLY({
|
const Utils::Icon SORT_NATURALLY({
|
||||||
|
|||||||
@@ -202,30 +202,14 @@ static void performParse(QFutureInterface<TestParseResultPtr> &futureInterface,
|
|||||||
|
|
||||||
/****** threaded parsing stuff *******/
|
/****** threaded parsing stuff *******/
|
||||||
|
|
||||||
void TestCodeParser::onCppDocumentUpdated(const CPlusPlus::Document::Ptr &document)
|
void TestCodeParser::onDocumentUpdated(const QString &fileName)
|
||||||
{
|
{
|
||||||
if (m_codeModelParsing) {
|
|
||||||
if (!m_fullUpdatePostponed) {
|
|
||||||
m_partialUpdatePostponed = true;
|
|
||||||
m_postponedFiles.insert(document->fileName());
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject();
|
ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject();
|
||||||
if (!project)
|
if (!project)
|
||||||
return;
|
return;
|
||||||
const QString fileName = document->fileName();
|
if (!project->files(ProjectExplorer::Project::SourceFiles).contains(fileName))
|
||||||
if (!project->files(ProjectExplorer::Project::AllFiles).contains(fileName))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
qCDebug(LOG) << "calling scanForTests (onCppDocumentUpdated)";
|
|
||||||
scanForTests(QStringList(fileName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestCodeParser::onQmlDocumentUpdated(const QmlJS::Document::Ptr &document)
|
|
||||||
{
|
|
||||||
const QString &fileName = document->fileName();
|
|
||||||
if (m_codeModelParsing) {
|
if (m_codeModelParsing) {
|
||||||
if (!m_fullUpdatePostponed) {
|
if (!m_fullUpdatePostponed) {
|
||||||
m_partialUpdatePostponed = true;
|
m_partialUpdatePostponed = true;
|
||||||
@@ -234,22 +218,28 @@ void TestCodeParser::onQmlDocumentUpdated(const QmlJS::Document::Ptr &document)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectExplorer::Project *project = ProjectExplorer::SessionManager::startupProject();
|
|
||||||
if (!project)
|
|
||||||
return;
|
|
||||||
if (!project->files(ProjectExplorer::Project::AllFiles).contains(fileName)) {
|
|
||||||
// what if the file is not listed inside the pro file, but will be used anyway?
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
scanForTests(QStringList(fileName));
|
scanForTests(QStringList(fileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestCodeParser::onCppDocumentUpdated(const CPlusPlus::Document::Ptr &document)
|
||||||
|
{
|
||||||
|
onDocumentUpdated(document->fileName());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestCodeParser::onQmlDocumentUpdated(const QmlJS::Document::Ptr &document)
|
||||||
|
{
|
||||||
|
const QString fileName = document->fileName();
|
||||||
|
if (!fileName.endsWith(".qbs"))
|
||||||
|
onDocumentUpdated(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
void TestCodeParser::onStartupProjectChanged(ProjectExplorer::Project *project)
|
void TestCodeParser::onStartupProjectChanged(ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
if (m_parserState == FullParse || m_parserState == PartialParse)
|
if (m_parserState == FullParse || m_parserState == PartialParse) {
|
||||||
|
qCDebug(LOG) << "Canceling scanForTest (startup project changed)";
|
||||||
Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE);
|
Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE);
|
||||||
else if (project)
|
}
|
||||||
|
if (project)
|
||||||
emitUpdateTestTree();
|
emitUpdateTestTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,6 +265,7 @@ bool TestCodeParser::postponed(const QStringList &fileList)
|
|||||||
m_partialUpdatePostponed = false;
|
m_partialUpdatePostponed = false;
|
||||||
m_postponedFiles.clear();
|
m_postponedFiles.clear();
|
||||||
m_fullUpdatePostponed = true;
|
m_fullUpdatePostponed = true;
|
||||||
|
qCDebug(LOG) << "Canceling scanForTest (full parse triggered while running a scan)";
|
||||||
Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE);
|
Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE);
|
||||||
} else {
|
} else {
|
||||||
// partial parse triggered, but full parse is postponed already, ignoring this
|
// partial parse triggered, but full parse is postponed already, ignoring this
|
||||||
@@ -315,7 +306,7 @@ void TestCodeParser::scanForTests(const QStringList &fileList)
|
|||||||
bool isFullParse = fileList.isEmpty();
|
bool isFullParse = fileList.isEmpty();
|
||||||
QStringList list;
|
QStringList list;
|
||||||
if (isFullParse) {
|
if (isFullParse) {
|
||||||
list = ProjectExplorer::SessionManager::startupProject()->files(ProjectExplorer::Project::AllFiles);
|
list = ProjectExplorer::SessionManager::startupProject()->files(ProjectExplorer::Project::SourceFiles);
|
||||||
if (list.isEmpty())
|
if (list.isEmpty())
|
||||||
return;
|
return;
|
||||||
qCDebug(LOG) << "setting state to FullParse (scanForTests)";
|
qCDebug(LOG) << "setting state to FullParse (scanForTests)";
|
||||||
@@ -352,8 +343,15 @@ void TestCodeParser::scanForTests(const QStringList &fileList)
|
|||||||
|
|
||||||
void TestCodeParser::onTaskStarted(Core::Id type)
|
void TestCodeParser::onTaskStarted(Core::Id type)
|
||||||
{
|
{
|
||||||
if (type == CppTools::Constants::TASK_INDEX)
|
if (type == CppTools::Constants::TASK_INDEX) {
|
||||||
m_codeModelParsing = true;
|
m_codeModelParsing = true;
|
||||||
|
if (m_parserState == FullParse || m_parserState == PartialParse) {
|
||||||
|
m_fullUpdatePostponed = m_parserState == FullParse;
|
||||||
|
m_partialUpdatePostponed = !m_fullUpdatePostponed;
|
||||||
|
qCDebug(LOG) << "Canceling scan for test (CppModelParsing started)";
|
||||||
|
Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestCodeParser::onAllTasksFinished(Core::Id type)
|
void TestCodeParser::onAllTasksFinished(Core::Id type)
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ private:
|
|||||||
bool postponed(const QStringList &fileList);
|
bool postponed(const QStringList &fileList);
|
||||||
void scanForTests(const QStringList &fileList = QStringList());
|
void scanForTests(const QStringList &fileList = QStringList());
|
||||||
|
|
||||||
|
void onDocumentUpdated(const QString &fileName);
|
||||||
void onTaskStarted(Core::Id type);
|
void onTaskStarted(Core::Id type);
|
||||||
void onAllTasksFinished(Core::Id type);
|
void onAllTasksFinished(Core::Id type);
|
||||||
void onFinished();
|
void onFinished();
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ void TestConfiguration::completeTestInformation(int runMode)
|
|||||||
env = stdRunnable.environment;
|
env = stdRunnable.environment;
|
||||||
hasDesktopTarget = true;
|
hasDesktopTarget = true;
|
||||||
guessedRunConfiguration = true;
|
guessedRunConfiguration = true;
|
||||||
|
runConfigTarget = rc->target();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -186,7 +187,7 @@ void TestConfiguration::completeTestInformation(int runMode)
|
|||||||
setEnvironment(env);
|
setEnvironment(env);
|
||||||
setProject(project);
|
setProject(project);
|
||||||
setGuessedConfiguration(guessedRunConfiguration);
|
setGuessedConfiguration(guessedRunConfiguration);
|
||||||
if (!guessedRunConfiguration && runMode == TestRunner::Debug)
|
if (runMode == TestRunner::Debug)
|
||||||
m_runConfig = new TestRunConfiguration(runConfigTarget, this);
|
m_runConfig = new TestRunConfiguration(runConfigTarget, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -202,11 +202,11 @@ QList<QToolButton *> TestNavigationWidget::createToolButtons()
|
|||||||
m_sort->setToolTip(tr("Sort Naturally"));
|
m_sort->setToolTip(tr("Sort Naturally"));
|
||||||
|
|
||||||
QToolButton *expand = new QToolButton(this);
|
QToolButton *expand = new QToolButton(this);
|
||||||
expand->setIcon(Icons::EXPAND.icon());
|
expand->setIcon(Core::Icons::EXPAND_TOOLBAR.icon());
|
||||||
expand->setToolTip(tr("Expand All"));
|
expand->setToolTip(tr("Expand All"));
|
||||||
|
|
||||||
QToolButton *collapse = new QToolButton(this);
|
QToolButton *collapse = new QToolButton(this);
|
||||||
collapse->setIcon(Icons::COLLAPSE.icon());
|
collapse->setIcon(Core::Icons::COLLAPSE_TOOLBAR.icon());
|
||||||
collapse->setToolTip(tr("Collapse All"));
|
collapse->setToolTip(tr("Collapse All"));
|
||||||
|
|
||||||
connect(expand, &QToolButton::clicked, m_view, &TestTreeView::expandAll);
|
connect(expand, &QToolButton::clicked, m_view, &TestTreeView::expandAll);
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ void TestResultModel::removeCurrentTestMessage()
|
|||||||
for (int row = topLevelItems.size() - 1; row >= 0; --row) {
|
for (int row = topLevelItems.size() - 1; row >= 0; --row) {
|
||||||
TestResultItem *current = static_cast<TestResultItem *>(topLevelItems.at(row));
|
TestResultItem *current = static_cast<TestResultItem *>(topLevelItems.at(row));
|
||||||
if (current->testResult()->result() == Result::MessageCurrentTest) {
|
if (current->testResult()->result() == Result::MessageCurrentTest) {
|
||||||
delete takeItem(current);
|
destroyItem(current);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ TestResultsPane::TestResultsPane(QObject *parent) :
|
|||||||
void TestResultsPane::createToolButtons()
|
void TestResultsPane::createToolButtons()
|
||||||
{
|
{
|
||||||
m_expandCollapse = new QToolButton(m_treeView);
|
m_expandCollapse = new QToolButton(m_treeView);
|
||||||
m_expandCollapse->setIcon(Core::Icons::EXPAND.icon());
|
m_expandCollapse->setIcon(Core::Icons::EXPAND_ALL_TOOLBAR.icon());
|
||||||
m_expandCollapse->setToolTip(tr("Expand All"));
|
m_expandCollapse->setToolTip(tr("Expand All"));
|
||||||
m_expandCollapse->setCheckable(true);
|
m_expandCollapse->setCheckable(true);
|
||||||
m_expandCollapse->setChecked(false);
|
m_expandCollapse->setChecked(false);
|
||||||
@@ -231,8 +231,7 @@ QWidget *TestResultsPane::outputWidget(QWidget *parent)
|
|||||||
|
|
||||||
QList<QWidget *> TestResultsPane::toolBarWidgets() const
|
QList<QWidget *> TestResultsPane::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget *>() << m_expandCollapse << m_runAll << m_runSelected << m_stopTestRun
|
return { m_expandCollapse, m_runAll, m_runSelected, m_stopTestRun, m_filterButton };
|
||||||
<< m_filterButton;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString TestResultsPane::displayName() const
|
QString TestResultsPane::displayName() const
|
||||||
@@ -338,7 +337,7 @@ void TestResultsPane::goToNext()
|
|||||||
if (!rootItem || !rootItem->childCount())
|
if (!rootItem || !rootItem->childCount())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nextCurrentIndex = m_filterModel->mapFromSource(m_model->indexForItem(rootItem->child(0)));
|
nextCurrentIndex = m_filterModel->mapFromSource(m_model->indexForItem(rootItem->childAt(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_treeView->setCurrentIndex(nextCurrentIndex);
|
m_treeView->setCurrentIndex(nextCurrentIndex);
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ TestTreeItem *TestTreeItem::parentItem() const
|
|||||||
|
|
||||||
TestTreeItem *TestTreeItem::childItem(int row) const
|
TestTreeItem *TestTreeItem::childItem(int row) const
|
||||||
{
|
{
|
||||||
return static_cast<TestTreeItem *>(child(row));
|
return static_cast<TestTreeItem *>(childAt(row));
|
||||||
}
|
}
|
||||||
|
|
||||||
TestTreeItem *TestTreeItem::findChildByName(const QString &name)
|
TestTreeItem *TestTreeItem::findChildByName(const QString &name)
|
||||||
|
|||||||
@@ -257,14 +257,14 @@ bool TestTreeModel::sweepChildren(TestTreeItem *item)
|
|||||||
TestTreeItem *child = item->childItem(row);
|
TestTreeItem *child = item->childItem(row);
|
||||||
|
|
||||||
if (child->parentItem()->type() != TestTreeItem::Root && child->markedForRemoval()) {
|
if (child->parentItem()->type() != TestTreeItem::Root && child->markedForRemoval()) {
|
||||||
delete takeItem(child);
|
destroyItem(child);
|
||||||
hasChanged = true;
|
hasChanged = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (bool noEndNode = child->hasChildren()) {
|
if (bool noEndNode = child->hasChildren()) {
|
||||||
hasChanged |= sweepChildren(child);
|
hasChanged |= sweepChildren(child);
|
||||||
if (noEndNode && child->childCount() == 0) {
|
if (noEndNode && child->childCount() == 0) {
|
||||||
delete takeItem(child);
|
destroyItem(child);
|
||||||
hasChanged = true;
|
hasChanged = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ void GdbServerProviderModel::markForRemoval(GdbServerProvider *provider)
|
|||||||
{
|
{
|
||||||
GdbServerProviderNode *n = findNode(provider);
|
GdbServerProviderNode *n = findNode(provider);
|
||||||
QTC_ASSERT(n, return);
|
QTC_ASSERT(n, return);
|
||||||
delete takeItem(n);
|
destroyItem(n);
|
||||||
|
|
||||||
if (m_providersToAdd.contains(provider)) {
|
if (m_providersToAdd.contains(provider)) {
|
||||||
m_providersToAdd.removeOne(provider);
|
m_providersToAdd.removeOne(provider);
|
||||||
@@ -233,7 +233,7 @@ void GdbServerProviderModel::removeProvider(GdbServerProvider *provider)
|
|||||||
{
|
{
|
||||||
m_providersToRemove.removeAll(provider);
|
m_providersToRemove.removeAll(provider);
|
||||||
if (GdbServerProviderNode *n = findNode(provider))
|
if (GdbServerProviderNode *n = findNode(provider))
|
||||||
delete takeItem(n);
|
destroyItem(n);
|
||||||
|
|
||||||
emit providerStateChanged();
|
emit providerStateChanged();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,10 +108,9 @@ void openEditorAt(const ClangBackEnd::SourceLocationContainer &location)
|
|||||||
int(location.column() - 1));
|
int(location.column() - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void applyFixit(const ClangBackEnd::SourceLocationContainer &location,
|
void applyFixit(const QVector<ClangBackEnd::FixItContainer> &fixits)
|
||||||
const QVector<ClangBackEnd::FixItContainer> &fixits)
|
|
||||||
{
|
{
|
||||||
ClangCodeModel::ClangFixItOperation operation(location.filePath(), Utf8String(), fixits);
|
ClangCodeModel::ClangFixItOperation operation(Utf8String(), fixits);
|
||||||
|
|
||||||
operation.perform();
|
operation.perform();
|
||||||
}
|
}
|
||||||
@@ -146,7 +145,7 @@ QWidget *createDiagnosticLabel(const ClangBackEnd::DiagnosticContainer &diagnost
|
|||||||
label->setTextFormat(Qt::RichText);
|
label->setTextFormat(Qt::RichText);
|
||||||
QObject::connect(label, &QLabel::linkActivated, [location, fixits](const QString &action) {
|
QObject::connect(label, &QLabel::linkActivated, [location, fixits](const QString &action) {
|
||||||
if (action == QLatin1String(LINK_ACTION_APPLY_FIX))
|
if (action == QLatin1String(LINK_ACTION_APPLY_FIX))
|
||||||
applyFixit(location, fixits);
|
applyFixit(fixits);
|
||||||
else
|
else
|
||||||
openEditorAt(location);
|
openEditorAt(location);
|
||||||
|
|
||||||
|
|||||||
@@ -27,16 +27,21 @@
|
|||||||
|
|
||||||
#include <texteditor/refactoringchanges.h>
|
#include <texteditor/refactoringchanges.h>
|
||||||
|
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
#include <QTextDocument>
|
#include <QTextDocument>
|
||||||
|
|
||||||
namespace ClangCodeModel {
|
namespace ClangCodeModel {
|
||||||
|
|
||||||
ClangFixItOperation::ClangFixItOperation(const Utf8String &filePath,
|
using FileToFixits = QMap<QString, QVector<ClangBackEnd::FixItContainer>>;
|
||||||
const Utf8String &fixItText,
|
using FileToFixitsIterator = QMapIterator<QString, QVector<ClangBackEnd::FixItContainer>>;
|
||||||
const QVector<ClangBackEnd::FixItContainer> &fixItContainers)
|
using RefactoringFilePtr = QSharedPointer<TextEditor::RefactoringFile>;
|
||||||
: filePath(filePath),
|
|
||||||
fixItText(fixItText),
|
ClangFixItOperation::ClangFixItOperation(
|
||||||
fixItContainers(fixItContainers)
|
const Utf8String &fixItText,
|
||||||
|
const QVector<ClangBackEnd::FixItContainer> &fixItContainers)
|
||||||
|
: fixItText(fixItText)
|
||||||
|
, fixItContainers(fixItContainers)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,20 +55,56 @@ QString ClangCodeModel::ClangFixItOperation::description() const
|
|||||||
return QStringLiteral("Apply Fix: ") + fixItText.toString();
|
return QStringLiteral("Apply Fix: ") + fixItText.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static FileToFixits fixitsPerFile(const QVector<ClangBackEnd::FixItContainer> &fixItContainers)
|
||||||
|
{
|
||||||
|
FileToFixits mapping;
|
||||||
|
|
||||||
|
for (const auto &fixItContainer : fixItContainers) {
|
||||||
|
const QString rangeStartFilePath = fixItContainer.range().start().filePath().toString();
|
||||||
|
const QString rangeEndFilePath = fixItContainer.range().end().filePath().toString();
|
||||||
|
QTC_CHECK(rangeStartFilePath == rangeEndFilePath);
|
||||||
|
mapping[rangeStartFilePath].append(fixItContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapping;
|
||||||
|
}
|
||||||
|
|
||||||
void ClangFixItOperation::perform()
|
void ClangFixItOperation::perform()
|
||||||
{
|
{
|
||||||
const TextEditor::RefactoringChanges refactoringChanges;
|
const TextEditor::RefactoringChanges refactoringChanges;
|
||||||
refactoringFile = refactoringChanges.file(filePath.toString());
|
const FileToFixits fileToFixIts = fixitsPerFile(fixItContainers);
|
||||||
refactoringFile->setChangeSet(changeSet());
|
|
||||||
refactoringFile->apply();
|
FileToFixitsIterator i(fileToFixIts);
|
||||||
|
while (i.hasNext()) {
|
||||||
|
i.next();
|
||||||
|
const QString filePath = i.key();
|
||||||
|
const QVector<ClangBackEnd::FixItContainer> fixits = i.value();
|
||||||
|
|
||||||
|
RefactoringFilePtr refactoringFile = refactoringChanges.file(filePath);
|
||||||
|
refactoringFiles.append(refactoringFile);
|
||||||
|
|
||||||
|
applyFixitsToFile(*refactoringFile, fixits);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ClangFixItOperation::refactoringFileContent_forTestOnly() const
|
QString ClangFixItOperation::firstRefactoringFileContent_forTestOnly() const
|
||||||
{
|
{
|
||||||
return refactoringFile->document()->toPlainText();
|
return refactoringFiles.first()->document()->toPlainText();
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::ChangeSet ClangFixItOperation::changeSet() const
|
void ClangFixItOperation::applyFixitsToFile(
|
||||||
|
TextEditor::RefactoringFile &refactoringFile,
|
||||||
|
const QVector<ClangBackEnd::FixItContainer> fixItContainers)
|
||||||
|
{
|
||||||
|
const Utils::ChangeSet changeSet = toChangeSet(refactoringFile, fixItContainers);
|
||||||
|
|
||||||
|
refactoringFile.setChangeSet(changeSet);
|
||||||
|
refactoringFile.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils::ChangeSet ClangFixItOperation::toChangeSet(
|
||||||
|
TextEditor::RefactoringFile &refactoringFile,
|
||||||
|
const QVector<ClangBackEnd::FixItContainer> fixItContainers) const
|
||||||
{
|
{
|
||||||
Utils::ChangeSet changeSet;
|
Utils::ChangeSet changeSet;
|
||||||
|
|
||||||
@@ -71,8 +112,8 @@ Utils::ChangeSet ClangFixItOperation::changeSet() const
|
|||||||
const auto range = fixItContainer.range();
|
const auto range = fixItContainer.range();
|
||||||
const auto start = range.start();
|
const auto start = range.start();
|
||||||
const auto end = range.end();
|
const auto end = range.end();
|
||||||
changeSet.replace(refactoringFile->position(start.line(), start.column()),
|
changeSet.replace(refactoringFile.position(start.line(), start.column()),
|
||||||
refactoringFile->position(end.line(), end.column()),
|
refactoringFile.position(end.line(), end.column()),
|
||||||
fixItContainer.text());
|
fixItContainer.text());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
namespace TextEditor
|
namespace TextEditor
|
||||||
{
|
{
|
||||||
|
class RefactoringChanges;
|
||||||
class RefactoringFile;
|
class RefactoringFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,23 +45,25 @@ namespace ClangCodeModel {
|
|||||||
class ClangFixItOperation : public TextEditor::QuickFixOperation
|
class ClangFixItOperation : public TextEditor::QuickFixOperation
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ClangFixItOperation(const Utf8String &filePath,
|
ClangFixItOperation(const Utf8String &fixItText,
|
||||||
const Utf8String &fixItText,
|
|
||||||
const QVector<ClangBackEnd::FixItContainer> &fixItContainers);
|
const QVector<ClangBackEnd::FixItContainer> &fixItContainers);
|
||||||
|
|
||||||
int priority() const override;
|
int priority() const override;
|
||||||
QString description() const override;
|
QString description() const override;
|
||||||
void perform() override;
|
void perform() override;
|
||||||
|
|
||||||
QString refactoringFileContent_forTestOnly() const;
|
QString firstRefactoringFileContent_forTestOnly() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Utils::ChangeSet changeSet() const;
|
void applyFixitsToFile(TextEditor::RefactoringFile &refactoringFile,
|
||||||
|
const QVector<ClangBackEnd::FixItContainer> fixItContainers);
|
||||||
|
Utils::ChangeSet toChangeSet(
|
||||||
|
TextEditor::RefactoringFile &refactoringFile,
|
||||||
|
const QVector<ClangBackEnd::FixItContainer> fixItContainers) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Utf8String filePath;
|
|
||||||
Utf8String fixItText;
|
Utf8String fixItText;
|
||||||
QSharedPointer<TextEditor::RefactoringFile> refactoringFile;
|
QVector<QSharedPointer<TextEditor::RefactoringFile>> refactoringFiles;
|
||||||
QVector<ClangBackEnd::FixItContainer> fixItContainers;
|
QVector<ClangBackEnd::FixItContainer> fixItContainers;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -109,16 +109,13 @@ ClangFixItOperationsExtractor::extract(const QString &filePath, int line)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClangFixItOperationsExtractor::appendFixitOperation(
|
void ClangFixItOperationsExtractor::appendFixitOperation(
|
||||||
const QString &filePath,
|
|
||||||
const QString &diagnosticText,
|
const QString &diagnosticText,
|
||||||
const QVector<ClangBackEnd::FixItContainer> &fixits)
|
const QVector<ClangBackEnd::FixItContainer> &fixits)
|
||||||
{
|
{
|
||||||
if (!fixits.isEmpty()) {
|
if (!fixits.isEmpty()) {
|
||||||
const QString diagnosticTextTweaked = tweakedDiagnosticText(diagnosticText);
|
const QString diagnosticTextTweaked = tweakedDiagnosticText(diagnosticText);
|
||||||
TextEditor::QuickFixOperation::Ptr operation(
|
TextEditor::QuickFixOperation::Ptr operation(
|
||||||
new ClangFixItOperation(filePath,
|
new ClangFixItOperation(diagnosticTextTweaked, fixits));
|
||||||
diagnosticTextTweaked,
|
|
||||||
fixits));
|
|
||||||
operations.append(operation);
|
operations.append(operation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,7 +127,7 @@ void ClangFixItOperationsExtractor::extractFromDiagnostic(
|
|||||||
{
|
{
|
||||||
const QVector<ClangBackEnd::FixItContainer> fixIts = diagnosticContainer.fixIts();
|
const QVector<ClangBackEnd::FixItContainer> fixIts = diagnosticContainer.fixIts();
|
||||||
if (hasFixItAt(fixIts, filePath, line)) {
|
if (hasFixItAt(fixIts, filePath, line)) {
|
||||||
appendFixitOperation(filePath, diagnosticContainer.text().toString(), fixIts);
|
appendFixitOperation(diagnosticContainer.text().toString(), fixIts);
|
||||||
|
|
||||||
foreach (const auto &child, diagnosticContainer.children())
|
foreach (const auto &child, diagnosticContainer.children())
|
||||||
extractFromDiagnostic(child, filePath, line);
|
extractFromDiagnostic(child, filePath, line);
|
||||||
|
|||||||
@@ -42,8 +42,7 @@ private:
|
|||||||
void extractFromDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnosticContainer,
|
void extractFromDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnosticContainer,
|
||||||
const QString &filePath,
|
const QString &filePath,
|
||||||
int line);
|
int line);
|
||||||
void appendFixitOperation(const QString &filePath,
|
void appendFixitOperation(const QString &diagnosticText,
|
||||||
const QString &diagnosticText,
|
|
||||||
const QVector<ClangBackEnd::FixItContainer> &fixits);
|
const QVector<ClangBackEnd::FixItContainer> &fixits);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ QVariant ExplainingStepItem::data(int column, int role) const
|
|||||||
return QVariant::fromValue(static_cast<DiagnosticItem *>(parent())->diagnostic());
|
return QVariant::fromValue(static_cast<DiagnosticItem *>(parent())->diagnostic());
|
||||||
case Qt::DisplayRole: {
|
case Qt::DisplayRole: {
|
||||||
const int row = parent()->children().indexOf(const_cast<ExplainingStepItem *>(this)) + 1;
|
const int row = parent()->children().indexOf(const_cast<ExplainingStepItem *>(this)) + 1;
|
||||||
const int padding = static_cast<int>(std::log10(parent()->rowCount()))
|
const int padding = static_cast<int>(std::log10(parent()->childCount()))
|
||||||
- static_cast<int>(std::log10(row));
|
- static_cast<int>(std::log10(row));
|
||||||
return QString::fromLatin1("%1%2: %3")
|
return QString::fromLatin1("%1%2: %3")
|
||||||
.arg(QString(padding, QLatin1Char(' ')))
|
.arg(QString(padding, QLatin1Char(' ')))
|
||||||
|
|||||||
@@ -183,7 +183,10 @@ public:
|
|||||||
|| type == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID)
|
|| type == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID)
|
||||||
optionsBuilder.addDefine("#define _X86INTRIN_H_INCLUDED\n");
|
optionsBuilder.addDefine("#define _X86INTRIN_H_INCLUDED\n");
|
||||||
|
|
||||||
optionsBuilder.addToolchainAndProjectDefines();
|
if (type != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
|
||||||
|
optionsBuilder.addDefines(projectPart.toolchainDefines);
|
||||||
|
optionsBuilder.addDefines(projectPart.projectDefines);
|
||||||
|
optionsBuilder.undefineClangVersionMacrosForMsvc();
|
||||||
optionsBuilder.undefineCppLanguageFeatureMacrosForMsvc2015();
|
optionsBuilder.undefineCppLanguageFeatureMacrosForMsvc2015();
|
||||||
optionsBuilder.addHeaderPathOptions();
|
optionsBuilder.addHeaderPathOptions();
|
||||||
optionsBuilder.addMsvcCompatibilityVersion();
|
optionsBuilder.addMsvcCompatibilityVersion();
|
||||||
@@ -203,6 +206,23 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
void undefineClangVersionMacrosForMsvc()
|
||||||
|
{
|
||||||
|
if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) {
|
||||||
|
static QStringList macroNames {
|
||||||
|
"__clang__",
|
||||||
|
"__clang_major__",
|
||||||
|
"__clang_minor__",
|
||||||
|
"__clang_patchlevel__",
|
||||||
|
"__clang_version__"
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (const QString ¯oName, macroNames)
|
||||||
|
add(QLatin1String("/U") + macroName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void addTargetTriple() override
|
void addTargetTriple() override
|
||||||
{
|
{
|
||||||
@@ -272,6 +292,14 @@ static QStringList createOptionsToUndefineCppLanguageFeatureMacrosForMsvc2015(
|
|||||||
return optionsBuilder.options();
|
return optionsBuilder.options();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QStringList createOptionsToUndefineClangVersionMacrosForMsvc(const ProjectPart &projectPart)
|
||||||
|
{
|
||||||
|
ClangStaticAnalyzerOptionsBuilder optionsBuilder(projectPart);
|
||||||
|
optionsBuilder.undefineClangVersionMacrosForMsvc();
|
||||||
|
|
||||||
|
return optionsBuilder.options();
|
||||||
|
}
|
||||||
|
|
||||||
static QStringList tweakedArguments(const ProjectPart &projectPart,
|
static QStringList tweakedArguments(const ProjectPart &projectPart,
|
||||||
const QString &filePath,
|
const QString &filePath,
|
||||||
const QStringList &arguments,
|
const QStringList &arguments,
|
||||||
@@ -281,6 +309,7 @@ static QStringList tweakedArguments(const ProjectPart &projectPart,
|
|||||||
prependWordWidthArgumentIfNotIncluded(&newArguments, extraParams.wordWidth);
|
prependWordWidthArgumentIfNotIncluded(&newArguments, extraParams.wordWidth);
|
||||||
prependTargetTripleIfNotIncludedAndNotEmpty(&newArguments, extraParams.targetTriple);
|
prependTargetTripleIfNotIncludedAndNotEmpty(&newArguments, extraParams.targetTriple);
|
||||||
newArguments.append(createMsCompatibilityVersionOption(projectPart));
|
newArguments.append(createMsCompatibilityVersionOption(projectPart));
|
||||||
|
newArguments.append(createOptionsToUndefineClangVersionMacrosForMsvc(projectPart));
|
||||||
newArguments.append(createOptionsToUndefineCppLanguageFeatureMacrosForMsvc2015(projectPart));
|
newArguments.append(createOptionsToUndefineCppLanguageFeatureMacrosForMsvc2015(projectPart));
|
||||||
|
|
||||||
return newArguments;
|
return newArguments;
|
||||||
@@ -564,7 +593,8 @@ void ClangStaticAnalyzerRunControl::onRunnerFinishedWithSuccess(const QString &l
|
|||||||
void ClangStaticAnalyzerRunControl::onRunnerFinishedWithFailure(const QString &errorMessage,
|
void ClangStaticAnalyzerRunControl::onRunnerFinishedWithFailure(const QString &errorMessage,
|
||||||
const QString &errorDetails)
|
const QString &errorDetails)
|
||||||
{
|
{
|
||||||
qCDebug(LOG) << "onRunnerFinishedWithFailure:" << errorMessage << errorDetails;
|
qCDebug(LOG).noquote() << "onRunnerFinishedWithFailure:"
|
||||||
|
<< errorMessage << '\n' << errorDetails;
|
||||||
|
|
||||||
++m_filesNotAnalyzed;
|
++m_filesNotAnalyzed;
|
||||||
m_success = false;
|
m_success = false;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "clangstaticanalyzerconstants.h"
|
#include "clangstaticanalyzerconstants.h"
|
||||||
|
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/synchronousprocess.h>
|
#include <utils/synchronousprocess.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
@@ -111,9 +112,9 @@ bool ClangStaticAnalyzerRunner::run(const QString &filePath, const QStringList &
|
|||||||
QTC_ASSERT(!m_logFile.isEmpty(), return false);
|
QTC_ASSERT(!m_logFile.isEmpty(), return false);
|
||||||
const QStringList arguments = constructCommandLineArguments(filePath, m_logFile,
|
const QStringList arguments = constructCommandLineArguments(filePath, m_logFile,
|
||||||
compilerOptions);
|
compilerOptions);
|
||||||
m_commandLine = (QStringList(m_clangExecutable) + arguments).join(QLatin1String("\" \""));
|
m_commandLine = Utils::QtcProcess::joinArgs(QStringList(m_clangExecutable) + arguments);
|
||||||
|
|
||||||
qCDebug(LOG) << "Starting" << m_commandLine;
|
qCDebug(LOG).noquote() << "Starting" << m_commandLine;
|
||||||
m_process.start(m_clangExecutable, arguments);
|
m_process.start(m_clangExecutable, arguments);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -171,12 +172,13 @@ QString ClangStaticAnalyzerRunner::createLogFile(const QString &filePath) const
|
|||||||
|
|
||||||
QString ClangStaticAnalyzerRunner::processCommandlineAndOutput() const
|
QString ClangStaticAnalyzerRunner::processCommandlineAndOutput() const
|
||||||
{
|
{
|
||||||
return tr("Command line: \"%1\"\n"
|
return tr("Command line: %1\n"
|
||||||
"Process Error: %2\n"
|
"Process Error: %2\n"
|
||||||
"Output:\n%3")
|
"Output:\n%3")
|
||||||
.arg(m_commandLine,
|
.arg(m_commandLine,
|
||||||
QString::number(m_process.error()),
|
QString::number(m_process.error()),
|
||||||
QString::fromLocal8Bit(m_processOutput));
|
Utils::SynchronousProcess::normalizeNewlines(
|
||||||
|
QString::fromLocal8Bit(m_processOutput)));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ClangStaticAnalyzerRunner::actualLogFile() const
|
QString ClangStaticAnalyzerRunner::actualLogFile() const
|
||||||
|
|||||||
@@ -16,7 +16,9 @@
|
|||||||
#include <climits>
|
#include <climits>
|
||||||
#include <clocale>
|
#include <clocale>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <codecvt>
|
#if !defined(__GNUC__) || __GNUC__ >= 5
|
||||||
|
# include <codecvt>
|
||||||
|
#endif
|
||||||
#include <complex>
|
#include <complex>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include <csetjmp>
|
#include <csetjmp>
|
||||||
|
|||||||
@@ -189,12 +189,12 @@ void CMakeToolItemModel::addCMakeTool(const CMakeTool *item, bool changed)
|
|||||||
|
|
||||||
TreeItem *CMakeToolItemModel::autoGroupItem() const
|
TreeItem *CMakeToolItemModel::autoGroupItem() const
|
||||||
{
|
{
|
||||||
return rootItem()->child(0);
|
return rootItem()->childAt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeItem *CMakeToolItemModel::manualGroupItem() const
|
TreeItem *CMakeToolItemModel::manualGroupItem() const
|
||||||
{
|
{
|
||||||
return rootItem()->child(1);
|
return rootItem()->childAt(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeToolItemModel::reevaluateChangedFlag(CMakeToolTreeItem *item) const
|
void CMakeToolItemModel::reevaluateChangedFlag(CMakeToolTreeItem *item) const
|
||||||
@@ -242,7 +242,7 @@ void CMakeToolItemModel::removeCMakeTool(const Core::Id &id)
|
|||||||
CMakeToolTreeItem *treeItem = cmakeToolItem(id);
|
CMakeToolTreeItem *treeItem = cmakeToolItem(id);
|
||||||
QTC_ASSERT(treeItem, return);
|
QTC_ASSERT(treeItem, return);
|
||||||
|
|
||||||
delete takeItem(treeItem);
|
destroyItem(treeItem);
|
||||||
m_removedItems.append(id);
|
m_removedItems.append(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,5 +108,9 @@
|
|||||||
<file>images/desktopdevicesmall.png</file>
|
<file>images/desktopdevicesmall.png</file>
|
||||||
<file>images/desktopdevicesmall@2x.png</file>
|
<file>images/desktopdevicesmall@2x.png</file>
|
||||||
<file>images/reset@2x.png</file>
|
<file>images/reset@2x.png</file>
|
||||||
|
<file>images/collapse.png</file>
|
||||||
|
<file>images/collapse@2x.png</file>
|
||||||
|
<file>images/expand.png</file>
|
||||||
|
<file>images/expand@2x.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ const Icon INFO({
|
|||||||
{QLatin1String(":/core/images/info.png"), Theme::IconsInfoColor}}, Icon::Tint);
|
{QLatin1String(":/core/images/info.png"), Theme::IconsInfoColor}}, Icon::Tint);
|
||||||
const Icon INFO_TOOLBAR({
|
const Icon INFO_TOOLBAR({
|
||||||
{QLatin1String(":/core/images/info.png"), Theme::IconsInfoToolBarColor}});
|
{QLatin1String(":/core/images/info.png"), Theme::IconsInfoToolBarColor}});
|
||||||
const Icon EXPAND({
|
const Icon EXPAND_ALL_TOOLBAR({
|
||||||
{QLatin1String(":/find/images/expand.png"), Theme::IconsBaseColor}});
|
{QLatin1String(":/find/images/expand.png"), Theme::IconsBaseColor}});
|
||||||
const Icon TOOLBAR_EXTENSION({
|
const Icon TOOLBAR_EXTENSION({
|
||||||
{QLatin1String(":/core/images/extension.png"), Theme::IconsBaseColor}});
|
{QLatin1String(":/core/images/extension.png"), Theme::IconsBaseColor}});
|
||||||
@@ -155,6 +155,14 @@ const Icon EYE_CLOSED_TOOLBAR({
|
|||||||
const Icon REPLACE({
|
const Icon REPLACE({
|
||||||
{QLatin1String(":/core/images/replace_a.png"), Theme::PanelTextColorMid},
|
{QLatin1String(":/core/images/replace_a.png"), Theme::PanelTextColorMid},
|
||||||
{QLatin1String(":/core/images/replace_b.png"), Theme::IconsInfoColor}}, Icon::Tint);
|
{QLatin1String(":/core/images/replace_b.png"), Theme::IconsInfoColor}}, Icon::Tint);
|
||||||
|
const Icon EXPAND({
|
||||||
|
{QLatin1String(":/core/images/expand.png"), Theme::PanelTextColorMid}}, Utils::Icon::Tint);
|
||||||
|
const Icon EXPAND_TOOLBAR({
|
||||||
|
{QLatin1String(":/core/images/expand.png"), Theme::IconsBaseColor}});
|
||||||
|
const Icon COLLAPSE({
|
||||||
|
{QLatin1String(":/core/images/collapse.png"), Theme::PanelTextColorMid}}, Utils::Icon::Tint);
|
||||||
|
const Icon COLLAPSE_TOOLBAR({
|
||||||
|
{QLatin1String(":/core/images/collapse.png"), Theme::IconsBaseColor}});
|
||||||
|
|
||||||
const Icon MODE_EDIT_CLASSIC(
|
const Icon MODE_EDIT_CLASSIC(
|
||||||
QLatin1String(":/fancyactionbar/images/mode_Edit.png"));
|
QLatin1String(":/fancyactionbar/images/mode_Edit.png"));
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ CORE_EXPORT extern const Utils::Icon ERROR_TOOLBAR;
|
|||||||
CORE_EXPORT extern const Utils::Icon ERROR_TASKBAR;
|
CORE_EXPORT extern const Utils::Icon ERROR_TASKBAR;
|
||||||
CORE_EXPORT extern const Utils::Icon INFO;
|
CORE_EXPORT extern const Utils::Icon INFO;
|
||||||
CORE_EXPORT extern const Utils::Icon INFO_TOOLBAR;
|
CORE_EXPORT extern const Utils::Icon INFO_TOOLBAR;
|
||||||
CORE_EXPORT extern const Utils::Icon EXPAND;
|
CORE_EXPORT extern const Utils::Icon EXPAND_ALL_TOOLBAR;
|
||||||
CORE_EXPORT extern const Utils::Icon TOOLBAR_EXTENSION;
|
CORE_EXPORT extern const Utils::Icon TOOLBAR_EXTENSION;
|
||||||
CORE_EXPORT extern const Utils::Icon RUN_SMALL;
|
CORE_EXPORT extern const Utils::Icon RUN_SMALL;
|
||||||
CORE_EXPORT extern const Utils::Icon RUN_SMALL_TOOLBAR;
|
CORE_EXPORT extern const Utils::Icon RUN_SMALL_TOOLBAR;
|
||||||
@@ -93,6 +93,10 @@ CORE_EXPORT extern const Utils::Icon BOUNDING_RECT;
|
|||||||
CORE_EXPORT extern const Utils::Icon EYE_OPEN_TOOLBAR;
|
CORE_EXPORT extern const Utils::Icon EYE_OPEN_TOOLBAR;
|
||||||
CORE_EXPORT extern const Utils::Icon EYE_CLOSED_TOOLBAR;
|
CORE_EXPORT extern const Utils::Icon EYE_CLOSED_TOOLBAR;
|
||||||
CORE_EXPORT extern const Utils::Icon REPLACE;
|
CORE_EXPORT extern const Utils::Icon REPLACE;
|
||||||
|
CORE_EXPORT extern const Utils::Icon EXPAND;
|
||||||
|
CORE_EXPORT extern const Utils::Icon EXPAND_TOOLBAR;
|
||||||
|
CORE_EXPORT extern const Utils::Icon COLLAPSE;
|
||||||
|
CORE_EXPORT extern const Utils::Icon COLLAPSE_TOOLBAR;
|
||||||
|
|
||||||
CORE_EXPORT extern const Utils::Icon MODE_EDIT_CLASSIC;
|
CORE_EXPORT extern const Utils::Icon MODE_EDIT_CLASSIC;
|
||||||
CORE_EXPORT extern const Utils::Icon MODE_EDIT_FLAT;
|
CORE_EXPORT extern const Utils::Icon MODE_EDIT_FLAT;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include "addtovcsdialog.h"
|
#include "addtovcsdialog.h"
|
||||||
#include "ui_addtovcsdialog.h"
|
#include "ui_addtovcsdialog.h"
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
#include <QListWidgetItem>
|
#include <QListWidgetItem>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
@@ -45,7 +46,7 @@ AddToVcsDialog::AddToVcsDialog(QWidget *parent, const QString &title,
|
|||||||
setWindowTitle(title);
|
setWindowTitle(title);
|
||||||
|
|
||||||
foreach (const QString &file, files) {
|
foreach (const QString &file, files) {
|
||||||
QListWidgetItem *item = new QListWidgetItem(file);
|
QListWidgetItem *item = new QListWidgetItem(QDir::toNativeSeparators(file));
|
||||||
ui->filesListWidget->addItem(item);
|
ui->filesListWidget->addItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ namespace Internal {
|
|||||||
m_expandCollapseButton->setAutoRaise(true);
|
m_expandCollapseButton->setAutoRaise(true);
|
||||||
|
|
||||||
m_expandCollapseAction->setCheckable(true);
|
m_expandCollapseAction->setCheckable(true);
|
||||||
m_expandCollapseAction->setIcon(Core::Icons::EXPAND.icon());
|
m_expandCollapseAction->setIcon(Core::Icons::EXPAND_ALL_TOOLBAR.icon());
|
||||||
Command *cmd = ActionManager::registerAction(m_expandCollapseAction, "Find.ExpandAll");
|
Command *cmd = ActionManager::registerAction(m_expandCollapseAction, "Find.ExpandAll");
|
||||||
cmd->setAttribute(Command::CA_UpdateText);
|
cmd->setAttribute(Command::CA_UpdateText);
|
||||||
m_expandCollapseButton->setDefaultAction(cmd->action());
|
m_expandCollapseButton->setDefaultAction(cmd->action());
|
||||||
@@ -340,8 +340,8 @@ QWidget *SearchResultWindow::outputWidget(QWidget *)
|
|||||||
*/
|
*/
|
||||||
QList<QWidget*> SearchResultWindow::toolBarWidgets() const
|
QList<QWidget*> SearchResultWindow::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget*>() << d->m_expandCollapseButton << d->m_spacer
|
return { d->m_expandCollapseButton, d->m_spacer,
|
||||||
<< d->m_historyLabel << d->m_spacer2 << d->m_recentSearchesBox;
|
d->m_historyLabel, d->m_spacer2, d->m_recentSearchesBox };
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
|
Before Width: | Height: | Size: 174 B After Width: | Height: | Size: 174 B |
|
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
@@ -359,7 +359,7 @@ void LocatorSettingsPage::removeCustomFilter()
|
|||||||
QTC_ASSERT(item, return);
|
QTC_ASSERT(item, return);
|
||||||
ILocatorFilter *filter = item->filter();
|
ILocatorFilter *filter = item->filter();
|
||||||
QTC_ASSERT(m_customFilters.contains(filter), return);
|
QTC_ASSERT(m_customFilters.contains(filter), return);
|
||||||
delete m_model->takeItem(item);
|
m_model->destroyItem(item);
|
||||||
m_filters.removeAll(filter);
|
m_filters.removeAll(filter);
|
||||||
m_customFilters.removeAll(filter);
|
m_customFilters.removeAll(filter);
|
||||||
m_refreshFilters.removeAll(filter);
|
m_refreshFilters.removeAll(filter);
|
||||||
|
|||||||
@@ -137,10 +137,15 @@ void CompilerOptionsBuilder::addHeaderPathOptions(bool addAsNativePath)
|
|||||||
|
|
||||||
void CompilerOptionsBuilder::addToolchainAndProjectDefines()
|
void CompilerOptionsBuilder::addToolchainAndProjectDefines()
|
||||||
{
|
{
|
||||||
QByteArray extendedDefines = m_projectPart.toolchainDefines + m_projectPart.projectDefines;
|
addDefines(m_projectPart.toolchainDefines);
|
||||||
|
addDefines(m_projectPart.projectDefines);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CompilerOptionsBuilder::addDefines(const QByteArray &defineDirectives)
|
||||||
|
{
|
||||||
QStringList result;
|
QStringList result;
|
||||||
|
|
||||||
foreach (QByteArray def, extendedDefines.split('\n')) {
|
foreach (QByteArray def, defineDirectives.split('\n')) {
|
||||||
if (def.isEmpty() || excludeDefineLine(def))
|
if (def.isEmpty() || excludeDefineLine(def))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ public:
|
|||||||
virtual void enableExceptions();
|
virtual void enableExceptions();
|
||||||
void addHeaderPathOptions(bool addAsNativePath = false);
|
void addHeaderPathOptions(bool addAsNativePath = false);
|
||||||
void addToolchainAndProjectDefines();
|
void addToolchainAndProjectDefines();
|
||||||
|
void addDefines(const QByteArray &defineDirectives);
|
||||||
virtual void addLanguageOption(ProjectFile::Kind fileKind);
|
virtual void addLanguageOption(ProjectFile::Kind fileKind);
|
||||||
virtual void addOptionsForLanguage(bool checkForBorlandExtensions = true);
|
virtual void addOptionsForLanguage(bool checkForBorlandExtensions = true);
|
||||||
|
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ void BreakHandler::deletionHelper(BreakpointModelId id)
|
|||||||
{
|
{
|
||||||
Breakpoint b = breakpointById(id);
|
Breakpoint b = breakpointById(id);
|
||||||
QTC_ASSERT(b, return);
|
QTC_ASSERT(b, return);
|
||||||
delete takeItem(b.b);
|
destroyItem(b.b);
|
||||||
}
|
}
|
||||||
|
|
||||||
Breakpoint BreakHandler::findWatchpoint(const BreakpointParameters ¶ms) const
|
Breakpoint BreakHandler::findWatchpoint(const BreakpointParameters ¶ms) const
|
||||||
@@ -1169,7 +1169,7 @@ void BreakHandler::changeLineNumberFromMarkerHelper(BreakpointModelId id)
|
|||||||
Breakpoint b = breakpointById(id);
|
Breakpoint b = breakpointById(id);
|
||||||
QTC_ASSERT(b, return);
|
QTC_ASSERT(b, return);
|
||||||
BreakpointParameters params = b.parameters();
|
BreakpointParameters params = b.parameters();
|
||||||
delete takeItem(b.b);
|
destroyItem(b.b);
|
||||||
appendBreakpoint(params);
|
appendBreakpoint(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ ConsoleItemDelegate::ConsoleItemDelegate(ConsoleItemModel *model, QObject *paren
|
|||||||
m_logIcon(Core::Icons::INFO.icon()),
|
m_logIcon(Core::Icons::INFO.icon()),
|
||||||
m_warningIcon(Core::Icons::WARNING.icon()),
|
m_warningIcon(Core::Icons::WARNING.icon()),
|
||||||
m_errorIcon(Core::Icons::ERROR.icon()),
|
m_errorIcon(Core::Icons::ERROR.icon()),
|
||||||
m_expandIcon(QLatin1String(":/qmljstools/images/expand.png")),
|
m_expandIcon(Core::Icons::EXPAND.icon()),
|
||||||
m_collapseIcon(QLatin1String(":/qmljstools/images/collapse.png")),
|
m_collapseIcon(Core::Icons::COLLAPSE.icon()),
|
||||||
m_prompt(QLatin1String(":/qmljstools/images/prompt.png")),
|
m_prompt(QLatin1String(":/qmljstools/images/prompt.png")),
|
||||||
m_cachedHeight(0)
|
m_cachedHeight(0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ int ConsoleItemModel::sizeOfFile(const QFont &font)
|
|||||||
lastReadOnlyRow -= 2; // skip editable row
|
lastReadOnlyRow -= 2; // skip editable row
|
||||||
if (lastReadOnlyRow < 0)
|
if (lastReadOnlyRow < 0)
|
||||||
return 0;
|
return 0;
|
||||||
QString filename = static_cast<ConsoleItem *>(rootItem()->child(lastReadOnlyRow))->file();
|
QString filename = static_cast<ConsoleItem *>(rootItem()->childAt(lastReadOnlyRow))->file();
|
||||||
const int pos = filename.lastIndexOf(QLatin1Char('/'));
|
const int pos = filename.lastIndexOf(QLatin1Char('/'));
|
||||||
if (pos != -1)
|
if (pos != -1)
|
||||||
filename = filename.mid(pos + 1);
|
filename = filename.mid(pos + 1);
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ void DebuggerItemModel::removeCurrentDebugger()
|
|||||||
QVariant id = m_currentTreeItem->m_item.id();
|
QVariant id = m_currentTreeItem->m_item.id();
|
||||||
DebuggerTreeItem *treeItem = m_currentTreeItem;
|
DebuggerTreeItem *treeItem = m_currentTreeItem;
|
||||||
m_currentTreeItem = 0;
|
m_currentTreeItem = 0;
|
||||||
delete takeItem(treeItem);
|
destroyItem(treeItem);
|
||||||
m_removedItems.append(id);
|
m_removedItems.append(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -157,8 +157,8 @@ QVariant ModuleItem::data(int column, int role) const
|
|||||||
static ModuleItem *moduleFromPath(TreeItem *root, const QString &modulePath)
|
static ModuleItem *moduleFromPath(TreeItem *root, const QString &modulePath)
|
||||||
{
|
{
|
||||||
// Recent modules are more likely to be unloaded first.
|
// Recent modules are more likely to be unloaded first.
|
||||||
for (int i = root->rowCount(); --i >= 0; ) {
|
for (int i = root->childCount(); --i >= 0; ) {
|
||||||
auto item = static_cast<ModuleItem *>(root->child(i));
|
auto item = static_cast<ModuleItem *>(root->childAt(i));
|
||||||
if (item->module.modulePath == modulePath)
|
if (item->module.modulePath == modulePath)
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@@ -199,15 +199,15 @@ Modules ModulesHandler::modules() const
|
|||||||
{
|
{
|
||||||
Modules mods;
|
Modules mods;
|
||||||
TreeItem *root = m_model->rootItem();
|
TreeItem *root = m_model->rootItem();
|
||||||
for (int i = root->rowCount(); --i >= 0; )
|
for (int i = root->childCount(); --i >= 0; )
|
||||||
mods.append(static_cast<ModuleItem *>(root->child(i))->module);
|
mods.append(static_cast<ModuleItem *>(root->childAt(i))->module);
|
||||||
return mods;
|
return mods;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModulesHandler::removeModule(const QString &modulePath)
|
void ModulesHandler::removeModule(const QString &modulePath)
|
||||||
{
|
{
|
||||||
if (ModuleItem *item = moduleFromPath(m_model->rootItem(), modulePath))
|
if (ModuleItem *item = moduleFromPath(m_model->rootItem(), modulePath))
|
||||||
delete m_model->takeItem(item);
|
m_model->destroyItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModulesHandler::updateModule(const Module &module)
|
void ModulesHandler::updateModule(const Module &module)
|
||||||
@@ -239,17 +239,17 @@ void ModulesHandler::updateModule(const Module &module)
|
|||||||
void ModulesHandler::beginUpdateAll()
|
void ModulesHandler::beginUpdateAll()
|
||||||
{
|
{
|
||||||
TreeItem *root = m_model->rootItem();
|
TreeItem *root = m_model->rootItem();
|
||||||
for (int i = root->rowCount(); --i >= 0; )
|
for (int i = root->childCount(); --i >= 0; )
|
||||||
static_cast<ModuleItem *>(root->child(i))->updated = false;
|
static_cast<ModuleItem *>(root->childAt(i))->updated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModulesHandler::endUpdateAll()
|
void ModulesHandler::endUpdateAll()
|
||||||
{
|
{
|
||||||
TreeItem *root = m_model->rootItem();
|
TreeItem *root = m_model->rootItem();
|
||||||
for (int i = root->rowCount(); --i >= 0; ) {
|
for (int i = root->childCount(); --i >= 0; ) {
|
||||||
auto item = static_cast<ModuleItem *>(root->child(i));
|
auto item = static_cast<ModuleItem *>(root->childAt(i));
|
||||||
if (!item->updated)
|
if (!item->updated)
|
||||||
delete m_model->takeItem(item);
|
m_model->destroyItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ void ThreadsHandler::updateThread(const ThreadData &threadData)
|
|||||||
void ThreadsHandler::removeThread(ThreadId threadId)
|
void ThreadsHandler::removeThread(ThreadId threadId)
|
||||||
{
|
{
|
||||||
if (ThreadItem *item = itemForThreadId(this, threadId))
|
if (ThreadItem *item = itemForThreadId(this, threadId))
|
||||||
delete takeItem(item);
|
destroyItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThreadsHandler::setThreads(const Threads &threads)
|
void ThreadsHandler::setThreads(const Threads &threads)
|
||||||
@@ -363,7 +363,7 @@ bool ThreadsHandler::notifyGroupExited(const QString &groupId)
|
|||||||
list.append(item);
|
list.append(item);
|
||||||
});
|
});
|
||||||
foreach (ThreadItem *item, list)
|
foreach (ThreadItem *item, list)
|
||||||
delete takeItem(item);
|
destroyItem(item);
|
||||||
|
|
||||||
m_pidForGroupId.remove(groupId);
|
m_pidForGroupId.remove(groupId);
|
||||||
return m_pidForGroupId.isEmpty();
|
return m_pidForGroupId.isEmpty();
|
||||||
|
|||||||
@@ -1162,7 +1162,7 @@ bool WatchModel::hasChildren(const QModelIndex &idx) const
|
|||||||
const WatchItem *item = nonRootItemForIndex(idx);
|
const WatchItem *item = nonRootItemForIndex(idx);
|
||||||
if (!item)
|
if (!item)
|
||||||
return true;
|
return true;
|
||||||
if (item->rowCount() > 0)
|
if (item->childCount() > 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// "Can fetch more", see above.
|
// "Can fetch more", see above.
|
||||||
@@ -1289,7 +1289,7 @@ bool WatchHandler::insertItem(WatchItem *item)
|
|||||||
const QVector<TreeItem *> siblings = parent->children();
|
const QVector<TreeItem *> siblings = parent->children();
|
||||||
for (int row = 0, n = siblings.size(); row < n; ++row) {
|
for (int row = 0, n = siblings.size(); row < n; ++row) {
|
||||||
if (static_cast<WatchItem *>(siblings.at(row))->iname == item->iname) {
|
if (static_cast<WatchItem *>(siblings.at(row))->iname == item->iname) {
|
||||||
delete m_model->takeItem(parent->children().at(row));
|
m_model->destroyItem(parent->children().at(row));
|
||||||
parent->insertChild(row, item);
|
parent->insertChild(row, item);
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
@@ -1377,7 +1377,7 @@ void WatchHandler::notifyUpdateFinished()
|
|||||||
});
|
});
|
||||||
|
|
||||||
foreach (auto item, toRemove)
|
foreach (auto item, toRemove)
|
||||||
delete m_model->takeItem(item);
|
m_model->destroyItem(item);
|
||||||
|
|
||||||
m_model->m_contentsValid = true;
|
m_model->m_contentsValid = true;
|
||||||
updateWatchersWindow();
|
updateWatchersWindow();
|
||||||
@@ -1400,7 +1400,7 @@ void WatchHandler::removeItemByIName(const QString &iname)
|
|||||||
theWatcherNames.remove(item->exp);
|
theWatcherNames.remove(item->exp);
|
||||||
saveWatchers();
|
saveWatchers();
|
||||||
}
|
}
|
||||||
delete m_model->takeItem(item);
|
m_model->destroyItem(item);
|
||||||
updateWatchersWindow();
|
updateWatchersWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public:
|
|||||||
explicit GitClient();
|
explicit GitClient();
|
||||||
|
|
||||||
Utils::FileName vcsBinary() const override;
|
Utils::FileName vcsBinary() const override;
|
||||||
unsigned gitVersion(QString *errorMessage = 0) const;
|
unsigned gitVersion(QString *errorMessage = nullptr) const;
|
||||||
|
|
||||||
VcsBase::VcsCommand *vcsExecAbortable(const QString &workingDirectory, const QStringList &arguments);
|
VcsBase::VcsCommand *vcsExecAbortable(const QString &workingDirectory, const QStringList &arguments);
|
||||||
|
|
||||||
@@ -154,10 +154,8 @@ public:
|
|||||||
int lineNumber = -1, const QStringList &extraOptions = QStringList()) override;
|
int lineNumber = -1, const QStringList &extraOptions = QStringList()) override;
|
||||||
void reset(const QString &workingDirectory, const QString &argument, const QString &commit = QString());
|
void reset(const QString &workingDirectory, const QString &argument, const QString &commit = QString());
|
||||||
void addFile(const QString &workingDirectory, const QString &fileName);
|
void addFile(const QString &workingDirectory, const QString &fileName);
|
||||||
bool synchronousLog(const QString &workingDirectory,
|
bool synchronousLog(const QString &workingDirectory, const QStringList &arguments,
|
||||||
const QStringList &arguments,
|
QString *output, QString *errorMessage = nullptr,
|
||||||
QString *output,
|
|
||||||
QString *errorMessage = 0,
|
|
||||||
unsigned flags = 0);
|
unsigned flags = 0);
|
||||||
bool synchronousAdd(const QString &workingDirectory, const QStringList &files);
|
bool synchronousAdd(const QString &workingDirectory, const QStringList &files);
|
||||||
bool synchronousDelete(const QString &workingDirectory,
|
bool synchronousDelete(const QString &workingDirectory,
|
||||||
@@ -166,20 +164,20 @@ public:
|
|||||||
bool synchronousMove(const QString &workingDirectory,
|
bool synchronousMove(const QString &workingDirectory,
|
||||||
const QString &from,
|
const QString &from,
|
||||||
const QString &to);
|
const QString &to);
|
||||||
bool synchronousReset(const QString &workingDirectory,
|
bool synchronousReset(const QString &workingDirectory, const QStringList &files = QStringList(),
|
||||||
const QStringList &files = QStringList(),
|
QString *errorMessage = nullptr);
|
||||||
QString *errorMessage = 0);
|
bool synchronousCleanList(const QString &workingDirectory, const QString &modulePath,
|
||||||
bool synchronousCleanList(const QString &workingDirectory, const QString &modulePath, QStringList *files, QStringList *ignoredFiles, QString *errorMessage);
|
QStringList *files, QStringList *ignoredFiles, QString *errorMessage);
|
||||||
bool synchronousApplyPatch(const QString &workingDirectory, const QString &file, QString *errorMessage, const QStringList &arguments = QStringList());
|
bool synchronousApplyPatch(const QString &workingDirectory, const QString &file,
|
||||||
|
QString *errorMessage, const QStringList &extraArguments = QStringList());
|
||||||
bool synchronousInit(const QString &workingDirectory);
|
bool synchronousInit(const QString &workingDirectory);
|
||||||
bool synchronousCheckoutFiles(const QString &workingDirectory,
|
bool synchronousCheckoutFiles(const QString &workingDirectory, QStringList files = QStringList(),
|
||||||
QStringList files = QStringList(),
|
QString revision = QString(), QString *errorMessage = nullptr,
|
||||||
QString revision = QString(), QString *errorMessage = 0,
|
|
||||||
bool revertStaging = true);
|
bool revertStaging = true);
|
||||||
// Checkout ref
|
// Checkout ref
|
||||||
bool stashAndCheckout(const QString &workingDirectory, const QString &ref);
|
bool stashAndCheckout(const QString &workingDirectory, const QString &ref);
|
||||||
bool synchronousCheckout(const QString &workingDirectory, const QString &ref,
|
bool synchronousCheckout(const QString &workingDirectory, const QString &ref,
|
||||||
QString *errorMessage = 0);
|
QString *errorMessage = nullptr);
|
||||||
|
|
||||||
QStringList setupCheckoutArguments(const QString &workingDirectory, const QString &ref);
|
QStringList setupCheckoutArguments(const QString &workingDirectory, const QString &ref);
|
||||||
void updateSubmodulesIfNeeded(const QString &workingDirectory, bool prompt);
|
void updateSubmodulesIfNeeded(const QString &workingDirectory, bool prompt);
|
||||||
@@ -188,39 +186,40 @@ public:
|
|||||||
enum { StashPromptDescription = 0x1, StashImmediateRestore = 0x2, StashIgnoreUnchanged = 0x4 };
|
enum { StashPromptDescription = 0x1, StashImmediateRestore = 0x2, StashIgnoreUnchanged = 0x4 };
|
||||||
QString synchronousStash(const QString &workingDirectory,
|
QString synchronousStash(const QString &workingDirectory,
|
||||||
const QString &messageKeyword = QString(),
|
const QString &messageKeyword = QString(),
|
||||||
unsigned flags = 0, bool *unchanged = 0) const;
|
unsigned flags = 0, bool *unchanged = nullptr) const;
|
||||||
|
|
||||||
bool executeSynchronousStash(const QString &workingDirectory,
|
bool executeSynchronousStash(const QString &workingDirectory,
|
||||||
const QString &message = QString(),
|
const QString &message = QString(),
|
||||||
bool unstagedOnly = false,
|
bool unstagedOnly = false,
|
||||||
QString *errorMessage = 0) const;
|
QString *errorMessage = nullptr) const;
|
||||||
bool synchronousStashRestore(const QString &workingDirectory,
|
bool synchronousStashRestore(const QString &workingDirectory,
|
||||||
const QString &stash,
|
const QString &stash,
|
||||||
bool pop = false,
|
bool pop = false,
|
||||||
const QString &branch = QString()) const;
|
const QString &branch = QString()) const;
|
||||||
bool synchronousStashRemove(const QString &workingDirectory,
|
bool synchronousStashRemove(const QString &workingDirectory,
|
||||||
const QString &stash = QString(),
|
const QString &stash = QString(),
|
||||||
QString *errorMessage = 0) const;
|
QString *errorMessage = nullptr) const;
|
||||||
bool synchronousBranchCmd(const QString &workingDirectory, QStringList branchArgs,
|
bool synchronousBranchCmd(const QString &workingDirectory, QStringList branchArgs,
|
||||||
QString *output, QString *errorMessage) const;
|
QString *output, QString *errorMessage) const;
|
||||||
bool synchronousTagCmd(const QString &workingDirectory, QStringList tagArgs,
|
bool synchronousTagCmd(const QString &workingDirectory, QStringList tagArgs,
|
||||||
QString *output, QString *errorMessage) const;
|
QString *output, QString *errorMessage) const;
|
||||||
bool synchronousForEachRefCmd(const QString &workingDirectory, QStringList args,
|
bool synchronousForEachRefCmd(const QString &workingDirectory, QStringList args,
|
||||||
QString *output, QString *errorMessage = 0) const;
|
QString *output, QString *errorMessage = nullptr) const;
|
||||||
VcsBase::VcsCommand *asyncForEachRefCmd(const QString &workingDirectory, QStringList args) const;
|
VcsBase::VcsCommand *asyncForEachRefCmd(const QString &workingDirectory, QStringList args) const;
|
||||||
bool synchronousRemoteCmd(const QString &workingDirectory, QStringList remoteArgs,
|
bool synchronousRemoteCmd(const QString &workingDirectory, QStringList remoteArgs,
|
||||||
QString *output = 0, QString *errorMessage = 0, bool silent = false) const;
|
QString *output = nullptr, QString *errorMessage = nullptr,
|
||||||
|
bool silent = false) const;
|
||||||
|
|
||||||
QMap<QString,QString> synchronousRemotesList(const QString &workingDirectory,
|
QMap<QString,QString> synchronousRemotesList(const QString &workingDirectory,
|
||||||
QString *errorMessage = 0) const;
|
QString *errorMessage = nullptr) const;
|
||||||
QStringList synchronousSubmoduleStatus(const QString &workingDirectory,
|
QStringList synchronousSubmoduleStatus(const QString &workingDirectory,
|
||||||
QString *errorMessage = 0) const;
|
QString *errorMessage = nullptr) const;
|
||||||
SubmoduleDataMap submoduleList(const QString &workingDirectory) const;
|
SubmoduleDataMap submoduleList(const QString &workingDirectory) const;
|
||||||
bool synchronousShow(const QString &workingDirectory, const QString &id,
|
bool synchronousShow(const QString &workingDirectory, const QString &id,
|
||||||
QByteArray *output, QString *errorMessage) const;
|
QByteArray *output, QString *errorMessage) const;
|
||||||
|
|
||||||
bool synchronousRevListCmd(const QString &workingDirectory, const QStringList &arguments,
|
bool synchronousRevListCmd(const QString &workingDirectory, const QStringList &extraArguments,
|
||||||
QString *output, QString *errorMessage = 0) const;
|
QString *output, QString *errorMessage = nullptr) const;
|
||||||
|
|
||||||
bool synchronousParentRevisions(const QString &workingDirectory,
|
bool synchronousParentRevisions(const QString &workingDirectory,
|
||||||
const QString &revision,
|
const QString &revision,
|
||||||
@@ -233,11 +232,11 @@ public:
|
|||||||
QString synchronousCurrentLocalBranch(const QString &workingDirectory) const;
|
QString synchronousCurrentLocalBranch(const QString &workingDirectory) const;
|
||||||
|
|
||||||
bool synchronousHeadRefs(const QString &workingDirectory, QStringList *output,
|
bool synchronousHeadRefs(const QString &workingDirectory, QStringList *output,
|
||||||
QString *errorMessage = 0) const;
|
QString *errorMessage = nullptr) const;
|
||||||
QString synchronousTopic(const QString &workingDirectory) const;
|
QString synchronousTopic(const QString &workingDirectory) const;
|
||||||
bool synchronousRevParseCmd(const QString &workingDirectory, const QString &ref,
|
bool synchronousRevParseCmd(const QString &workingDirectory, const QString &ref,
|
||||||
QString *output, QString *errorMessage = 0) const;
|
QString *output, QString *errorMessage = nullptr) const;
|
||||||
QString synchronousTopRevision(const QString &workingDirectory, QString *errorMessage = 0);
|
QString synchronousTopRevision(const QString &workingDirectory, QString *errorMessage = nullptr);
|
||||||
void synchronousTagsForCommit(const QString &workingDirectory, const QString &revision,
|
void synchronousTagsForCommit(const QString &workingDirectory, const QString &revision,
|
||||||
QString &precedes, QString &follows) const;
|
QString &precedes, QString &follows) const;
|
||||||
bool isRemoteCommit(const QString &workingDirectory, const QString &commit);
|
bool isRemoteCommit(const QString &workingDirectory, const QString &commit);
|
||||||
@@ -270,21 +269,19 @@ public:
|
|||||||
|
|
||||||
void stashPop(const QString &workingDirectory, const QString &stash = QString());
|
void stashPop(const QString &workingDirectory, const QString &stash = QString());
|
||||||
void revert(const QStringList &files, bool revertStaging);
|
void revert(const QStringList &files, bool revertStaging);
|
||||||
bool synchronousStashList(const QString &workingDirectory,
|
bool synchronousStashList(const QString &workingDirectory, QList<Stash> *stashes,
|
||||||
QList<Stash> *stashes,
|
QString *errorMessage = nullptr) const;
|
||||||
QString *errorMessage = 0) const;
|
|
||||||
// Resolve a stash name from message (for IVersionControl's names).
|
// Resolve a stash name from message (for IVersionControl's names).
|
||||||
bool stashNameFromMessage(const QString &workingDirectory,
|
bool stashNameFromMessage(const QString &workingDirectory, const QString &messge, QString *name,
|
||||||
const QString &messge, QString *name,
|
QString *errorMessage = nullptr) const;
|
||||||
QString *errorMessage = 0) const;
|
|
||||||
|
|
||||||
QString readGitVar(const QString &workingDirectory, const QString &configVar) const;
|
QString readGitVar(const QString &workingDirectory, const QString &configVar) const;
|
||||||
QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
|
QString readConfigValue(const QString &workingDirectory, const QString &configVar) const;
|
||||||
|
|
||||||
QTextCodec *encoding(const QString &workingDirectory, const QByteArray &configVar) const;
|
QTextCodec *encoding(const QString &workingDirectory, const QByteArray &configVar) const;
|
||||||
bool readDataFromCommit(const QString &repoDirectory, const QString &commit,
|
bool readDataFromCommit(const QString &repoDirectory, const QString &commit,
|
||||||
CommitData &commitData, QString *errorMessage = 0,
|
CommitData &commitData, QString *errorMessage = nullptr,
|
||||||
QString *commitTemplate = 0);
|
QString *commitTemplate = nullptr);
|
||||||
bool getCommitData(const QString &workingDirectory, QString *commitTemplate,
|
bool getCommitData(const QString &workingDirectory, QString *commitTemplate,
|
||||||
CommitData &commitData, QString *errorMessage);
|
CommitData &commitData, QString *errorMessage);
|
||||||
|
|
||||||
@@ -296,10 +293,8 @@ public:
|
|||||||
VcsBase::SubmitFileModel *model);
|
VcsBase::SubmitFileModel *model);
|
||||||
|
|
||||||
enum StatusResult { StatusChanged, StatusUnchanged, StatusFailed };
|
enum StatusResult { StatusChanged, StatusUnchanged, StatusFailed };
|
||||||
StatusResult gitStatus(const QString &workingDirectory,
|
StatusResult gitStatus(const QString &workingDirectory, StatusMode mode,
|
||||||
StatusMode mode,
|
QString *output = nullptr, QString *errorMessage = nullptr) const;
|
||||||
QString *output = 0,
|
|
||||||
QString *errorMessage = 0) const;
|
|
||||||
|
|
||||||
CommandInProgress checkCommandInProgress(const QString &workingDirectory) const;
|
CommandInProgress checkCommandInProgress(const QString &workingDirectory) const;
|
||||||
QString commandInProgressDescription(const QString &workingDirectory) const;
|
QString commandInProgressDescription(const QString &workingDirectory) const;
|
||||||
@@ -350,7 +345,7 @@ private:
|
|||||||
std::function<DiffEditor::DiffEditorController *(Core::IDocument *)> factory) const;
|
std::function<DiffEditor::DiffEditorController *(Core::IDocument *)> factory) const;
|
||||||
|
|
||||||
// determine version as '(major << 16) + (minor << 8) + patch' or 0.
|
// determine version as '(major << 16) + (minor << 8) + patch' or 0.
|
||||||
unsigned synchronousGitVersion(QString *errorMessage = 0) const;
|
unsigned synchronousGitVersion(QString *errorMessage = nullptr) const;
|
||||||
|
|
||||||
QString readOneLine(const QString &workingDirectory, const QStringList &arguments) const;
|
QString readOneLine(const QString &workingDirectory, const QStringList &arguments) const;
|
||||||
|
|
||||||
|
|||||||
@@ -199,10 +199,10 @@ void ActionHandler::createActions()
|
|||||||
Constants::OPEN_PARENT_DIAGRAM, [this]() { openParentDiagram(); }, Core::Context(), true,
|
Constants::OPEN_PARENT_DIAGRAM, [this]() { openParentDiagram(); }, Core::Context(), true,
|
||||||
tr("Open Parent Diagram"), QKeySequence(QStringLiteral("Ctrl+Shift+P")))->action();
|
tr("Open Parent Diagram"), QKeySequence(QStringLiteral("Ctrl+Shift+P")))->action();
|
||||||
d->openParentDiagramAction->setIcon(QIcon(QStringLiteral(":/modeleditor/up.png")));
|
d->openParentDiagramAction->setIcon(QIcon(QStringLiteral(":/modeleditor/up.png")));
|
||||||
registerCommand(Constants::ACTION_ADD_PACKAGE, nullptr, Core::Context());
|
registerCommand(Constants::ACTION_ADD_PACKAGE, nullptr, Core::Context(), true, tr("Add Package"));
|
||||||
registerCommand(Constants::ACTION_ADD_COMPONENT, nullptr, Core::Context());
|
registerCommand(Constants::ACTION_ADD_COMPONENT, nullptr, Core::Context(), true, tr("Add Component"));
|
||||||
registerCommand(Constants::ACTION_ADD_CLASS, nullptr, Core::Context());
|
registerCommand(Constants::ACTION_ADD_CLASS, nullptr, Core::Context(), true, tr("Add Class"));
|
||||||
registerCommand(Constants::ACTION_ADD_CANVAS_DIAGRAM, nullptr, Core::Context());
|
registerCommand(Constants::ACTION_ADD_CANVAS_DIAGRAM, nullptr, Core::Context(), true, tr("Add Canvas Diagram"));
|
||||||
d->synchronizeBrowserAction = registerCommand(
|
d->synchronizeBrowserAction = registerCommand(
|
||||||
Constants::ACTION_SYNC_BROWSER, nullptr, Core::Context(), true,
|
Constants::ACTION_SYNC_BROWSER, nullptr, Core::Context(), true,
|
||||||
tr("Synchronize Browser and Diagram<br><i><small>Press&Hold for options</small></i>"))->action();
|
tr("Synchronize Browser and Diagram<br><i><small>Press&Hold for options</small></i>"))->action();
|
||||||
|
|||||||
@@ -321,8 +321,7 @@ QWidget *AppOutputPane::outputWidget(QWidget *)
|
|||||||
|
|
||||||
QList<QWidget*> AppOutputPane::toolBarWidgets() const
|
QList<QWidget*> AppOutputPane::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget*>() << m_reRunButton << m_stopButton << m_attachButton
|
return { m_reRunButton, m_stopButton, m_attachButton, m_zoomInButton, m_zoomOutButton };
|
||||||
<< m_zoomInButton << m_zoomOutButton;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString AppOutputPane::displayName() const
|
QString AppOutputPane::displayName() const
|
||||||
|
|||||||
@@ -244,9 +244,7 @@ QWidget *CompileOutputWindow::outputWidget(QWidget *)
|
|||||||
|
|
||||||
QList<QWidget *> CompileOutputWindow::toolBarWidgets() const
|
QList<QWidget *> CompileOutputWindow::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget *>() << m_cancelBuildButton
|
return { m_cancelBuildButton, m_zoomInButton, m_zoomOutButton };
|
||||||
<< m_zoomInButton
|
|
||||||
<< m_zoomOutButton;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompileOutputWindow::appendText(const QString &text, BuildStep::OutputFormat format)
|
void CompileOutputWindow::appendText(const QString &text, BuildStep::OutputFormat format)
|
||||||
|
|||||||
@@ -164,7 +164,10 @@ const QStringList &CustomToolChain::rawPredefinedMacros() const
|
|||||||
|
|
||||||
void CustomToolChain::setPredefinedMacros(const QStringList &list)
|
void CustomToolChain::setPredefinedMacros(const QStringList &list)
|
||||||
{
|
{
|
||||||
|
if (m_predefinedMacros == list)
|
||||||
|
return;
|
||||||
m_predefinedMacros = list;
|
m_predefinedMacros = list;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<HeaderPath> CustomToolChain::systemHeaderPaths(const QStringList &cxxFlags, const FileName &) const
|
QList<HeaderPath> CustomToolChain::systemHeaderPaths(const QStringList &cxxFlags, const FileName &) const
|
||||||
@@ -215,9 +218,14 @@ QStringList CustomToolChain::headerPathsList() const
|
|||||||
|
|
||||||
void CustomToolChain::setHeaderPaths(const QStringList &list)
|
void CustomToolChain::setHeaderPaths(const QStringList &list)
|
||||||
{
|
{
|
||||||
m_systemHeaderPaths = Utils::transform(list, [](const QString &headerPath) {
|
QList<HeaderPath> tmp = Utils::transform(list, [](const QString &headerPath) {
|
||||||
return HeaderPath(headerPath.trimmed(), HeaderPath::GlobalHeaderPath);
|
return HeaderPath(headerPath.trimmed(), HeaderPath::GlobalHeaderPath);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (m_systemHeaderPaths == tmp)
|
||||||
|
return;
|
||||||
|
m_systemHeaderPaths = tmp;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomToolChain::setCompilerCommand(const FileName &path)
|
void CustomToolChain::setCompilerCommand(const FileName &path)
|
||||||
@@ -261,8 +269,14 @@ const QStringList &CustomToolChain::cxx11Flags() const
|
|||||||
|
|
||||||
void CustomToolChain::setMkspecs(const QString &specs)
|
void CustomToolChain::setMkspecs(const QString &specs)
|
||||||
{
|
{
|
||||||
m_mkspecs = Utils::transform(specs.split(QLatin1Char(',')),
|
Utils::FileNameList tmp
|
||||||
[](QString fn) { return FileName::fromString(fn); });
|
= Utils::transform(specs.split(QLatin1Char(',')),
|
||||||
|
[](QString fn) { return FileName::fromString(fn); });
|
||||||
|
|
||||||
|
if (tmp == m_mkspecs)
|
||||||
|
return;
|
||||||
|
m_mkspecs = tmp;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CustomToolChain::mkspecs() const
|
QString CustomToolChain::mkspecs() const
|
||||||
@@ -367,7 +381,10 @@ CustomToolChain::OutputParser CustomToolChain::outputParserType() const
|
|||||||
|
|
||||||
void CustomToolChain::setOutputParserType(CustomToolChain::OutputParser parser)
|
void CustomToolChain::setOutputParserType(CustomToolChain::OutputParser parser)
|
||||||
{
|
{
|
||||||
|
if (m_outputParser == parser)
|
||||||
|
return;
|
||||||
m_outputParser = parser;
|
m_outputParser = parser;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomParserSettings CustomToolChain::customParserSettings() const
|
CustomParserSettings CustomToolChain::customParserSettings() const
|
||||||
@@ -377,7 +394,10 @@ CustomParserSettings CustomToolChain::customParserSettings() const
|
|||||||
|
|
||||||
void CustomToolChain::setCustomParserSettings(const CustomParserSettings &settings)
|
void CustomToolChain::setCustomParserSettings(const CustomParserSettings &settings)
|
||||||
{
|
{
|
||||||
|
if (m_customParserSettings == settings)
|
||||||
|
return;
|
||||||
m_customParserSettings = settings;
|
m_customParserSettings = settings;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CustomToolChain::parserName(CustomToolChain::OutputParser parser)
|
QString CustomToolChain::parserName(CustomToolChain::OutputParser parser)
|
||||||
|
|||||||
@@ -230,16 +230,25 @@ void GccToolChain::setCompilerCommand(const FileName &path)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
m_compilerCommand = path;
|
m_compilerCommand = path;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GccToolChain::setSupportedAbis(const QList<Abi> &m_abis)
|
void GccToolChain::setSupportedAbis(const QList<Abi> &m_abis)
|
||||||
{
|
{
|
||||||
|
if (m_supportedAbis == m_abis)
|
||||||
|
return;
|
||||||
|
|
||||||
m_supportedAbis = m_abis;
|
m_supportedAbis = m_abis;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GccToolChain::setOriginalTargetTriple(const QString &targetTriple)
|
void GccToolChain::setOriginalTargetTriple(const QString &targetTriple)
|
||||||
{
|
{
|
||||||
|
if (m_originalTargetTriple == targetTriple)
|
||||||
|
return;
|
||||||
|
|
||||||
m_originalTargetTriple = targetTriple;
|
m_originalTargetTriple = targetTriple;
|
||||||
|
toolChainUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GccToolChain::setMacroCache(const QStringList &allCxxflags, const QByteArray ¯os) const
|
void GccToolChain::setMacroCache(const QStringList &allCxxflags, const QByteArray ¯os) const
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ void KitModel::removeKit(Kit *k)
|
|||||||
if (node == m_defaultNode)
|
if (node == m_defaultNode)
|
||||||
setDefaultNode(findSecondLevelItem([node](KitNode *kn) { return kn != node; }));
|
setDefaultNode(findSecondLevelItem([node](KitNode *kn) { return kn != node; }));
|
||||||
|
|
||||||
delete takeItem(node);
|
destroyItem(node);
|
||||||
|
|
||||||
validateKitNames();
|
validateKitNames();
|
||||||
emit kitStateChanged();
|
emit kitStateChanged();
|
||||||
|
|||||||
@@ -259,8 +259,6 @@ QByteArray MsvcToolChain::msvcPredefinedMacros(const QStringList cxxflags,
|
|||||||
QStringList split = line.split('=');
|
QStringList split = line.split('=');
|
||||||
const QString key = split.at(0).mid(1);
|
const QString key = split.at(0).mid(1);
|
||||||
QString value = split.at(1);
|
QString value = split.at(1);
|
||||||
if (!value.isEmpty())
|
|
||||||
value.chop(1); //remove '\n'
|
|
||||||
predefinedMacros += "#define ";
|
predefinedMacros += "#define ";
|
||||||
predefinedMacros += key.toUtf8();
|
predefinedMacros += key.toUtf8();
|
||||||
predefinedMacros += ' ';
|
predefinedMacros += ' ';
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ void TaskWindow::delayedInitialization()
|
|||||||
|
|
||||||
QList<QWidget*> TaskWindow::toolBarWidgets() const
|
QList<QWidget*> TaskWindow::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget*>() << d->m_filterWarningsButton << d->m_categoriesButton;
|
return { d->m_filterWarningsButton, d->m_categoriesButton };
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *TaskWindow::outputWidget(QWidget *)
|
QWidget *TaskWindow::outputWidget(QWidget *)
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ void ToolChainOptionsWidget::addToolChain(ToolChain *tc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TreeItem *parent = m_model.rootItem()->child(tc->isAutoDetected() ? 0 : 1);
|
TreeItem *parent = m_model.rootItem()->childAt(tc->isAutoDetected() ? 0 : 1);
|
||||||
parent->appendChild(new ToolChainTreeItem(tc, false));
|
parent->appendChild(new ToolChainTreeItem(tc, false));
|
||||||
|
|
||||||
updateState();
|
updateState();
|
||||||
@@ -255,7 +255,7 @@ void ToolChainOptionsWidget::removeToolChain(ToolChain *tc)
|
|||||||
auto item = m_model.findSecondLevelItem([tc](ToolChainTreeItem *item) {
|
auto item = m_model.findSecondLevelItem([tc](ToolChainTreeItem *item) {
|
||||||
return tc->isAutoDetected() && item->toolChain == tc;
|
return tc->isAutoDetected() && item->toolChain == tc;
|
||||||
});
|
});
|
||||||
delete m_model.takeItem(item);
|
m_model.destroyItem(item);
|
||||||
|
|
||||||
updateState();
|
updateState();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3 as published by the Free Software
|
||||||
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||||
|
** included in the packaging of this file. Please review the following
|
||||||
|
** information to ensure the GNU General Public License requirements will
|
||||||
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "stateseditoriconprovider.h"
|
||||||
|
|
||||||
|
#include <coreplugin/coreicons.h>
|
||||||
|
|
||||||
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
StatesEditorIconProvider::StatesEditorIconProvider()
|
||||||
|
: QQuickImageProvider(Pixmap)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QPixmap StatesEditorIconProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
|
||||||
|
{
|
||||||
|
Q_UNUSED(requestedSize)
|
||||||
|
|
||||||
|
QPixmap result;
|
||||||
|
|
||||||
|
if (id == "close")
|
||||||
|
result = Core::Icons::CLOSE_TOOLBAR.pixmap();
|
||||||
|
|
||||||
|
else if (id == "plus")
|
||||||
|
result = Core::Icons::PLUS.pixmap();
|
||||||
|
|
||||||
|
if (size)
|
||||||
|
*size = result.size();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace QmlDesigner
|
||||||
@@ -5,8 +5,10 @@ VPATH += $$PWD
|
|||||||
SOURCES += stateseditorwidget.cpp \
|
SOURCES += stateseditorwidget.cpp \
|
||||||
stateseditormodel.cpp \
|
stateseditormodel.cpp \
|
||||||
stateseditorview.cpp \
|
stateseditorview.cpp \
|
||||||
stateseditorimageprovider.cpp
|
stateseditorimageprovider.cpp \
|
||||||
|
stateeditorsiconprovider.cpp
|
||||||
HEADERS += stateseditorwidget.h \
|
HEADERS += stateseditorwidget.h \
|
||||||
stateseditormodel.h \
|
stateseditormodel.h \
|
||||||
stateseditorview.h \
|
stateseditorview.h \
|
||||||
stateseditorimageprovider.cpp
|
stateseditorimageprovider.h \
|
||||||
|
stateseditoriconprovider.h
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** GNU General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3 as published by the Free Software
|
||||||
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||||
|
** included in the packaging of this file. Please review the following
|
||||||
|
** information to ensure the GNU General Public License requirements will
|
||||||
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QQuickImageProvider>
|
||||||
|
|
||||||
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
class StatesEditorIconProvider : public QQuickImageProvider
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StatesEditorIconProvider();
|
||||||
|
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace QmlDesigner
|
||||||
@@ -27,10 +27,12 @@
|
|||||||
#include "stateseditormodel.h"
|
#include "stateseditormodel.h"
|
||||||
#include "stateseditorview.h"
|
#include "stateseditorview.h"
|
||||||
#include "stateseditorimageprovider.h"
|
#include "stateseditorimageprovider.h"
|
||||||
|
#include "stateseditoriconprovider.h"
|
||||||
|
|
||||||
#include <invalidqmlsourceexception.h>
|
#include <invalidqmlsourceexception.h>
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/stylehelper.h>
|
#include <utils/stylehelper.h>
|
||||||
|
|
||||||
@@ -95,9 +97,10 @@ StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, State
|
|||||||
rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel);
|
rootContext()->setContextProperty(QStringLiteral("statesEditorModel"), statesEditorModel);
|
||||||
rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor());
|
rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor());
|
||||||
|
|
||||||
|
|
||||||
rootContext()->setContextProperty(QLatin1String("canAddNewStates"), true);
|
rootContext()->setContextProperty(QLatin1String("canAddNewStates"), true);
|
||||||
|
|
||||||
|
engine()->addImageProvider(QLatin1String("icons"), new StatesEditorIconProvider());
|
||||||
|
|
||||||
setWindowTitle(tr("States", "Title of Editor widget"));
|
setWindowTitle(tr("States", "Title of Editor widget"));
|
||||||
|
|
||||||
// init the first load of the QML UI elements
|
// init the first load of the QML UI elements
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ QtcProduct {
|
|||||||
"../../../../share/qtcreator/qml/qmlpuppet/interfaces",
|
"../../../../share/qtcreator/qml/qmlpuppet/interfaces",
|
||||||
"../../../../share/qtcreator/qml/qmlpuppet/types",
|
"../../../../share/qtcreator/qml/qmlpuppet/types",
|
||||||
])
|
])
|
||||||
|
cpp.internalVersion: ""
|
||||||
|
|
||||||
Group {
|
Group {
|
||||||
name: "controls"
|
name: "controls"
|
||||||
|
|||||||
@@ -554,6 +554,9 @@ Project {
|
|||||||
"propertyeditor/qmlmodelnodeproxy.h",
|
"propertyeditor/qmlmodelnodeproxy.h",
|
||||||
"resources/resources.qrc",
|
"resources/resources.qrc",
|
||||||
"stateseditor/stateseditorimageprovider.cpp",
|
"stateseditor/stateseditorimageprovider.cpp",
|
||||||
|
"stateseditor/stateseditorimageprovider.h",
|
||||||
|
"stateseditor/stateeditorsiconprovider.cpp",
|
||||||
|
"stateseditor/stateseditoriconprovider.h",
|
||||||
"stateseditor/stateseditormodel.cpp",
|
"stateseditor/stateseditormodel.cpp",
|
||||||
"stateseditor/stateseditormodel.h",
|
"stateseditor/stateseditormodel.h",
|
||||||
"stateseditor/stateseditorview.cpp",
|
"stateseditor/stateseditorview.cpp",
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ QtcProduct {
|
|||||||
|
|
||||||
cpp.defines: base.concat("QTQUICK_LIBRARY")
|
cpp.defines: base.concat("QTQUICK_LIBRARY")
|
||||||
cpp.includePaths: base.concat("../designercore/include")
|
cpp.includePaths: base.concat("../designercore/include")
|
||||||
|
cpp.internalVersion: ""
|
||||||
|
|
||||||
Group {
|
Group {
|
||||||
name: "sources"
|
name: "sources"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 986 B |