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:
Eike Ziller
2017-08-23 12:12:41 +02:00
70 changed files with 495 additions and 707 deletions
+2 -2
View File
@@ -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.
+1 -1
View File
@@ -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
+8 -3
View File
@@ -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,
+2 -2
View File
@@ -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.
+1
View File
@@ -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.
*/
+1 -1
View File
@@ -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}
+1 -1
View File
@@ -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}
+4 -3
View File
@@ -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
+13 -6
View File
@@ -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
+5 -11
View File
@@ -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
*/
+2 -2
View File
@@ -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.
+1 -2
View File
@@ -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
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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
+2 -3
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+2 -1
View File
@@ -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:
-76
View File
@@ -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
*/
+15 -2
View File
@@ -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) {
+1
View File
@@ -60,6 +60,7 @@ private:
bool checkForPluginOption();
bool checkForProfilingOption();
bool checkForUnknownOption();
void forceDisableAllPluginsExceptTestedAndForceEnabled();
enum TokenType { OptionalToken, RequiredToken };
bool nextToken(TokenType type = OptionalToken);
+9 -31
View File
@@ -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));
}
}
+1 -1
View File
@@ -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);
+10 -4
View File
@@ -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;
}
/*!
+1 -1
View File
@@ -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);
+9 -4
View File
@@ -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)
{
+4 -1
View File
@@ -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);
+7 -4
View File
@@ -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
}
+24 -5
View File
@@ -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;
}
+4 -1
View File
@@ -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;
+1 -1
View File
@@ -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 &param
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,
+5 -6
View File
@@ -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)},
+13 -13
View File
@@ -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
+7 -3
View File
@@ -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 &params);
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 &params)
{
return Internal::BuiltinCursorInfo::run(params);
return BuiltinCursorInfo::run(params);
}
void BuiltinEditorDocumentProcessor::onParserFinished(CPlusPlus::Document::Ptr document,
+1
View File
@@ -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);
+7 -9
View File
@@ -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; }
@@ -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();
+14 -4
View File
@@ -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")
+2 -2
View File
@@ -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()
@@ -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"
1 text nestinglevel
2 CMakeLists.txt 0
3 speedcrunch 0
4 confclean core 0 1
5 <Build Directory> book.cpp 1 2
6 CMakeFiles constants.cpp 2
7 confclean evaluator.cpp 3 2
8 confclean.rule functions.cpp 3 2
9 speedcrunch numberformatter.cpp 0 2
10 <Source Directory> settings.cpp 1 2
11 core gui 2 1
12 book.cpp aboutbox.cpp 3 2
13 constants.cpp application.cpp 3 2
14 evaluator.cpp autohidelabel.cpp 3 2
15 functions.cpp bookdock.cpp 3 2
16 numberformatter.cpp constantsdock.cpp 3 2
17 settings.cpp constantswidget.cpp 3 2
18 gui editor.cpp 2
19 aboutbox.cpp functionsdock.cpp 3 2
20 application.cpp functionswidget.cpp 3 2
21 autohidelabel.cpp historydock.cpp 3 2
22 bookdock.cpp historywidget.cpp 3 2
23 constantsdock.cpp mainwindow.cpp 3 2
24 constantswidget.cpp resultdisplay.cpp 3 2
25 editor.cpp syntaxhighlighter.cpp 3 2
26 functionsdock.cpp tipwidget.cpp 3 2
27 functionswidget.cpp variablelistwidget.cpp 3 2
28 historydock.cpp variablesdock.cpp 3 2
29 historywidget.cpp math 3 1
30 mainwindow.cpp floatcommon.c 3 2
31 resultdisplay.cpp floatconst.c 3 2
32 syntaxhighlighter.cpp floatconvert.c 3 2
33 tipwidget.cpp floaterf.c 3 2
34 variablelistwidget.cpp floatexp.c 3 2
35 variablesdock.cpp floatgamma.c 3 2
36 math floathmath.c 2
37 floatcommon.c floatio.c 3 2
38 floatconst.c floatipower.c 3 2
39 floatconvert.c floatlog.c 3 2
40 floaterf.c floatlogic.c 3 2
41 floatexp.c floatlong.c 3 2
42 floatgamma.c floatnum.c 3 2
43 floathmath.c floatpower.c 3 2
44 floatio.c floatseries.c 3 2
45 floatipower.c floattrig.c 3 2
46 floatlog.c hmath.cpp 3 2
47 floatlogic.c number.c 3 2
48 floatlong.c resources 3 1
49 floatnum.c speedcrunch.qrc 3 2
50 floatpower.c / 3
51 floatseries.c locale 3 4
52 floattrig.c ar_JO.qm 3 5
53 hmath.cpp ca_ES.qm 3 5
54 number.c cs_CZ.qm 3 5
55 resources de_DE.qm 2 5
56 speedcrunch.qrc en_GB.qm 3 5
57 / en_US.qm 4 5
58 locale es_AR.qm 5
59 ar_JO.qm es_ES.qm 6 5
60 ca_ES.qm et_EE.qm 6 5
61 cs_CZ.qm eu_ES.qm 6 5
62 de_DE.qm fi_FI.qm 6 5
63 en_GB.qm fr_FR.qm 6 5
64 en_US.qm he_IL.qm 6 5
65 es_AR.qm hu_HU.qm 6 5
66 es_ES.qm id_ID.qm 6 5
67 et_EE.qm it_IT.qm 6 5
68 eu_ES.qm ja_JP.qm 6 5
69 fi_FI.qm ko_KR.qm 6 5
70 fr_FR.qm lv_LV.qm 6 5
71 he_IL.qm nb_NO.qm 6 5
72 hu_HU.qm nl_NL.qm 6 5
73 id_ID.qm pl_PL.qm 6 5
74 it_IT.qm pt_BR.qm 6 5
75 ja_JP.qm pt_PT.qm 6 5
76 ko_KR.qm ro_RO.qm 6 5
77 lv_LV.qm ru_RU.qm 6 5
78 nb_NO.qm sv_SE.qm 6 5
79 nl_NL.qm tr_TR.qm 6 5
80 pl_PL.qm uz_UZ.qm 6 5
81 pt_BR.qm vi_VN.qm 6 5
82 pt_PT.qm zh_CN.qm 6 5
83 ro_RO.qm speedcrunch.png 6 4
84 ru_RU.qm speedcrunch.rc 6 2
85 sv_SE.qm thirdparty 6 1
86 tr_TR.qm binreloc.c 6 2
87 uz_UZ.qm main.cpp 6 1
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
88 testevaluator 0
89 <Source Directory> core 1
90 core evaluator.cpp 2
91 evaluator.cpp functions.cpp 3 2
92 functions.cpp settings.cpp 3 2
93 settings.cpp math 3 1
94 math floatcommon.c 2
95 floatcommon.c floatconst.c 3 2
96 floatconst.c floatconvert.c 3 2
97 floatconvert.c floaterf.c 3 2
98 floaterf.c floatexp.c 3 2
99 floatexp.c floatgamma.c 3 2
100 floatgamma.c floathmath.c 3 2
101 floathmath.c floatio.c 3 2
102 floatio.c floatipower.c 3 2
103 floatipower.c floatlog.c 3 2
104 floatlog.c floatlogic.c 3 2
105 floatlogic.c floatlong.c 3 2
106 floatlong.c floatnum.c 3 2
107 floatnum.c floatpower.c 3 2
108 floatpower.c floatseries.c 3 2
109 floatseries.c floattrig.c 3 2
110 floattrig.c hmath.cpp 3 2
111 hmath.cpp number.c 3 2
112 number.c tests 3 1
113 tests testevaluator.cpp 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
114 testfloatnum 0
115 <Source Directory> math 1
116 math floatcommon.c 2
117 floatcommon.c floatconst.c 3 2
118 floatconst.c floatconvert.c 3 2
119 floatconvert.c floaterf.c 3 2
120 floaterf.c floatexp.c 3 2
121 floatexp.c floatgamma.c 3 2
122 floatgamma.c floathmath.c 3 2
123 floathmath.c floatio.c 3 2
124 floatio.c floatipower.c 3 2
125 floatipower.c floatlog.c 3 2
126 floatlog.c floatlogic.c 3 2
127 floatlogic.c floatlong.c 3 2
128 floatlong.c floatnum.c 3 2
129 floatnum.c floatpower.c 3 2
130 floatpower.c floatseries.c 3 2
131 floatseries.c floattrig.c 3 2
132 floattrig.c number.c 3 2
133 number.c tests 3 1
134 tests testfloatnum.c 2
testfloatnum.c 3
135 testhmath 0
136 <Source Directory> math 1
137 math floatcommon.c 2
138 floatcommon.c floatconst.c 3 2
139 floatconst.c floatconvert.c 3 2
140 floatconvert.c floaterf.c 3 2
141 floaterf.c floatexp.c 3 2
142 floatexp.c floatgamma.c 3 2
143 floatgamma.c floathmath.c 3 2
144 floathmath.c floatio.c 3 2
145 floatio.c floatipower.c 3 2
146 floatipower.c floatlog.c 3 2
147 floatlog.c floatlogic.c 3 2
148 floatlogic.c floatlong.c 3 2
149 floatlong.c floatnum.c 3 2
150 floatnum.c floatpower.c 3 2
151 floatpower.c floatseries.c 3 2
152 floatseries.c floattrig.c 3 2
153 floattrig.c hmath.cpp 3 2
154 hmath.cpp number.c 3 2
155 number.c tests 3 1
156 tests testhmath.cpp 2
testhmath.cpp 3
uninstall 0
<Build Directory> 1
CMakeFiles 2
uninstall 3
uninstall.rule 3
157 <Headers> 0
158 core 1
159 book.h 2
205 thirdparty 1
206 binreloc.h 2
207 CMake Modules 0
208 <Source Directory> cmake_uninstall.cmake.in 1
209 cmake_uninstall.cmake.in SourceFiles.cmake 2 1
210 SourceFiles.cmake resources 2 1
211 resources speedcrunch.qrc 2
speedcrunch.qrc 3
<Build Directory> 1
CMakeFiles 2
feature_tests.cxx 3
CMakeCCompiler.cmake 4
CMakeCXXCompiler.cmake 4
CMakeSystem.cmake 4
File diff suppressed because it is too large Load Diff
@@ -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"
1 text nestinglevel
440 tpl_collection.h 6
441 tpl_plugin.pro 6
442 tpl_resources.qrc 6
/ 7
443 tpl_single.cpp 6
444 tpl_single.h 6
445 tpl_widget.cpp 6
1087 tpl_collection.h 6
1088 tpl_plugin.pro 6
1089 tpl_resources.qrc 6
/ 7
1090 tpl_single.cpp 6
1091 tpl_single.h 6
1092 tpl_widget.cpp 6