forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.4'
Conflicts: qbs/modules/qtc/qtc.qbs qtcreator.pri src/libs/utils/utils-lib.pri src/plugins/clangcodemodel/clangbackendipcintegration.h src/shared/qbs Change-Id: I240e89afc76d8f40ce69d66683014b603f714707
This commit is contained in:
@@ -80,8 +80,8 @@
|
||||
\li In the \uicontrol Projects mode, select a \l{glossary-buildandrun-kit}
|
||||
{kit} with Qt version 4.7.4 or later.
|
||||
|
||||
\note To profile applications on devices, you must install Qt 4.7.4
|
||||
or later libraries on them.
|
||||
\note To profile applications on \l{glossary-device}{devices}, you
|
||||
must install Qt 4.7.4 or later libraries on them.
|
||||
|
||||
\li Select \uicontrol {Analyze > QML Profiler} to profile the current
|
||||
application.
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
or newer.
|
||||
|
||||
For remote debugging using GDB and GDB server, the minimum supported version
|
||||
of GDB server on the target device is 7.0.
|
||||
of GDB server on the target \l{glossary-device}{device} is 7.0.
|
||||
|
||||
\section2 Supported CDB Versions
|
||||
|
||||
|
||||
@@ -995,8 +995,12 @@
|
||||
|
||||
To get started with implementing debugging helpers for your own data types,
|
||||
you can put their implementation into the file
|
||||
\c share/qtcreator/debugger/personaltypes.py in your \QC installation. The
|
||||
file contains one example implementation:
|
||||
\c share/qtcreator/debugger/personaltypes.py in your Qt installation or
|
||||
stand-alone \QC installation. On \macos, the file is bundled into the
|
||||
\QC application package, where it is located in the
|
||||
\c Contents/resources/debugger folder.
|
||||
|
||||
The \c personaltypes.py file contains one example implementation:
|
||||
|
||||
\quotefromfile ../../share/qtcreator/debugger/personaltypes.py
|
||||
\skipto qdump__
|
||||
@@ -1009,7 +1013,8 @@
|
||||
\li Open the \c share/qtcreator/debugger/personaltypes.py file for
|
||||
editing. For example, if your Qt installation is located in the
|
||||
\c Qt5 directory on Windows, look in
|
||||
\c C:\Qt5\Tools\QtCreator\share\qtcreator\debugger.
|
||||
\c C:\Qt5\Tools\QtCreator\share\qtcreator\debugger. On \macos, look
|
||||
in \c {Qt5/Qt Creator.app/Contents/resources/debugger}.
|
||||
|
||||
\li Add your dumper implementation to the end of the \c personaltypes.py
|
||||
file. For more information about implementing debugging helpers,
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
\li Select \uicontrol {Build > Rebuild Project} to clean and rebuild the
|
||||
project.
|
||||
|
||||
\li To debug applications on devices, check that Qt 5.0, or later,
|
||||
libraries are installed on the device and
|
||||
\li To debug applications on \l{glossary-device}{devices}, check that
|
||||
Qt 5.0, or later, libraries are installed on the device and
|
||||
\l{Running on Multiple Platforms}{select the corresponding kit for the device}
|
||||
before you start debugging.
|
||||
|
||||
|
||||
@@ -255,5 +255,6 @@
|
||||
|
||||
\QC stores copied text in clipboard history. To retrieve clips from the
|
||||
history, press \key {Ctrl+Shift+V} until the clip appears.
|
||||
The number of clips in the history is fixed to 10.
|
||||
|
||||
*/
|
||||
|
||||
@@ -378,7 +378,7 @@
|
||||
example, information about missing DLLs.
|
||||
|
||||
\li \uicontrol Deployment - Errors encountered between building an application
|
||||
successfully and starting it on a device.
|
||||
successfully and starting it on a \l{glossary-device}{device}.
|
||||
|
||||
\li \uicontrol {My Tasks} - Entries from a task list file (.tasks) generated
|
||||
by \l{Showing Task List Files in Issues Pane}
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
\li \l{Supported Platforms}
|
||||
|
||||
You can install and run \QC on several operating systems to create
|
||||
applications for multiple desktop, embedded, and mobile device
|
||||
applications for multiple desktop and \l{glossary-device}{device}
|
||||
platforms.
|
||||
|
||||
\li \l{Using Other Build Systems}
|
||||
|
||||
@@ -73,7 +73,8 @@
|
||||
For more information, see \l{Adding Kits}.
|
||||
|
||||
Each kit consists of a set of values that define one environment, such as a
|
||||
device, compiler, and Qt version. If you know you have installed a Qt
|
||||
\l{glossary-device}{device}, compiler, and Qt version. If you know you have
|
||||
installed a Qt
|
||||
version, but it is not listed in \uicontrol Tools > \uicontrol Options >
|
||||
\uicontrol {Build & Run} > \uicontrol {Qt Versions}, you must add it.
|
||||
|
||||
@@ -84,7 +85,7 @@
|
||||
|
||||
For more information, see \l{Adding Compilers}.
|
||||
|
||||
You can connect mobile devices to the development PC to run, debug, and
|
||||
You can connect devices to the development PC to run, debug, and
|
||||
analyze applications on them from \QC. You can connect the device to the
|
||||
development PC via USB. Additionally, you can connect Linux-based devices
|
||||
over a WLAN. You must also configure a connection between \QC and the
|
||||
@@ -93,7 +94,7 @@
|
||||
To add devices, select \uicontrol Tools > \uicontrol Options >
|
||||
\uicontrol Devices > \uicontrol Add.
|
||||
|
||||
For more information, see \l{Connecting Mobile Devices}.
|
||||
For more information, see \l{Connecting Devices}.
|
||||
|
||||
\section1 Changing Keyboard Shortcuts
|
||||
|
||||
|
||||
@@ -35,13 +35,13 @@
|
||||
\page creator-deployment.html
|
||||
\nextpage creator-deploying-android.html
|
||||
|
||||
\title Deploying to Mobile Devices
|
||||
\title Deploying to Devices
|
||||
|
||||
Deploy configurations in the \uicontrol Project mode
|
||||
\uicontrol {Run Settings} handle the packaging of the application as an
|
||||
executable and copying it to a location you want to run the executable at.
|
||||
The files can be copied to a location in the file system of the development
|
||||
PC or a mobile device.
|
||||
PC or a \l{glossary-device}{device}.
|
||||
|
||||
\list
|
||||
|
||||
|
||||
@@ -81,15 +81,21 @@
|
||||
\target glossary-deploy-config
|
||||
\li Handles the packaging and copying of the necessary files to a
|
||||
location you want to run the executable at. The files can be
|
||||
copied to a location in the file system of the development PC,
|
||||
an embedded device, or a mobile device.
|
||||
copied to a location in the file system of the development PC or
|
||||
a \l{glossary-device}{device}.
|
||||
|
||||
\row
|
||||
\li Device
|
||||
\target glossary-device
|
||||
\li An embedded device or a mobile device. For more information, see
|
||||
\l{Target Platforms}.
|
||||
|
||||
\row
|
||||
\li Kit
|
||||
\target glossary-buildandrun-kit
|
||||
\li \QC groups build and run specific settings as kits to make
|
||||
cross-platform development easier. Each kit consists of a set
|
||||
of values that define one environment, such as a device,
|
||||
of values that define one environment, such as a \l{glossary-device}{device},
|
||||
tool chain, Qt version, and debugger command to use. Configure kits at
|
||||
\uicontrol {Tools > Options > Build & Run > Kits}.
|
||||
|
||||
@@ -107,8 +113,8 @@
|
||||
\li Project
|
||||
\target glossary-project
|
||||
\li Groups together a set of source files, forms, and resource files
|
||||
that you can build for, as well as deploy and run on different desktop,
|
||||
embedded, and mobile device platforms, as
|
||||
that you can build for, as well as deploy and run on different
|
||||
desktop and \l{glossary-device}{device} platforms, as
|
||||
specified by a \e {build configuration}, \e {deploy
|
||||
configuration}, and \e {run configuration}.
|
||||
|
||||
@@ -124,7 +130,8 @@
|
||||
\target glossary-run-config
|
||||
\li Starts the application in the location where it was copied by
|
||||
the \e {deploy configuration}. By default, when you run a
|
||||
project, \QC builds it, deploys it to the device specified in the selected
|
||||
project, \QC builds it, deploys it to the
|
||||
\l{glossary-device}{device} specified in the selected
|
||||
\l{glossary-buildandrun-kit}{kit},
|
||||
and runs it there. However, if you have not made any changes to
|
||||
the project since you last built and deployed it, \QC simply
|
||||
|
||||
@@ -35,12 +35,13 @@
|
||||
\page creator-connecting-mobile.html
|
||||
\nextpage creator-developing-android.html
|
||||
|
||||
\title Connecting Mobile Devices
|
||||
\title Connecting Devices
|
||||
|
||||
You can connect mobile devices to the development PC to run, debug,
|
||||
You can connect \l{glossary-device}{devices} to the development PC to run, debug,
|
||||
and analyze applications built for them from \QC. When you install Qt for a
|
||||
target platform, such as Android or QNX, the build and run settings for the
|
||||
development targets might be set up automatically in \QC.
|
||||
target platform, such as Android, QNX, or Universal Windows Platform (UWP),
|
||||
the build and run settings for the development targets might be set up
|
||||
automatically in \QC.
|
||||
|
||||
You can connect the device to the development PC using a USB connection.
|
||||
Additionally, you can connect Linux-based devices by using a WLAN
|
||||
@@ -82,13 +83,6 @@
|
||||
supported for QNX Neutrino devices, and requires the QNX SDK to be
|
||||
installed on the development PC.
|
||||
|
||||
\li \l{Connecting UWP Devices}
|
||||
|
||||
You can build applications for the Universal Windows Platform (UWP)
|
||||
and run them on any Windows 10 devices, such as PC, tablet, or
|
||||
phone. You can install the necessary tool chains as part of Qt 5.9
|
||||
or later.
|
||||
|
||||
\endlist
|
||||
|
||||
*/
|
||||
|
||||
@@ -93,8 +93,8 @@
|
||||
and commands used to build the project.
|
||||
|
||||
\QC provides support for running and deploying Qt applications
|
||||
built for the desktop environment as well as embedded and
|
||||
mobile devices. \l{glossary-buildandrun-kit}{Kits}, build,
|
||||
built for the desktop environment or a \l{glossary-device}
|
||||
{device}. \l{glossary-buildandrun-kit}{Kits}, build,
|
||||
run, and deployment settings allow you to quickly switch between
|
||||
different setups and target platforms.
|
||||
|
||||
|
||||
@@ -54,8 +54,7 @@
|
||||
{List of Qt Quick Examples}
|
||||
|
||||
\row
|
||||
\li Develop Qt applications for desktop and embedded or mobile
|
||||
devices
|
||||
\li Develop Qt applications for desktop and \l{glossary-device}{devices}
|
||||
\li \l{https://www.qt.io/developers/}{Qt Developers}
|
||||
|
||||
\row
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
is installed automatically and you should be ready to start
|
||||
debugging after you create a new project. However, you can
|
||||
change the setup to use debugging tools for Windows, for
|
||||
example. You can connect embedded or mobile devices to your
|
||||
example. You can connect \l{glossary-device}{devices} to your
|
||||
development host and debug processes running on the devices.
|
||||
|
||||
\li \l{Analyzing Code}
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
|
||||
\QC provides support for running and deploying Qt applications built
|
||||
for different target platforms, or using different compilers, debuggers, or
|
||||
Qt versions.
|
||||
\l{glossary-buildandrun-kit}{Kits} define the tools,
|
||||
device type and other settings to use when building and running your project.
|
||||
Qt versions. \l{glossary-buildandrun-kit}{Kits} define the tools,
|
||||
\l{glossary-device}{device} type and other settings to use when building and
|
||||
running your project.
|
||||
|
||||
\list
|
||||
\li \l{Building for Multiple Platforms}
|
||||
@@ -61,17 +61,17 @@
|
||||
if you have not made any changes to the project since you last
|
||||
built and deployed it, \QC simply runs it again.
|
||||
|
||||
\li \l{Deploying to Mobile Devices}
|
||||
\li \l{Deploying to Devices}
|
||||
|
||||
\e {Deploy configurations} handle the packaging and copying of
|
||||
the necessary files to a location you want to run the executable
|
||||
at. The files can be copied to a location in the file system of
|
||||
the development PC or a mobile device.
|
||||
the development PC or a device.
|
||||
|
||||
\li \l{Connecting Mobile Devices}
|
||||
\li \l{Connecting Devices}
|
||||
|
||||
When you install tool chains for device types as part of a Qt distribution,
|
||||
the build and run settings for mobile device types might be set up
|
||||
the build and run settings for the devices might be set up
|
||||
automatically. However, you might need to install and configure some
|
||||
additional software on the devices to be able to connect to them
|
||||
from the development PC.
|
||||
|
||||
@@ -38,9 +38,8 @@
|
||||
\title Building for Multiple Platforms
|
||||
|
||||
You can build applications for multiple target platforms, or using different
|
||||
compilers,
|
||||
debuggers or Qt versions. \l{glossary-buildandrun-kit}{Kits} define the tools,
|
||||
device type and other settings to use.
|
||||
compilers, debuggers or Qt versions. \l{glossary-buildandrun-kit}{Kits}
|
||||
define the tools, \l{glossary-device}{device} type and other settings to use.
|
||||
|
||||
By default, when you run the application, you
|
||||
automatically build and deploy it first.
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
/*!
|
||||
\contentspage {Qt Creator Manual}
|
||||
\previouspage creator-developing-uwp.html
|
||||
\previouspage creator-developing-qnx.html
|
||||
\page creator-build-process-customizing.html
|
||||
\nextpage creator-testing.html
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
use qmake, Qbs, or CMake. This enables you to use \QC as a code editor and
|
||||
to fully control the steps and commands used to build the project.
|
||||
|
||||
You can install tools for mobile devices as part of Qt distributions.
|
||||
You can install tools for \l{glossary-device}{devices} as part of Qt distributions.
|
||||
The \l{glossary-buildandrun-kit}{kits} and build and run settings for the
|
||||
installed device types are set up automatically. However, you might need to
|
||||
install and configure some additional software on the devices to be able to
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
\title Adding Qt Versions
|
||||
|
||||
\QC allows you to have multiple versions of Qt installed on your development
|
||||
PC and use different versions to build your projects.
|
||||
For example, device manufacturers provide special Qt versions for developing
|
||||
applications for their devices.
|
||||
PC and use different versions to build your projects. For example,
|
||||
\l{glossary-device}{device} manufacturers provide special Qt versions for
|
||||
developing applications for their devices.
|
||||
|
||||
\QC automatically detects the Qt versions that are registered by
|
||||
your system or by installers. To view detailed information for each Qt
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
By default, running an application also builds it and deploys it to a
|
||||
location from where it can be run on the desktop, on a device emulator or
|
||||
simulator, or on an embedded device or a mobile device that is connected to
|
||||
simulator, or on a \l{glossary-device}{device} that is connected to
|
||||
the development PC.
|
||||
|
||||
To run executable files without deploying them first, select \uicontrol Build >
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
information about managing kits, see \l{Adding Kits}.
|
||||
|
||||
Each kit consists of a set of values that define one environment, such as a
|
||||
device, compiler, and Qt version. For more information, see
|
||||
\l{Adding Qt Versions}, \l{Adding Compilers}, and \l{Adding Debuggers}.
|
||||
\l{glossary-device}{device}, compiler, and Qt version. For more information,
|
||||
see \l{Adding Qt Versions}, \l{Adding Compilers}, and \l{Adding Debuggers}.
|
||||
|
||||
To copy the build and run settings for a kit to another kit, select
|
||||
\uicontrol {Copy Steps from Other Kit} in the context menu.
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
\section1 Selecting the Run Environment
|
||||
|
||||
\QC automatically selects the environment used for running the application
|
||||
based on the device type. You can edit the environment or select another
|
||||
environment in the \uicontrol {Run Environment} section.
|
||||
based on the \l{glossary-device}{device} type. You can edit the environment
|
||||
or select another environment in the \uicontrol {Run Environment} section.
|
||||
|
||||
You can edit existing environment variables or add, reset and unset new
|
||||
variables.
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
\title Adding Kits
|
||||
|
||||
\QC groups settings used for building and running projects as kits
|
||||
to make cross-platform and cross-configuration
|
||||
development easier. Each kit consists of a set of values that define one
|
||||
environment, such as a device, compiler, Qt version, and debugger command
|
||||
to make cross-platform and cross-configuration development easier. Each kit
|
||||
consists of a set of values that define one environment, such as a
|
||||
\l{glossary-device}{device}, compiler, Qt version, and debugger command
|
||||
to use, and some metadata, such as an icon and a name for the kit. Once
|
||||
you have defined kits, you can select them to build and run projects.
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
\contentspage {Qt Creator Manual}
|
||||
\previouspage creator-developing-ios.html
|
||||
\page creator-developing-qnx.html
|
||||
\nextpage creator-developing-uwp.html
|
||||
\nextpage creator-build-process-customizing.html
|
||||
|
||||
\title Connecting QNX Devices
|
||||
|
||||
|
||||
@@ -143,20 +143,19 @@
|
||||
\list
|
||||
\li \l{Building for Multiple Platforms}
|
||||
\li \l{Running on Multiple Platforms}
|
||||
\li \l{Deploying to Mobile Devices}
|
||||
\li \l{Deploying to Devices}
|
||||
\list
|
||||
\li \l{Deploying Applications to Android Devices}
|
||||
\li \l{Deploying Applications to Embedded Linux Devices}
|
||||
\li \l{Deploying Applications to QNX Neutrino Devices}
|
||||
\endlist
|
||||
\li \l{Connecting Mobile Devices}
|
||||
\li \l{Connecting Devices}
|
||||
\list
|
||||
\li \l{Connecting Android Devices}
|
||||
\li \l{Connecting Bare Metal Devices}
|
||||
\li \l{Connecting Embedded Linux Devices}
|
||||
\li \l{Connecting iOS Devices}
|
||||
\li \l{Connecting QNX Devices}
|
||||
\li \l{Connecting UWP Devices}
|
||||
\endlist
|
||||
\li \l{Customizing the Build Process}
|
||||
\endlist
|
||||
|
||||
@@ -96,8 +96,8 @@
|
||||
\list
|
||||
\li \l{Building for Multiple Platforms}
|
||||
\li \l{Running on Multiple Platforms}
|
||||
\li \l{Deploying to Mobile Devices}
|
||||
\li \l{Connecting Mobile Devices}
|
||||
\li \l{Deploying to Devices}
|
||||
\li \l{Connecting Devices}
|
||||
\endlist
|
||||
\li \b {\l{Testing}}
|
||||
\list
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
|
||||
Since Qt 5.7, \l {Qt Quick Controls 2} replace Qt Quick Controls 1 and
|
||||
Qt Labs Controls. They provide lightweight QML types for creating performant
|
||||
user interfaces for embedded and mobile devices.
|
||||
user interfaces for \l{glossary-device}{devices}.
|
||||
|
||||
Qt Quick Controls 2 achieve improved efficiency by employing a simplified
|
||||
\l {Styling Qt Quick Controls 2}{styling architecture} when compared to
|
||||
|
||||
@@ -147,7 +147,8 @@
|
||||
\list
|
||||
\li C++ code
|
||||
\li Resource files (.qrc)
|
||||
\li Code needed for deploying applications to mobile or embedded devices
|
||||
\li Code needed for deploying applications to \l{glossary-device}
|
||||
{devices}
|
||||
\endlist
|
||||
|
||||
To create a Qt Quick UI project:
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
**
|
||||
** 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.
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
|
||||
\contentspage {Qt Creator Manual}
|
||||
\previouspage creator-developing-qnx.html
|
||||
\page creator-developing-uwp.html
|
||||
\nextpage creator-build-process-customizing.html
|
||||
|
||||
\title Connecting UWP Devices
|
||||
|
||||
You can build applications for the Universal Windows Platform (UWP) and run
|
||||
them on any Windows 10 devices, such as PC, tablet, or phone.
|
||||
|
||||
\QC uses the integrated \c windeployqt and \c winrtrunner tools to deploy
|
||||
and run applications. You can also run the tools manually from the command
|
||||
line.
|
||||
|
||||
Since 5.3, the Qt installers add the Windows Runtime and Windows Phone Qt
|
||||
versions to \QC and create the necessary kits. In Qt 5.9, the packages were
|
||||
renamed as UWP packages.
|
||||
|
||||
\image creator-uwp-kits.png "UWP kits"
|
||||
|
||||
To connect UWP devices:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Select \uicontrol Help > \uicontrol {About Plugins} > \uicontrol {Device Support} >
|
||||
\uicontrol WinRT to enable the experimental UWP plugin.
|
||||
|
||||
\li Restart \QC to be able to use the plugin.
|
||||
|
||||
\li To specify build settings:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Open a project for an application you want to develop for the
|
||||
device.
|
||||
|
||||
\li Select \uicontrol Projects > \uicontrol {Build & Run} to
|
||||
enable a kit for building applications and running them on UWP
|
||||
devices.
|
||||
|
||||
\endlist
|
||||
|
||||
\li Select \uicontrol Run to specify run settings.
|
||||
|
||||
Usually, you can use the default settings.
|
||||
|
||||
\endlist
|
||||
|
||||
*/
|
||||
@@ -91,9 +91,12 @@ bool OptionsParser::parse()
|
||||
// probably a file or something
|
||||
m_pmPrivate->arguments << m_currentArg;
|
||||
}
|
||||
if (PluginManager::testRunRequested()) {
|
||||
m_isDependencyRefreshNeeded = true;
|
||||
forceDisableAllPluginsExceptTestedAndForceEnabled();
|
||||
}
|
||||
if (m_isDependencyRefreshNeeded)
|
||||
m_pmPrivate->resolveDependencies();
|
||||
m_pmPrivate->enableOnlyTestedSpecs();
|
||||
m_pmPrivate->enableDependenciesIndirectly();
|
||||
return !m_hasError;
|
||||
}
|
||||
|
||||
@@ -260,6 +263,16 @@ bool OptionsParser::checkForUnknownOption()
|
||||
return true;
|
||||
}
|
||||
|
||||
void OptionsParser::forceDisableAllPluginsExceptTestedAndForceEnabled()
|
||||
{
|
||||
for (const PluginManagerPrivate::TestSpec &testSpec : m_pmPrivate->testSpecs)
|
||||
testSpec.pluginSpec->d->setForceEnabled(true);
|
||||
for (PluginSpec *spec : m_pmPrivate->pluginSpecs) {
|
||||
if (!spec->isForceEnabled() && !spec->isRequired())
|
||||
spec->d->setForceDisabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool OptionsParser::nextToken(OptionsParser::TokenType type)
|
||||
{
|
||||
if (m_it == m_end) {
|
||||
|
||||
@@ -60,6 +60,7 @@ private:
|
||||
bool checkForPluginOption();
|
||||
bool checkForProfilingOption();
|
||||
bool checkForUnknownOption();
|
||||
void forceDisableAllPluginsExceptTestedAndForceEnabled();
|
||||
|
||||
enum TokenType { OptionalToken, RequiredToken };
|
||||
bool nextToken(TokenType type = OptionalToken);
|
||||
|
||||
@@ -1488,6 +1488,7 @@ void PluginManagerPrivate::readPluginPaths()
|
||||
pluginSpecs.append(spec);
|
||||
}
|
||||
resolveDependencies();
|
||||
enableDependenciesIndirectly();
|
||||
// ensure deterministic plugin load order by sorting
|
||||
Utils::sort(pluginSpecs, &PluginSpec::name);
|
||||
emit q->pluginsChanged();
|
||||
@@ -1495,42 +1496,19 @@ void PluginManagerPrivate::readPluginPaths()
|
||||
|
||||
void PluginManagerPrivate::resolveDependencies()
|
||||
{
|
||||
foreach (PluginSpec *spec, pluginSpecs) {
|
||||
spec->d->enabledIndirectly = false; // reset, is recalculated below
|
||||
foreach (PluginSpec *spec, pluginSpecs)
|
||||
spec->d->resolveDependencies(pluginSpecs);
|
||||
}
|
||||
|
||||
Utils::reverseForeach(loadQueue(), [](PluginSpec *spec) {
|
||||
spec->d->enableDependenciesIndirectly();
|
||||
});
|
||||
}
|
||||
|
||||
void PluginManagerPrivate::enableOnlyTestedSpecs()
|
||||
void PluginManagerPrivate::enableDependenciesIndirectly()
|
||||
{
|
||||
if (testSpecs.isEmpty())
|
||||
return;
|
||||
|
||||
QList<PluginSpec *> specsForTests;
|
||||
foreach (const TestSpec &testSpec, testSpecs) {
|
||||
QList<PluginSpec *> circularityCheckQueue;
|
||||
loadQueue(testSpec.pluginSpec, specsForTests, circularityCheckQueue);
|
||||
// add plugins that must be force loaded when running tests for the plugin
|
||||
// (aka "test dependencies")
|
||||
QHashIterator<PluginDependency, PluginSpec *> it(testSpec.pluginSpec->dependencySpecs());
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
if (it.key().type != PluginDependency::Test)
|
||||
continue;
|
||||
PluginSpec *depSpec = it.value();
|
||||
circularityCheckQueue.clear();
|
||||
loadQueue(depSpec, specsForTests, circularityCheckQueue);
|
||||
}
|
||||
}
|
||||
foreach (PluginSpec *spec, pluginSpecs)
|
||||
spec->d->setForceDisabled(true);
|
||||
foreach (PluginSpec *spec, specsForTests) {
|
||||
spec->d->setForceDisabled(false);
|
||||
spec->d->setForceEnabled(true);
|
||||
spec->d->enabledIndirectly = false;
|
||||
// cannot use reverse loadQueue here, because test dependencies can introduce circles
|
||||
QList<PluginSpec *> queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled);
|
||||
while (!queue.isEmpty()) {
|
||||
PluginSpec *spec = queue.takeFirst();
|
||||
queue += spec->d->enableDependenciesIndirectly(containsTestSpec(spec));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
QList<PluginSpec *> loadQueue();
|
||||
void loadPlugin(PluginSpec *spec, PluginSpec::State destState);
|
||||
void resolveDependencies();
|
||||
void enableOnlyTestedSpecs();
|
||||
void enableDependenciesIndirectly();
|
||||
void initProfiling();
|
||||
void profilingSummary() const;
|
||||
void profilingReport(const char *what, const PluginSpec *spec = 0);
|
||||
|
||||
@@ -917,19 +917,25 @@ bool PluginSpecPrivate::resolveDependencies(const QList<PluginSpec *> &specs)
|
||||
return true;
|
||||
}
|
||||
|
||||
void PluginSpecPrivate::enableDependenciesIndirectly()
|
||||
// returns the plugins that it actually indirectly enabled
|
||||
QList<PluginSpec *> PluginSpecPrivate::enableDependenciesIndirectly(bool enableTestDependencies)
|
||||
{
|
||||
if (!q->isEffectivelyEnabled()) // plugin not enabled, nothing to do
|
||||
return;
|
||||
return {};
|
||||
QList<PluginSpec *> enabled;
|
||||
QHashIterator<PluginDependency, PluginSpec *> it(dependencySpecs);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
if (it.key().type != PluginDependency::Required)
|
||||
if (it.key().type != PluginDependency::Required
|
||||
&& (!enableTestDependencies || it.key().type != PluginDependency::Test))
|
||||
continue;
|
||||
PluginSpec *dependencySpec = it.value();
|
||||
if (!dependencySpec->isEffectivelyEnabled())
|
||||
if (!dependencySpec->isEffectivelyEnabled()) {
|
||||
dependencySpec->d->enabledIndirectly = true;
|
||||
enabled << dependencySpec;
|
||||
}
|
||||
}
|
||||
return enabled;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
@@ -103,7 +103,7 @@ public:
|
||||
static bool isValidVersion(const QString &version);
|
||||
static int versionCompare(const QString &version1, const QString &version2);
|
||||
|
||||
void enableDependenciesIndirectly();
|
||||
QList<PluginSpec *> enableDependenciesIndirectly(bool enableTestDependencies = false);
|
||||
|
||||
bool readMetaData(const QJsonObject &pluginMetaData);
|
||||
|
||||
|
||||
@@ -29,16 +29,18 @@
|
||||
#include "algorithm.h"
|
||||
#include "qtcassert.h"
|
||||
|
||||
#include <QDataStream>
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
#include <QDateTime>
|
||||
#include <QDragEnterEvent>
|
||||
#include <QDropEvent>
|
||||
#include <QMessageBox>
|
||||
#include <QRegExp>
|
||||
#include <QTimer>
|
||||
#include <QUrl>
|
||||
|
||||
#ifdef QT_GUI_LIB
|
||||
#include <QMessageBox>
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <qt_windows.h>
|
||||
#include <shlobj.h>
|
||||
@@ -380,6 +382,7 @@ bool FileReader::fetch(const QString &fileName, QIODevice::OpenMode mode, QStrin
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef QT_GUI_LIB
|
||||
bool FileReader::fetch(const QString &fileName, QIODevice::OpenMode mode, QWidget *parent)
|
||||
{
|
||||
if (fetch(fileName, mode))
|
||||
@@ -388,7 +391,7 @@ bool FileReader::fetch(const QString &fileName, QIODevice::OpenMode mode, QWidge
|
||||
QMessageBox::critical(parent, tr("File Error"), m_errorString);
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif // QT_GUI_LIB
|
||||
|
||||
FileSaverBase::FileSaverBase()
|
||||
: m_hasError(false)
|
||||
@@ -414,6 +417,7 @@ bool FileSaverBase::finalize(QString *errStr)
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef QT_GUI_LIB
|
||||
bool FileSaverBase::finalize(QWidget *parent)
|
||||
{
|
||||
if (finalize())
|
||||
@@ -421,6 +425,7 @@ bool FileSaverBase::finalize(QWidget *parent)
|
||||
QMessageBox::critical(parent, tr("File Error"), errorString());
|
||||
return false;
|
||||
}
|
||||
#endif // QT_GUI_LIB
|
||||
|
||||
bool FileSaverBase::write(const char *data, int len)
|
||||
{
|
||||
|
||||
@@ -43,7 +43,6 @@ QT_BEGIN_NAMESPACE
|
||||
class QDataStream;
|
||||
class QDateTime;
|
||||
class QDir;
|
||||
class QDropEvent;
|
||||
class QFile;
|
||||
class QFileInfo;
|
||||
class QTemporaryFile;
|
||||
@@ -160,9 +159,11 @@ public:
|
||||
bool fetch(const QString &fileName, QIODevice::OpenMode mode, QString *errorString);
|
||||
bool fetch(const QString &fileName, QString *errorString)
|
||||
{ return fetch(fileName, QIODevice::NotOpen, errorString); }
|
||||
#ifdef QT_GUI_LIB
|
||||
bool fetch(const QString &fileName, QIODevice::OpenMode mode, QWidget *parent);
|
||||
bool fetch(const QString &fileName, QWidget *parent)
|
||||
{ return fetch(fileName, QIODevice::NotOpen, parent); }
|
||||
#endif // QT_GUI_LIB
|
||||
const QByteArray &data() const { return m_data; }
|
||||
const QString &errorString() const { return m_errorString; }
|
||||
private:
|
||||
@@ -182,7 +183,9 @@ public:
|
||||
QString errorString() const { return m_errorString; }
|
||||
virtual bool finalize();
|
||||
bool finalize(QString *errStr);
|
||||
#ifdef QT_GUI_LIB
|
||||
bool finalize(QWidget *parent);
|
||||
#endif
|
||||
|
||||
bool write(const char *data, int len);
|
||||
bool write(const QByteArray &bytes);
|
||||
|
||||
@@ -25,8 +25,11 @@
|
||||
|
||||
#include "hostosinfo.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCoreApplication>
|
||||
|
||||
#if !defined(QT_NO_OPENGL) && defined(QT_GUI_LIB)
|
||||
#include <QOpenGLContext>
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#undef _WIN32_WINNT
|
||||
@@ -82,14 +85,14 @@ void HostOsInfo::unsetOverrideFileNameCaseSensitivity()
|
||||
|
||||
bool HostOsInfo::canCreateOpenGLContext(QString *errorMessage)
|
||||
{
|
||||
#ifdef QT_NO_OPENGL
|
||||
#if defined(QT_NO_OPENGL) || !defined(QT_GUI_LIB)
|
||||
Q_UNUSED(errorMessage)
|
||||
return false;
|
||||
#else
|
||||
static const bool canCreate = QOpenGLContext().create();
|
||||
if (!canCreate)
|
||||
*errorMessage = QApplication::translate("Utils::HostOsInfo",
|
||||
"Cannot create OpenGL context.");
|
||||
*errorMessage = QCoreApplication::translate("Utils::HostOsInfo",
|
||||
"Cannot create OpenGL context.");
|
||||
return canCreate;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -36,6 +36,10 @@
|
||||
#include <QRegExp>
|
||||
#include <QRect>
|
||||
|
||||
#ifdef QT_GUI_LIB
|
||||
#include <QMessageBox>
|
||||
#endif
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
// Read and write rectangle in X11 resource syntax "12x12+4+3"
|
||||
@@ -416,18 +420,30 @@ PersistentSettingsWriter::~PersistentSettingsWriter()
|
||||
write(m_savedData, 0);
|
||||
}
|
||||
|
||||
bool PersistentSettingsWriter::save(const QVariantMap &data, QWidget *parent) const
|
||||
bool PersistentSettingsWriter::save(const QVariantMap &data, QString *errorString) const
|
||||
{
|
||||
if (data == m_savedData)
|
||||
return true;
|
||||
|
||||
return write(data, parent);
|
||||
return write(data, errorString);
|
||||
}
|
||||
|
||||
#ifdef QT_GUI_LIB
|
||||
bool PersistentSettingsWriter::save(const QVariantMap &data, QWidget *parent) const
|
||||
{
|
||||
QString errorString;
|
||||
const bool success = save(data, &errorString);
|
||||
if (!success)
|
||||
QMessageBox::critical(parent,
|
||||
QCoreApplication::translate("Utils::FileSaverBase", "File Error"),
|
||||
errorString);
|
||||
return success;
|
||||
}
|
||||
#endif // QT_GUI_LIB
|
||||
|
||||
FileName PersistentSettingsWriter::fileName() const
|
||||
{ return m_fileName; }
|
||||
|
||||
bool PersistentSettingsWriter::write(const QVariantMap &data, QWidget *parent) const
|
||||
bool PersistentSettingsWriter::write(const QVariantMap &data, QString *errorString) const
|
||||
{
|
||||
QDir tmp;
|
||||
tmp.mkpath(m_fileName.toFileInfo().path());
|
||||
@@ -455,9 +471,12 @@ bool PersistentSettingsWriter::write(const QVariantMap &data, QWidget *parent) c
|
||||
|
||||
saver.setResult(&w);
|
||||
}
|
||||
bool ok = saver.finalize(parent);
|
||||
bool ok = saver.finalize();
|
||||
if (ok)
|
||||
m_savedData = data;
|
||||
else if (errorString)
|
||||
*errorString = saver.errorString();
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,12 +54,15 @@ public:
|
||||
PersistentSettingsWriter(const FileName &fileName, const QString &docType);
|
||||
~PersistentSettingsWriter();
|
||||
|
||||
bool save(const QVariantMap &data, QString *errorString) const;
|
||||
#ifdef QT_GUI_LIB
|
||||
bool save(const QVariantMap &data, QWidget *parent) const;
|
||||
#endif
|
||||
|
||||
FileName fileName() const;
|
||||
|
||||
private:
|
||||
bool write(const QVariantMap &data, QWidget *parent) const;
|
||||
bool write(const QVariantMap &data, QString *errorString) const;
|
||||
|
||||
const FileName m_fileName;
|
||||
const QString m_docType;
|
||||
|
||||
@@ -243,7 +243,7 @@ HEADERS += \
|
||||
$$PWD/optional.h \
|
||||
$$PWD/../3rdparty/optional/optional.hpp \
|
||||
$$PWD/qtcfallthrough.h \
|
||||
$$PWD/highlightingitemdelegate.cpp \
|
||||
$$PWD/highlightingitemdelegate.h \
|
||||
$$PWD/camelhumpmatcher.h
|
||||
|
||||
FORMS += $$PWD/filewizardpage.ui \
|
||||
|
||||
@@ -62,7 +62,14 @@ BareMetalDebugSupport::BareMetalDebugSupport(RunControl *runControl)
|
||||
return;
|
||||
}
|
||||
|
||||
const GdbServerProvider *p = GdbServerProviderManager::findProvider(dev->gdbServerProviderId());
|
||||
const QString providerId = dev->gdbServerProviderId();
|
||||
const GdbServerProvider *p = GdbServerProviderManager::findProvider(providerId);
|
||||
if (!p) {
|
||||
// FIXME: Translate.
|
||||
reportFailure(QString("No GDB server provider found for %1").arg(providerId));
|
||||
return;
|
||||
}
|
||||
|
||||
if (p->startupMode() == GdbServerProvider::StartupOnNetwork) {
|
||||
StandardRunnable r;
|
||||
r.executable = p->executable();
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include <cplusplus/Icons.h>
|
||||
#include <cplusplus/MatchingText.h>
|
||||
#include <cplusplus/SimpleLexer.h>
|
||||
#include <cplusplus/Token.h>
|
||||
|
||||
#include <texteditor/completionsettings.h>
|
||||
@@ -36,6 +37,8 @@
|
||||
|
||||
#include <QTextCursor>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
|
||||
using namespace CPlusPlus;
|
||||
using namespace ClangBackEnd;
|
||||
|
||||
@@ -74,6 +77,43 @@ static void moveToPrevChar(TextEditor::TextDocumentManipulatorInterface &manipul
|
||||
cursor.movePosition(QTextCursor::PreviousCharacter);
|
||||
}
|
||||
|
||||
static QString textUntilPreviousStatement(TextEditor::TextDocumentManipulatorInterface &manipulator,
|
||||
int startPosition)
|
||||
{
|
||||
static const QString stopCharacters(";{}#");
|
||||
|
||||
int endPosition = 0;
|
||||
for (int i = startPosition; i >= 0 ; --i) {
|
||||
if (stopCharacters.contains(manipulator.characterAt(i))) {
|
||||
endPosition = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return manipulator.textAt(endPosition, startPosition - endPosition);
|
||||
}
|
||||
|
||||
// 7.3.3: using typename(opt) nested-name-specifier unqualified-id ;
|
||||
static bool isAtUsingDeclaration(TextEditor::TextDocumentManipulatorInterface &manipulator,
|
||||
int basePosition)
|
||||
{
|
||||
SimpleLexer lexer;
|
||||
lexer.setLanguageFeatures(LanguageFeatures::defaultFeatures());
|
||||
const QString textToLex = textUntilPreviousStatement(manipulator, basePosition);
|
||||
const Tokens tokens = lexer(textToLex);
|
||||
if (tokens.empty())
|
||||
return false;
|
||||
|
||||
// The nested-name-specifier always ends with "::", so check for this first.
|
||||
const Token lastToken = tokens[tokens.size() - 1];
|
||||
if (lastToken.kind() != T_COLON_COLON)
|
||||
return false;
|
||||
|
||||
return Utils::contains(tokens, [](const Token &token) {
|
||||
return token.kind() == T_USING;
|
||||
});
|
||||
}
|
||||
|
||||
void ClangAssistProposalItem::apply(TextEditor::TextDocumentManipulatorInterface &manipulator,
|
||||
int basePosition) const
|
||||
{
|
||||
@@ -133,6 +173,8 @@ void ClangAssistProposalItem::apply(TextEditor::TextDocumentManipulatorInterface
|
||||
const QChar prevChar = manipulator.characterAt(cursor.position());
|
||||
abandonParen = QString("(;,{}").contains(prevChar);
|
||||
}
|
||||
if (!abandonParen)
|
||||
abandonParen = isAtUsingDeclaration(manipulator, basePosition);
|
||||
if (!abandonParen) {
|
||||
if (completionSettings.m_spaceAfterFunctionName)
|
||||
extraCharacters += QLatin1Char(' ');
|
||||
|
||||
@@ -129,8 +129,10 @@ void IpcReceiver::deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *t
|
||||
}
|
||||
}
|
||||
|
||||
QFuture<CppTools::CursorInfo> IpcReceiver::addExpectedReferencesMessage(quint64 ticket,
|
||||
QTextDocument *textDocument)
|
||||
QFuture<CppTools::CursorInfo> IpcReceiver::addExpectedReferencesMessage(
|
||||
quint64 ticket,
|
||||
QTextDocument *textDocument,
|
||||
const CppTools::SemanticInfo::LocalUseMap &localUses)
|
||||
{
|
||||
QTC_CHECK(textDocument);
|
||||
QTC_CHECK(!m_referencesTable.contains(ticket));
|
||||
@@ -138,7 +140,7 @@ QFuture<CppTools::CursorInfo> IpcReceiver::addExpectedReferencesMessage(quint64
|
||||
QFutureInterface<CppTools::CursorInfo> futureInterface;
|
||||
futureInterface.reportStarted();
|
||||
|
||||
const ReferencesEntry entry{futureInterface, textDocument};
|
||||
const ReferencesEntry entry{futureInterface, textDocument, localUses};
|
||||
m_referencesTable.insert(ticket, entry);
|
||||
|
||||
return futureInterface.future();
|
||||
@@ -244,6 +246,7 @@ CppTools::CursorInfo::Range toCursorInfoRange(const QTextDocument &textDocument,
|
||||
|
||||
static
|
||||
CppTools::CursorInfo toCursorInfo(const QTextDocument &textDocument,
|
||||
const CppTools::SemanticInfo::LocalUseMap &localUses,
|
||||
const ReferencesMessage &message)
|
||||
{
|
||||
CppTools::CursorInfo result;
|
||||
@@ -254,6 +257,7 @@ CppTools::CursorInfo toCursorInfo(const QTextDocument &textDocument,
|
||||
result.useRanges.append(toCursorInfoRange(textDocument, reference));
|
||||
|
||||
result.useRanges.reserve(references.size());
|
||||
result.localUses = localUses;
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -290,7 +294,7 @@ void IpcReceiver::references(const ReferencesMessage &message)
|
||||
return; // Editor document closed or a new request was issued making this result outdated.
|
||||
|
||||
QTC_ASSERT(entry.textDocument, return);
|
||||
futureInterface.reportResult(toCursorInfo(*entry.textDocument, message));
|
||||
futureInterface.reportResult(toCursorInfo(*entry.textDocument, entry.localUses, message));
|
||||
futureInterface.reportFinished();
|
||||
}
|
||||
|
||||
@@ -730,12 +734,14 @@ QFuture<CppTools::CursorInfo> IpcCommunicator::requestReferences(
|
||||
const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
QTextDocument *textDocument)
|
||||
QTextDocument *textDocument,
|
||||
const CppTools::SemanticInfo::LocalUseMap &localUses)
|
||||
{
|
||||
const RequestReferencesMessage message(fileContainer, line, column);
|
||||
m_ipcSender->requestReferences(message);
|
||||
|
||||
return m_ipcReceiver.addExpectedReferencesMessage(message.ticketNumber(), textDocument);
|
||||
return m_ipcReceiver.addExpectedReferencesMessage(message.ticketNumber(), textDocument,
|
||||
localUses);
|
||||
}
|
||||
|
||||
QFuture<CppTools::SymbolInfo> IpcCommunicator::requestFollowSymbol(
|
||||
|
||||
@@ -76,8 +76,10 @@ public:
|
||||
void addExpectedCodeCompletedMessage(quint64 ticket, ClangCompletionAssistProcessor *processor);
|
||||
void deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *textEditorWidget);
|
||||
|
||||
QFuture<CppTools::CursorInfo> addExpectedReferencesMessage(quint64 ticket,
|
||||
QTextDocument *textDocument);
|
||||
QFuture<CppTools::CursorInfo>
|
||||
addExpectedReferencesMessage(quint64 ticket,
|
||||
QTextDocument *textDocument,
|
||||
const CppTools::SemanticInfo::LocalUseMap &localUses);
|
||||
QFuture<CppTools::SymbolInfo> addExpectedRequestFollowSymbolMessage(quint64 ticket);
|
||||
bool isExpectingCodeCompletedMessage() const;
|
||||
|
||||
@@ -102,11 +104,14 @@ private:
|
||||
struct ReferencesEntry {
|
||||
ReferencesEntry() = default;
|
||||
ReferencesEntry(QFutureInterface<CppTools::CursorInfo> futureInterface,
|
||||
QTextDocument *textDocument)
|
||||
QTextDocument *textDocument,
|
||||
const CppTools::SemanticInfo::LocalUseMap &localUses)
|
||||
: futureInterface(futureInterface)
|
||||
, textDocument(textDocument) {}
|
||||
, textDocument(textDocument)
|
||||
, localUses(localUses) {}
|
||||
QFutureInterface<CppTools::CursorInfo> futureInterface;
|
||||
QPointer<QTextDocument> textDocument;
|
||||
CppTools::SemanticInfo::LocalUseMap localUses;
|
||||
};
|
||||
QHash<quint64, ReferencesEntry> m_referencesTable;
|
||||
|
||||
@@ -155,9 +160,12 @@ public:
|
||||
void registerUnsavedFilesForEditor(const FileContainers &fileContainers);
|
||||
void unregisterUnsavedFilesForEditor(const FileContainers &fileContainers);
|
||||
void requestDocumentAnnotations(const ClangBackEnd::FileContainer &fileContainer);
|
||||
QFuture<CppTools::CursorInfo> requestReferences(const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column, QTextDocument *textDocument);
|
||||
QFuture<CppTools::CursorInfo> requestReferences(
|
||||
const FileContainer &fileContainer,
|
||||
quint32 line,
|
||||
quint32 column,
|
||||
QTextDocument *textDocument,
|
||||
const CppTools::SemanticInfo::LocalUseMap &localUses);
|
||||
QFuture<CppTools::SymbolInfo> requestFollowSymbol(const FileContainer &curFileContainer,
|
||||
const QVector<Utf8String> &dependentFiles,
|
||||
quint32 line,
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <diagnosticcontainer.h>
|
||||
#include <sourcelocationcontainer.h>
|
||||
|
||||
#include <cpptools/builtincursorinfo.h>
|
||||
#include <cpptools/clangdiagnosticconfigsmodel.h>
|
||||
#include <cpptools/clangdiagnosticconfigsmodel.h>
|
||||
#include <cpptools/compileroptionsbuilder.h>
|
||||
@@ -334,11 +335,14 @@ ClangEditorDocumentProcessor::cursorInfo(const CppTools::CursorInfoParams ¶m
|
||||
|
||||
const QTextBlock block = params.textCursor.document()->findBlockByNumber(line - 1);
|
||||
column += ClangCodeModel::Utils::extraUtf8CharsShift(block.text(), column);
|
||||
const CppTools::SemanticInfo::LocalUseMap localUses
|
||||
= CppTools::BuiltinCursorInfo::findLocalUses(params.semanticInfo.doc, line, column);
|
||||
|
||||
return m_ipcCommunicator.requestReferences(simpleFileContainer(),
|
||||
static_cast<quint32>(line),
|
||||
static_cast<quint32>(column),
|
||||
textDocument());
|
||||
textDocument(),
|
||||
localUses);
|
||||
}
|
||||
|
||||
static QVector<Utf8String> prioritizeByBaseName(const QString &curPath,
|
||||
|
||||
@@ -61,7 +61,7 @@ public:
|
||||
bool enforceNewline = false;
|
||||
bool scrollToBottom = true;
|
||||
bool linksActive = true;
|
||||
bool mousePressed = false;
|
||||
Qt::MouseButton mouseButtonPressed = Qt::NoButton;
|
||||
bool m_zoomEnabled = false;
|
||||
float m_originalFontSize = 0.;
|
||||
int maxLineCount = Core::Constants::DEFAULT_MAX_LINE_COUNT;
|
||||
@@ -134,15 +134,13 @@ OutputWindow::~OutputWindow()
|
||||
|
||||
void OutputWindow::mousePressEvent(QMouseEvent * e)
|
||||
{
|
||||
d->mousePressed = true;
|
||||
d->mouseButtonPressed = e->button();
|
||||
QPlainTextEdit::mousePressEvent(e);
|
||||
}
|
||||
|
||||
void OutputWindow::mouseReleaseEvent(QMouseEvent *e)
|
||||
{
|
||||
d->mousePressed = false;
|
||||
|
||||
if (d->linksActive) {
|
||||
if (d->linksActive && d->mouseButtonPressed == Qt::LeftButton) {
|
||||
const QString href = anchorAt(e->pos());
|
||||
if (d->formatter)
|
||||
d->formatter->handleLink(href);
|
||||
@@ -150,6 +148,7 @@ void OutputWindow::mouseReleaseEvent(QMouseEvent *e)
|
||||
|
||||
// Mouse was released, activate links again
|
||||
d->linksActive = true;
|
||||
d->mouseButtonPressed = Qt::NoButton;
|
||||
|
||||
QPlainTextEdit::mouseReleaseEvent(e);
|
||||
}
|
||||
@@ -157,7 +156,7 @@ void OutputWindow::mouseReleaseEvent(QMouseEvent *e)
|
||||
void OutputWindow::mouseMoveEvent(QMouseEvent *e)
|
||||
{
|
||||
// Cursor was dragged to make a selection, deactivate links
|
||||
if (d->mousePressed && textCursor().hasSelection())
|
||||
if (d->mouseButtonPressed != Qt::NoButton && textCursor().hasSelection())
|
||||
d->linksActive = false;
|
||||
|
||||
if (!d->linksActive || anchorAt(e->pos()).isEmpty())
|
||||
|
||||
@@ -1775,6 +1775,10 @@ void CppCodeModelInspectorDialog::updateProjectPartData(const ProjectPart::Ptr &
|
||||
= part->buildSystemTarget.isEmpty() ? QString::fromLatin1("<None>")
|
||||
: part->buildSystemTarget;
|
||||
|
||||
const QString precompiledHeaders = part->precompiledHeaders.isEmpty()
|
||||
? QString::fromLatin1("<None>")
|
||||
: part->precompiledHeaders.join(',');
|
||||
|
||||
KeyValueModel::Table table = {
|
||||
{QString::fromLatin1("Project Part Name"), part->displayName},
|
||||
{QString::fromLatin1("Project Part File"), part->projectFileLocation()},
|
||||
@@ -1782,6 +1786,7 @@ void CppCodeModelInspectorDialog::updateProjectPartData(const ProjectPart::Ptr &
|
||||
{QString::fromLatin1("Project File"), projectFilePath},
|
||||
{QString::fromLatin1("Buildsystem Target"), buildSystemTarget},
|
||||
{QString::fromLatin1("Callgroup Id"), callGroupId},
|
||||
{QString::fromLatin1("Precompiled Headers"), precompiledHeaders},
|
||||
{QString::fromLatin1("Selected For Building"), CMI::Utils::toString(part->selectedForBuilding)},
|
||||
{QString::fromLatin1("Language Version"), CMI::Utils::toString(part->languageVersion)},
|
||||
{QString::fromLatin1("Language Extensions"), CMI::Utils::toString(part->languageExtensions)},
|
||||
|
||||
@@ -47,7 +47,6 @@ using namespace CPlusPlus;
|
||||
using SemanticUses = QList<CppTools::SemanticInfo::Use>;
|
||||
|
||||
namespace CppTools {
|
||||
namespace Internal {
|
||||
namespace {
|
||||
|
||||
CursorInfo::Range toRange(const SemanticInfo::Use &use)
|
||||
@@ -186,7 +185,8 @@ private:
|
||||
{
|
||||
CursorInfo result;
|
||||
|
||||
const CppTools::SemanticInfo::LocalUseMap localUses = findLocalUses();
|
||||
const CppTools::SemanticInfo::LocalUseMap localUses
|
||||
= BuiltinCursorInfo::findLocalUses(m_document, m_line, m_column);
|
||||
result.localUses = localUses;
|
||||
splitLocalUses(localUses, &result.useRanges, &result.unusedVariablesRanges);
|
||||
|
||||
@@ -200,16 +200,6 @@ private:
|
||||
return result; // OK, result.unusedVariablesRanges will be passed on
|
||||
}
|
||||
|
||||
CppTools::SemanticInfo::LocalUseMap findLocalUses() const
|
||||
{
|
||||
AST *ast = m_document->translationUnit()->ast();
|
||||
FunctionDefinitionUnderCursor functionDefinitionUnderCursor(m_document->translationUnit());
|
||||
DeclarationAST *declaration = functionDefinitionUnderCursor(ast,
|
||||
static_cast<unsigned>(m_line),
|
||||
static_cast<unsigned>(m_column));
|
||||
return CppTools::LocalSymbols(m_document, declaration).uses;
|
||||
}
|
||||
|
||||
void splitLocalUses(const CppTools::SemanticInfo::LocalUseMap &uses,
|
||||
CursorInfo::Ranges *rangesForLocalVariableUnderCursor,
|
||||
CursorInfo::Ranges *rangesForLocalUnusedVariables) const
|
||||
@@ -365,5 +355,15 @@ QFuture<CursorInfo> BuiltinCursorInfo::run(const CursorInfoParams &cursorInfoPar
|
||||
return Utils::runAsync(&FindUses::find, document, snapshot, line, column, scope, expression);
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
CppTools::SemanticInfo::LocalUseMap
|
||||
BuiltinCursorInfo::findLocalUses(const Document::Ptr &document, int line, int column)
|
||||
{
|
||||
AST *ast = document->translationUnit()->ast();
|
||||
FunctionDefinitionUnderCursor functionDefinitionUnderCursor(document->translationUnit());
|
||||
DeclarationAST *declaration = functionDefinitionUnderCursor(ast,
|
||||
static_cast<unsigned>(line),
|
||||
static_cast<unsigned>(column));
|
||||
return CppTools::LocalSymbols(document, declaration).uses;
|
||||
}
|
||||
|
||||
} // namespace CppTools
|
||||
|
||||
@@ -26,17 +26,21 @@
|
||||
#pragma once
|
||||
|
||||
#include "cppcursorinfo.h"
|
||||
#include "cpptools_global.h"
|
||||
|
||||
#include <cplusplus/CppDocument.h>
|
||||
|
||||
#include <QFuture>
|
||||
|
||||
namespace CppTools {
|
||||
namespace Internal {
|
||||
|
||||
class BuiltinCursorInfo
|
||||
class CPPTOOLS_EXPORT BuiltinCursorInfo
|
||||
{
|
||||
public:
|
||||
static QFuture<CursorInfo> run(const CursorInfoParams ¶ms);
|
||||
|
||||
static CppTools::SemanticInfo::LocalUseMap
|
||||
findLocalUses(const CPlusPlus::Document::Ptr &document, int line, int column);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace CppTools
|
||||
|
||||
@@ -257,7 +257,7 @@ bool BuiltinEditorDocumentProcessor::isParserRunning() const
|
||||
QFuture<CursorInfo>
|
||||
BuiltinEditorDocumentProcessor::cursorInfo(const CursorInfoParams ¶ms)
|
||||
{
|
||||
return Internal::BuiltinCursorInfo::run(params);
|
||||
return BuiltinCursorInfo::run(params);
|
||||
}
|
||||
|
||||
void BuiltinEditorDocumentProcessor::onParserFinished(CPlusPlus::Document::Ptr document,
|
||||
|
||||
@@ -2119,6 +2119,7 @@ void DebuggerPlugin::attachExternalApplication(RunControl *rc)
|
||||
rp.startMode = AttachExternal;
|
||||
rp.closeMode = DetachAtClose;
|
||||
rp.toolChainAbi = rc->abi();
|
||||
rp.languages = CppLanguage;
|
||||
if (RunConfiguration *runConfig = rc->runConfiguration()) {
|
||||
auto runControl = new RunControl(runConfig, ProjectExplorer::Constants::DEBUG_RUN_MODE);
|
||||
(void) new DebuggerRunTool(runControl, rp);
|
||||
|
||||
@@ -452,16 +452,14 @@ static bool fixupParameters(DebuggerRunParameters &rp, RunControl *runControl, Q
|
||||
}
|
||||
}
|
||||
|
||||
DebuggerRunConfigurationAspect *debuggerAspect
|
||||
= runConfig->extraAspect<DebuggerRunConfigurationAspect>();
|
||||
|
||||
if (debuggerAspect) {
|
||||
if (auto debuggerAspect = runConfig->extraAspect<DebuggerRunConfigurationAspect>()) {
|
||||
rp.multiProcess = debuggerAspect->useMultiProcess();
|
||||
rp.languages = NoLanguage;
|
||||
if (debuggerAspect->useCppDebugger())
|
||||
rp.languages |= CppLanguage;
|
||||
if (debuggerAspect->useQmlDebugger())
|
||||
rp.languages |= QmlLanguage;
|
||||
if (rp.languages == NoLanguage) {
|
||||
if (debuggerAspect->useCppDebugger())
|
||||
rp.languages |= CppLanguage;
|
||||
if (debuggerAspect->useQmlDebugger())
|
||||
rp.languages |= QmlLanguage;
|
||||
}
|
||||
}
|
||||
|
||||
// This can happen e.g. when started from the command line.
|
||||
|
||||
@@ -359,14 +359,15 @@ void FlatModel::addFolderNode(WrapperNode *parent, FolderNode *folderNode, QSet<
|
||||
|
||||
bool FlatModel::trimEmptyDirectories(WrapperNode *parent)
|
||||
{
|
||||
if (!parent->m_node->asFolderNode())
|
||||
const FolderNode *fn = parent->m_node->asFolderNode();
|
||||
if (!fn)
|
||||
return false;
|
||||
|
||||
for (int i = parent->childCount() - 1; i >= 0; --i) {
|
||||
if (trimEmptyDirectories(parent->childAt(i)))
|
||||
parent->removeChildAt(i);
|
||||
}
|
||||
return parent->childCount() == 0;
|
||||
return parent->childCount() == 0 && !fn->showWhenEmpty();
|
||||
}
|
||||
|
||||
Qt::DropActions FlatModel::supportedDragActions() const
|
||||
|
||||
@@ -740,6 +740,11 @@ bool FolderNode::showInSimpleTree() const
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FolderNode::showWhenEmpty() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
\class ProjectExplorer::VirtualFolderNode
|
||||
|
||||
|
||||
@@ -282,6 +282,8 @@ public:
|
||||
|
||||
// determines if node will be shown in the flat view, by default folder and projects aren't shown
|
||||
virtual bool showInSimpleTree() const;
|
||||
// determines if node will always be shown when hiding empty directories
|
||||
virtual bool showWhenEmpty() const;
|
||||
|
||||
void addNode(Node *node);
|
||||
void removeNode(Node *node);
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <coreplugin/icontext.h>
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <QDir>
|
||||
#include <QPushButton>
|
||||
@@ -947,10 +948,29 @@ void RunControlPrivate::onWorkerFailed(RunWorker *worker, const QString &msg)
|
||||
worker->d->state = RunWorkerState::Done;
|
||||
|
||||
showError(msg);
|
||||
if (state == RunControlState::Running || state == RunControlState::Starting)
|
||||
initiateStop();
|
||||
else
|
||||
switch (state) {
|
||||
case RunControlState::Initialized:
|
||||
// FIXME 1: We don't have an output pane yet, so use some other mechanism for now.
|
||||
// FIXME 2: Translation...
|
||||
QMessageBox::critical(Core::ICore::dialogParent(),
|
||||
QCoreApplication::translate("TaskHub", "Error"),
|
||||
QString("Failure during startup. Aborting.") + "<p>" + msg);
|
||||
continueStopOrFinish();
|
||||
break;
|
||||
case RunControlState::Starting:
|
||||
case RunControlState::Running:
|
||||
initiateStop();
|
||||
break;
|
||||
case RunControlState::Stopping:
|
||||
case RunControlState::Finishing:
|
||||
continueStopOrFinish();
|
||||
break;
|
||||
case RunControlState::Stopped:
|
||||
case RunControlState::Finished:
|
||||
QTC_CHECK(false); // Should not happen.
|
||||
continueStopOrFinish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void RunControlPrivate::onWorkerStopped(RunWorker *worker)
|
||||
|
||||
@@ -1196,6 +1196,7 @@ void QmakeProject::collectLibraryData(const QmakeProFile *file, DeploymentData &
|
||||
}
|
||||
case Abi::LinuxOS:
|
||||
case Abi::BsdOS:
|
||||
case Abi::QnxOS:
|
||||
case Abi::UnixOS:
|
||||
if (!(isPlugin && config.contains(QLatin1String("no_plugin_name_prefix"))))
|
||||
targetFileName.prepend(QLatin1String("lib"));
|
||||
|
||||
@@ -492,6 +492,11 @@ bool ResourceTopLevelNode::showInSimpleTree() const
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ResourceTopLevelNode::showWhenEmpty() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
ResourceFolderNode::ResourceFolderNode(const QString &prefix, const QString &lang, ResourceTopLevelNode *parent)
|
||||
: FolderNode(FileName(parent->filePath()).appendPath(prefix)),
|
||||
// TOOD Why add existing directory doesn't work
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
|
||||
AddNewInformation addNewInformation(const QStringList &files, Node *context) const override;
|
||||
bool showInSimpleTree() const override;
|
||||
bool showWhenEmpty() const override;
|
||||
bool removeNonExistingFiles();
|
||||
|
||||
QString contents() const { return m_contents; }
|
||||
|
||||
+1
-1
Submodule src/shared/qbs updated: 998c698980...22c93d768b
@@ -87,6 +87,8 @@ void ClangCodeModelServer::registerTranslationUnitsForEditor(const ClangBackEnd:
|
||||
|
||||
try {
|
||||
auto createdDocuments = documents.create(message.fileContainers());
|
||||
for (const auto &document : createdDocuments)
|
||||
documentProcessors().create(document);
|
||||
unsavedFiles.createOrUpdate(message.fileContainers());
|
||||
documents.setUsedByCurrentEditor(message.currentEditorFilePath());
|
||||
documents.setVisibleInEditors(message.visibleEditorFilePaths());
|
||||
@@ -390,7 +392,7 @@ void ClangCodeModelServer::processSuspendResumeJobs(const std::vector<Document>
|
||||
void ClangCodeModelServer::processInitialJobsForDocuments(const std::vector<Document> &documents)
|
||||
{
|
||||
for (const auto &document : documents) {
|
||||
DocumentProcessor processor = documentProcessors().create(document);
|
||||
DocumentProcessor processor = documentProcessors().processor(document);
|
||||
processor.addJob(JobRequest::Type::UpdateDocumentAnnotations);
|
||||
processor.addJob(JobRequest::Type::CreateInitialDocumentPreamble);
|
||||
processor.process();
|
||||
|
||||
@@ -126,8 +126,18 @@ bool Operation::save(const QVariantMap &map, const QString &file) const
|
||||
|
||||
Utils::PersistentSettingsWriter writer(path, QLatin1String("QtCreator")
|
||||
+ file[0].toUpper() + file.mid(1));
|
||||
return writer.save(map, 0)
|
||||
&& QFile::setPermissions(path.toString(),
|
||||
QFile::ReadOwner | QFile::WriteOwner
|
||||
| QFile::ReadGroup | QFile::ReadOther);
|
||||
QString errorMessage;
|
||||
if (!writer.save(map, &errorMessage)) {
|
||||
std::cerr << "Error: Could not save settings " << qPrintable(path.toString())
|
||||
<< "." << std::endl;
|
||||
return false;
|
||||
}
|
||||
if (!QFile::setPermissions(path.toString(),
|
||||
QFile::ReadOwner | QFile::WriteOwner
|
||||
| QFile::ReadGroup | QFile::ReadOther)) {
|
||||
std::cerr << "Error: Could not set permissions for " << qPrintable(path.toString())
|
||||
<< "." << std::endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -76,8 +76,6 @@ def main():
|
||||
"possible to select one of the suggestions.")
|
||||
# Step 4: Insert text "voi" to new line and press Tab.
|
||||
resetLine(editorWidget)
|
||||
if useClang and JIRA.isBugStillOpen(15639):
|
||||
snooze(2)
|
||||
type(editorWidget, "voi")
|
||||
try:
|
||||
waitForObjectItem(":popupFrame_Proposal_QListView", "void")
|
||||
|
||||
@@ -48,8 +48,8 @@ def main():
|
||||
type(editorWidget, "<Return>")
|
||||
type(editorWidget, "<Up>")
|
||||
type(editorWidget, "class")
|
||||
if useClang and JIRA.isBugStillOpen(15639):
|
||||
snooze(8)
|
||||
if useClang and JIRA.isBugStillOpen(18769):
|
||||
snooze(4)
|
||||
if platform.system() == "Darwin":
|
||||
type(editorWidget, "<Meta+Space>")
|
||||
else:
|
||||
|
||||
@@ -124,8 +124,6 @@ def checkSymbolCompletion(editor, isClangCodeModel):
|
||||
missing, expectedSug, expectedRes = args
|
||||
symbol = currentLine.lstrip("/").strip()
|
||||
timeout = 2500
|
||||
if isClangCodeModel and JIRA.isBugStillOpen(15639):
|
||||
timeout = 5000
|
||||
propShown = waitFor("object.exists(':popupFrame_TextEditor::GenericProposalWidget')", timeout)
|
||||
test.compare(not propShown, symbol in missing,
|
||||
"Proposal widget is (not) shown as expected (%s)" % symbol)
|
||||
|
||||
@@ -43,8 +43,6 @@ def main():
|
||||
typeLines(cppwindow, ("<Up>", testData.field(record, "declaration")))
|
||||
type(cppwindow, testData.field(record, "usage"))
|
||||
snooze(1) # maybe find something better
|
||||
if useClang and JIRA.isBugStillOpen(15639):
|
||||
snooze(1)
|
||||
type(cppwindow, testData.field(record, "operator"))
|
||||
waitFor("object.exists(':popupFrame_TextEditor::GenericProposalWidget')", 1500)
|
||||
found = str(lineUnderCursor(cppwindow)).strip()
|
||||
|
||||
Vendored
+154
-224
@@ -1,222 +1,159 @@
|
||||
"text" "nestinglevel"
|
||||
"CMakeLists.txt" "0"
|
||||
"speedcrunch" "0"
|
||||
"confclean" "0"
|
||||
"<Build Directory>" "1"
|
||||
"CMakeFiles" "2"
|
||||
"confclean" "3"
|
||||
"confclean.rule" "3"
|
||||
"speedcrunch" "0"
|
||||
"<Source Directory>" "1"
|
||||
"core" "2"
|
||||
"book.cpp" "3"
|
||||
"constants.cpp" "3"
|
||||
"evaluator.cpp" "3"
|
||||
"functions.cpp" "3"
|
||||
"numberformatter.cpp" "3"
|
||||
"settings.cpp" "3"
|
||||
"gui" "2"
|
||||
"aboutbox.cpp" "3"
|
||||
"application.cpp" "3"
|
||||
"autohidelabel.cpp" "3"
|
||||
"bookdock.cpp" "3"
|
||||
"constantsdock.cpp" "3"
|
||||
"constantswidget.cpp" "3"
|
||||
"editor.cpp" "3"
|
||||
"functionsdock.cpp" "3"
|
||||
"functionswidget.cpp" "3"
|
||||
"historydock.cpp" "3"
|
||||
"historywidget.cpp" "3"
|
||||
"mainwindow.cpp" "3"
|
||||
"resultdisplay.cpp" "3"
|
||||
"syntaxhighlighter.cpp" "3"
|
||||
"tipwidget.cpp" "3"
|
||||
"variablelistwidget.cpp" "3"
|
||||
"variablesdock.cpp" "3"
|
||||
"math" "2"
|
||||
"floatcommon.c" "3"
|
||||
"floatconst.c" "3"
|
||||
"floatconvert.c" "3"
|
||||
"floaterf.c" "3"
|
||||
"floatexp.c" "3"
|
||||
"floatgamma.c" "3"
|
||||
"floathmath.c" "3"
|
||||
"floatio.c" "3"
|
||||
"floatipower.c" "3"
|
||||
"floatlog.c" "3"
|
||||
"floatlogic.c" "3"
|
||||
"floatlong.c" "3"
|
||||
"floatnum.c" "3"
|
||||
"floatpower.c" "3"
|
||||
"floatseries.c" "3"
|
||||
"floattrig.c" "3"
|
||||
"hmath.cpp" "3"
|
||||
"number.c" "3"
|
||||
"resources" "2"
|
||||
"speedcrunch.qrc" "3"
|
||||
"/" "4"
|
||||
"locale" "5"
|
||||
"ar_JO.qm" "6"
|
||||
"ca_ES.qm" "6"
|
||||
"cs_CZ.qm" "6"
|
||||
"de_DE.qm" "6"
|
||||
"en_GB.qm" "6"
|
||||
"en_US.qm" "6"
|
||||
"es_AR.qm" "6"
|
||||
"es_ES.qm" "6"
|
||||
"et_EE.qm" "6"
|
||||
"eu_ES.qm" "6"
|
||||
"fi_FI.qm" "6"
|
||||
"fr_FR.qm" "6"
|
||||
"he_IL.qm" "6"
|
||||
"hu_HU.qm" "6"
|
||||
"id_ID.qm" "6"
|
||||
"it_IT.qm" "6"
|
||||
"ja_JP.qm" "6"
|
||||
"ko_KR.qm" "6"
|
||||
"lv_LV.qm" "6"
|
||||
"nb_NO.qm" "6"
|
||||
"nl_NL.qm" "6"
|
||||
"pl_PL.qm" "6"
|
||||
"pt_BR.qm" "6"
|
||||
"pt_PT.qm" "6"
|
||||
"ro_RO.qm" "6"
|
||||
"ru_RU.qm" "6"
|
||||
"sv_SE.qm" "6"
|
||||
"tr_TR.qm" "6"
|
||||
"uz_UZ.qm" "6"
|
||||
"vi_VN.qm" "6"
|
||||
"zh_CN.qm" "6"
|
||||
"speedcrunch.png" "5"
|
||||
"speedcrunch.rc" "3"
|
||||
"thirdparty" "2"
|
||||
"binreloc.c" "3"
|
||||
"main.cpp" "2"
|
||||
"<Build Directory>" "1"
|
||||
"core" "2"
|
||||
"moc_book.cxx" "3"
|
||||
"moc_book.cxx.rule" "3"
|
||||
"moc_constants.cxx" "3"
|
||||
"moc_constants.cxx.rule" "3"
|
||||
"moc_evaluator.cxx" "3"
|
||||
"moc_evaluator.cxx.rule" "3"
|
||||
"moc_functions.cxx" "3"
|
||||
"moc_functions.cxx.rule" "3"
|
||||
"gui" "2"
|
||||
"moc_application.cxx" "3"
|
||||
"moc_application.cxx.rule" "3"
|
||||
"moc_autohidelabel.cxx" "3"
|
||||
"moc_autohidelabel.cxx.rule" "3"
|
||||
"moc_bookdock.cxx" "3"
|
||||
"moc_bookdock.cxx.rule" "3"
|
||||
"moc_constantsdock.cxx" "3"
|
||||
"moc_constantsdock.cxx.rule" "3"
|
||||
"moc_constantswidget.cxx" "3"
|
||||
"moc_constantswidget.cxx.rule" "3"
|
||||
"moc_editor.cxx" "3"
|
||||
"moc_editor.cxx.rule" "3"
|
||||
"moc_functionsdock.cxx" "3"
|
||||
"moc_functionsdock.cxx.rule" "3"
|
||||
"moc_functionswidget.cxx" "3"
|
||||
"moc_functionswidget.cxx.rule" "3"
|
||||
"moc_historydock.cxx" "3"
|
||||
"moc_historydock.cxx.rule" "3"
|
||||
"moc_historywidget.cxx" "3"
|
||||
"moc_historywidget.cxx.rule" "3"
|
||||
"moc_mainwindow.cxx" "3"
|
||||
"moc_mainwindow.cxx.rule" "3"
|
||||
"moc_resultdisplay.cxx" "3"
|
||||
"moc_resultdisplay.cxx.rule" "3"
|
||||
"moc_tipwidget.cxx" "3"
|
||||
"moc_tipwidget.cxx.rule" "3"
|
||||
"moc_variablelistwidget.cxx" "3"
|
||||
"moc_variablelistwidget.cxx.rule" "3"
|
||||
"moc_variablesdock.cxx" "3"
|
||||
"moc_variablesdock.cxx.rule" "3"
|
||||
"qrc_speedcrunch.cxx" "2"
|
||||
"core" "1"
|
||||
"book.cpp" "2"
|
||||
"constants.cpp" "2"
|
||||
"evaluator.cpp" "2"
|
||||
"functions.cpp" "2"
|
||||
"numberformatter.cpp" "2"
|
||||
"settings.cpp" "2"
|
||||
"gui" "1"
|
||||
"aboutbox.cpp" "2"
|
||||
"application.cpp" "2"
|
||||
"autohidelabel.cpp" "2"
|
||||
"bookdock.cpp" "2"
|
||||
"constantsdock.cpp" "2"
|
||||
"constantswidget.cpp" "2"
|
||||
"editor.cpp" "2"
|
||||
"functionsdock.cpp" "2"
|
||||
"functionswidget.cpp" "2"
|
||||
"historydock.cpp" "2"
|
||||
"historywidget.cpp" "2"
|
||||
"mainwindow.cpp" "2"
|
||||
"resultdisplay.cpp" "2"
|
||||
"syntaxhighlighter.cpp" "2"
|
||||
"tipwidget.cpp" "2"
|
||||
"variablelistwidget.cpp" "2"
|
||||
"variablesdock.cpp" "2"
|
||||
"math" "1"
|
||||
"floatcommon.c" "2"
|
||||
"floatconst.c" "2"
|
||||
"floatconvert.c" "2"
|
||||
"floaterf.c" "2"
|
||||
"floatexp.c" "2"
|
||||
"floatgamma.c" "2"
|
||||
"floathmath.c" "2"
|
||||
"floatio.c" "2"
|
||||
"floatipower.c" "2"
|
||||
"floatlog.c" "2"
|
||||
"floatlogic.c" "2"
|
||||
"floatlong.c" "2"
|
||||
"floatnum.c" "2"
|
||||
"floatpower.c" "2"
|
||||
"floatseries.c" "2"
|
||||
"floattrig.c" "2"
|
||||
"hmath.cpp" "2"
|
||||
"number.c" "2"
|
||||
"resources" "1"
|
||||
"speedcrunch.qrc" "2"
|
||||
"/" "3"
|
||||
"locale" "4"
|
||||
"ar_JO.qm" "5"
|
||||
"ca_ES.qm" "5"
|
||||
"cs_CZ.qm" "5"
|
||||
"de_DE.qm" "5"
|
||||
"en_GB.qm" "5"
|
||||
"en_US.qm" "5"
|
||||
"es_AR.qm" "5"
|
||||
"es_ES.qm" "5"
|
||||
"et_EE.qm" "5"
|
||||
"eu_ES.qm" "5"
|
||||
"fi_FI.qm" "5"
|
||||
"fr_FR.qm" "5"
|
||||
"he_IL.qm" "5"
|
||||
"hu_HU.qm" "5"
|
||||
"id_ID.qm" "5"
|
||||
"it_IT.qm" "5"
|
||||
"ja_JP.qm" "5"
|
||||
"ko_KR.qm" "5"
|
||||
"lv_LV.qm" "5"
|
||||
"nb_NO.qm" "5"
|
||||
"nl_NL.qm" "5"
|
||||
"pl_PL.qm" "5"
|
||||
"pt_BR.qm" "5"
|
||||
"pt_PT.qm" "5"
|
||||
"ro_RO.qm" "5"
|
||||
"ru_RU.qm" "5"
|
||||
"sv_SE.qm" "5"
|
||||
"tr_TR.qm" "5"
|
||||
"uz_UZ.qm" "5"
|
||||
"vi_VN.qm" "5"
|
||||
"zh_CN.qm" "5"
|
||||
"speedcrunch.png" "4"
|
||||
"speedcrunch.rc" "2"
|
||||
"thirdparty" "1"
|
||||
"binreloc.c" "2"
|
||||
"main.cpp" "1"
|
||||
"testevaluator" "0"
|
||||
"<Source Directory>" "1"
|
||||
"core" "2"
|
||||
"evaluator.cpp" "3"
|
||||
"functions.cpp" "3"
|
||||
"settings.cpp" "3"
|
||||
"math" "2"
|
||||
"floatcommon.c" "3"
|
||||
"floatconst.c" "3"
|
||||
"floatconvert.c" "3"
|
||||
"floaterf.c" "3"
|
||||
"floatexp.c" "3"
|
||||
"floatgamma.c" "3"
|
||||
"floathmath.c" "3"
|
||||
"floatio.c" "3"
|
||||
"floatipower.c" "3"
|
||||
"floatlog.c" "3"
|
||||
"floatlogic.c" "3"
|
||||
"floatlong.c" "3"
|
||||
"floatnum.c" "3"
|
||||
"floatpower.c" "3"
|
||||
"floatseries.c" "3"
|
||||
"floattrig.c" "3"
|
||||
"hmath.cpp" "3"
|
||||
"number.c" "3"
|
||||
"tests" "2"
|
||||
"testevaluator.cpp" "3"
|
||||
"<Build Directory>" "1"
|
||||
"core" "2"
|
||||
"moc_evaluator.cxx" "3"
|
||||
"moc_evaluator.cxx.rule" "3"
|
||||
"moc_functions.cxx" "3"
|
||||
"moc_functions.cxx.rule" "3"
|
||||
"core" "1"
|
||||
"evaluator.cpp" "2"
|
||||
"functions.cpp" "2"
|
||||
"settings.cpp" "2"
|
||||
"math" "1"
|
||||
"floatcommon.c" "2"
|
||||
"floatconst.c" "2"
|
||||
"floatconvert.c" "2"
|
||||
"floaterf.c" "2"
|
||||
"floatexp.c" "2"
|
||||
"floatgamma.c" "2"
|
||||
"floathmath.c" "2"
|
||||
"floatio.c" "2"
|
||||
"floatipower.c" "2"
|
||||
"floatlog.c" "2"
|
||||
"floatlogic.c" "2"
|
||||
"floatlong.c" "2"
|
||||
"floatnum.c" "2"
|
||||
"floatpower.c" "2"
|
||||
"floatseries.c" "2"
|
||||
"floattrig.c" "2"
|
||||
"hmath.cpp" "2"
|
||||
"number.c" "2"
|
||||
"tests" "1"
|
||||
"testevaluator.cpp" "2"
|
||||
"testfloatnum" "0"
|
||||
"<Source Directory>" "1"
|
||||
"math" "2"
|
||||
"floatcommon.c" "3"
|
||||
"floatconst.c" "3"
|
||||
"floatconvert.c" "3"
|
||||
"floaterf.c" "3"
|
||||
"floatexp.c" "3"
|
||||
"floatgamma.c" "3"
|
||||
"floathmath.c" "3"
|
||||
"floatio.c" "3"
|
||||
"floatipower.c" "3"
|
||||
"floatlog.c" "3"
|
||||
"floatlogic.c" "3"
|
||||
"floatlong.c" "3"
|
||||
"floatnum.c" "3"
|
||||
"floatpower.c" "3"
|
||||
"floatseries.c" "3"
|
||||
"floattrig.c" "3"
|
||||
"number.c" "3"
|
||||
"tests" "2"
|
||||
"testfloatnum.c" "3"
|
||||
"math" "1"
|
||||
"floatcommon.c" "2"
|
||||
"floatconst.c" "2"
|
||||
"floatconvert.c" "2"
|
||||
"floaterf.c" "2"
|
||||
"floatexp.c" "2"
|
||||
"floatgamma.c" "2"
|
||||
"floathmath.c" "2"
|
||||
"floatio.c" "2"
|
||||
"floatipower.c" "2"
|
||||
"floatlog.c" "2"
|
||||
"floatlogic.c" "2"
|
||||
"floatlong.c" "2"
|
||||
"floatnum.c" "2"
|
||||
"floatpower.c" "2"
|
||||
"floatseries.c" "2"
|
||||
"floattrig.c" "2"
|
||||
"number.c" "2"
|
||||
"tests" "1"
|
||||
"testfloatnum.c" "2"
|
||||
"testhmath" "0"
|
||||
"<Source Directory>" "1"
|
||||
"math" "2"
|
||||
"floatcommon.c" "3"
|
||||
"floatconst.c" "3"
|
||||
"floatconvert.c" "3"
|
||||
"floaterf.c" "3"
|
||||
"floatexp.c" "3"
|
||||
"floatgamma.c" "3"
|
||||
"floathmath.c" "3"
|
||||
"floatio.c" "3"
|
||||
"floatipower.c" "3"
|
||||
"floatlog.c" "3"
|
||||
"floatlogic.c" "3"
|
||||
"floatlong.c" "3"
|
||||
"floatnum.c" "3"
|
||||
"floatpower.c" "3"
|
||||
"floatseries.c" "3"
|
||||
"floattrig.c" "3"
|
||||
"hmath.cpp" "3"
|
||||
"number.c" "3"
|
||||
"tests" "2"
|
||||
"testhmath.cpp" "3"
|
||||
"uninstall" "0"
|
||||
"<Build Directory>" "1"
|
||||
"CMakeFiles" "2"
|
||||
"uninstall" "3"
|
||||
"uninstall.rule" "3"
|
||||
"math" "1"
|
||||
"floatcommon.c" "2"
|
||||
"floatconst.c" "2"
|
||||
"floatconvert.c" "2"
|
||||
"floaterf.c" "2"
|
||||
"floatexp.c" "2"
|
||||
"floatgamma.c" "2"
|
||||
"floathmath.c" "2"
|
||||
"floatio.c" "2"
|
||||
"floatipower.c" "2"
|
||||
"floatlog.c" "2"
|
||||
"floatlogic.c" "2"
|
||||
"floatlong.c" "2"
|
||||
"floatnum.c" "2"
|
||||
"floatpower.c" "2"
|
||||
"floatseries.c" "2"
|
||||
"floattrig.c" "2"
|
||||
"hmath.cpp" "2"
|
||||
"number.c" "2"
|
||||
"tests" "1"
|
||||
"testhmath.cpp" "2"
|
||||
"<Headers>" "0"
|
||||
"core" "1"
|
||||
"book.h" "2"
|
||||
@@ -268,14 +205,7 @@
|
||||
"thirdparty" "1"
|
||||
"binreloc.h" "2"
|
||||
"CMake Modules" "0"
|
||||
"<Source Directory>" "1"
|
||||
"cmake_uninstall.cmake.in" "2"
|
||||
"SourceFiles.cmake" "2"
|
||||
"resources" "2"
|
||||
"speedcrunch.qrc" "3"
|
||||
"<Build Directory>" "1"
|
||||
"CMakeFiles" "2"
|
||||
"feature_tests.cxx" "3"
|
||||
"CMakeCCompiler.cmake" "4"
|
||||
"CMakeCXXCompiler.cmake" "4"
|
||||
"CMakeSystem.cmake" "4"
|
||||
"cmake_uninstall.cmake.in" "1"
|
||||
"SourceFiles.cmake" "1"
|
||||
"resources" "1"
|
||||
"speedcrunch.qrc" "2"
|
||||
|
||||
|
-216
File diff suppressed because it is too large
Load Diff
-2
@@ -440,7 +440,6 @@
|
||||
"tpl_collection.h" "6"
|
||||
"tpl_plugin.pro" "6"
|
||||
"tpl_resources.qrc" "6"
|
||||
"/" "7"
|
||||
"tpl_single.cpp" "6"
|
||||
"tpl_single.h" "6"
|
||||
"tpl_widget.cpp" "6"
|
||||
@@ -1088,7 +1087,6 @@
|
||||
"tpl_collection.h" "6"
|
||||
"tpl_plugin.pro" "6"
|
||||
"tpl_resources.qrc" "6"
|
||||
"/" "7"
|
||||
"tpl_single.cpp" "6"
|
||||
"tpl_single.h" "6"
|
||||
"tpl_widget.cpp" "6"
|
||||
|
||||
|
Reference in New Issue
Block a user