Merge remote-tracking branch 'origin/2.6'
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 692 B |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 14 KiB |
@@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
\o Select \gui {Projects > Code Style Settings}.
|
\o Select \gui {Projects > Code Style Settings}.
|
||||||
|
|
||||||
\o In the \gui Language field, select \gui C++ or \gui Qt Quick.
|
\o In the \gui Language field, select \gui C++ or \gui {Qt Quick}.
|
||||||
|
|
||||||
\o In the \gui {Current settings} field, select the settings to modify
|
\o In the \gui {Current settings} field, select the settings to modify
|
||||||
and click \gui Copy.
|
and click \gui Copy.
|
||||||
|
|||||||
@@ -42,14 +42,12 @@
|
|||||||
|
|
||||||
\image qtcreator-project-targets.png
|
\image qtcreator-project-targets.png
|
||||||
|
|
||||||
You can add a target if the development environment for the target platform
|
To add build and run targets for the project, select \gui Add. The list
|
||||||
is installed on the development PC and the target is configured in
|
displays targets that are configured in \gui Tools > \gui Options >
|
||||||
\gui Tools > \gui Options > \gui {Build & Run} > \gui Targets.
|
\gui {Build & Run} > \gui Targets. To add targets to the list, select
|
||||||
|
\gui Manage.
|
||||||
|
|
||||||
Click
|
To remove a target, hover the cursor over it (1) and click
|
||||||
\inlineimage qtcreator-qt4-addbutton.png "Add Target button"
|
|
||||||
and select from a list of available targets. To remove a target, select it
|
|
||||||
and click
|
|
||||||
\inlineimage qtcreator-target-remove.png "Remove Target button"
|
\inlineimage qtcreator-target-remove.png "Remove Target button"
|
||||||
.
|
.
|
||||||
|
|
||||||
@@ -70,10 +68,7 @@
|
|||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\note If you have installed the development environment for only
|
\note If you have not configured the project for building, the
|
||||||
one target, the \gui Targets tab is replaced by a \gui Build
|
|
||||||
tab and a \gui Run tab.
|
|
||||||
If you have not configured the project for building, the
|
|
||||||
\gui Targets tab is replaced by the \l{Opening Projects}
|
\gui Targets tab is replaced by the \l{Opening Projects}
|
||||||
{Configure Projects} tab.
|
{Configure Projects} tab.
|
||||||
|
|
||||||
|
|||||||
@@ -84,10 +84,6 @@
|
|||||||
Even if you use the Qt Quick Components, you can still write cross-platform
|
Even if you use the Qt Quick Components, you can still write cross-platform
|
||||||
applications, by using different sets of QML files for each platform.
|
applications, by using different sets of QML files for each platform.
|
||||||
|
|
||||||
You can dowload a set of commonly used UI-components for generic use in
|
|
||||||
Qt Quick projects from \l{https://projects.forum.nokia.com/QMLTemplates}
|
|
||||||
{QML Templates}. You can open and edit the templates in \QD.
|
|
||||||
|
|
||||||
\section1 Creating Components in Qt Quick Designer
|
\section1 Creating Components in Qt Quick Designer
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
|
|||||||
4
src/libs/3rdparty/botan/botan.pro
vendored
@@ -3,11 +3,11 @@ TARGET = Botan
|
|||||||
|
|
||||||
PRECOMPILED_HEADER = ../precompiled_headers/botan_pch.h
|
PRECOMPILED_HEADER = ../precompiled_headers/botan_pch.h
|
||||||
|
|
||||||
include(../../../qtcreatorlibrary.pri)
|
|
||||||
|
|
||||||
CONFIG += exceptions
|
CONFIG += exceptions
|
||||||
CONFIG += release
|
CONFIG += release
|
||||||
CONFIG -= debug
|
CONFIG -= debug debug_and_release
|
||||||
|
include(../../../qtcreatorlibrary.pri)
|
||||||
|
|
||||||
DEPENDPATH += .
|
DEPENDPATH += .
|
||||||
INCLUDEPATH += .
|
INCLUDEPATH += .
|
||||||
|
|||||||
18
src/libs/3rdparty/cplusplus/Lexer.cpp
vendored
@@ -579,26 +579,20 @@ void Lexer::scan_helper(Token *tok)
|
|||||||
} else if (_yychar == '\'') {
|
} else if (_yychar == '\'') {
|
||||||
yyinp();
|
yyinp();
|
||||||
scanCharLiteral(tok, ch);
|
scanCharLiteral(tok, ch);
|
||||||
} else {
|
} else if (ch == 'u' && _yychar == '8') {
|
||||||
if (_yychar == '8') {
|
|
||||||
unsigned char la = 0;
|
|
||||||
if (_currentChar + 1 != _lastChar)
|
|
||||||
la = *(_currentChar + 1);
|
|
||||||
if (la == '"') {
|
|
||||||
yyinp();
|
yyinp();
|
||||||
|
if (_yychar == '"') {
|
||||||
yyinp();
|
yyinp();
|
||||||
scanStringLiteral(tok, '8');
|
scanStringLiteral(tok, '8');
|
||||||
} else if (la == '\'') {
|
} else if (_yychar == '\'') {
|
||||||
yyinp();
|
|
||||||
yyinp();
|
yyinp();
|
||||||
scanCharLiteral(tok, '8');
|
scanCharLiteral(tok, '8');
|
||||||
} else {
|
} else {
|
||||||
scanIdentifier(tok);
|
scanIdentifier(tok, 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
scanIdentifier(tok);
|
scanIdentifier(tok);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else if (std::isalpha(ch) || ch == '_' || ch == '$') {
|
} else if (std::isalpha(ch) || ch == '_' || ch == '$') {
|
||||||
scanIdentifier(tok);
|
scanIdentifier(tok);
|
||||||
} else if (std::isdigit(ch)) {
|
} else if (std::isdigit(ch)) {
|
||||||
@@ -693,9 +687,9 @@ void Lexer::scanNumericLiteral(Token *tok)
|
|||||||
tok->number = control()->numericLiteral(yytext, yylen);
|
tok->number = control()->numericLiteral(yytext, yylen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Lexer::scanIdentifier(Token *tok)
|
void Lexer::scanIdentifier(Token *tok, unsigned extraProcessedChars)
|
||||||
{
|
{
|
||||||
const char *yytext = _currentChar - 1;
|
const char *yytext = _currentChar - 1 - extraProcessedChars;
|
||||||
while (std::isalnum(_yychar) || _yychar == '_' || _yychar == '$')
|
while (std::isalnum(_yychar) || _yychar == '_' || _yychar == '$')
|
||||||
yyinp();
|
yyinp();
|
||||||
int yylen = _currentChar - yytext;
|
int yylen = _currentChar - yytext;
|
||||||
|
|||||||
2
src/libs/3rdparty/cplusplus/Lexer.h
vendored
@@ -94,7 +94,7 @@ private:
|
|||||||
void scanCharLiteral(Token *tok, unsigned char hint = 0);
|
void scanCharLiteral(Token *tok, unsigned char hint = 0);
|
||||||
void scanUntilQuote(Token *tok, unsigned char quote);
|
void scanUntilQuote(Token *tok, unsigned char quote);
|
||||||
void scanNumericLiteral(Token *tok);
|
void scanNumericLiteral(Token *tok);
|
||||||
void scanIdentifier(Token *tok);
|
void scanIdentifier(Token *tok, unsigned extraProcessedChars = 0);
|
||||||
|
|
||||||
inline void yyinp()
|
inline void yyinp()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ bool SaveFile::commit()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
FlushFileBuffers(handle());
|
FlushFileBuffers(reinterpret_cast<HANDLE>(handle()));
|
||||||
#else
|
#else
|
||||||
fdatasync(handle());
|
fdatasync(handle());
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
#if defined(Q_OS_WIN) && defined(Q_CC_MINGW)
|
#if defined(Q_OS_WIN) && defined(Q_CC_MINGW)
|
||||||
|
|
||||||
// Missing declarations for MinGW. This requires MinGW with gcc 4.6.
|
// Missing declarations for MinGW. This requires MinGW with gcc 4.6.
|
||||||
#if __GNUC__ == 4 && __GNUC_MINOR__ < 7
|
#if __GNUC__ == 4 && __GNUC_MINOR__ < 7 && (!defined(__MINGW64_VERSION_MAJOR) || __MINGW64_VERSION_MAJOR < 2)
|
||||||
typedef enum { } MIB_TCP_STATE;
|
typedef enum { } MIB_TCP_STATE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -167,21 +167,36 @@ QVariant DebuggerProfileInformation::defaultValue(Profile *p) const
|
|||||||
|
|
||||||
QList<Task> DebuggerProfileInformation::validate(Profile *p) const
|
QList<Task> DebuggerProfileInformation::validate(Profile *p) const
|
||||||
{
|
{
|
||||||
|
const Core::Id id(Constants::TASK_CATEGORY_BUILDSYSTEM);
|
||||||
QList<Task> result;
|
QList<Task> result;
|
||||||
FileName dbg = debuggerCommand(p);
|
FileName dbg = debuggerCommand(p);
|
||||||
if (dbg.isEmpty()) {
|
if (dbg.isEmpty()) {
|
||||||
result << Task(Task::Warning, tr("No debugger set up."), FileName(), -1,
|
result << Task(Task::Warning, tr("No debugger set up."), FileName(), -1, id);
|
||||||
Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFileInfo fi = dbg.toFileInfo();
|
QFileInfo fi = dbg.toFileInfo();
|
||||||
if (!fi.exists() || fi.isDir())
|
if (!fi.exists() || fi.isDir())
|
||||||
result << Task(Task::Error, tr("Debugger not found."), FileName(), -1,
|
result << Task(Task::Error, tr("Debugger not found."), FileName(), -1, id);
|
||||||
Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
|
|
||||||
else if (!fi.isExecutable())
|
else if (!fi.isExecutable())
|
||||||
result << Task(Task::Error, tr("Debugger not exectutable."), FileName(), -1,
|
result << Task(Task::Error, tr("Debugger not exectutable."), FileName(), -1, id);
|
||||||
Core::Id(Constants::TASK_CATEGORY_BUILDSYSTEM));
|
|
||||||
|
if (ToolChain *tc = ToolChainProfileInformation::toolChain(p)) {
|
||||||
|
// We need an absolute path to be able to locate Python on Windows.
|
||||||
|
const Abi abi = tc->targetAbi();
|
||||||
|
if (abi.os() == Abi::WindowsOS && !fi.isAbsolute()) {
|
||||||
|
result << Task(Task::Error, tr("The debugger location must be given as an "
|
||||||
|
"absolute path (%1).").arg(dbg.toString()), FileName(), -1, id);
|
||||||
|
}
|
||||||
|
// FIXME: Make sure debugger matches toolchain.
|
||||||
|
// if (isCdb()) {
|
||||||
|
// if (abi.binaryFormat() != Abi::PEFormat || abi.os() != Abi::WindowsOS) {
|
||||||
|
// result << Task(Tas->errorDetails.push_back(CdbEngine::tr("The CDB debug engine does not support the %1 ABI.").
|
||||||
|
// arg(abi.toString()));
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,16 +49,6 @@
|
|||||||
|
|
||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
TRANSLATOR ResourceEditor::ResourceModel
|
|
||||||
*/
|
|
||||||
|
|
||||||
static QString msgFileNameEmpty()
|
|
||||||
{
|
|
||||||
return QCoreApplication::translate("Designer", "The file name is empty.");
|
|
||||||
}
|
|
||||||
|
|
||||||
using namespace ResourceEditor;
|
using namespace ResourceEditor;
|
||||||
using namespace ResourceEditor::Internal;
|
using namespace ResourceEditor::Internal;
|
||||||
|
|
||||||
@@ -126,7 +116,7 @@ bool ResourceFile::load()
|
|||||||
m_error_message.clear();
|
m_error_message.clear();
|
||||||
|
|
||||||
if (m_file_name.isEmpty()) {
|
if (m_file_name.isEmpty()) {
|
||||||
m_error_message = msgFileNameEmpty();
|
m_error_message = tr("The file name is empty.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,14 +133,14 @@ bool ResourceFile::load()
|
|||||||
QString error_msg;
|
QString error_msg;
|
||||||
int error_line, error_col;
|
int error_line, error_col;
|
||||||
if (!doc.setContent(&file, &error_msg, &error_line, &error_col)) {
|
if (!doc.setContent(&file, &error_msg, &error_line, &error_col)) {
|
||||||
m_error_message = QCoreApplication::translate("Designer", "XML error on line %1, col %2: %3")
|
m_error_message = tr("XML error on line %1, col %2: %3")
|
||||||
.arg(error_line).arg(error_col).arg(error_msg);
|
.arg(error_line).arg(error_col).arg(error_msg);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDomElement root = doc.firstChildElement(QLatin1String("RCC"));
|
QDomElement root = doc.firstChildElement(QLatin1String("RCC"));
|
||||||
if (root.isNull()) {
|
if (root.isNull()) {
|
||||||
m_error_message = QCoreApplication::translate("Designer", "The <RCC> root element is missing.");
|
m_error_message = tr("The <RCC> root element is missing.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,7 +179,7 @@ bool ResourceFile::save()
|
|||||||
m_error_message.clear();
|
m_error_message.clear();
|
||||||
|
|
||||||
if (m_file_name.isEmpty()) {
|
if (m_file_name.isEmpty()) {
|
||||||
m_error_message = msgFileNameEmpty();
|
m_error_message = tr("The file name is empty.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,7 +228,7 @@ bool ResourceFile::save()
|
|||||||
#if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
|
#if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
|
||||||
stream.flush();
|
stream.flush();
|
||||||
if (stream.status() != QTextStream::Ok) {
|
if (stream.status() != QTextStream::Ok) {
|
||||||
m_error_message = QCoreApplication::translate("Designer", "Cannot write file. Disk full?");
|
m_error_message = tr("Cannot write file. Disk full?");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
#define RESOURCEFILE_P_H
|
#define RESOURCEFILE_P_H
|
||||||
|
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
|
#include <QCoreApplication>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
@@ -123,6 +124,7 @@ typedef QList<Prefix *> PrefixList;
|
|||||||
*/
|
*/
|
||||||
class ResourceFile
|
class ResourceFile
|
||||||
{
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(ResourceFile)
|
||||||
public:
|
public:
|
||||||
ResourceFile(const QString &file_name = QString());
|
ResourceFile(const QString &file_name = QString());
|
||||||
~ResourceFile();
|
~ResourceFile();
|
||||||
|
|||||||