forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/master' into 4.12
Change-Id: I2c0857b3845d9947d3e10ede5c67e2780a8815d6
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Design Studio documentation.
|
** This file is part of the Qt Design Studio documentation.
|
||||||
@@ -49,17 +49,11 @@
|
|||||||
You can use the \QBSK export tool in Sketch to convert artwork into
|
You can use the \QBSK export tool in Sketch to convert artwork into
|
||||||
Qt Quick files that you can import to projects in \QDS.
|
Qt Quick files that you can import to projects in \QDS.
|
||||||
|
|
||||||
\li \l{Exporting from Maya}
|
|
||||||
|
|
||||||
You can export 3D graphics from Maya in the FBX format.
|
|
||||||
The necessary plugin is usually enabled by default.
|
|
||||||
|
|
||||||
\omit
|
|
||||||
\li \l{Exporting 3D Assets}
|
\li \l{Exporting 3D Assets}
|
||||||
|
|
||||||
You can import files you created using 3D graphics applications and
|
You can import files you created using 3D graphics applications and
|
||||||
stored in several widely-used formats, such as .blend, .dae, .fbx,
|
stored in several widely-used formats, such as .blend, .dae, .fbx,
|
||||||
.glb, .gltf, .obj, .uia, or .uip.
|
.glb, .gltf, .obj, .uia, or .uip.
|
||||||
\endomit
|
|
||||||
\endlist
|
\endlist
|
||||||
*/
|
*/
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
\contentspage {Qt Design Studio Manual}
|
\contentspage {Qt Design Studio Manual}
|
||||||
\previouspage qtbridge-sketch-setup.html
|
\previouspage qtbridge-sketch-setup.html
|
||||||
\page qtbridge-sketch-using.html
|
\page qtbridge-sketch-using.html
|
||||||
\nextpage exporting-from-maya.html
|
\nextpage exporting-3d-assets.html
|
||||||
|
|
||||||
\title Using \QBSK
|
\title Using \QBSK
|
||||||
|
|
||||||
|
@@ -0,0 +1,196 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 1993-2009 NVIDIA Corporation.
|
||||||
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Design Studio.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:FDL$
|
||||||
|
** 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 Free Documentation License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Free
|
||||||
|
** Documentation License version 1.3 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file included in the packaging of
|
||||||
|
** this file. Please review the following information to ensure
|
||||||
|
** the GNU Free Documentation License version 1.3 requirements
|
||||||
|
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\contentspage {Qt Design Studio}
|
||||||
|
\page exporting-3d-assets.html
|
||||||
|
\previouspage qtbridge-sketch-using.html
|
||||||
|
\nextpage exporting-from-blender.html
|
||||||
|
|
||||||
|
\title Exporting 3D Assets
|
||||||
|
|
||||||
|
You can import files you created using 3D graphics applications and exported
|
||||||
|
to several widely-used formats, such as .blend, .dae, .fbx, .glb, .gltf,
|
||||||
|
.obj, .uia, or .uip. For a list of formats supported by each \l{Qt Quick 3D}
|
||||||
|
version, see the module documentation.
|
||||||
|
|
||||||
|
Depending on the 3D graphics tool, you might need to install export plugins
|
||||||
|
to be able to export files to a particular format.
|
||||||
|
|
||||||
|
To get the best results when exporting 3D assets and importing them to
|
||||||
|
\QDS, follow the general guidelines in the following sections. For more
|
||||||
|
information about using the export plugins for a particular tool, see
|
||||||
|
\l{Exporting from Different Tools}.
|
||||||
|
|
||||||
|
\section1 Geometry
|
||||||
|
|
||||||
|
\QDS supports geometry exported as triangles, quads, and pentagons. For
|
||||||
|
basic geometry, you mostly need to pay attention to pivot points and
|
||||||
|
transformation.
|
||||||
|
|
||||||
|
\section2 Pivot Points
|
||||||
|
|
||||||
|
In \QDS, there is only one pivot per component. It is used as the origin
|
||||||
|
for scaling and rotation. Adjust the position of a 3D model's pivot as
|
||||||
|
needed.
|
||||||
|
|
||||||
|
However, extreme edits to pivots in 3D modeling tools can cause problems
|
||||||
|
when importing to \QDS, especially if animated. This difference is often
|
||||||
|
manifested as a difference in the position or orientation of a component.
|
||||||
|
You can prevent these kinds of problems by only making simple edits to
|
||||||
|
your pivot points. Keep your pivot points to the default (world) alignment,
|
||||||
|
don't scale them, and make sure that if you have multiple pivots (Maya)
|
||||||
|
that they are all at the same location in space.
|
||||||
|
|
||||||
|
\section2 Transformation
|
||||||
|
|
||||||
|
You can import full 3D transform information including position, rotation,
|
||||||
|
scale, and pivot. \QDS can import left and right-handed coordinate systems,
|
||||||
|
y-up or z-up, and rotations applied in any order. The principal limitation
|
||||||
|
in this area are pivot points. As discussed above, only simple edits to
|
||||||
|
pivot points are supported.
|
||||||
|
|
||||||
|
Most 3D graphics tools enable you to apply transformation to components and
|
||||||
|
vertices. We highly recommend doing so before importing mesh data into \QDS.
|
||||||
|
This ensures that the mesh coming into \QDS has clean transform data and no
|
||||||
|
arbitrary transform values which can be confusing or an impediment to your
|
||||||
|
work.
|
||||||
|
|
||||||
|
\note After applying transformations, you may have to reposition the pivot
|
||||||
|
point in some 3D graphics tools.
|
||||||
|
|
||||||
|
\section1 Animations
|
||||||
|
|
||||||
|
Animations are supported on any imported property. Position, rotation,
|
||||||
|
scale, and pivot can all be animated. For example, a hierarchy of items,
|
||||||
|
rotated simultaneously on arbitrary axes in arbitrary axis order can be
|
||||||
|
imported. \QDS also supports importing bezier tangent value tweaked into
|
||||||
|
animations.
|
||||||
|
|
||||||
|
\section2 Time-based Animations
|
||||||
|
|
||||||
|
In many 3D modeling tools, when you create keyframes you associate them with
|
||||||
|
frame numbers. This is great in the film industry where frame rates are
|
||||||
|
constant, but poses problems in applications where the frame rate may or
|
||||||
|
may not be rock solid. If you were to specify that the logo animation will
|
||||||
|
play for 180 frames, it might play for 3 seconds at 60 FPS, but if the speed
|
||||||
|
drops to 30 fps, the animation will also get much slower.
|
||||||
|
|
||||||
|
Luckily, accounting for this is relatively simple. Many 3D modeling tools
|
||||||
|
default to a setting of 24 frames per second, so your keyframes will
|
||||||
|
be translated at that ratio. If you want a keyframe at one second, put
|
||||||
|
it on frame 24. For two seconds, use frame 48, and so on.
|
||||||
|
|
||||||
|
Usually, configurable frame rates are offered, and the frame rate setting
|
||||||
|
should be respected upon import.
|
||||||
|
|
||||||
|
Some tools, such as Maya, start at frame 1, by default. If you have a
|
||||||
|
keyframe at frame 1, the time for that keyframe will be 1/24, or 0.041
|
||||||
|
seconds. Edit your Maya animation settings to start your animations at
|
||||||
|
frame 0, or 0/24 = 0 seconds.
|
||||||
|
|
||||||
|
In \QDS, you can specify the duration of the animation in addition to its
|
||||||
|
start and end frame.
|
||||||
|
|
||||||
|
\section2 Deform Animations
|
||||||
|
|
||||||
|
\e {Deform animations}, such as lattice and bend, are not supported by \QDS.
|
||||||
|
However, you can work around this limitation by converting deform animations
|
||||||
|
into \e {blend shape} animations that are supported in FBX format. Before
|
||||||
|
exporting the animations, you need to bake the actions in them into key
|
||||||
|
frames.
|
||||||
|
|
||||||
|
\section2 Baking Actions for Animations
|
||||||
|
|
||||||
|
You need to bake actions to export animations that are using custom curves
|
||||||
|
or object constraints to control the animation.
|
||||||
|
|
||||||
|
\e Actions are data-blocks containing animation data. If you are exporting
|
||||||
|
animations, you need to bake actions.
|
||||||
|
|
||||||
|
\section2 Animation Systems
|
||||||
|
|
||||||
|
3D modeling tools offer highly complex and specialized animation systems.
|
||||||
|
We recommend using the \QDS \uicontrol Timeline view whenever practical.
|
||||||
|
This helps keep mesh information on import clean and reduces conflicts
|
||||||
|
between imported mesh animation and \QDS's animation.
|
||||||
|
|
||||||
|
The animation system in \QDS is a full implementation of bezier
|
||||||
|
keys, and the full complement of bezier animation that you can create
|
||||||
|
with 3D modeling tools and export are represented in \QDS. The more
|
||||||
|
extreme differences between the various animation systems are mitigated
|
||||||
|
by the limitations imposed by the supported formats.
|
||||||
|
|
||||||
|
\section1 Materials and Textures
|
||||||
|
|
||||||
|
Create and assign material slots in the 3D graphics tool before you export
|
||||||
|
3D graphics. If you add several material slots, the first one is assigned
|
||||||
|
to the object. Only material slots that have a material and that are
|
||||||
|
assigned to a mesh on the exported object are imported into \QDS.
|
||||||
|
|
||||||
|
If no material slots are assigned to an object, a default material is
|
||||||
|
attached to the component that is created when you import the assets to
|
||||||
|
\QDS.
|
||||||
|
|
||||||
|
UV-unwrapping your model will create a UV layout. Without a UV layout, you
|
||||||
|
will not be able to render any textures on your model in \QDS.
|
||||||
|
|
||||||
|
There are many different ways and techniques to unwrap 3D meshes, depending
|
||||||
|
on the 3D graphics tool.
|
||||||
|
|
||||||
|
\section1 Lights
|
||||||
|
|
||||||
|
Lights are imported to \QDS. Position, rotation, scale, brightness,
|
||||||
|
light color, and the cast shadows property values are preserved.
|
||||||
|
|
||||||
|
If the light type is not supported by Qt Quick 3D, it is converted into
|
||||||
|
one of the supported types.
|
||||||
|
|
||||||
|
\section1 Cameras
|
||||||
|
|
||||||
|
Perspective and orthographic cameras are imported to \QDS. Position,
|
||||||
|
rotation, and scale property values, as well as start and end clipping
|
||||||
|
values are preserved. For perspective cameras, field of view values
|
||||||
|
are also preserved.
|
||||||
|
|
||||||
|
\section1 Node Hierarchy
|
||||||
|
|
||||||
|
\QDS supports importing hierarchical information. Hierarchies of arbitrary
|
||||||
|
depth are supported, including grouped nodes. Hierarchical transforms are
|
||||||
|
applied as expected.
|
||||||
|
|
||||||
|
\section1 Exporting from Different Tools
|
||||||
|
|
||||||
|
The following sections provide additional information about exporting
|
||||||
|
3D assets from a particular tool:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li \l{Exporting from Blender}{Blender}
|
||||||
|
\li \l{Exporting from Maya}{Maya}
|
||||||
|
\endlist
|
||||||
|
*/
|
@@ -0,0 +1,47 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of Qt Design Studio.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:FDL$
|
||||||
|
** 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 Free Documentation License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Free
|
||||||
|
** Documentation License version 1.3 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file included in the packaging of
|
||||||
|
** this file. Please review the following information to ensure
|
||||||
|
** the GNU Free Documentation License version 1.3 requirements
|
||||||
|
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\contentspage {Qt Design Studio Manual}
|
||||||
|
\page exporting-from-blender.html
|
||||||
|
\previouspage exporting-3d-assets.html
|
||||||
|
\nextpage exporting-from-maya.html
|
||||||
|
|
||||||
|
\title Exporting from Blender
|
||||||
|
|
||||||
|
You can export meshes, lights, cameras, transformations (scale, rotation,
|
||||||
|
or location), UV layouts, pivot points, object hierarchy, and material
|
||||||
|
slots from Blender to \QDS.
|
||||||
|
|
||||||
|
When you import 3D graphics to \QDS, the scenegraph is converted into
|
||||||
|
Qt Quick 3D types.
|
||||||
|
|
||||||
|
For best results, export 3D graphics to the GL Transmission Format (qlTF2),
|
||||||
|
as instructed in the
|
||||||
|
\l{https://docs.blender.org/manual/en/2.81/addons/import_export/io_scene_gltf2.html}
|
||||||
|
{qlTF2} section of the Blender documentation.
|
||||||
|
*/
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of Qt Creator.
|
** This file is part of Qt Creator.
|
||||||
@@ -52,36 +52,39 @@ QtObject {
|
|||||||
readonly property string anchorLeft: "\u002E"
|
readonly property string anchorLeft: "\u002E"
|
||||||
readonly property string anchorRight: "\u002F"
|
readonly property string anchorRight: "\u002F"
|
||||||
readonly property string anchorTop: "\u0030"
|
readonly property string anchorTop: "\u0030"
|
||||||
readonly property string centerHorizontal: "\u0031"
|
readonly property string annotationBubble: "\u0031"
|
||||||
readonly property string centerVertical: "\u0032"
|
readonly property string annotationDecal: "\u0032"
|
||||||
readonly property string closeCross: "\u0033"
|
readonly property string centerHorizontal: "\u0033"
|
||||||
readonly property string distributeBottom: "\u0034"
|
readonly property string centerVertical: "\u0034"
|
||||||
readonly property string distributeCenterHorizontal: "\u0035"
|
readonly property string closeCross: "\u0035"
|
||||||
readonly property string distributeCenterVertical: "\u0036"
|
readonly property string distributeBottom: "\u0036"
|
||||||
readonly property string distributeLeft: "\u0037"
|
readonly property string distributeCenterHorizontal: "\u0037"
|
||||||
readonly property string distributeOriginBottomRight: "\u0038"
|
readonly property string distributeCenterVertical: "\u0038"
|
||||||
readonly property string distributeOriginCenter: "\u0039"
|
readonly property string distributeLeft: "\u0039"
|
||||||
readonly property string distributeOriginNone: "\u003A"
|
readonly property string distributeOriginBottomRight: "\u003A"
|
||||||
readonly property string distributeOriginTopLeft: "\u003B"
|
readonly property string distributeOriginCenter: "\u003B"
|
||||||
readonly property string distributeRight: "\u003C"
|
readonly property string distributeOriginNone: "\u003C"
|
||||||
readonly property string distributeSpacingHorizontal: "\u003D"
|
readonly property string distributeOriginTopLeft: "\u003D"
|
||||||
readonly property string distributeSpacingVertical: "\u003E"
|
readonly property string distributeRight: "\u003E"
|
||||||
readonly property string distributeTop: "\u003F"
|
readonly property string distributeSpacingHorizontal: "\u003F"
|
||||||
readonly property string fontStyleBold: "\u0040"
|
readonly property string distributeSpacingVertical: "\u0040"
|
||||||
readonly property string fontStyleItalic: "\u0041"
|
readonly property string distributeTop: "\u0041"
|
||||||
readonly property string fontStyleStrikethrough: "\u0042"
|
readonly property string edit: "\u0042"
|
||||||
readonly property string fontStyleUnderline: "\u0043"
|
readonly property string fontStyleBold: "\u0043"
|
||||||
readonly property string testIcon: "\u0044"
|
readonly property string fontStyleItalic: "\u0044"
|
||||||
readonly property string textAlignBottom: "\u0045"
|
readonly property string fontStyleStrikethrough: "\u0045"
|
||||||
readonly property string textAlignCenter: "\u0046"
|
readonly property string fontStyleUnderline: "\u0046"
|
||||||
readonly property string textAlignLeft: "\u0047"
|
readonly property string testIcon: "\u0047"
|
||||||
readonly property string textAlignMiddle: "\u0048"
|
readonly property string textAlignBottom: "\u0048"
|
||||||
readonly property string textAlignRight: "\u0049"
|
readonly property string textAlignCenter: "\u0049"
|
||||||
readonly property string textAlignTop: "\u004A"
|
readonly property string textAlignLeft: "\u004A"
|
||||||
readonly property string tickIcon: "\u004B"
|
readonly property string textAlignMiddle: "\u004B"
|
||||||
readonly property string triState: "\u004C"
|
readonly property string textAlignRight: "\u004C"
|
||||||
readonly property string upDownIcon: "\u004D"
|
readonly property string textAlignTop: "\u004D"
|
||||||
readonly property string upDownSquare2: "\u004E"
|
readonly property string tickIcon: "\u004E"
|
||||||
|
readonly property string triState: "\u004F"
|
||||||
|
readonly property string upDownIcon: "\u0050"
|
||||||
|
readonly property string upDownSquare2: "\u0051"
|
||||||
|
|
||||||
readonly property font iconFont: Qt.font({
|
readonly property font iconFont: Qt.font({
|
||||||
"family": controlIcons.name,
|
"family": controlIcons.name,
|
||||||
|
Binary file not shown.
@@ -190,8 +190,7 @@ static inline int askMsgSendFailed()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// taken from utils/fileutils.cpp. We cannot use utils here since that depends app_version.h.
|
// taken from utils/fileutils.cpp. We cannot use utils here since that depends app_version.h.
|
||||||
static bool copyRecursively(const QString &srcFilePath,
|
static bool copyRecursively(const QString &srcFilePath, const QString &tgtFilePath)
|
||||||
const QString &tgtFilePath)
|
|
||||||
{
|
{
|
||||||
QFileInfo srcFileInfo(srcFilePath);
|
QFileInfo srcFileInfo(srcFilePath);
|
||||||
if (srcFileInfo.isDir()) {
|
if (srcFileInfo.isDir()) {
|
||||||
@@ -200,12 +199,11 @@ static bool copyRecursively(const QString &srcFilePath,
|
|||||||
if (!targetDir.mkdir(Utils::FilePath::fromString(tgtFilePath).fileName()))
|
if (!targetDir.mkdir(Utils::FilePath::fromString(tgtFilePath).fileName()))
|
||||||
return false;
|
return false;
|
||||||
QDir sourceDir(srcFilePath);
|
QDir sourceDir(srcFilePath);
|
||||||
QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System);
|
const QStringList fileNames = sourceDir.entryList
|
||||||
foreach (const QString &fileName, fileNames) {
|
(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System);
|
||||||
const QString newSrcFilePath
|
for (const QString &fileName : fileNames) {
|
||||||
= srcFilePath + QLatin1Char('/') + fileName;
|
const QString newSrcFilePath = srcFilePath + '/' + fileName;
|
||||||
const QString newTgtFilePath
|
const QString newTgtFilePath = tgtFilePath + '/' + fileName;
|
||||||
= tgtFilePath + QLatin1Char('/') + fileName;
|
|
||||||
if (!copyRecursively(newSrcFilePath, newTgtFilePath))
|
if (!copyRecursively(newSrcFilePath, newTgtFilePath))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -300,8 +298,8 @@ static inline QSettings *userSettings()
|
|||||||
if (srcDir == destDir) // Nothing to copy and no settings yet
|
if (srcDir == destDir) // Nothing to copy and no settings yet
|
||||||
return settings;
|
return settings;
|
||||||
|
|
||||||
QStringList entries = srcDir.entryList();
|
const QStringList entries = srcDir.entryList();
|
||||||
foreach (const QString &file, entries) {
|
for (const QString &file : entries) {
|
||||||
const QString lowerFile = file.toLower();
|
const QString lowerFile = file.toLower();
|
||||||
if (lowerFile.startsWith(QLatin1String("profiles.xml"))
|
if (lowerFile.startsWith(QLatin1String("profiles.xml"))
|
||||||
|| lowerFile.startsWith(QLatin1String("toolchains.xml"))
|
|| lowerFile.startsWith(QLatin1String("toolchains.xml"))
|
||||||
@@ -349,7 +347,8 @@ void loadFonts()
|
|||||||
{
|
{
|
||||||
const QDir dir(resourcePath() + "/fonts/");
|
const QDir dir(resourcePath() + "/fonts/");
|
||||||
|
|
||||||
foreach (const QFileInfo &fileInfo, dir.entryInfoList(QStringList("*.ttf"), QDir::Files))
|
const QFileInfoList fonts = dir.entryInfoList(QStringList("*.ttf"), QDir::Files);
|
||||||
|
for (const QFileInfo &fileInfo : fonts)
|
||||||
QFontDatabase::addApplicationFont(fileInfo.absoluteFilePath());
|
QFontDatabase::addApplicationFont(fileInfo.absoluteFilePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,13 +554,12 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
QTranslator translator;
|
QTranslator translator;
|
||||||
QTranslator qtTranslator;
|
QTranslator qtTranslator;
|
||||||
QStringList uiLanguages;
|
QStringList uiLanguages = QLocale::system().uiLanguages();
|
||||||
uiLanguages = QLocale::system().uiLanguages();
|
|
||||||
QString overrideLanguage = settings->value(QLatin1String("General/OverrideLanguage")).toString();
|
QString overrideLanguage = settings->value(QLatin1String("General/OverrideLanguage")).toString();
|
||||||
if (!overrideLanguage.isEmpty())
|
if (!overrideLanguage.isEmpty())
|
||||||
uiLanguages.prepend(overrideLanguage);
|
uiLanguages.prepend(overrideLanguage);
|
||||||
const QString &creatorTrPath = resourcePath() + "/translations";
|
const QString &creatorTrPath = resourcePath() + "/translations";
|
||||||
foreach (QString locale, uiLanguages) {
|
for (QString locale : qAsConst(uiLanguages)) {
|
||||||
locale = QLocale(locale).name();
|
locale = QLocale(locale).name();
|
||||||
if (translator.load("qtcreator_" + locale, creatorTrPath)) {
|
if (translator.load("qtcreator_" + locale, creatorTrPath)) {
|
||||||
const QString &qtTrPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
|
const QString &qtTrPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
|
||||||
@@ -614,7 +612,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
const PluginSpecSet plugins = PluginManager::plugins();
|
const PluginSpecSet plugins = PluginManager::plugins();
|
||||||
PluginSpec *coreplugin = nullptr;
|
PluginSpec *coreplugin = nullptr;
|
||||||
foreach (PluginSpec *spec, plugins) {
|
for (PluginSpec *spec : plugins) {
|
||||||
if (spec->name() == QLatin1String(corePluginNameC)) {
|
if (spec->name() == QLatin1String(corePluginNameC)) {
|
||||||
coreplugin = spec;
|
coreplugin = spec;
|
||||||
break;
|
break;
|
||||||
|
@@ -207,7 +207,7 @@ Aggregate::~Aggregate()
|
|||||||
QList<QObject *> components;
|
QList<QObject *> components;
|
||||||
{
|
{
|
||||||
QWriteLocker locker(&lock());
|
QWriteLocker locker(&lock());
|
||||||
foreach (QObject *component, m_components) {
|
for (QObject *component : qAsConst(m_components)) {
|
||||||
disconnect(component, &QObject::destroyed, this, &Aggregate::deleteSelf);
|
disconnect(component, &QObject::destroyed, this, &Aggregate::deleteSelf);
|
||||||
aggregateMap().remove(component);
|
aggregateMap().remove(component);
|
||||||
}
|
}
|
||||||
|
@@ -48,7 +48,7 @@ public:
|
|||||||
|
|
||||||
template <typename T> T *component() {
|
template <typename T> T *component() {
|
||||||
QReadLocker locker(&lock());
|
QReadLocker locker(&lock());
|
||||||
foreach (QObject *component, m_components) {
|
for (QObject *component : qAsConst(m_components)) {
|
||||||
if (T *result = qobject_cast<T *>(component))
|
if (T *result = qobject_cast<T *>(component))
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ public:
|
|||||||
template <typename T> QList<T *> components() {
|
template <typename T> QList<T *> components() {
|
||||||
QReadLocker locker(&lock());
|
QReadLocker locker(&lock());
|
||||||
QList<T *> results;
|
QList<T *> results;
|
||||||
foreach (QObject *component, m_components) {
|
for (QObject *component : qAsConst(m_components)) {
|
||||||
if (T *result = qobject_cast<T *>(component)) {
|
if (T *result = qobject_cast<T *>(component)) {
|
||||||
results << result;
|
results << result;
|
||||||
}
|
}
|
||||||
|
@@ -170,7 +170,7 @@ bool OptionsParser::checkForLoadOption()
|
|||||||
return false;
|
return false;
|
||||||
if (nextToken(RequiredToken)) {
|
if (nextToken(RequiredToken)) {
|
||||||
if (m_currentArg == QLatin1String("all")) {
|
if (m_currentArg == QLatin1String("all")) {
|
||||||
foreach (PluginSpec *spec, m_pmPrivate->pluginSpecs)
|
for (PluginSpec *spec : qAsConst(m_pmPrivate->pluginSpecs))
|
||||||
spec->d->setForceEnabled(true);
|
spec->d->setForceEnabled(true);
|
||||||
m_isDependencyRefreshNeeded = true;
|
m_isDependencyRefreshNeeded = true;
|
||||||
} else {
|
} else {
|
||||||
@@ -197,7 +197,7 @@ bool OptionsParser::checkForNoLoadOption()
|
|||||||
return false;
|
return false;
|
||||||
if (nextToken(RequiredToken)) {
|
if (nextToken(RequiredToken)) {
|
||||||
if (m_currentArg == QLatin1String("all")) {
|
if (m_currentArg == QLatin1String("all")) {
|
||||||
foreach (PluginSpec *spec, m_pmPrivate->pluginSpecs)
|
for (PluginSpec *spec : qAsConst(m_pmPrivate->pluginSpecs))
|
||||||
spec->d->setForceDisabled(true);
|
spec->d->setForceDisabled(true);
|
||||||
m_isDependencyRefreshNeeded = true;
|
m_isDependencyRefreshNeeded = true;
|
||||||
} else {
|
} else {
|
||||||
@@ -210,7 +210,7 @@ bool OptionsParser::checkForNoLoadOption()
|
|||||||
} else {
|
} else {
|
||||||
spec->d->setForceDisabled(true);
|
spec->d->setForceDisabled(true);
|
||||||
// recursively disable all plugins that require this plugin
|
// recursively disable all plugins that require this plugin
|
||||||
foreach (PluginSpec *dependantSpec, PluginManager::pluginsRequiringPlugin(spec))
|
for (PluginSpec *dependantSpec : PluginManager::pluginsRequiringPlugin(spec))
|
||||||
dependantSpec->d->setForceDisabled(true);
|
dependantSpec->d->setForceDisabled(true);
|
||||||
m_isDependencyRefreshNeeded = true;
|
m_isDependencyRefreshNeeded = true;
|
||||||
}
|
}
|
||||||
|
@@ -46,7 +46,7 @@ PluginErrorOverview::PluginErrorOverview(QWidget *parent) :
|
|||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
m_ui->buttonBox->addButton(tr("Continue"), QDialogButtonBox::AcceptRole);
|
m_ui->buttonBox->addButton(tr("Continue"), QDialogButtonBox::AcceptRole);
|
||||||
|
|
||||||
foreach (PluginSpec *spec, PluginManager::plugins()) {
|
for (PluginSpec *spec : PluginManager::plugins()) {
|
||||||
// only show errors on startup if plugin is enabled.
|
// only show errors on startup if plugin is enabled.
|
||||||
if (spec->hasError() && spec->isEffectivelyEnabled()) {
|
if (spec->hasError() && spec->isEffectivelyEnabled()) {
|
||||||
QListWidgetItem *item = new QListWidgetItem(spec->name());
|
QListWidgetItem *item = new QListWidgetItem(spec->name());
|
||||||
|
@@ -359,11 +359,11 @@ const QStringList PluginManager::allErrors()
|
|||||||
/*!
|
/*!
|
||||||
Returns all plugins that require \a spec to be loaded. Recurses into dependencies.
|
Returns all plugins that require \a spec to be loaded. Recurses into dependencies.
|
||||||
*/
|
*/
|
||||||
QSet<PluginSpec *> PluginManager::pluginsRequiringPlugin(PluginSpec *spec)
|
const QSet<PluginSpec *> PluginManager::pluginsRequiringPlugin(PluginSpec *spec)
|
||||||
{
|
{
|
||||||
QSet<PluginSpec *> dependingPlugins({spec});
|
QSet<PluginSpec *> dependingPlugins({spec});
|
||||||
// recursively add plugins that depend on plugins that.... that depend on spec
|
// recursively add plugins that depend on plugins that.... that depend on spec
|
||||||
foreach (PluginSpec *spec, d->loadQueue()) {
|
for (PluginSpec *spec : d->loadQueue()) {
|
||||||
if (spec->requiresAny(dependingPlugins))
|
if (spec->requiresAny(dependingPlugins))
|
||||||
dependingPlugins.insert(spec);
|
dependingPlugins.insert(spec);
|
||||||
}
|
}
|
||||||
@@ -374,7 +374,7 @@ QSet<PluginSpec *> PluginManager::pluginsRequiringPlugin(PluginSpec *spec)
|
|||||||
/*!
|
/*!
|
||||||
Returns all plugins that \a spec requires to be loaded. Recurses into dependencies.
|
Returns all plugins that \a spec requires to be loaded. Recurses into dependencies.
|
||||||
*/
|
*/
|
||||||
QSet<PluginSpec *> PluginManager::pluginsRequiredByPlugin(PluginSpec *spec)
|
const QSet<PluginSpec *> PluginManager::pluginsRequiredByPlugin(PluginSpec *spec)
|
||||||
{
|
{
|
||||||
QSet<PluginSpec *> recursiveDependencies;
|
QSet<PluginSpec *> recursiveDependencies;
|
||||||
recursiveDependencies.insert(spec);
|
recursiveDependencies.insert(spec);
|
||||||
@@ -576,7 +576,7 @@ QString PluginManager::serializedArguments()
|
|||||||
{
|
{
|
||||||
const QChar separator = QLatin1Char('|');
|
const QChar separator = QLatin1Char('|');
|
||||||
QString rc;
|
QString rc;
|
||||||
foreach (const PluginSpec *ps, plugins()) {
|
for (const PluginSpec *ps : plugins()) {
|
||||||
if (!ps->arguments().isEmpty()) {
|
if (!ps->arguments().isEmpty()) {
|
||||||
if (!rc.isEmpty())
|
if (!rc.isEmpty())
|
||||||
rc += separator;
|
rc += separator;
|
||||||
@@ -593,7 +593,7 @@ QString PluginManager::serializedArguments()
|
|||||||
if (!rc.isEmpty())
|
if (!rc.isEmpty())
|
||||||
rc += separator;
|
rc += separator;
|
||||||
rc += QLatin1String(argumentKeywordC);
|
rc += QLatin1String(argumentKeywordC);
|
||||||
foreach (const QString &argument, d->arguments)
|
for (const QString &argument : qAsConst(d->arguments))
|
||||||
rc += separator + argument;
|
rc += separator + argument;
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
@@ -633,7 +633,7 @@ void PluginManager::remoteArguments(const QString &serializedArgument, QObject *
|
|||||||
const QStringList pwdValue = subList(serializedArguments, QLatin1String(pwdKeywordC));
|
const QStringList pwdValue = subList(serializedArguments, QLatin1String(pwdKeywordC));
|
||||||
const QString workingDirectory = pwdValue.isEmpty() ? QString() : pwdValue.first();
|
const QString workingDirectory = pwdValue.isEmpty() ? QString() : pwdValue.first();
|
||||||
const QStringList arguments = subList(serializedArguments, QLatin1String(argumentKeywordC));
|
const QStringList arguments = subList(serializedArguments, QLatin1String(argumentKeywordC));
|
||||||
foreach (const PluginSpec *ps, plugins()) {
|
for (const PluginSpec *ps : plugins()) {
|
||||||
if (ps->state() == PluginSpec::Running) {
|
if (ps->state() == PluginSpec::Running) {
|
||||||
const QStringList pluginOptions = subList(serializedArguments, QLatin1Char(':') + ps->name());
|
const QStringList pluginOptions = subList(serializedArguments, QLatin1Char(':') + ps->name());
|
||||||
QObject *socketParent = ps->plugin()->remoteCommand(pluginOptions, workingDirectory,
|
QObject *socketParent = ps->plugin()->remoteCommand(pluginOptions, workingDirectory,
|
||||||
@@ -747,11 +747,11 @@ void PluginManager::formatOptions(QTextStream &str, int optionIndentation, int d
|
|||||||
void PluginManager::formatPluginOptions(QTextStream &str, int optionIndentation, int descriptionIndentation)
|
void PluginManager::formatPluginOptions(QTextStream &str, int optionIndentation, int descriptionIndentation)
|
||||||
{
|
{
|
||||||
// Check plugins for options
|
// Check plugins for options
|
||||||
foreach (PluginSpec *ps, d->pluginSpecs) {
|
for (PluginSpec *ps : qAsConst(d->pluginSpecs)) {
|
||||||
const PluginSpec::PluginArgumentDescriptions pargs = ps->argumentDescriptions();
|
const PluginSpec::PluginArgumentDescriptions pargs = ps->argumentDescriptions();
|
||||||
if (!pargs.empty()) {
|
if (!pargs.empty()) {
|
||||||
str << "\nPlugin: " << ps->name() << '\n';
|
str << "\nPlugin: " << ps->name() << '\n';
|
||||||
foreach (PluginArgumentDescription pad, pargs)
|
for (const PluginArgumentDescription &pad : pargs)
|
||||||
formatOption(str, pad.name, pad.parameter, pad.description, optionIndentation, descriptionIndentation);
|
formatOption(str, pad.name, pad.parameter, pad.description, optionIndentation, descriptionIndentation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -762,7 +762,7 @@ void PluginManager::formatPluginOptions(QTextStream &str, int optionIndentation,
|
|||||||
*/
|
*/
|
||||||
void PluginManager::formatPluginVersions(QTextStream &str)
|
void PluginManager::formatPluginVersions(QTextStream &str)
|
||||||
{
|
{
|
||||||
foreach (PluginSpec *ps, d->pluginSpecs)
|
for (PluginSpec *ps : qAsConst(d->pluginSpecs))
|
||||||
str << " " << ps->name() << ' ' << ps->version() << ' ' << ps->description() << '\n';
|
str << " " << ps->name() << ' ' << ps->version() << ' ' << ps->description() << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -887,7 +887,7 @@ void PluginManagerPrivate::writeSettings()
|
|||||||
return;
|
return;
|
||||||
QStringList tempDisabledPlugins;
|
QStringList tempDisabledPlugins;
|
||||||
QStringList tempForceEnabledPlugins;
|
QStringList tempForceEnabledPlugins;
|
||||||
foreach (PluginSpec *spec, pluginSpecs) {
|
for (PluginSpec *spec : qAsConst(pluginSpecs)) {
|
||||||
if (spec->isEnabledByDefault() && !spec->isEnabledBySettings())
|
if (spec->isEnabledByDefault() && !spec->isEnabledBySettings())
|
||||||
tempDisabledPlugins.append(spec->name());
|
tempDisabledPlugins.append(spec->name());
|
||||||
if (!spec->isEnabledByDefault() && spec->isEnabledBySettings())
|
if (!spec->isEnabledByDefault() && spec->isEnabledBySettings())
|
||||||
@@ -923,10 +923,10 @@ void PluginManagerPrivate::stopAll()
|
|||||||
delete delayedInitializeTimer;
|
delete delayedInitializeTimer;
|
||||||
delayedInitializeTimer = nullptr;
|
delayedInitializeTimer = nullptr;
|
||||||
}
|
}
|
||||||
QVector<PluginSpec *> queue = loadQueue();
|
|
||||||
foreach (PluginSpec *spec, queue) {
|
const QVector<PluginSpec *> queue = loadQueue();
|
||||||
|
for (PluginSpec *spec : queue)
|
||||||
loadPlugin(spec, PluginSpec::Stopped);
|
loadPlugin(spec, PluginSpec::Stopped);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -1001,7 +1001,7 @@ static QStringList matchingTestFunctions(const QStringList &testFunctions,
|
|||||||
|
|
||||||
const QRegExp regExp(testFunctionName, Qt::CaseSensitive, QRegExp::Wildcard);
|
const QRegExp regExp(testFunctionName, Qt::CaseSensitive, QRegExp::Wildcard);
|
||||||
QStringList matchingFunctions;
|
QStringList matchingFunctions;
|
||||||
foreach (const QString &testFunction, testFunctions) {
|
for (const QString &testFunction : testFunctions) {
|
||||||
if (regExp.exactMatch(testFunction)) {
|
if (regExp.exactMatch(testFunction)) {
|
||||||
// If the specified test data is invalid, the QTest framework will
|
// If the specified test data is invalid, the QTest framework will
|
||||||
// print a reasonable error message for us.
|
// print a reasonable error message for us.
|
||||||
@@ -1058,7 +1058,7 @@ static TestPlan generateCompleteTestPlan(IPlugin *plugin, const QVector<QObject
|
|||||||
TestPlan testPlan;
|
TestPlan testPlan;
|
||||||
|
|
||||||
testPlan.insert(plugin, testFunctions(plugin->metaObject()));
|
testPlan.insert(plugin, testFunctions(plugin->metaObject()));
|
||||||
foreach (QObject *testObject, testObjects) {
|
for (QObject *testObject : testObjects) {
|
||||||
const QStringList allFunctions = testFunctions(testObject->metaObject());
|
const QStringList allFunctions = testFunctions(testObject->metaObject());
|
||||||
testPlan.insert(testObject, allFunctions);
|
testPlan.insert(testObject, allFunctions);
|
||||||
}
|
}
|
||||||
@@ -1096,7 +1096,7 @@ static TestPlan generateCustomTestPlan(IPlugin *plugin,
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Add all matching test functions of all remaining test objects
|
// Add all matching test functions of all remaining test objects
|
||||||
foreach (QObject *testObject, remainingTestObjectsOfPlugin) {
|
for (QObject *testObject : qAsConst(remainingTestObjectsOfPlugin)) {
|
||||||
const QStringList allFunctions = testFunctions(testObject->metaObject());
|
const QStringList allFunctions = testFunctions(testObject->metaObject());
|
||||||
const QStringList matchingFunctions = matchingTestFunctions(allFunctions,
|
const QStringList matchingFunctions = matchingTestFunctions(allFunctions,
|
||||||
matchText);
|
matchText);
|
||||||
@@ -1119,7 +1119,7 @@ static TestPlan generateCustomTestPlan(IPlugin *plugin,
|
|||||||
out << "No test function or class matches \"" << matchText
|
out << "No test function or class matches \"" << matchText
|
||||||
<< "\" in plugin \"" << plugin->metaObject()->className()
|
<< "\" in plugin \"" << plugin->metaObject()->className()
|
||||||
<< "\".\nAvailable functions:\n";
|
<< "\".\nAvailable functions:\n";
|
||||||
foreach (const QString &f, testFunctionsOfPluginObject)
|
for (const QString &f : testFunctionsOfPluginObject)
|
||||||
out << " " << f << '\n';
|
out << " " << f << '\n';
|
||||||
out << endl;
|
out << endl;
|
||||||
}
|
}
|
||||||
@@ -1143,7 +1143,7 @@ void PluginManagerPrivate::startTests()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int failedTests = 0;
|
int failedTests = 0;
|
||||||
foreach (const PluginManagerPrivate::TestSpec &testSpec, testSpecs) {
|
for (const TestSpec &testSpec : qAsConst(testSpecs)) {
|
||||||
IPlugin *plugin = testSpec.pluginSpec->plugin();
|
IPlugin *plugin = testSpec.pluginSpec->plugin();
|
||||||
if (!plugin)
|
if (!plugin)
|
||||||
continue; // plugin not loaded
|
continue; // plugin not loaded
|
||||||
@@ -1227,15 +1227,15 @@ void PluginManagerPrivate::removeObject(QObject *obj)
|
|||||||
*/
|
*/
|
||||||
void PluginManagerPrivate::loadPlugins()
|
void PluginManagerPrivate::loadPlugins()
|
||||||
{
|
{
|
||||||
QVector<PluginSpec *> queue = loadQueue();
|
const QVector<PluginSpec *> queue = loadQueue();
|
||||||
Utils::setMimeStartupPhase(MimeStartupPhase::PluginsLoading);
|
Utils::setMimeStartupPhase(MimeStartupPhase::PluginsLoading);
|
||||||
foreach (PluginSpec *spec, queue) {
|
for (PluginSpec *spec : queue)
|
||||||
loadPlugin(spec, PluginSpec::Loaded);
|
loadPlugin(spec, PluginSpec::Loaded);
|
||||||
}
|
|
||||||
Utils::setMimeStartupPhase(MimeStartupPhase::PluginsInitializing);
|
Utils::setMimeStartupPhase(MimeStartupPhase::PluginsInitializing);
|
||||||
foreach (PluginSpec *spec, queue) {
|
for (PluginSpec *spec : queue)
|
||||||
loadPlugin(spec, PluginSpec::Initialized);
|
loadPlugin(spec, PluginSpec::Initialized);
|
||||||
}
|
|
||||||
Utils::setMimeStartupPhase(MimeStartupPhase::PluginsDelayedInitializing);
|
Utils::setMimeStartupPhase(MimeStartupPhase::PluginsDelayedInitializing);
|
||||||
Utils::reverseForeach(queue, [this](PluginSpec *spec) {
|
Utils::reverseForeach(queue, [this](PluginSpec *spec) {
|
||||||
loadPlugin(spec, PluginSpec::Running);
|
loadPlugin(spec, PluginSpec::Running);
|
||||||
@@ -1291,10 +1291,10 @@ void PluginManagerPrivate::asyncShutdownFinished()
|
|||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
QVector<PluginSpec *> PluginManagerPrivate::loadQueue()
|
const QVector<PluginSpec *> PluginManagerPrivate::loadQueue()
|
||||||
{
|
{
|
||||||
QVector<PluginSpec *> queue;
|
QVector<PluginSpec *> queue;
|
||||||
foreach (PluginSpec *spec, pluginSpecs) {
|
for (PluginSpec *spec : qAsConst(pluginSpecs)) {
|
||||||
QVector<PluginSpec *> circularityCheckQueue;
|
QVector<PluginSpec *> circularityCheckQueue;
|
||||||
loadQueue(spec, queue, circularityCheckQueue);
|
loadQueue(spec, queue, circularityCheckQueue);
|
||||||
}
|
}
|
||||||
@@ -1526,7 +1526,7 @@ void PluginManagerPrivate::setPluginPaths(const QStringList &paths)
|
|||||||
readPluginPaths();
|
readPluginPaths();
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList pluginFiles(const QStringList &pluginPaths)
|
static const QStringList pluginFiles(const QStringList &pluginPaths)
|
||||||
{
|
{
|
||||||
QStringList pluginFiles;
|
QStringList pluginFiles;
|
||||||
QStringList searchPaths = pluginPaths;
|
QStringList searchPaths = pluginPaths;
|
||||||
@@ -1553,7 +1553,7 @@ void PluginManagerPrivate::readPluginPaths()
|
|||||||
// default
|
// default
|
||||||
pluginCategories.insert(QString(), QVector<PluginSpec *>());
|
pluginCategories.insert(QString(), QVector<PluginSpec *>());
|
||||||
|
|
||||||
foreach (const QString &pluginFile, pluginFiles(pluginPaths)) {
|
for (const QString &pluginFile : pluginFiles(pluginPaths)) {
|
||||||
auto *spec = new PluginSpec;
|
auto *spec = new PluginSpec;
|
||||||
if (!spec->d->read(pluginFile)) { // not a Qt Creator plugin
|
if (!spec->d->read(pluginFile)) { // not a Qt Creator plugin
|
||||||
delete spec;
|
delete spec;
|
||||||
@@ -1586,13 +1586,13 @@ void PluginManagerPrivate::readPluginPaths()
|
|||||||
|
|
||||||
void PluginManagerPrivate::resolveDependencies()
|
void PluginManagerPrivate::resolveDependencies()
|
||||||
{
|
{
|
||||||
foreach (PluginSpec *spec, pluginSpecs)
|
for (PluginSpec *spec : qAsConst(pluginSpecs))
|
||||||
spec->d->resolveDependencies(pluginSpecs);
|
spec->d->resolveDependencies(pluginSpecs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginManagerPrivate::enableDependenciesIndirectly()
|
void PluginManagerPrivate::enableDependenciesIndirectly()
|
||||||
{
|
{
|
||||||
foreach (PluginSpec *spec, pluginSpecs)
|
for (PluginSpec *spec : qAsConst(pluginSpecs))
|
||||||
spec->d->enabledIndirectly = false;
|
spec->d->enabledIndirectly = false;
|
||||||
// cannot use reverse loadQueue here, because test dependencies can introduce circles
|
// cannot use reverse loadQueue here, because test dependencies can introduce circles
|
||||||
QVector<PluginSpec *> queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled);
|
QVector<PluginSpec *> queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled);
|
||||||
@@ -1607,7 +1607,7 @@ PluginSpec *PluginManagerPrivate::pluginForOption(const QString &option, bool *r
|
|||||||
{
|
{
|
||||||
// Look in the plugins for an option
|
// Look in the plugins for an option
|
||||||
*requiresArgument = false;
|
*requiresArgument = false;
|
||||||
foreach (PluginSpec *spec, pluginSpecs) {
|
for (PluginSpec *spec : qAsConst(pluginSpecs)) {
|
||||||
PluginArgumentDescription match = Utils::findOrDefault(spec->argumentDescriptions(),
|
PluginArgumentDescription match = Utils::findOrDefault(spec->argumentDescriptions(),
|
||||||
[option](PluginArgumentDescription pad) {
|
[option](PluginArgumentDescription pad) {
|
||||||
return pad.name == option;
|
return pad.name == option;
|
||||||
|
@@ -62,8 +62,8 @@ public:
|
|||||||
template <typename T> static T *getObject()
|
template <typename T> static T *getObject()
|
||||||
{
|
{
|
||||||
QReadLocker lock(listLock());
|
QReadLocker lock(listLock());
|
||||||
QVector<QObject *> all = allObjects();
|
const QVector<QObject *> all = allObjects();
|
||||||
foreach (QObject *obj, all) {
|
for (QObject *obj : all) {
|
||||||
if (T *result = qobject_cast<T *>(obj))
|
if (T *result = qobject_cast<T *>(obj))
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -72,8 +72,8 @@ public:
|
|||||||
template <typename T, typename Predicate> static T *getObject(Predicate predicate)
|
template <typename T, typename Predicate> static T *getObject(Predicate predicate)
|
||||||
{
|
{
|
||||||
QReadLocker lock(listLock());
|
QReadLocker lock(listLock());
|
||||||
QVector<QObject *> all = allObjects();
|
const QVector<QObject *> all = allObjects();
|
||||||
foreach (QObject *obj, all) {
|
for (QObject *obj : all) {
|
||||||
if (T *result = qobject_cast<T *>(obj))
|
if (T *result = qobject_cast<T *>(obj))
|
||||||
if (predicate(result))
|
if (predicate(result))
|
||||||
return result;
|
return result;
|
||||||
@@ -94,8 +94,8 @@ public:
|
|||||||
static QHash<QString, QVector<PluginSpec *>> pluginCollections();
|
static QHash<QString, QVector<PluginSpec *>> pluginCollections();
|
||||||
static bool hasError();
|
static bool hasError();
|
||||||
static const QStringList allErrors();
|
static const QStringList allErrors();
|
||||||
static QSet<PluginSpec *> pluginsRequiringPlugin(PluginSpec *spec);
|
static const QSet<PluginSpec *> pluginsRequiringPlugin(PluginSpec *spec);
|
||||||
static QSet<PluginSpec *> pluginsRequiredByPlugin(PluginSpec *spec);
|
static const QSet<PluginSpec *> pluginsRequiredByPlugin(PluginSpec *spec);
|
||||||
static void checkForProblematicPlugins();
|
static void checkForProblematicPlugins();
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
@@ -69,7 +69,7 @@ public:
|
|||||||
void loadPlugins();
|
void loadPlugins();
|
||||||
void shutdown();
|
void shutdown();
|
||||||
void setPluginPaths(const QStringList &paths);
|
void setPluginPaths(const QStringList &paths);
|
||||||
QVector<ExtensionSystem::PluginSpec *> loadQueue();
|
const QVector<ExtensionSystem::PluginSpec *> loadQueue();
|
||||||
void loadPlugin(PluginSpec *spec, PluginSpec::State destState);
|
void loadPlugin(PluginSpec *spec, PluginSpec::State destState);
|
||||||
void resolveDependencies();
|
void resolveDependencies();
|
||||||
void enableDependenciesIndirectly();
|
void enableDependenciesIndirectly();
|
||||||
|
@@ -803,8 +803,8 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData)
|
|||||||
if (!value.isUndefined() && !value.isArray())
|
if (!value.isUndefined() && !value.isArray())
|
||||||
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
|
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
|
||||||
if (!value.isUndefined()) {
|
if (!value.isUndefined()) {
|
||||||
QJsonArray array = value.toArray();
|
const QJsonArray array = value.toArray();
|
||||||
foreach (const QJsonValue &v, array) {
|
for (const QJsonValue &v : array) {
|
||||||
if (!v.isObject())
|
if (!v.isObject())
|
||||||
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
|
return reportError(msgValueIsNotAObjectArray(DEPENDENCIES));
|
||||||
QJsonObject dependencyObject = v.toObject();
|
QJsonObject dependencyObject = v.toObject();
|
||||||
@@ -850,8 +850,8 @@ bool PluginSpecPrivate::readMetaData(const QJsonObject &pluginMetaData)
|
|||||||
if (!value.isUndefined() && !value.isArray())
|
if (!value.isUndefined() && !value.isArray())
|
||||||
return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
|
return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
|
||||||
if (!value.isUndefined()) {
|
if (!value.isUndefined()) {
|
||||||
QJsonArray array = value.toArray();
|
const QJsonArray array = value.toArray();
|
||||||
foreach (const QJsonValue &v, array) {
|
for (const QJsonValue &v : array) {
|
||||||
if (!v.isObject())
|
if (!v.isObject())
|
||||||
return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
|
return reportError(msgValueIsNotAObjectArray(ARGUMENTS));
|
||||||
QJsonObject argumentObject = v.toObject();
|
QJsonObject argumentObject = v.toObject();
|
||||||
@@ -946,7 +946,7 @@ bool PluginSpecPrivate::resolveDependencies(const QVector<PluginSpec *> &specs)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
QHash<PluginDependency, PluginSpec *> resolvedDependencies;
|
QHash<PluginDependency, PluginSpec *> resolvedDependencies;
|
||||||
foreach (const PluginDependency &dependency, dependencies) {
|
for (const PluginDependency &dependency : qAsConst(dependencies)) {
|
||||||
PluginSpec * const found = Utils::findOrDefault(specs, [&dependency](PluginSpec *spec) {
|
PluginSpec * const found = Utils::findOrDefault(specs, [&dependency](PluginSpec *spec) {
|
||||||
return spec->provides(dependency.name, dependency.version);
|
return spec->provides(dependency.name, dependency.version);
|
||||||
});
|
});
|
||||||
|
@@ -218,12 +218,12 @@ public:
|
|||||||
class CollectionItem : public TreeItem
|
class CollectionItem : public TreeItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CollectionItem(const QString &name, QVector<PluginSpec *> plugins, PluginView *view)
|
CollectionItem(const QString &name, const QVector<PluginSpec *> &plugins, PluginView *view)
|
||||||
: m_name(name)
|
: m_name(name)
|
||||||
, m_plugins(plugins)
|
, m_plugins(plugins)
|
||||||
, m_view(view)
|
, m_view(view)
|
||||||
{
|
{
|
||||||
foreach (PluginSpec *spec, plugins)
|
for (PluginSpec *spec : plugins)
|
||||||
appendChild(new PluginItem(spec, view));
|
appendChild(new PluginItem(spec, view));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +243,7 @@ public:
|
|||||||
return PluginView::tr("Load on Startup");
|
return PluginView::tr("Load on Startup");
|
||||||
if (role == Qt::CheckStateRole || role == SortRole) {
|
if (role == Qt::CheckStateRole || role == SortRole) {
|
||||||
int checkedCount = 0;
|
int checkedCount = 0;
|
||||||
foreach (PluginSpec *spec, m_plugins) {
|
for (PluginSpec *spec : m_plugins) {
|
||||||
if (spec->isEnabledBySettings())
|
if (spec->isEnabledBySettings())
|
||||||
++checkedCount;
|
++checkedCount;
|
||||||
}
|
}
|
||||||
@@ -284,7 +284,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
QString m_name;
|
QString m_name;
|
||||||
QVector<PluginSpec *> m_plugins;
|
const QVector<PluginSpec *> m_plugins;
|
||||||
PluginView *m_view; // Not owned.
|
PluginView *m_view; // Not owned.
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -437,7 +437,7 @@ void PluginView::updatePlugins()
|
|||||||
}
|
}
|
||||||
Utils::sort(collections, &CollectionItem::m_name);
|
Utils::sort(collections, &CollectionItem::m_name);
|
||||||
|
|
||||||
foreach (CollectionItem *collection, collections)
|
for (CollectionItem *collection : qAsConst(collections))
|
||||||
m_model->rootItem()->appendChild(collection);
|
m_model->rootItem()->appendChild(collection);
|
||||||
|
|
||||||
emit m_model->layoutChanged();
|
emit m_model->layoutChanged();
|
||||||
@@ -455,8 +455,8 @@ bool PluginView::setPluginsEnabled(const QSet<PluginSpec *> &plugins, bool enabl
|
|||||||
{
|
{
|
||||||
QSet<PluginSpec *> additionalPlugins;
|
QSet<PluginSpec *> additionalPlugins;
|
||||||
if (enable) {
|
if (enable) {
|
||||||
foreach (PluginSpec *spec, plugins) {
|
for (PluginSpec *spec : plugins) {
|
||||||
foreach (PluginSpec *other, PluginManager::pluginsRequiredByPlugin(spec)) {
|
for (PluginSpec *other : PluginManager::pluginsRequiredByPlugin(spec)) {
|
||||||
if (!other->isEnabledBySettings())
|
if (!other->isEnabledBySettings())
|
||||||
additionalPlugins.insert(other);
|
additionalPlugins.insert(other);
|
||||||
}
|
}
|
||||||
@@ -472,8 +472,8 @@ bool PluginView::setPluginsEnabled(const QSet<PluginSpec *> &plugins, bool enabl
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
foreach (PluginSpec *spec, plugins) {
|
for (PluginSpec *spec : plugins) {
|
||||||
foreach (PluginSpec *other, PluginManager::pluginsRequiringPlugin(spec)) {
|
for (PluginSpec *other : PluginManager::pluginsRequiringPlugin(spec)) {
|
||||||
if (other->isEnabledBySettings())
|
if (other->isEnabledBySettings())
|
||||||
additionalPlugins.insert(other);
|
additionalPlugins.insert(other);
|
||||||
}
|
}
|
||||||
@@ -490,8 +490,8 @@ bool PluginView::setPluginsEnabled(const QSet<PluginSpec *> &plugins, bool enabl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QSet<PluginSpec *> affectedPlugins = plugins + additionalPlugins;
|
const QSet<PluginSpec *> affectedPlugins = plugins + additionalPlugins;
|
||||||
foreach (PluginSpec *spec, affectedPlugins) {
|
for (PluginSpec *spec : affectedPlugins) {
|
||||||
PluginItem *item = m_model->findItemAtLevel<2>([spec](PluginItem *item) {
|
PluginItem *item = m_model->findItemAtLevel<2>([spec](PluginItem *item) {
|
||||||
return item->m_spec == spec;
|
return item->m_spec == spec;
|
||||||
});
|
});
|
||||||
|
@@ -488,6 +488,10 @@ void SdkManagerOutputParser::parsePackageListing(const QString &output)
|
|||||||
if (outputLine.startsWith(" "))
|
if (outputLine.startsWith(" "))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// We don't need to parse this because they would still be listed on available packages
|
||||||
|
if (m_currentSection == AvailableUpdatesMarker)
|
||||||
|
continue;
|
||||||
|
|
||||||
MarkerTag marker = parseMarkers(outputLine.trimmed());
|
MarkerTag marker = parseMarkers(outputLine.trimmed());
|
||||||
if (marker & SectionMarkers) {
|
if (marker & SectionMarkers) {
|
||||||
// Section marker found. Update the current section being parsed.
|
// Section marker found. Update the current section being parsed.
|
||||||
|
@@ -68,7 +68,7 @@ JavaEditorFactory::JavaEditorFactory()
|
|||||||
"transient", "try", "void", "volatile", "while"
|
"transient", "try", "void", "volatile", "while"
|
||||||
};
|
};
|
||||||
setId(Constants::JAVA_EDITOR_ID);
|
setId(Constants::JAVA_EDITOR_ID);
|
||||||
setDisplayName(tr("Java Editor"));
|
setDisplayName(QCoreApplication::translate("OpenWith::Editors", "Java Editor"));
|
||||||
addMimeType(Constants::JAVA_MIMETYPE);
|
addMimeType(Constants::JAVA_MIMETYPE);
|
||||||
|
|
||||||
setDocumentCreator(createJavaDocument);
|
setDocumentCreator(createJavaDocument);
|
||||||
|
@@ -32,8 +32,6 @@ namespace Internal {
|
|||||||
|
|
||||||
class JavaEditorFactory : public TextEditor::TextEditorFactory
|
class JavaEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
JavaEditorFactory();
|
JavaEditorFactory();
|
||||||
};
|
};
|
||||||
|
@@ -3,7 +3,6 @@ add_qtc_plugin(BareMetal
|
|||||||
SOURCES
|
SOURCES
|
||||||
baremetal.qrc
|
baremetal.qrc
|
||||||
baremetalconstants.h
|
baremetalconstants.h
|
||||||
baremetalcustomrunconfiguration.cpp baremetalcustomrunconfiguration.h
|
|
||||||
baremetaldebugsupport.cpp baremetaldebugsupport.h
|
baremetaldebugsupport.cpp baremetaldebugsupport.h
|
||||||
baremetaldevice.cpp baremetaldevice.h
|
baremetaldevice.cpp baremetaldevice.h
|
||||||
baremetaldeviceconfigurationwidget.cpp baremetaldeviceconfigurationwidget.h
|
baremetaldeviceconfigurationwidget.cpp baremetaldeviceconfigurationwidget.h
|
||||||
|
@@ -9,7 +9,6 @@ include(debugservers/uvsc/uvscservers.pri)
|
|||||||
# BareMetal files
|
# BareMetal files
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
baremetalcustomrunconfiguration.cpp\
|
|
||||||
baremetaldebugsupport.cpp \
|
baremetaldebugsupport.cpp \
|
||||||
baremetaldevice.cpp \
|
baremetaldevice.cpp \
|
||||||
baremetaldeviceconfigurationwidget.cpp \
|
baremetaldeviceconfigurationwidget.cpp \
|
||||||
@@ -30,7 +29,6 @@ SOURCES += \
|
|||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
baremetalconstants.h \
|
baremetalconstants.h \
|
||||||
baremetalcustomrunconfiguration.h \
|
|
||||||
baremetaldebugsupport.h \
|
baremetaldebugsupport.h \
|
||||||
baremetaldevice.h \
|
baremetaldevice.h \
|
||||||
baremetaldeviceconfigurationwidget.h \
|
baremetaldeviceconfigurationwidget.h \
|
||||||
|
@@ -17,7 +17,6 @@ QtcPlugin {
|
|||||||
files: [
|
files: [
|
||||||
"baremetal.qrc",
|
"baremetal.qrc",
|
||||||
"baremetalconstants.h",
|
"baremetalconstants.h",
|
||||||
"baremetalcustomrunconfiguration.cpp", "baremetalcustomrunconfiguration.h",
|
|
||||||
"baremetaldebugsupport.cpp", "baremetaldebugsupport.h",
|
"baremetaldebugsupport.cpp", "baremetaldebugsupport.h",
|
||||||
"baremetaldevice.cpp", "baremetaldevice.h",
|
"baremetaldevice.cpp", "baremetaldevice.h",
|
||||||
"baremetaldeviceconfigurationwidget.cpp", "baremetaldeviceconfigurationwidget.h",
|
"baremetaldeviceconfigurationwidget.cpp", "baremetaldeviceconfigurationwidget.h",
|
||||||
|
@@ -1,78 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2016 Tim Sander <tim@krieglstein.org>
|
|
||||||
** 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 "baremetalcustomrunconfiguration.h"
|
|
||||||
#include "baremetalconstants.h"
|
|
||||||
|
|
||||||
#include <projectexplorer/runconfigurationaspects.h>
|
|
||||||
#include <projectexplorer/target.h>
|
|
||||||
|
|
||||||
#include <qtsupport/qtoutputformatter.h>
|
|
||||||
|
|
||||||
using namespace Utils;
|
|
||||||
using namespace ProjectExplorer;
|
|
||||||
|
|
||||||
namespace BareMetal {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
// BareMetalCustomRunConfiguration
|
|
||||||
|
|
||||||
BareMetalCustomRunConfiguration::BareMetalCustomRunConfiguration(Target *target, Core::Id id)
|
|
||||||
: RunConfiguration(target, id)
|
|
||||||
{
|
|
||||||
const auto exeAspect = addAspect<ExecutableAspect>();
|
|
||||||
exeAspect->setSettingsKey("BareMetal.CustomRunConfig.Executable");
|
|
||||||
exeAspect->setPlaceHolderText(tr("Unknown"));
|
|
||||||
exeAspect->setDisplayStyle(BaseStringAspect::PathChooserDisplay);
|
|
||||||
exeAspect->setHistoryCompleter("BareMetal.CustomRunConfig.History");
|
|
||||||
exeAspect->setExpectedKind(PathChooser::Any);
|
|
||||||
|
|
||||||
addAspect<ArgumentsAspect>();
|
|
||||||
addAspect<WorkingDirectoryAspect>();
|
|
||||||
|
|
||||||
setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName(tr("Custom Executable"), target));
|
|
||||||
}
|
|
||||||
|
|
||||||
Tasks BareMetalCustomRunConfiguration::checkForIssues() const
|
|
||||||
{
|
|
||||||
Tasks tasks;
|
|
||||||
if (aspect<ExecutableAspect>()->executable().isEmpty()) {
|
|
||||||
tasks << createConfigurationIssue(tr("The remote executable must be set in order to run "
|
|
||||||
"a custom remote run configuration."));
|
|
||||||
}
|
|
||||||
return tasks;
|
|
||||||
}
|
|
||||||
|
|
||||||
// BareMetalCustomRunConfigurationFactory
|
|
||||||
|
|
||||||
BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory()
|
|
||||||
: FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable"), true)
|
|
||||||
{
|
|
||||||
registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal");
|
|
||||||
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace BareMetal
|
|
@@ -1,57 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2016 Tim Sander <tim@krieglstein.org>
|
|
||||||
** 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 <projectexplorer/runconfiguration.h>
|
|
||||||
|
|
||||||
namespace BareMetal {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
// BareMetalCustomRunConfiguration
|
|
||||||
|
|
||||||
class BareMetalCustomRunConfiguration final
|
|
||||||
: public ProjectExplorer::RunConfiguration
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit BareMetalCustomRunConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ProjectExplorer::Tasks checkForIssues() const final;
|
|
||||||
};
|
|
||||||
|
|
||||||
// BareMetalCustomRunConfigurationFactory
|
|
||||||
|
|
||||||
class BareMetalCustomRunConfigurationFactory final
|
|
||||||
: public ProjectExplorer::FixedRunConfigurationFactory
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit BareMetalCustomRunConfigurationFactory();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace BareMetal
|
|
@@ -25,7 +25,6 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "baremetalconstants.h"
|
#include "baremetalconstants.h"
|
||||||
#include "baremetalcustomrunconfiguration.h"
|
|
||||||
#include "baremetaldebugsupport.h"
|
#include "baremetaldebugsupport.h"
|
||||||
#include "baremetaldevice.h"
|
#include "baremetaldevice.h"
|
||||||
#include "baremetalplugin.h"
|
#include "baremetalplugin.h"
|
||||||
|
@@ -38,11 +38,16 @@ using namespace Utils;
|
|||||||
namespace BareMetal {
|
namespace BareMetal {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
// BareMetalRunConfiguration
|
// RunConfigurations
|
||||||
|
|
||||||
BareMetalRunConfiguration::BareMetalRunConfiguration(Target *target, Core::Id id)
|
class BareMetalRunConfiguration final : public RunConfiguration
|
||||||
: RunConfiguration(target, id)
|
|
||||||
{
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::BareMetalRunConfiguration)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit BareMetalRunConfiguration(Target *target, Core::Id id)
|
||||||
|
: RunConfiguration(target, id)
|
||||||
|
{
|
||||||
const auto exeAspect = addAspect<ExecutableAspect>();
|
const auto exeAspect = addAspect<ExecutableAspect>();
|
||||||
exeAspect->setDisplayStyle(BaseStringAspect::LabelDisplay);
|
exeAspect->setDisplayStyle(BaseStringAspect::LabelDisplay);
|
||||||
exeAspect->setPlaceHolderText(tr("Unknown"));
|
exeAspect->setPlaceHolderText(tr("Unknown"));
|
||||||
@@ -56,6 +61,42 @@ BareMetalRunConfiguration::BareMetalRunConfiguration(Target *target, Core::Id id
|
|||||||
});
|
});
|
||||||
|
|
||||||
connect(target, &Target::buildSystemUpdated, this, &RunConfiguration::update);
|
connect(target, &Target::buildSystemUpdated, this, &RunConfiguration::update);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class BareMetalCustomRunConfiguration final : public RunConfiguration
|
||||||
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::BareMetalCustomRunConfiguration)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit BareMetalCustomRunConfiguration(Target *target, Core::Id id)
|
||||||
|
: RunConfiguration(target, id)
|
||||||
|
{
|
||||||
|
const auto exeAspect = addAspect<ExecutableAspect>();
|
||||||
|
exeAspect->setSettingsKey("BareMetal.CustomRunConfig.Executable");
|
||||||
|
exeAspect->setPlaceHolderText(tr("Unknown"));
|
||||||
|
exeAspect->setDisplayStyle(BaseStringAspect::PathChooserDisplay);
|
||||||
|
exeAspect->setHistoryCompleter("BareMetal.CustomRunConfig.History");
|
||||||
|
exeAspect->setExpectedKind(PathChooser::Any);
|
||||||
|
|
||||||
|
addAspect<ArgumentsAspect>();
|
||||||
|
addAspect<WorkingDirectoryAspect>();
|
||||||
|
|
||||||
|
setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName(tr("Custom Executable"), target));
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
Tasks checkForIssues() const final;
|
||||||
|
};
|
||||||
|
|
||||||
|
Tasks BareMetalCustomRunConfiguration::checkForIssues() const
|
||||||
|
{
|
||||||
|
Tasks tasks;
|
||||||
|
if (aspect<ExecutableAspect>()->executable().isEmpty()) {
|
||||||
|
tasks << createConfigurationIssue(tr("The remote executable must be set in order to run "
|
||||||
|
"a custom remote run configuration."));
|
||||||
|
}
|
||||||
|
return tasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
// BareMetalRunConfigurationFactory
|
// BareMetalRunConfigurationFactory
|
||||||
@@ -67,6 +108,15 @@ BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory()
|
|||||||
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
|
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BaseMetalCustomRunConfigurationFactory
|
||||||
|
|
||||||
|
BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory()
|
||||||
|
: FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable"), true)
|
||||||
|
{
|
||||||
|
registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal");
|
||||||
|
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace BareMetal
|
} // namespace BareMetal
|
||||||
|
|
||||||
|
@@ -30,23 +30,18 @@
|
|||||||
namespace BareMetal {
|
namespace BareMetal {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
// BareMetalRunConfiguration
|
|
||||||
|
|
||||||
class BareMetalRunConfiguration final : public ProjectExplorer::RunConfiguration
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit BareMetalRunConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
|
||||||
};
|
|
||||||
|
|
||||||
// BareMetalRunConfigurationFactory
|
|
||||||
|
|
||||||
class BareMetalRunConfigurationFactory final
|
class BareMetalRunConfigurationFactory final
|
||||||
: public ProjectExplorer::RunConfigurationFactory
|
: public ProjectExplorer::RunConfigurationFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit BareMetalRunConfigurationFactory();
|
BareMetalRunConfigurationFactory();
|
||||||
|
};
|
||||||
|
|
||||||
|
class BareMetalCustomRunConfigurationFactory final
|
||||||
|
: public ProjectExplorer::FixedRunConfigurationFactory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BareMetalCustomRunConfigurationFactory();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -223,7 +223,7 @@ static TextDocument *createCMakeDocument()
|
|||||||
CMakeEditorFactory::CMakeEditorFactory()
|
CMakeEditorFactory::CMakeEditorFactory()
|
||||||
{
|
{
|
||||||
setId(Constants::CMAKE_EDITOR_ID);
|
setId(Constants::CMAKE_EDITOR_ID);
|
||||||
setDisplayName(tr(Constants::CMAKE_EDITOR_DISPLAY_NAME));
|
setDisplayName(QCoreApplication::translate("OpenWith::Editors", "CMake Editor"));
|
||||||
addMimeType(Constants::CMAKEMIMETYPE);
|
addMimeType(Constants::CMAKEMIMETYPE);
|
||||||
addMimeType(Constants::CMAKEPROJECTMIMETYPE);
|
addMimeType(Constants::CMAKEPROJECTMIMETYPE);
|
||||||
|
|
||||||
|
@@ -45,8 +45,6 @@ public:
|
|||||||
|
|
||||||
class CMakeEditorFactory : public TextEditor::TextEditorFactory
|
class CMakeEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CMakeEditorFactory();
|
CMakeEditorFactory();
|
||||||
};
|
};
|
||||||
|
@@ -33,7 +33,6 @@ namespace Constants {
|
|||||||
const char CMAKEMIMETYPE[] = "text/x-cmake";
|
const char CMAKEMIMETYPE[] = "text/x-cmake";
|
||||||
const char CMAKEPROJECTMIMETYPE[] = "text/x-cmake-project";
|
const char CMAKEPROJECTMIMETYPE[] = "text/x-cmake-project";
|
||||||
const char CMAKE_EDITOR_ID[] = "CMakeProject.CMakeEditor";
|
const char CMAKE_EDITOR_ID[] = "CMakeProject.CMakeEditor";
|
||||||
const char CMAKE_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CMakeProjectManager::Internal::CMakeEditorFactory", "CMake Editor");
|
|
||||||
const char RUNCMAKE[] = "CMakeProject.RunCMake";
|
const char RUNCMAKE[] = "CMakeProject.RunCMake";
|
||||||
const char CLEARCMAKECACHE[] = "CMakeProject.ClearCache";
|
const char CLEARCMAKECACHE[] = "CMakeProject.ClearCache";
|
||||||
const char RESCANPROJECT[] = "CMakeProject.RescanProject";
|
const char RESCANPROJECT[] = "CMakeProject.RescanProject";
|
||||||
|
@@ -510,7 +510,7 @@ static TextEditor::TextDocument *createCompilationDatabaseDocument()
|
|||||||
CompilationDatabaseEditorFactory::CompilationDatabaseEditorFactory()
|
CompilationDatabaseEditorFactory::CompilationDatabaseEditorFactory()
|
||||||
{
|
{
|
||||||
setId(Constants::COMPILATIONDATABASEPROJECT_ID);
|
setId(Constants::COMPILATIONDATABASEPROJECT_ID);
|
||||||
setDisplayName("Compilation Database");
|
setDisplayName(QCoreApplication::translate("OpenWith::Editors", "Compilation Database"));
|
||||||
addMimeType(Constants::COMPILATIONDATABASEMIMETYPE);
|
addMimeType(Constants::COMPILATIONDATABASEMIMETYPE);
|
||||||
|
|
||||||
setEditorCreator([]() { return new TextEditor::BaseTextEditor; });
|
setEditorCreator([]() { return new TextEditor::BaseTextEditor; });
|
||||||
|
@@ -88,8 +88,6 @@ public:
|
|||||||
|
|
||||||
class CompilationDatabaseEditorFactory : public TextEditor::TextEditorFactory
|
class CompilationDatabaseEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CompilationDatabaseEditorFactory();
|
CompilationDatabaseEditorFactory();
|
||||||
};
|
};
|
||||||
|
@@ -42,13 +42,13 @@ Q_DECLARE_METATYPE(Core::Internal::MenuActionContainer*)
|
|||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class ActionContainer
|
\class Core::ActionContainer
|
||||||
\mainclass
|
\ingroup mainclasses
|
||||||
|
\inmodule QtCreator
|
||||||
|
|
||||||
\brief The ActionContainer class represents a menu or menu bar in Qt Creator.
|
\brief The ActionContainer class represents a menu or menu bar in \QC.
|
||||||
|
|
||||||
You don't create instances of this class directly, but instead use the
|
You don't create instances of this class directly, but instead use the
|
||||||
\l{ActionManager::createMenu()}, \l{ActionManager::createMenuBar()} and
|
\l{ActionManager::createMenu()}, \l{ActionManager::createMenuBar()} and
|
||||||
@@ -58,23 +58,25 @@ namespace Internal {
|
|||||||
|
|
||||||
Within a menu or menu bar you can group menus and items together by defining groups
|
Within a menu or menu bar you can group menus and items together by defining groups
|
||||||
(the order of the groups is defined by the order of the \l{ActionContainer::appendGroup()} calls), and
|
(the order of the groups is defined by the order of the \l{ActionContainer::appendGroup()} calls), and
|
||||||
adding menus/actions to these groups. If no custom groups are defined, an action container
|
adding menus or actions to these groups. If no custom groups are defined, an action container
|
||||||
has three default groups \c{Core::Constants::G_DEFAULT_ONE}, \c{Core::Constants::G_DEFAULT_TWO}
|
has three default groups \c{Core::Constants::G_DEFAULT_ONE}, \c{Core::Constants::G_DEFAULT_TWO}
|
||||||
and \c{Core::Constants::G_DEFAULT_THREE}.
|
and \c{Core::Constants::G_DEFAULT_THREE}.
|
||||||
|
|
||||||
You can define if the menu represented by this action container should automatically disable
|
You can specify whether the menu represented by this action container should
|
||||||
or hide whenever it only contains disabled items and submenus by setting the corresponding
|
be automatically disabled or hidden whenever it only contains disabled items
|
||||||
|
and submenus by setting the corresponding
|
||||||
\l{ActionContainer::setOnAllDisabledBehavior()}{OnAllDisabledBehavior}. The default is
|
\l{ActionContainer::setOnAllDisabledBehavior()}{OnAllDisabledBehavior}. The default is
|
||||||
ActionContainer::Disable for menus, and ActionContainer::Show for menu bars.
|
ActionContainer::Disable for menus, and ActionContainer::Show for menu bars.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\enum ActionContainer::OnAllDisabledBehavior
|
\enum ActionContainer::OnAllDisabledBehavior
|
||||||
Defines what happens when the represented menu is empty or contains only disabled/invisible items.
|
Defines what happens when the represented menu is empty or contains only
|
||||||
|
disabled or invisible items.
|
||||||
\value Disable
|
\value Disable
|
||||||
The menu will be visible but disabled.
|
The menu will be visible but disabled.
|
||||||
\value Hide
|
\value Hide
|
||||||
The menu will not be visible until the state of the subitems change.
|
The menu will not be visible until the state of the subitems changes.
|
||||||
\value Show
|
\value Show
|
||||||
The menu will still be visible and active.
|
The menu will still be visible and active.
|
||||||
*/
|
*/
|
||||||
@@ -90,7 +92,7 @@ namespace Internal {
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn ActionContainer::onAllDisabledBehavior() const
|
\fn ActionContainer::onAllDisabledBehavior() const
|
||||||
Returns the \a behavior of the menu represented by this action container for the case
|
Returns the behavior of the menu represented by this action container for the case
|
||||||
whenever it only contains disabled items and submenus.
|
whenever it only contains disabled items and submenus.
|
||||||
The default is ActionContainer::Disable for menus, and ActionContainer::Show for menu bars.
|
The default is ActionContainer::Disable for menus, and ActionContainer::Show for menu bars.
|
||||||
\sa ActionContainer::OnAllDisabledBehavior
|
\sa ActionContainer::OnAllDisabledBehavior
|
||||||
@@ -122,9 +124,10 @@ namespace Internal {
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void ActionContainer::appendGroup(Id group)
|
\fn void ActionContainer::appendGroup(Id group)
|
||||||
Adds a group with the given \a identifier to the action container. Using groups
|
Adds \a group to the action container.
|
||||||
you can segment your action container into logical parts and add actions and
|
|
||||||
menus directly to these parts.
|
Use groups to segment your action container into logical parts. You can add
|
||||||
|
actions and menus directly into groups.
|
||||||
\sa addAction()
|
\sa addAction()
|
||||||
\sa addMenu()
|
\sa addMenu()
|
||||||
*/
|
*/
|
||||||
@@ -145,6 +148,45 @@ namespace Internal {
|
|||||||
\sa addAction()
|
\sa addAction()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void ActionContainer::addMenu(ActionContainer *before, ActionContainer *menu)
|
||||||
|
Add \a menu as a submenu to this action container before the menu specified
|
||||||
|
by \a before.
|
||||||
|
\sa appendGroup()
|
||||||
|
\sa addAction()
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn ActionContainer::clear()
|
||||||
|
|
||||||
|
Clears this menu and submenus from all actions and submenus. However, does
|
||||||
|
does not destroy the submenus and commands, just removes them from their
|
||||||
|
parents.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn ActionContainer::insertGroup(Id before, Id group)
|
||||||
|
|
||||||
|
Inserts \a group to the action container before the group specified by
|
||||||
|
\a before.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual Utils::TouchBar *ActionContainer::touchBar() const
|
||||||
|
|
||||||
|
Returns the touch bar that is represented by this action container.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn ActionContainer::addSeparator(const Context &context, Id group, QAction **outSeparator)
|
||||||
|
|
||||||
|
Adds a separator to the end of the given \a group to the action container,
|
||||||
|
which is enabled for a given \a context. Returns the created separator
|
||||||
|
action, \a outSeparator.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Internal {
|
||||||
|
|
||||||
// ---------- ActionContainerPrivate ------------
|
// ---------- ActionContainerPrivate ------------
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -293,15 +335,6 @@ void ActionContainerPrivate::addMenu(ActionContainer *before, ActionContainer *m
|
|||||||
scheduleUpdate();
|
scheduleUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* Adds a separator to the end of the given \a group to the action container, which is enabled
|
|
||||||
* for a given \a context. The created separator action is returned through \a outSeparator.
|
|
||||||
*
|
|
||||||
* Returns the created Command for the separator.
|
|
||||||
*/
|
|
||||||
/*! \a context \a group \a outSeparator
|
|
||||||
* \internal
|
|
||||||
*/
|
|
||||||
Command *ActionContainerPrivate::addSeparator(const Context &context, Id group, QAction **outSeparator)
|
Command *ActionContainerPrivate::addSeparator(const Context &context, Id group, QAction **outSeparator)
|
||||||
{
|
{
|
||||||
static int separatorIdCount = 0;
|
static int separatorIdCount = 0;
|
||||||
@@ -648,6 +681,11 @@ bool TouchBarActionContainer::updateInternal()
|
|||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Adds a separator to the end of \a group to the action container.
|
||||||
|
|
||||||
|
Returns the created separator.
|
||||||
|
*/
|
||||||
Command *ActionContainer::addSeparator(Id group)
|
Command *ActionContainer::addSeparator(Id group)
|
||||||
{
|
{
|
||||||
static const Context context(Constants::C_GLOBAL);
|
static const Context context(Constants::C_GLOBAL);
|
||||||
|
@@ -52,18 +52,18 @@ using namespace Core::Internal;
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class Core::ActionManager
|
\class Core::ActionManager
|
||||||
\mainclass
|
\ingroup mainclasses
|
||||||
\inmodule Qt Creator
|
\inmodule QtCreator
|
||||||
|
|
||||||
\brief The ActionManager class is responsible for registration of menus and
|
\brief The ActionManager class is responsible for registration of menus and
|
||||||
menu items and keyboard shortcuts.
|
menu items and keyboard shortcuts.
|
||||||
|
|
||||||
The ActionManager is the central bookkeeper of actions and their shortcuts and layout.
|
The ActionManager is the central bookkeeper of actions and their shortcuts and layout.
|
||||||
It is a singleton containing mostly static functions. If you need access to the instance,
|
It is a singleton containing mostly static functions. If you need access to the instance,
|
||||||
e.g. for connecting to signals, is its ActionManager::instance() function.
|
e.g. for connecting to signals, call its ActionManager::instance() function.
|
||||||
|
|
||||||
The main reasons for the need of this class is to provide a central place where the user
|
The main reasons for the need of this class is to provide a central place where the users
|
||||||
can specify all his keyboard shortcuts, and to provide a solution for actions that should
|
can specify all their keyboard shortcuts, and to provide a solution for actions that should
|
||||||
behave differently in different contexts (like the copy/replace/undo/redo actions).
|
behave differently in different contexts (like the copy/replace/undo/redo actions).
|
||||||
|
|
||||||
\section1 Contexts
|
\section1 Contexts
|
||||||
@@ -147,7 +147,7 @@ using namespace Core::Internal;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void ActionManager::commandAdded(const QString &id)
|
\fn void ActionManager::commandAdded(Core::Id id)
|
||||||
|
|
||||||
Emitted when a command (with the \a id) is added.
|
Emitted when a command (with the \a id) is added.
|
||||||
*/
|
*/
|
||||||
@@ -262,7 +262,7 @@ ActionContainer *ActionManager::createTouchBar(Id id, const QIcon &icon, const Q
|
|||||||
for the currently active context.
|
for the currently active context.
|
||||||
If the optional \a context argument is not specified, the global context
|
If the optional \a context argument is not specified, the global context
|
||||||
will be assumed.
|
will be assumed.
|
||||||
A scriptable action can be called from a script without the need for the user
|
A \a scriptable action can be called from a script without the need for the user
|
||||||
to interact with it.
|
to interact with it.
|
||||||
*/
|
*/
|
||||||
Command *ActionManager::registerAction(QAction *action, Id id, const Context &context, bool scriptable)
|
Command *ActionManager::registerAction(QAction *action, Id id, const Context &context, bool scriptable)
|
||||||
@@ -356,7 +356,7 @@ void ActionManager::unregisterAction(QAction *action, Id id)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Handles the display of the used shortcuts in the presentation mode. The presentation mode is
|
Handles the display of the used shortcuts in the presentation mode. The presentation mode is
|
||||||
enabled when starting \QC with the command line argument \c{-presentationMode}. In the
|
\a enabled when starting \QC with the command line argument \c{-presentationMode}. In the
|
||||||
presentation mode, \QC displays any pressed shortcut in a grey box.
|
presentation mode, \QC displays any pressed shortcut in a grey box.
|
||||||
*/
|
*/
|
||||||
void ActionManager::setPresentationModeEnabled(bool enabled)
|
void ActionManager::setPresentationModeEnabled(bool enabled)
|
||||||
@@ -377,11 +377,19 @@ void ActionManager::setPresentationModeEnabled(bool enabled)
|
|||||||
d->m_presentationModeEnabled = enabled;
|
d->m_presentationModeEnabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns whether presentation mode is enabled.
|
||||||
|
|
||||||
|
\sa setPresentationModeEnabled
|
||||||
|
*/
|
||||||
bool ActionManager::isPresentationModeEnabled()
|
bool ActionManager::isPresentationModeEnabled()
|
||||||
{
|
{
|
||||||
return d->m_presentationModeEnabled;
|
return d->m_presentationModeEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
QString ActionManager::withNumberAccelerator(const QString &text, const int number)
|
QString ActionManager::withNumberAccelerator(const QString &text, const int number)
|
||||||
{
|
{
|
||||||
if (Utils::HostOsInfo::isMacHost() || number > 9)
|
if (Utils::HostOsInfo::isMacHost() || number > 9)
|
||||||
|
@@ -40,9 +40,11 @@
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class Core::Command
|
\class Core::Command
|
||||||
\mainclass
|
\inmodule QtCreator
|
||||||
|
\ingroup mainclasses
|
||||||
|
|
||||||
\brief The Command class represents an action, such as a menu item, tool button, or shortcut.
|
\brief The Command class represents an action, such as a menu item, tool button, or shortcut.
|
||||||
|
|
||||||
You do not create Command objects directly, but use \l{ActionManager::registerAction()}
|
You do not create Command objects directly, but use \l{ActionManager::registerAction()}
|
||||||
to register an action and retrieve a Command. The Command object represents the user visible
|
to register an action and retrieve a Command. The Command object represents the user visible
|
||||||
action and its properties. If multiple actions are registered with the same ID (but
|
action and its properties. If multiple actions are registered with the same ID (but
|
||||||
@@ -69,13 +71,12 @@
|
|||||||
This enum defines how the user visible action is updated when the active action changes.
|
This enum defines how the user visible action is updated when the active action changes.
|
||||||
The default is to update the enabled and visible state, and to disable the
|
The default is to update the enabled and visible state, and to disable the
|
||||||
user visible action when there is no active action.
|
user visible action when there is no active action.
|
||||||
\omitvalue CA_Mask
|
|
||||||
\value CA_UpdateText
|
\value CA_UpdateText
|
||||||
Also update the actions text.
|
Also update the actions text.
|
||||||
\value CA_UpdateIcon
|
\value CA_UpdateIcon
|
||||||
Also update the actions icon.
|
Also update the actions icon.
|
||||||
\value CA_Hide
|
\value CA_Hide
|
||||||
When there is no active action, hide the user "visible" action, instead of just
|
When there is no active action, hide the user-visible action, instead of just
|
||||||
disabling it.
|
disabling it.
|
||||||
\value CA_NonConfigurable
|
\value CA_NonConfigurable
|
||||||
Flag to indicate that the keyboard shortcut of this Command should not be
|
Flag to indicate that the keyboard shortcut of this Command should not be
|
||||||
@@ -150,6 +151,12 @@
|
|||||||
no active action for the current context.
|
no active action for the current context.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn Context Command::context() const
|
||||||
|
|
||||||
|
Returns the context for this command.
|
||||||
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn void Command::setAttribute(CommandAttribute attribute)
|
\fn void Command::setAttribute(CommandAttribute attribute)
|
||||||
Adds \a attribute to the attributes of this Command.
|
Adds \a attribute to the attributes of this Command.
|
||||||
@@ -187,18 +194,48 @@
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn bool Command::isScriptable(const Context &) const
|
\fn bool Command::isScriptable(const Context &) const
|
||||||
Returns whether the Command is scriptable for the given context.
|
\internal
|
||||||
A scriptable command can be called from a script without the need for the user to
|
|
||||||
interact with it.
|
Returns whether the Command is scriptable.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void Command::activeStateChanged()
|
||||||
|
|
||||||
|
This signal is emitted when the active state of the command changes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual void Command::setTouchBarText(const QString &text)
|
||||||
|
|
||||||
|
Sets the text for the action on the touch bar to \a text.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual QString Command::touchBarText() const
|
||||||
|
|
||||||
|
Returns the text for the action on the touch bar.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual void Command::setTouchBarIcon(const QIcon &icon)
|
||||||
|
|
||||||
|
Sets the icon for the action on the touch bar to \a icon.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*! \fn virtual QIcon Command::touchBarIcon() const
|
||||||
|
|
||||||
|
Returns the icon for the action on the touch bar.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*! \fn virtual QAction *Command::touchBarAction() const
|
||||||
|
|
||||||
|
Adds an action to the touch bar.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
/*!
|
|
||||||
\class Action
|
|
||||||
\internal
|
|
||||||
*/
|
|
||||||
Action::Action(Id id)
|
Action::Action(Id id)
|
||||||
: m_attributes({}),
|
: m_attributes({}),
|
||||||
m_id(id),
|
m_id(id),
|
||||||
@@ -453,6 +490,10 @@ QAction *Action::touchBarAction() const
|
|||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Appends the keyboard shortcut that is currently assigned to the action \a a
|
||||||
|
to its tool tip.
|
||||||
|
*/
|
||||||
void Command::augmentActionWithShortcutToolTip(QAction *a) const
|
void Command::augmentActionWithShortcutToolTip(QAction *a) const
|
||||||
{
|
{
|
||||||
a->setToolTip(stringWithAppendedShortcut(a->text()));
|
a->setToolTip(stringWithAppendedShortcut(a->text()));
|
||||||
@@ -464,6 +505,11 @@ void Command::augmentActionWithShortcutToolTip(QAction *a) const
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns a tool button for \a action.
|
||||||
|
|
||||||
|
Appends the keyboard shortcut \a cmd to the tool tip of the action.
|
||||||
|
*/
|
||||||
QToolButton *Command::toolButtonWithAppendedShortcut(QAction *action, Command *cmd)
|
QToolButton *Command::toolButtonWithAppendedShortcut(QAction *action, Command *cmd)
|
||||||
{
|
{
|
||||||
auto button = new QToolButton;
|
auto button = new QToolButton;
|
||||||
|
@@ -34,6 +34,7 @@ using namespace Core;
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class Core::CommandButton
|
\class Core::CommandButton
|
||||||
|
\inmodule QtCreator
|
||||||
|
|
||||||
\brief The CommandButton class is a tool button associated with one of
|
\brief The CommandButton class is a tool button associated with one of
|
||||||
the registered Command objects.
|
the registered Command objects.
|
||||||
@@ -42,12 +43,23 @@ using namespace Core;
|
|||||||
key sequence which is automatically updated when user changes it.
|
key sequence which is automatically updated when user changes it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\property CommandButton::toolTipBase
|
||||||
|
\brief The tool tip base for the command button.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
CommandButton::CommandButton(QWidget *parent)
|
CommandButton::CommandButton(QWidget *parent)
|
||||||
: QToolButton(parent)
|
: QToolButton(parent)
|
||||||
, m_command(nullptr)
|
, m_command(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
CommandButton::CommandButton(Id id, QWidget *parent)
|
CommandButton::CommandButton(Id id, QWidget *parent)
|
||||||
: QToolButton(parent)
|
: QToolButton(parent)
|
||||||
, m_command(nullptr)
|
, m_command(nullptr)
|
||||||
@@ -55,6 +67,9 @@ CommandButton::CommandButton(Id id, QWidget *parent)
|
|||||||
setCommandId(id);
|
setCommandId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the ID of the command associated with this tool button to \a id.
|
||||||
|
*/
|
||||||
void CommandButton::setCommandId(Id id)
|
void CommandButton::setCommandId(Id id)
|
||||||
{
|
{
|
||||||
if (m_command)
|
if (m_command)
|
||||||
|
@@ -123,6 +123,12 @@ public:
|
|||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::CommandMappings
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
CommandMappings::CommandMappings(QWidget *parent)
|
CommandMappings::CommandMappings(QWidget *parent)
|
||||||
: QWidget(parent), d(new Internal::CommandMappingsPrivate(this))
|
: QWidget(parent), d(new Internal::CommandMappingsPrivate(this))
|
||||||
{
|
{
|
||||||
|
@@ -64,13 +64,15 @@ Context::Context() :
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class CommandsFile
|
\class Core::Internal::CommandsFile
|
||||||
|
\internal
|
||||||
|
\inmodule QtCreator
|
||||||
\brief The CommandsFile class provides a collection of import and export commands.
|
\brief The CommandsFile class provides a collection of import and export commands.
|
||||||
\inheaderfile commandsfile.h
|
\inheaderfile commandsfile.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
...
|
\internal
|
||||||
*/
|
*/
|
||||||
CommandsFile::CommandsFile(const QString &filename)
|
CommandsFile::CommandsFile(const QString &filename)
|
||||||
: m_filename(filename)
|
: m_filename(filename)
|
||||||
@@ -79,7 +81,7 @@ CommandsFile::CommandsFile(const QString &filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
...
|
\internal
|
||||||
*/
|
*/
|
||||||
QMap<QString, QKeySequence> CommandsFile::importCommands() const
|
QMap<QString, QKeySequence> CommandsFile::importCommands() const
|
||||||
{
|
{
|
||||||
@@ -123,7 +125,7 @@ QMap<QString, QKeySequence> CommandsFile::importCommands() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
...
|
\internal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
|
bool CommandsFile::exportCommands(const QList<ShortcutItem *> &items)
|
||||||
|
@@ -64,8 +64,30 @@ public:
|
|||||||
|
|
||||||
} // Internal
|
} // Internal
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::BaseFileFilter
|
||||||
|
\inmodule QtCreator
|
||||||
|
|
||||||
|
\brief The BaseFileFilter class is a base class for locator filter classes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::BaseFileFilter::Iterator
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::BaseFileFilter::ListIterator
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
BaseFileFilter::Iterator::~Iterator() = default;
|
BaseFileFilter::Iterator::~Iterator() = default;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
BaseFileFilter::BaseFileFilter()
|
BaseFileFilter::BaseFileFilter()
|
||||||
: d(new Internal::BaseFileFilterPrivate)
|
: d(new Internal::BaseFileFilterPrivate)
|
||||||
{
|
{
|
||||||
@@ -73,11 +95,17 @@ BaseFileFilter::BaseFileFilter()
|
|||||||
setFileIterator(new ListIterator({}));
|
setFileIterator(new ListIterator({}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
BaseFileFilter::~BaseFileFilter()
|
BaseFileFilter::~BaseFileFilter()
|
||||||
{
|
{
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\reimp
|
||||||
|
*/
|
||||||
void BaseFileFilter::prepareSearch(const QString &entry)
|
void BaseFileFilter::prepareSearch(const QString &entry)
|
||||||
{
|
{
|
||||||
Q_UNUSED(entry)
|
Q_UNUSED(entry)
|
||||||
@@ -104,6 +132,9 @@ ILocatorFilter::MatchLevel BaseFileFilter::matchLevelFor(const QRegularExpressio
|
|||||||
return MatchLevel::Normal;
|
return MatchLevel::Normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\reimp
|
||||||
|
*/
|
||||||
QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFilterEntry> &future, const QString &origEntry)
|
QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFilterEntry> &future, const QString &origEntry)
|
||||||
{
|
{
|
||||||
QList<LocatorFilterEntry> entries[int(MatchLevel::Count)];
|
QList<LocatorFilterEntry> entries[int(MatchLevel::Count)];
|
||||||
@@ -184,6 +215,9 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil
|
|||||||
return std::accumulate(std::begin(entries), std::end(entries), QList<LocatorFilterEntry>());
|
return std::accumulate(std::begin(entries), std::end(entries), QList<LocatorFilterEntry>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\reimp
|
||||||
|
*/
|
||||||
void BaseFileFilter::accept(LocatorFilterEntry selection,
|
void BaseFileFilter::accept(LocatorFilterEntry selection,
|
||||||
QString *newText, int *selectionStart, int *selectionLength) const
|
QString *newText, int *selectionStart, int *selectionLength) const
|
||||||
{
|
{
|
||||||
@@ -206,6 +240,9 @@ void BaseFileFilter::setFileIterator(BaseFileFilter::Iterator *iterator)
|
|||||||
d->m_data.iterator.reset(iterator);
|
d->m_data.iterator.reset(iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the file iterator.
|
||||||
|
*/
|
||||||
QSharedPointer<BaseFileFilter::Iterator> BaseFileFilter::fileIterator()
|
QSharedPointer<BaseFileFilter::Iterator> BaseFileFilter::fileIterator()
|
||||||
{
|
{
|
||||||
return d->m_data.iterator;
|
return d->m_data.iterator;
|
||||||
|
@@ -40,6 +40,12 @@ struct CommandLocatorPrivate
|
|||||||
QList<Command *> commands;
|
QList<Command *> commands;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::CommandLocator
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
CommandLocator::CommandLocator(Id id,
|
CommandLocator::CommandLocator(Id id,
|
||||||
const QString &displayName,
|
const QString &displayName,
|
||||||
const QString &shortCutString,
|
const QString &shortCutString,
|
||||||
|
@@ -37,6 +37,12 @@
|
|||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::DirectoryFilter
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
DirectoryFilter::DirectoryFilter(Id id)
|
DirectoryFilter::DirectoryFilter(Id id)
|
||||||
: m_filters({"*.h", "*.cpp", "*.ui", "*.qrc"}),
|
: m_filters({"*.h", "*.cpp", "*.ui", "*.qrc"}),
|
||||||
m_exclusionFilters({"*/.git/*", "*/.cvs/*", "*/.svn/*"})
|
m_exclusionFilters({"*/.git/*", "*/.cvs/*", "*/.svn/*"})
|
||||||
|
@@ -41,13 +41,25 @@ using namespace Core;
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class Core::ILocatorFilter
|
\class Core::ILocatorFilter
|
||||||
\inmodule Qt Creator
|
\inmodule QtCreator
|
||||||
|
|
||||||
\brief The ILocatorFilter class adds a locator filter.
|
\brief The ILocatorFilter class adds a locator filter.
|
||||||
|
|
||||||
The filter is added to \uicontrol Tools > \uicontrol Locate.
|
The filter is added to \uicontrol Tools > \uicontrol Locate.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::LocatorFilterEntry
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::LocatorFilterEntry::HighlightInfo
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
static QList<ILocatorFilter *> g_locatorFilters;
|
static QList<ILocatorFilter *> g_locatorFilters;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -64,6 +76,9 @@ ILocatorFilter::~ILocatorFilter()
|
|||||||
g_locatorFilters.removeOne(this);
|
g_locatorFilters.removeOne(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the list of all locator filters.
|
||||||
|
*/
|
||||||
const QList<ILocatorFilter *> ILocatorFilter::allLocatorFilters()
|
const QList<ILocatorFilter *> ILocatorFilter::allLocatorFilters()
|
||||||
{
|
{
|
||||||
return g_locatorFilters;
|
return g_locatorFilters;
|
||||||
@@ -207,11 +222,19 @@ Qt::CaseSensitivity ILocatorFilter::caseSensitivity(const QString &str)
|
|||||||
return str == str.toLower() ? Qt::CaseInsensitive : Qt::CaseSensitive;
|
return str == str.toLower() ? Qt::CaseInsensitive : Qt::CaseSensitive;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Creates the search term \a text as a regular expression with case
|
||||||
|
sensitivity set to \a caseSensitivity.
|
||||||
|
*/
|
||||||
QRegularExpression ILocatorFilter::createRegExp(const QString &text, Qt::CaseSensitivity caseSensitivity)
|
QRegularExpression ILocatorFilter::createRegExp(const QString &text, Qt::CaseSensitivity caseSensitivity)
|
||||||
{
|
{
|
||||||
return FuzzyMatcher::createRegExp(text, caseSensitivity);
|
return FuzzyMatcher::createRegExp(text, caseSensitivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns information for highlighting the results of matching the regular
|
||||||
|
expression, specified by \a match, for the data of the type \a dataType.
|
||||||
|
*/
|
||||||
LocatorFilterEntry::HighlightInfo ILocatorFilter::highlightInfo(
|
LocatorFilterEntry::HighlightInfo ILocatorFilter::highlightInfo(
|
||||||
const QRegularExpressionMatch &match, LocatorFilterEntry::HighlightInfo::DataType dataType)
|
const QRegularExpressionMatch &match, LocatorFilterEntry::HighlightInfo::DataType dataType)
|
||||||
{
|
{
|
||||||
@@ -288,7 +311,9 @@ bool ILocatorFilter::isIncludedByDefault() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets whether using the shortcut string is required to use this filter.
|
Sets whether using the shortcut string is required to use this filter
|
||||||
|
to \a includedByDefault.
|
||||||
|
|
||||||
Call from the constructor of subclasses to change the default.
|
Call from the constructor of subclasses to change the default.
|
||||||
|
|
||||||
\sa isIncludedByDefault()
|
\sa isIncludedByDefault()
|
||||||
@@ -312,8 +337,8 @@ bool ILocatorFilter::isHidden() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Hides the filter in the \uicontrol {Locator filters} filter,
|
Sets the filter in the \uicontrol {Locator filters} filter, menus, and
|
||||||
menus, and locator settings. Call in the constructor of subclasses.
|
locator settings to \a hidden. Call in the constructor of subclasses.
|
||||||
*/
|
*/
|
||||||
void ILocatorFilter::setHidden(bool hidden)
|
void ILocatorFilter::setHidden(bool hidden)
|
||||||
{
|
{
|
||||||
@@ -344,6 +369,9 @@ Id ILocatorFilter::id() const
|
|||||||
return m_id;
|
return m_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the filter's action ID.
|
||||||
|
*/
|
||||||
Id ILocatorFilter::actionId() const
|
Id ILocatorFilter::actionId() const
|
||||||
{
|
{
|
||||||
return m_id.withPrefix("Locator.");
|
return m_id.withPrefix("Locator.");
|
||||||
@@ -373,7 +401,7 @@ ILocatorFilter::Priority ILocatorFilter::priority() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets whether the filter is currently available.
|
Sets whether the filter is currently available to \a enabled.
|
||||||
|
|
||||||
\sa isEnabled()
|
\sa isEnabled()
|
||||||
*/
|
*/
|
||||||
@@ -383,7 +411,7 @@ void ILocatorFilter::setEnabled(bool enabled)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the filter's unique ID.
|
Sets the filter's unique \a id.
|
||||||
Subclasses must set the ID in their constructor.
|
Subclasses must set the ID in their constructor.
|
||||||
|
|
||||||
\sa id()
|
\sa id()
|
||||||
@@ -394,7 +422,7 @@ void ILocatorFilter::setId(Id id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the priority of results of this filter in the result list.
|
Sets the \a priority of results of this filter in the result list.
|
||||||
|
|
||||||
\sa priority()
|
\sa priority()
|
||||||
*/
|
*/
|
||||||
@@ -404,7 +432,7 @@ void ILocatorFilter::setPriority(Priority priority)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the translated display name of this filter.
|
Sets the translated display name of this filter to \a displayString.
|
||||||
|
|
||||||
Subclasses must set the display name in their constructor.
|
Subclasses must set the display name in their constructor.
|
||||||
|
|
||||||
@@ -416,7 +444,7 @@ void ILocatorFilter::setDisplayName(const QString &displayString)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets whether the filter provides a configuration dialog.
|
Sets whether the filter provides a configuration dialog to \a configurable.
|
||||||
Most filters should at least provide the default dialog.
|
Most filters should at least provide the default dialog.
|
||||||
|
|
||||||
\sa isConfigurable()
|
\sa isConfigurable()
|
||||||
@@ -475,3 +503,19 @@ void ILocatorFilter::setConfigurable(bool configurable)
|
|||||||
The results for this filter are placed below the results for filters
|
The results for this filter are placed below the results for filters
|
||||||
that have other priorities.
|
that have other priorities.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\enum ILocatorFilter::MatchLevel
|
||||||
|
|
||||||
|
This enum value holds the level for ordering the results based on how well
|
||||||
|
they match the search criteria.
|
||||||
|
|
||||||
|
\value Best
|
||||||
|
The result is the best match for the regular expression.
|
||||||
|
\value Better
|
||||||
|
\value Good
|
||||||
|
\value Normal
|
||||||
|
\value Count
|
||||||
|
The result has the highest number of matches for the regular
|
||||||
|
expression.
|
||||||
|
*/
|
||||||
|
@@ -37,6 +37,23 @@
|
|||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace Core::Tests;
|
using namespace Core::Tests;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::Tests::BasicLocatorFilterTest
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::Tests::TestDataDir
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\namespace Core::Tests
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
BasicLocatorFilterTest::BasicLocatorFilterTest(ILocatorFilter *filter) : m_filter(filter)
|
BasicLocatorFilterTest::BasicLocatorFilterTest(ILocatorFilter *filter) : m_filter(filter)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -54,6 +71,11 @@ QList<LocatorFilterEntry> BasicLocatorFilterTest::matchesFor(const QString &sear
|
|||||||
return locatorSearch.results();
|
return locatorSearch.results();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::Tests::ResultData
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
ResultData::ResultData() = default;
|
ResultData::ResultData() = default;
|
||||||
|
|
||||||
ResultData::ResultData(const QString &textColumn1, const QString &textColumn2,
|
ResultData::ResultData(const QString &textColumn1, const QString &textColumn2,
|
||||||
|
@@ -40,6 +40,12 @@ using namespace Core::Internal;
|
|||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::LocatorManager
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
LocatorManager::LocatorManager()
|
LocatorManager::LocatorManager()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@@ -119,6 +119,12 @@ void UrlFilterOptions::updateActionButtons()
|
|||||||
|
|
||||||
// -- UrlLocatorFilter
|
// -- UrlLocatorFilter
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Core::UrlLocatorFilter
|
||||||
|
\inmodule QtCreator
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
|
|
||||||
UrlLocatorFilter::UrlLocatorFilter(Id id)
|
UrlLocatorFilter::UrlLocatorFilter(Id id)
|
||||||
: UrlLocatorFilter(tr("URL Template"), id)
|
: UrlLocatorFilter(tr("URL Template"), id)
|
||||||
{}
|
{}
|
||||||
|
@@ -34,8 +34,6 @@ int languageVariant(const QString &mimeType);
|
|||||||
|
|
||||||
class GlslEditorFactory : public TextEditor::TextEditorFactory
|
class GlslEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GlslEditorFactory();
|
GlslEditorFactory();
|
||||||
};
|
};
|
||||||
|
@@ -45,7 +45,7 @@ namespace Nim {
|
|||||||
NimEditorFactory::NimEditorFactory()
|
NimEditorFactory::NimEditorFactory()
|
||||||
{
|
{
|
||||||
setId(Constants::C_NIMEDITOR_ID);
|
setId(Constants::C_NIMEDITOR_ID);
|
||||||
setDisplayName(tr(Nim::Constants::C_EDITOR_DISPLAY_NAME));
|
setDisplayName(QCoreApplication::translate("OpenWith::Editors", "Nim Editor"));
|
||||||
addMimeType(QLatin1String(Nim::Constants::C_NIM_MIMETYPE));
|
addMimeType(QLatin1String(Nim::Constants::C_NIM_MIMETYPE));
|
||||||
addMimeType(QLatin1String(Nim::Constants::C_NIM_SCRIPT_MIMETYPE));
|
addMimeType(QLatin1String(Nim::Constants::C_NIM_SCRIPT_MIMETYPE));
|
||||||
|
|
||||||
|
@@ -29,14 +29,12 @@
|
|||||||
|
|
||||||
namespace Nim {
|
namespace Nim {
|
||||||
|
|
||||||
class NimEditorFactory : public TextEditor::TextEditorFactory
|
class NimEditorFactory final : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NimEditorFactory();
|
NimEditorFactory();
|
||||||
|
|
||||||
static void decorateEditor(TextEditor::TextEditorWidget *editor);
|
static void decorateEditor(TextEditor::TextEditorWidget *editor);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // Nim
|
||||||
|
@@ -34,7 +34,6 @@ namespace Constants {
|
|||||||
const char C_NIMPROJECT_ID[] = "Nim.NimProject";
|
const char C_NIMPROJECT_ID[] = "Nim.NimProject";
|
||||||
const char C_NIMBLEPROJECT_ID[] = "Nim.NimbleProject";
|
const char C_NIMBLEPROJECT_ID[] = "Nim.NimbleProject";
|
||||||
const char C_NIMEDITOR_ID[] = "Nim.NimEditor";
|
const char C_NIMEDITOR_ID[] = "Nim.NimEditor";
|
||||||
const char C_EDITOR_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "Nim Editor");
|
|
||||||
|
|
||||||
// NimToolChain
|
// NimToolChain
|
||||||
const char C_NIMTOOLCHAIN_TYPEID[] = "Nim.NimToolChain";
|
const char C_NIMTOOLCHAIN_TYPEID[] = "Nim.NimToolChain";
|
||||||
|
@@ -47,6 +47,23 @@ using namespace Utils;
|
|||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
|
class DesktopRunConfiguration : public RunConfiguration
|
||||||
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(ProjectExplorer::Internal::DesktopRunConfiguration)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
enum Kind { Qmake, Qbs, CMake }; // FIXME: Remove
|
||||||
|
|
||||||
|
DesktopRunConfiguration(Target *target, Core::Id id, Kind kind);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateTargetInformation();
|
||||||
|
|
||||||
|
Utils::FilePath executableToRun(const BuildTargetInfo &targetInfo) const;
|
||||||
|
|
||||||
|
const Kind m_kind;
|
||||||
|
};
|
||||||
|
|
||||||
DesktopRunConfiguration::DesktopRunConfiguration(Target *target, Core::Id id, Kind kind)
|
DesktopRunConfiguration::DesktopRunConfiguration(Target *target, Core::Id id, Kind kind)
|
||||||
: RunConfiguration(target, id), m_kind(kind)
|
: RunConfiguration(target, id), m_kind(kind)
|
||||||
{
|
{
|
||||||
@@ -148,7 +165,7 @@ Utils::FilePath DesktopRunConfiguration::executableToRun(const BuildTargetInfo &
|
|||||||
|
|
||||||
// Factory
|
// Factory
|
||||||
|
|
||||||
class DesktopQmakeRunConfiguration : public DesktopRunConfiguration
|
class DesktopQmakeRunConfiguration final : public DesktopRunConfiguration
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DesktopQmakeRunConfiguration(Target *target, Core::Id id)
|
DesktopQmakeRunConfiguration(Target *target, Core::Id id)
|
||||||
@@ -156,7 +173,7 @@ public:
|
|||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
class QbsRunConfiguration : public DesktopRunConfiguration
|
class QbsRunConfiguration final : public DesktopRunConfiguration
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QbsRunConfiguration(Target *target, Core::Id id)
|
QbsRunConfiguration(Target *target, Core::Id id)
|
||||||
@@ -164,7 +181,7 @@ public:
|
|||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CMakeRunConfiguration : public DesktopRunConfiguration
|
class CMakeRunConfiguration final : public DesktopRunConfiguration
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CMakeRunConfiguration(Target *target, Core::Id id)
|
CMakeRunConfiguration(Target *target, Core::Id id)
|
||||||
|
@@ -31,36 +31,19 @@
|
|||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class DesktopRunConfiguration : public RunConfiguration
|
class DesktopQmakeRunConfigurationFactory final : public RunConfigurationFactory
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
protected:
|
|
||||||
enum Kind { Qmake, Qbs, CMake }; // FIXME: Remove
|
|
||||||
|
|
||||||
DesktopRunConfiguration(Target *target, Core::Id id, Kind kind);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void updateTargetInformation();
|
|
||||||
|
|
||||||
Utils::FilePath executableToRun(const BuildTargetInfo &targetInfo) const;
|
|
||||||
|
|
||||||
const Kind m_kind;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DesktopQmakeRunConfigurationFactory : public RunConfigurationFactory
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DesktopQmakeRunConfigurationFactory();
|
DesktopQmakeRunConfigurationFactory();
|
||||||
};
|
};
|
||||||
|
|
||||||
class QbsRunConfigurationFactory : public RunConfigurationFactory
|
class QbsRunConfigurationFactory final : public RunConfigurationFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QbsRunConfigurationFactory();
|
QbsRunConfigurationFactory();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CMakeRunConfigurationFactory : public RunConfigurationFactory
|
class CMakeRunConfigurationFactory final : public RunConfigurationFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CMakeRunConfigurationFactory();
|
CMakeRunConfigurationFactory();
|
||||||
|
@@ -2738,6 +2738,28 @@ static bool hasBuildSettings(const Project *pro)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QPair<bool, QString> subprojectEnabledState(const Project *pro)
|
||||||
|
{
|
||||||
|
QPair<bool, QString> result;
|
||||||
|
result.first = true;
|
||||||
|
|
||||||
|
const QList<Project *> &projects = SessionManager::projectOrder(pro);
|
||||||
|
foreach (Project *project, projects) {
|
||||||
|
if (project && project->activeTarget()
|
||||||
|
&& project->activeTarget()->activeBuildConfiguration()
|
||||||
|
&& !project->activeTarget()->activeBuildConfiguration()->isEnabled()) {
|
||||||
|
result.first = false;
|
||||||
|
result.second
|
||||||
|
+= QCoreApplication::translate("ProjectExplorerPluginPrivate",
|
||||||
|
"Building \"%1\" is disabled: %2<br>")
|
||||||
|
.arg(project->displayName(),
|
||||||
|
project->activeTarget()->activeBuildConfiguration()->disabledReason());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
QPair<bool, QString> ProjectExplorerPluginPrivate::buildSettingsEnabled(const Project *pro)
|
QPair<bool, QString> ProjectExplorerPluginPrivate::buildSettingsEnabled(const Project *pro)
|
||||||
{
|
{
|
||||||
QPair<bool, QString> result;
|
QPair<bool, QString> result;
|
||||||
@@ -2755,18 +2777,7 @@ QPair<bool, QString> ProjectExplorerPluginPrivate::buildSettingsEnabled(const Pr
|
|||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("Project has no build settings.");
|
result.second = tr("Project has no build settings.");
|
||||||
} else {
|
} else {
|
||||||
const QList<Project *> & projects = SessionManager::projectOrder(pro);
|
result = subprojectEnabledState(pro);
|
||||||
foreach (Project *project, projects) {
|
|
||||||
if (project
|
|
||||||
&& project->activeTarget()
|
|
||||||
&& project->activeTarget()->activeBuildConfiguration()
|
|
||||||
&& !project->activeTarget()->activeBuildConfiguration()->isEnabled()) {
|
|
||||||
result.first = false;
|
|
||||||
result.second += tr("Building \"%1\" is disabled: %2<br>")
|
|
||||||
.arg(project->displayName(),
|
|
||||||
project->activeTarget()->activeBuildConfiguration()->disabledReason());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -2785,18 +2796,7 @@ QPair<bool, QString> ProjectExplorerPluginPrivate::buildSettingsEnabledForSessio
|
|||||||
result.first = false;
|
result.first = false;
|
||||||
result.second = tr("Project has no build settings.");
|
result.second = tr("Project has no build settings.");
|
||||||
} else {
|
} else {
|
||||||
foreach (Project *project, SessionManager::projectOrder(nullptr)) {
|
result = subprojectEnabledState(nullptr);
|
||||||
if (project
|
|
||||||
&& project->activeTarget()
|
|
||||||
&& project->activeTarget()->activeBuildConfiguration()
|
|
||||||
&& !project->activeTarget()->activeBuildConfiguration()->isEnabled()) {
|
|
||||||
result.first = false;
|
|
||||||
result.second += tr("Building \"%1\" is disabled: %2")
|
|
||||||
.arg(project->displayName(),
|
|
||||||
project->activeTarget()->activeBuildConfiguration()->disabledReason());
|
|
||||||
result.second += QLatin1Char('\n');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@@ -32,8 +32,6 @@ namespace Internal {
|
|||||||
|
|
||||||
class ProFileEditorFactory : public TextEditor::TextEditorFactory
|
class ProFileEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ProFileEditorFactory();
|
ProFileEditorFactory();
|
||||||
};
|
};
|
||||||
|
@@ -142,8 +142,6 @@ public:
|
|||||||
|
|
||||||
class QMLJSEDITOR_EXPORT QmlJSEditorFactory : public TextEditor::TextEditorFactory
|
class QMLJSEDITOR_EXPORT QmlJSEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QmlJSEditorFactory();
|
QmlJSEditorFactory();
|
||||||
QmlJSEditorFactory(Core::Id id);
|
QmlJSEditorFactory(Core::Id id);
|
||||||
|
@@ -24,7 +24,6 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "exampleslistmodel.h"
|
#include "exampleslistmodel.h"
|
||||||
|
|
||||||
#include "screenshotcropper.h"
|
#include "screenshotcropper.h"
|
||||||
|
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
@@ -34,6 +33,8 @@
|
|||||||
#include <QPixmapCache>
|
#include <QPixmapCache>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
|
#include <android/androidconstants.h>
|
||||||
|
#include <ios/iosconstants.h>
|
||||||
#include <coreplugin/helpmanager.h>
|
#include <coreplugin/helpmanager.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
@@ -216,6 +217,11 @@ int ExampleSetModel::getQtId(int i) const
|
|||||||
return variant.toInt();
|
return variant.toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExampleSetModel::selectedQtSupports(const Core::Id &target) const
|
||||||
|
{
|
||||||
|
return m_selectedQtTypes.contains(target);
|
||||||
|
}
|
||||||
|
|
||||||
int ExampleSetModel::getExtraExampleSetIndex(int i) const
|
int ExampleSetModel::getExtraExampleSetIndex(int i) const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(i >= 0, return -1);
|
QTC_ASSERT(i >= 0, return -1);
|
||||||
@@ -651,6 +657,10 @@ void ExampleSetModel::selectExampleSet(int index)
|
|||||||
if (index != m_selectedExampleSetIndex) {
|
if (index != m_selectedExampleSetIndex) {
|
||||||
m_selectedExampleSetIndex = index;
|
m_selectedExampleSetIndex = index;
|
||||||
writeCurrentIdToSettings(m_selectedExampleSetIndex);
|
writeCurrentIdToSettings(m_selectedExampleSetIndex);
|
||||||
|
if (getType(m_selectedExampleSetIndex) == ExampleSetModel::QtExampleSet) {
|
||||||
|
BaseQtVersion *selectedQtVersion = QtVersionManager::version(getQtId(m_selectedExampleSetIndex));
|
||||||
|
m_selectedQtTypes = selectedQtVersion->targetDeviceTypes();
|
||||||
|
}
|
||||||
emit selectedExampleSetChanged(m_selectedExampleSetIndex);
|
emit selectedExampleSetChanged(m_selectedExampleSetIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -690,7 +700,8 @@ void ExampleSetModel::tryToInitialize()
|
|||||||
|
|
||||||
ExamplesListModelFilter::ExamplesListModelFilter(ExamplesListModel *sourceModel, bool showTutorialsOnly, QObject *parent) :
|
ExamplesListModelFilter::ExamplesListModelFilter(ExamplesListModel *sourceModel, bool showTutorialsOnly, QObject *parent) :
|
||||||
Core::ListModelFilter(sourceModel, parent),
|
Core::ListModelFilter(sourceModel, parent),
|
||||||
m_showTutorialsOnly(showTutorialsOnly)
|
m_showTutorialsOnly(showTutorialsOnly),
|
||||||
|
m_examplesListModel(sourceModel)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,16 +710,30 @@ bool ExamplesListModelFilter::leaveFilterAcceptsRowBeforeFiltering(const Core::L
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(earlyExitResult, return false);
|
QTC_ASSERT(earlyExitResult, return false);
|
||||||
|
|
||||||
const ExampleItem *exampleItem = static_cast<const ExampleItem *>(item);
|
const bool isTutorial = static_cast<const ExampleItem *>(item)->type == Tutorial;
|
||||||
if (m_showTutorialsOnly && exampleItem->type != Tutorial) {
|
|
||||||
|
if (m_showTutorialsOnly) {
|
||||||
|
*earlyExitResult = isTutorial;
|
||||||
|
return !isTutorial;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isTutorial) {
|
||||||
*earlyExitResult = false;
|
*earlyExitResult = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_showTutorialsOnly && exampleItem->type != Example && exampleItem->type != Demo) {
|
if (m_examplesListModel->exampleSetModel()->selectedQtSupports(Android::Constants::ANDROID_DEVICE_TYPE)
|
||||||
|
&& !item->tags.contains("android")) {
|
||||||
*earlyExitResult = false;
|
*earlyExitResult = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_examplesListModel->exampleSetModel()->selectedQtSupports(Ios::Constants::IOS_DEVICE_TYPE)
|
||||||
|
&& !item->tags.contains("ios")) {
|
||||||
|
*earlyExitResult = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -50,6 +50,7 @@ public:
|
|||||||
int selectedExampleSet() const { return m_selectedExampleSetIndex; }
|
int selectedExampleSet() const { return m_selectedExampleSetIndex; }
|
||||||
void selectExampleSet(int index);
|
void selectExampleSet(int index);
|
||||||
QStringList exampleSources(QString *examplesInstallPath, QString *demosInstallPath);
|
QStringList exampleSources(QString *examplesInstallPath, QString *demosInstallPath);
|
||||||
|
bool selectedQtSupports(const Core::Id &target) const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void selectedExampleSetChanged(int);
|
void selectedExampleSetChanged(int);
|
||||||
@@ -89,6 +90,7 @@ private:
|
|||||||
QList<ExtraExampleSet> m_extraExampleSets;
|
QList<ExtraExampleSet> m_extraExampleSets;
|
||||||
QList<BaseQtVersion*> m_qtVersions;
|
QList<BaseQtVersion*> m_qtVersions;
|
||||||
int m_selectedExampleSetIndex = -1;
|
int m_selectedExampleSetIndex = -1;
|
||||||
|
QSet<Core::Id> m_selectedQtTypes;
|
||||||
|
|
||||||
bool m_qtVersionManagerInitialized = false;
|
bool m_qtVersionManagerInitialized = false;
|
||||||
bool m_helpManagerInitialized = false;
|
bool m_helpManagerInitialized = false;
|
||||||
@@ -158,6 +160,7 @@ protected:
|
|||||||
bool *earlyExitResult) const override;
|
bool *earlyExitResult) const override;
|
||||||
private:
|
private:
|
||||||
const bool m_showTutorialsOnly;
|
const bool m_showTutorialsOnly;
|
||||||
|
ExamplesListModel *m_examplesListModel = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -87,8 +87,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ScxmlEditorData::ScxmlEditorData(QObject *parent)
|
ScxmlEditorData::ScxmlEditorData()
|
||||||
: QObject(parent)
|
|
||||||
{
|
{
|
||||||
m_contexts.add(ScxmlEditor::Constants::C_SCXMLEDITOR);
|
m_contexts.add(ScxmlEditor::Constants::C_SCXMLEDITOR);
|
||||||
|
|
||||||
|
@@ -46,7 +46,7 @@ class ScxmlEditorData : public QObject
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
ScxmlEditorData(QObject *parent = nullptr);
|
ScxmlEditorData();
|
||||||
~ScxmlEditorData() override;
|
~ScxmlEditorData() override;
|
||||||
|
|
||||||
void fullInit();
|
void fullInit();
|
||||||
|
@@ -48,7 +48,7 @@ ScxmlEditorFactory::ScxmlEditorFactory()
|
|||||||
|
|
||||||
setEditorCreator([this] {
|
setEditorCreator([this] {
|
||||||
if (!m_editorData) {
|
if (!m_editorData) {
|
||||||
m_editorData = new ScxmlEditorData(this);
|
m_editorData = new ScxmlEditorData;
|
||||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
m_editorData->fullInit();
|
m_editorData->fullInit();
|
||||||
QGuiApplication::restoreOverrideCursor();
|
QGuiApplication::restoreOverrideCursor();
|
||||||
@@ -56,3 +56,8 @@ ScxmlEditorFactory::ScxmlEditorFactory()
|
|||||||
return m_editorData->createEditor();
|
return m_editorData->createEditor();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScxmlEditorFactory::~ScxmlEditorFactory()
|
||||||
|
{
|
||||||
|
delete m_editorData;
|
||||||
|
}
|
||||||
|
@@ -36,6 +36,7 @@ class ScxmlEditorFactory final : public Core::IEditorFactory
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ScxmlEditorFactory();
|
ScxmlEditorFactory();
|
||||||
|
~ScxmlEditorFactory();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ScxmlEditorData* m_editorData = nullptr;
|
ScxmlEditorData* m_editorData = nullptr;
|
||||||
|
@@ -33,58 +33,49 @@
|
|||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <QPointer>
|
|
||||||
|
|
||||||
namespace TextEditor {
|
namespace TextEditor {
|
||||||
|
|
||||||
struct DisplaySettingsPage::DisplaySettingsPagePrivate
|
class DisplaySettingsPagePrivate
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
DisplaySettingsPagePrivate();
|
DisplaySettingsPagePrivate();
|
||||||
|
|
||||||
QPointer<QWidget> m_widget;
|
|
||||||
Internal::Ui::DisplaySettingsPage *m_page = nullptr;
|
|
||||||
DisplaySettings m_displaySettings;
|
DisplaySettings m_displaySettings;
|
||||||
MarginSettings m_marginSettings;
|
MarginSettings m_marginSettings;
|
||||||
QString m_settingsPrefix;
|
QString m_settingsPrefix;
|
||||||
};
|
};
|
||||||
|
|
||||||
DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate()
|
DisplaySettingsPagePrivate::DisplaySettingsPagePrivate()
|
||||||
{
|
{
|
||||||
m_settingsPrefix = QLatin1String("text");
|
m_settingsPrefix = QLatin1String("text");
|
||||||
m_displaySettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
m_displaySettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
||||||
m_marginSettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
m_marginSettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplaySettingsPage::DisplaySettingsPage()
|
class DisplaySettingsWidget final : public Core::IOptionsPageWidget
|
||||||
: d(new DisplaySettingsPagePrivate)
|
|
||||||
{
|
{
|
||||||
setId(Constants::TEXT_EDITOR_DISPLAY_SETTINGS);
|
Q_DECLARE_TR_FUNCTIONS(TextEditor::DisplaySettingsPage)
|
||||||
setDisplayName(tr("Display"));
|
|
||||||
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
|
||||||
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
|
|
||||||
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
|
||||||
}
|
|
||||||
|
|
||||||
DisplaySettingsPage::~DisplaySettingsPage()
|
public:
|
||||||
{
|
DisplaySettingsWidget(DisplaySettingsPagePrivate *data)
|
||||||
delete d;
|
: m_data(data)
|
||||||
}
|
{
|
||||||
|
m_ui.setupUi(this);
|
||||||
QWidget *DisplaySettingsPage::widget()
|
|
||||||
{
|
|
||||||
if (!d->m_widget) {
|
|
||||||
d->m_widget = new QWidget;
|
|
||||||
d->m_page = new Internal::Ui::DisplaySettingsPage;
|
|
||||||
d->m_page->setupUi(d->m_widget);
|
|
||||||
settingsToUI();
|
settingsToUI();
|
||||||
}
|
}
|
||||||
return d->m_widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DisplaySettingsPage::apply()
|
void apply() final;
|
||||||
|
|
||||||
|
void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
|
||||||
|
void settingsToUI();
|
||||||
|
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
||||||
|
|
||||||
|
DisplaySettingsPagePrivate *m_data = nullptr;
|
||||||
|
Internal::Ui::DisplaySettingsPage m_ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
void DisplaySettingsWidget::apply()
|
||||||
{
|
{
|
||||||
if (!d->m_page) // page was never shown
|
|
||||||
return;
|
|
||||||
DisplaySettings newDisplaySettings;
|
DisplaySettings newDisplaySettings;
|
||||||
MarginSettings newMarginSettings;
|
MarginSettings newMarginSettings;
|
||||||
|
|
||||||
@@ -92,73 +83,64 @@ void DisplaySettingsPage::apply()
|
|||||||
setDisplaySettings(newDisplaySettings, newMarginSettings);
|
setDisplaySettings(newDisplaySettings, newMarginSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySettingsPage::finish()
|
void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
|
||||||
{
|
|
||||||
delete d->m_widget;
|
|
||||||
if (!d->m_page) // page was never shown
|
|
||||||
return;
|
|
||||||
delete d->m_page;
|
|
||||||
d->m_page = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings,
|
|
||||||
MarginSettings &marginSettings) const
|
MarginSettings &marginSettings) const
|
||||||
{
|
{
|
||||||
displaySettings.m_displayLineNumbers = d->m_page->displayLineNumbers->isChecked();
|
displaySettings.m_displayLineNumbers = m_ui.displayLineNumbers->isChecked();
|
||||||
displaySettings.m_textWrapping = d->m_page->enableTextWrapping->isChecked();
|
displaySettings.m_textWrapping = m_ui.enableTextWrapping->isChecked();
|
||||||
marginSettings.m_showMargin = d->m_page->showWrapColumn->isChecked();
|
marginSettings.m_showMargin = m_ui.showWrapColumn->isChecked();
|
||||||
marginSettings.m_marginColumn = d->m_page->wrapColumn->value();
|
marginSettings.m_marginColumn = m_ui.wrapColumn->value();
|
||||||
displaySettings.m_visualizeWhitespace = d->m_page->visualizeWhitespace->isChecked();
|
displaySettings.m_visualizeWhitespace = m_ui.visualizeWhitespace->isChecked();
|
||||||
displaySettings.m_displayFoldingMarkers = d->m_page->displayFoldingMarkers->isChecked();
|
displaySettings.m_displayFoldingMarkers = m_ui.displayFoldingMarkers->isChecked();
|
||||||
displaySettings.m_highlightCurrentLine = d->m_page->highlightCurrentLine->isChecked();
|
displaySettings.m_highlightCurrentLine = m_ui.highlightCurrentLine->isChecked();
|
||||||
displaySettings.m_highlightBlocks = d->m_page->highlightBlocks->isChecked();
|
displaySettings.m_highlightBlocks = m_ui.highlightBlocks->isChecked();
|
||||||
displaySettings.m_animateMatchingParentheses = d->m_page->animateMatchingParentheses->isChecked();
|
displaySettings.m_animateMatchingParentheses = m_ui.animateMatchingParentheses->isChecked();
|
||||||
displaySettings.m_highlightMatchingParentheses = d->m_page->highlightMatchingParentheses->isChecked();
|
displaySettings.m_highlightMatchingParentheses = m_ui.highlightMatchingParentheses->isChecked();
|
||||||
displaySettings.m_markTextChanges = d->m_page->markTextChanges->isChecked();
|
displaySettings.m_markTextChanges = m_ui.markTextChanges->isChecked();
|
||||||
displaySettings.m_autoFoldFirstComment = d->m_page->autoFoldFirstComment->isChecked();
|
displaySettings.m_autoFoldFirstComment = m_ui.autoFoldFirstComment->isChecked();
|
||||||
displaySettings.m_centerCursorOnScroll = d->m_page->centerOnScroll->isChecked();
|
displaySettings.m_centerCursorOnScroll = m_ui.centerOnScroll->isChecked();
|
||||||
displaySettings.m_openLinksInNextSplit = d->m_page->openLinksInNextSplit->isChecked();
|
displaySettings.m_openLinksInNextSplit = m_ui.openLinksInNextSplit->isChecked();
|
||||||
displaySettings.m_displayFileEncoding = d->m_page->displayFileEncoding->isChecked();
|
displaySettings.m_displayFileEncoding = m_ui.displayFileEncoding->isChecked();
|
||||||
displaySettings.m_scrollBarHighlights = d->m_page->scrollBarHighlights->isChecked();
|
displaySettings.m_scrollBarHighlights = m_ui.scrollBarHighlights->isChecked();
|
||||||
displaySettings.m_animateNavigationWithinFile = d->m_page->animateNavigationWithinFile->isChecked();
|
displaySettings.m_animateNavigationWithinFile = m_ui.animateNavigationWithinFile->isChecked();
|
||||||
displaySettings.m_displayAnnotations = d->m_page->displayAnnotations->isChecked();
|
displaySettings.m_displayAnnotations = m_ui.displayAnnotations->isChecked();
|
||||||
if (d->m_page->leftAligned->isChecked())
|
if (m_ui.leftAligned->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
|
||||||
else if (d->m_page->atMargin->isChecked())
|
else if (m_ui.atMargin->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
|
||||||
else if (d->m_page->rightAligned->isChecked())
|
else if (m_ui.rightAligned->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
|
||||||
else if (d->m_page->betweenLines->isChecked())
|
else if (m_ui.betweenLines->isChecked())
|
||||||
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
|
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySettingsPage::settingsToUI()
|
void DisplaySettingsWidget::settingsToUI()
|
||||||
{
|
{
|
||||||
const DisplaySettings &displaySettings = d->m_displaySettings;
|
const DisplaySettings &displaySettings = m_data->m_displaySettings;
|
||||||
const MarginSettings &marginSettings = d->m_marginSettings;
|
const MarginSettings &marginSettings = m_data->m_marginSettings;
|
||||||
d->m_page->displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
m_ui.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||||
d->m_page->enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
m_ui.enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||||
d->m_page->showWrapColumn->setChecked(marginSettings.m_showMargin);
|
m_ui.showWrapColumn->setChecked(marginSettings.m_showMargin);
|
||||||
d->m_page->wrapColumn->setValue(marginSettings.m_marginColumn);
|
m_ui.wrapColumn->setValue(marginSettings.m_marginColumn);
|
||||||
d->m_page->visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
m_ui.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||||
d->m_page->displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
m_ui.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||||
d->m_page->highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
m_ui.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||||
d->m_page->highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
m_ui.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||||
d->m_page->animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
m_ui.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||||
d->m_page->highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
|
m_ui.highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
|
||||||
d->m_page->markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
m_ui.markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||||
d->m_page->autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
m_ui.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||||
d->m_page->centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
m_ui.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||||
d->m_page->openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
|
m_ui.openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
|
||||||
d->m_page->displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
|
m_ui.displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
|
||||||
d->m_page->scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
|
m_ui.scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
|
||||||
d->m_page->animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
|
m_ui.animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
|
||||||
d->m_page->displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
|
m_ui.displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
|
||||||
switch (displaySettings.m_annotationAlignment) {
|
switch (displaySettings.m_annotationAlignment) {
|
||||||
case AnnotationAlignment::NextToContent: d->m_page->leftAligned->setChecked(true); break;
|
case AnnotationAlignment::NextToContent: m_ui.leftAligned->setChecked(true); break;
|
||||||
case AnnotationAlignment::NextToMargin: d->m_page->atMargin->setChecked(true); break;
|
case AnnotationAlignment::NextToMargin: m_ui.atMargin->setChecked(true); break;
|
||||||
case AnnotationAlignment::RightSide: d->m_page->rightAligned->setChecked(true); break;
|
case AnnotationAlignment::RightSide: m_ui.rightAligned->setChecked(true); break;
|
||||||
case AnnotationAlignment::BetweenLines: d->m_page->betweenLines->setChecked(true); break;
|
case AnnotationAlignment::BetweenLines: m_ui.betweenLines->setChecked(true); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,22 +154,38 @@ const MarginSettings &DisplaySettingsPage::marginSettings() const
|
|||||||
return d->m_marginSettings;
|
return d->m_marginSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings,
|
void DisplaySettingsWidget::setDisplaySettings(const DisplaySettings &newDisplaySettings,
|
||||||
const MarginSettings &newMarginSettings)
|
const MarginSettings &newMarginSettings)
|
||||||
{
|
{
|
||||||
if (newDisplaySettings != d->m_displaySettings) {
|
if (newDisplaySettings != m_data->m_displaySettings) {
|
||||||
d->m_displaySettings = newDisplaySettings;
|
m_data->m_displaySettings = newDisplaySettings;
|
||||||
d->m_displaySettings.toSettings(d->m_settingsPrefix, Core::ICore::settings());
|
m_data->m_displaySettings.toSettings(m_data->m_settingsPrefix, Core::ICore::settings());
|
||||||
|
|
||||||
emit TextEditorSettings::instance()->displaySettingsChanged(newDisplaySettings);
|
emit TextEditorSettings::instance()->displaySettingsChanged(newDisplaySettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newMarginSettings != d->m_marginSettings) {
|
if (newMarginSettings != m_data->m_marginSettings) {
|
||||||
d->m_marginSettings = newMarginSettings;
|
m_data->m_marginSettings = newMarginSettings;
|
||||||
d->m_marginSettings.toSettings(d->m_settingsPrefix, Core::ICore::settings());
|
m_data->m_marginSettings.toSettings(m_data->m_settingsPrefix, Core::ICore::settings());
|
||||||
|
|
||||||
emit TextEditorSettings::instance()->marginSettingsChanged(newMarginSettings);
|
emit TextEditorSettings::instance()->marginSettingsChanged(newMarginSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DisplaySettingsPage::DisplaySettingsPage()
|
||||||
|
: d(new DisplaySettingsPagePrivate)
|
||||||
|
{
|
||||||
|
setId(Constants::TEXT_EDITOR_DISPLAY_SETTINGS);
|
||||||
|
setDisplayName(DisplaySettingsWidget::tr("Display"));
|
||||||
|
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
||||||
|
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
|
||||||
|
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
||||||
|
setWidgetCreator([this] { return new DisplaySettingsWidget(d); });
|
||||||
|
}
|
||||||
|
|
||||||
|
DisplaySettingsPage::~DisplaySettingsPage()
|
||||||
|
{
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
} // TextEditor
|
} // TextEditor
|
||||||
|
@@ -25,37 +25,24 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "texteditor_global.h"
|
|
||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
namespace TextEditor {
|
namespace TextEditor {
|
||||||
|
|
||||||
class DisplaySettings;
|
class DisplaySettings;
|
||||||
class MarginSettings;
|
class MarginSettings;
|
||||||
|
class DisplaySettingsPagePrivate;
|
||||||
|
|
||||||
class DisplaySettingsPage : public Core::IOptionsPage
|
class DisplaySettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DisplaySettingsPage();
|
DisplaySettingsPage();
|
||||||
~DisplaySettingsPage() override;
|
~DisplaySettingsPage() override;
|
||||||
|
|
||||||
// IOptionsPage
|
|
||||||
QWidget *widget() override;
|
|
||||||
void apply() override;
|
|
||||||
void finish() override;
|
|
||||||
|
|
||||||
const DisplaySettings &displaySettings() const;
|
const DisplaySettings &displaySettings() const;
|
||||||
const MarginSettings &marginSettings() const;
|
const MarginSettings &marginSettings() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
|
|
||||||
void settingsToUI();
|
|
||||||
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
|
||||||
|
|
||||||
struct DisplaySettingsPagePrivate;
|
|
||||||
DisplaySettingsPagePrivate *d;
|
DisplaySettingsPagePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -31,8 +31,6 @@ namespace TextEditor {
|
|||||||
|
|
||||||
class TEXTEDITOR_EXPORT PlainTextEditorFactory : public TextEditor::TextEditorFactory
|
class TEXTEDITOR_EXPORT PlainTextEditorFactory : public TextEditor::TextEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PlainTextEditorFactory();
|
PlainTextEditorFactory();
|
||||||
static PlainTextEditorFactory *instance();
|
static PlainTextEditorFactory *instance();
|
||||||
|
@@ -634,7 +634,6 @@ private:
|
|||||||
|
|
||||||
class TEXTEDITOR_EXPORT TextEditorFactory : public Core::IEditorFactory
|
class TEXTEDITOR_EXPORT TextEditorFactory : public Core::IEditorFactory
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TextEditorFactory();
|
TextEditorFactory();
|
||||||
|
@@ -252,10 +252,6 @@ void VcsBaseClientImpl::saveSettings()
|
|||||||
settings().writeSettings(Core::ICore::settings());
|
settings().writeSettings(Core::ICore::settings());
|
||||||
}
|
}
|
||||||
|
|
||||||
VcsBaseClient::StatusItem::StatusItem(const QString &s, const QString &f) :
|
|
||||||
flags(s), file(f)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
VcsBaseClient::VcsBaseClient(VcsBaseClientSettings *settings) :
|
VcsBaseClient::VcsBaseClient(VcsBaseClientSettings *settings) :
|
||||||
VcsBaseClientImpl(settings)
|
VcsBaseClientImpl(settings)
|
||||||
{
|
{
|
||||||
|
@@ -140,7 +140,6 @@ public:
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StatusItem() = default;
|
StatusItem() = default;
|
||||||
StatusItem(const QString &s, const QString &f);
|
|
||||||
QString flags;
|
QString flags;
|
||||||
QString file;
|
QString file;
|
||||||
};
|
};
|
||||||
|
@@ -44,7 +44,7 @@ bool MyPlugin1::initialize(const QStringList & /*arguments*/, QString *errorStri
|
|||||||
|
|
||||||
bool found2 = false;
|
bool found2 = false;
|
||||||
bool found3 = false;
|
bool found3 = false;
|
||||||
foreach (QObject *object, ExtensionSystem::PluginManager::allObjects()) {
|
for (QObject *object : ExtensionSystem::PluginManager::allObjects()) {
|
||||||
if (object->objectName() == QLatin1String("MyPlugin2"))
|
if (object->objectName() == QLatin1String("MyPlugin2"))
|
||||||
found2 = true;
|
found2 = true;
|
||||||
else if (object->objectName() == QLatin1String("MyPlugin3"))
|
else if (object->objectName() == QLatin1String("MyPlugin3"))
|
||||||
|
@@ -43,7 +43,7 @@ bool MyPlugin3::initialize(const QStringList & /*arguments*/, QString *errorStri
|
|||||||
ExtensionSystem::PluginManager::addObject(object1);
|
ExtensionSystem::PluginManager::addObject(object1);
|
||||||
|
|
||||||
bool found2 = false;
|
bool found2 = false;
|
||||||
foreach (QObject *object, ExtensionSystem::PluginManager::allObjects()) {
|
for (QObject *object : ExtensionSystem::PluginManager::allObjects()) {
|
||||||
if (object->objectName() == QLatin1String("MyPlugin2"))
|
if (object->objectName() == QLatin1String("MyPlugin2"))
|
||||||
found2 = true;
|
found2 = true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user