Hide warnings, minimal requirements for build is Qt 5.0.0.
--HG-- branch : develop
This commit is contained in:
parent
e1e995abe7
commit
30f6aea194
|
@ -150,7 +150,7 @@ GCC_DEBUG_CXXFLAGS += \
|
||||||
-Wmissing-format-attribute \
|
-Wmissing-format-attribute \
|
||||||
-Wswitch-default \
|
-Wswitch-default \
|
||||||
-Wuninitialized \
|
-Wuninitialized \
|
||||||
-Wvariadic-macros \
|
-Wno-variadic-macros \
|
||||||
-Wlogical-op \
|
-Wlogical-op \
|
||||||
-Wnoexcept \
|
-Wnoexcept \
|
||||||
-Wmissing-noreturn \
|
-Wmissing-noreturn \
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
include(Valentina.pri)
|
include(Valentina.pri)
|
||||||
|
|
||||||
#Check if Qt version >= 5.2.0
|
#Check if Qt version >= 5.0.0
|
||||||
!minQtVersion(5, 2, 0) {
|
!minQtVersion(5, 2, 0) {
|
||||||
message("Cannot build Valentina with Qt version $${QT_VERSION}.")
|
message("Cannot build Valentina with Qt version $${QT_VERSION}.")
|
||||||
error("Use at least Qt 5.2.0.")
|
error("Use at least Qt 5.0.0.")
|
||||||
}
|
}
|
||||||
|
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
|
|
|
@ -46,6 +46,7 @@ UI_DIR = uic
|
||||||
|
|
||||||
# Suport subdirectories. Just better project code tree.
|
# Suport subdirectories. Just better project code tree.
|
||||||
include(app.pri)
|
include(app.pri)
|
||||||
|
include(../utils/utils.pri)
|
||||||
|
|
||||||
# This include path help promoute VMainGraphicsView on main window. Without it compiler can't find path to custom view
|
# This include path help promoute VMainGraphicsView on main window. Without it compiler can't find path to custom view
|
||||||
INCLUDEPATH += "$${PWD}/widgets"
|
INCLUDEPATH += "$${PWD}/widgets"
|
||||||
|
|
|
@ -27,13 +27,14 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "vcontainer.h"
|
#include "vcontainer.h"
|
||||||
#include <QDebug>
|
|
||||||
#include "../core/vapplication.h"
|
#include "../core/vapplication.h"
|
||||||
#include "../geometry/varc.h"
|
#include "../geometry/varc.h"
|
||||||
#include "../geometry/vsplinepath.h"
|
#include "../geometry/vsplinepath.h"
|
||||||
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
#include <QLineF>
|
#include <QLineF>
|
||||||
#include <QtAlgorithms>
|
#include <QtAlgorithms>
|
||||||
#include <QLoggingCategory>
|
#include <QDebug>
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(vCon, "v.container")
|
Q_LOGGING_CATEGORY(vCon, "v.container")
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,13 @@
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$PWD/vapplication.h \
|
$$PWD/vapplication.h \
|
||||||
$$PWD/undoevent.h \
|
$$PWD/undoevent.h \
|
||||||
$$PWD/vsettings.h
|
$$PWD/vsettings.h \
|
||||||
|
$$PWD/qcommandlineoption.h \
|
||||||
|
$$PWD/qcommandlineparser.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/vapplication.cpp \
|
$$PWD/vapplication.cpp \
|
||||||
$$PWD/undoevent.cpp \
|
$$PWD/undoevent.cpp \
|
||||||
$$PWD/vsettings.cpp
|
$$PWD/vsettings.cpp \
|
||||||
|
$$PWD/qcommandlineoption.cpp \
|
||||||
|
$$PWD/qcommandlineparser.cpp
|
||||||
|
|
381
src/app/core/qcommandlineoption.cpp
Normal file
381
src/app/core/qcommandlineoption.cpp
Normal file
|
@ -0,0 +1,381 @@
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
|
||||||
|
** Copyright (C) 2013 David Faure <faure@kde.org>
|
||||||
|
** Contact: http://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL21$
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 or version 3 as published by the Free
|
||||||
|
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||||
|
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||||
|
** following information to ensure the GNU Lesser General Public License
|
||||||
|
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||||
|
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "qcommandlineoption.h"
|
||||||
|
|
||||||
|
#include "qset.h"
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
class QCommandLineOptionPrivate : public QSharedData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
inline QCommandLineOptionPrivate()
|
||||||
|
: hidden(false)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void setNames(const QStringList &nameList);
|
||||||
|
|
||||||
|
//! The list of names used for this option.
|
||||||
|
QStringList names;
|
||||||
|
|
||||||
|
//! The documentation name for the value, if one is expected
|
||||||
|
//! Example: "-o <file>" means valueName == "file"
|
||||||
|
QString valueName;
|
||||||
|
|
||||||
|
//! The description used for this option.
|
||||||
|
QString description;
|
||||||
|
|
||||||
|
//! The list of default values used for this option.
|
||||||
|
QStringList defaultValues;
|
||||||
|
|
||||||
|
//! Show or hide in --help
|
||||||
|
bool hidden;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\since 5.2
|
||||||
|
\class QCommandLineOption
|
||||||
|
\brief The QCommandLineOption class defines a possible command-line option.
|
||||||
|
\inmodule QtCore
|
||||||
|
\ingroup shared
|
||||||
|
\ingroup tools
|
||||||
|
|
||||||
|
This class is used to describe an option on the command line. It allows
|
||||||
|
different ways of defining the same option with multiple aliases possible.
|
||||||
|
It is also used to describe how the option is used - it may be a flag (e.g. \c{-v})
|
||||||
|
or take a value (e.g. \c{-o file}).
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
\snippet code/src_corelib_tools_qcommandlineoption.cpp 0
|
||||||
|
|
||||||
|
\sa QCommandLineParser
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn QCommandLineOption &QCommandLineOption::operator=(QCommandLineOption &&other)
|
||||||
|
|
||||||
|
Move-assigns \a other to this QCommandLineOption instance.
|
||||||
|
|
||||||
|
\since 5.2
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a command line option object with the name \a name.
|
||||||
|
|
||||||
|
The name can be either short or long. If the name is one character in
|
||||||
|
length, it is considered a short name. Option names must not be empty,
|
||||||
|
must not start with a dash or a slash character, must not contain a \c{=}
|
||||||
|
and cannot be repeated.
|
||||||
|
|
||||||
|
\sa setDescription(), setValueName(), setDefaultValues()
|
||||||
|
*/
|
||||||
|
QCommandLineOption::QCommandLineOption(const QString &name)
|
||||||
|
: d(new QCommandLineOptionPrivate)
|
||||||
|
{
|
||||||
|
d->setNames(QStringList(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a command line option object with the names \a names.
|
||||||
|
|
||||||
|
This overload allows to set multiple names for the option, for instance
|
||||||
|
\c{o} and \c{output}.
|
||||||
|
|
||||||
|
The names can be either short or long. Any name in the list that is one
|
||||||
|
character in length is a short name. Option names must not be empty,
|
||||||
|
must not start with a dash or a slash character, must not contain a \c{=}
|
||||||
|
and cannot be repeated.
|
||||||
|
|
||||||
|
\sa setDescription(), setValueName(), setDefaultValues()
|
||||||
|
*/
|
||||||
|
QCommandLineOption::QCommandLineOption(const QStringList &names)
|
||||||
|
: d(new QCommandLineOptionPrivate)
|
||||||
|
{
|
||||||
|
d->setNames(names);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a command line option object with the given arguments.
|
||||||
|
|
||||||
|
The name of the option is set to \a name.
|
||||||
|
The name can be either short or long. If the name is one character in
|
||||||
|
length, it is considered a short name. Option names must not be empty,
|
||||||
|
must not start with a dash or a slash character, must not contain a \c{=}
|
||||||
|
and cannot be repeated.
|
||||||
|
|
||||||
|
The description is set to \a description. It is customary to add a "."
|
||||||
|
at the end of the description.
|
||||||
|
|
||||||
|
In addition, the \a valueName can be set if the option expects a value.
|
||||||
|
The default value for the option is set to \a defaultValue.
|
||||||
|
|
||||||
|
In Qt versions before 5.4, this constructor was \c explicit. In Qt 5.4
|
||||||
|
and later, it no longer is and can be used for C++11-style uniform
|
||||||
|
initialization:
|
||||||
|
|
||||||
|
\snippet code/src_corelib_tools_qcommandlineoption.cpp cxx11-init
|
||||||
|
|
||||||
|
\sa setDescription(), setValueName(), setDefaultValues()
|
||||||
|
*/
|
||||||
|
QCommandLineOption::QCommandLineOption(const QString &name, const QString &description,
|
||||||
|
const QString &valueName,
|
||||||
|
const QString &defaultValue)
|
||||||
|
: d(new QCommandLineOptionPrivate)
|
||||||
|
{
|
||||||
|
d->setNames(QStringList(name));
|
||||||
|
setValueName(valueName);
|
||||||
|
setDescription(description);
|
||||||
|
setDefaultValue(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a command line option object with the given arguments.
|
||||||
|
|
||||||
|
This overload allows to set multiple names for the option, for instance
|
||||||
|
\c{o} and \c{output}.
|
||||||
|
|
||||||
|
The names of the option are set to \a names.
|
||||||
|
The names can be either short or long. Any name in the list that is one
|
||||||
|
character in length is a short name. Option names must not be empty,
|
||||||
|
must not start with a dash or a slash character, must not contain a \c{=}
|
||||||
|
and cannot be repeated.
|
||||||
|
|
||||||
|
The description is set to \a description. It is customary to add a "."
|
||||||
|
at the end of the description.
|
||||||
|
|
||||||
|
In addition, the \a valueName can be set if the option expects a value.
|
||||||
|
The default value for the option is set to \a defaultValue.
|
||||||
|
|
||||||
|
In Qt versions before 5.4, this constructor was \c explicit. In Qt 5.4
|
||||||
|
and later, it no longer is and can be used for C++11-style uniform
|
||||||
|
initialization:
|
||||||
|
|
||||||
|
\snippet code/src_corelib_tools_qcommandlineoption.cpp cxx11-init-list
|
||||||
|
|
||||||
|
\sa setDescription(), setValueName(), setDefaultValues()
|
||||||
|
*/
|
||||||
|
QCommandLineOption::QCommandLineOption(const QStringList &names, const QString &description,
|
||||||
|
const QString &valueName,
|
||||||
|
const QString &defaultValue)
|
||||||
|
: d(new QCommandLineOptionPrivate)
|
||||||
|
{
|
||||||
|
d->setNames(names);
|
||||||
|
setValueName(valueName);
|
||||||
|
setDescription(description);
|
||||||
|
setDefaultValue(defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a QCommandLineOption object that is a copy of the QCommandLineOption
|
||||||
|
object \a other.
|
||||||
|
|
||||||
|
\sa operator=()
|
||||||
|
*/
|
||||||
|
QCommandLineOption::QCommandLineOption(const QCommandLineOption &other)
|
||||||
|
: d(other.d)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Destroys the command line option object.
|
||||||
|
*/
|
||||||
|
QCommandLineOption::~QCommandLineOption()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Makes a copy of the \a other object and assigns it to this QCommandLineOption
|
||||||
|
object.
|
||||||
|
*/
|
||||||
|
QCommandLineOption &QCommandLineOption::operator=(const QCommandLineOption &other)
|
||||||
|
{
|
||||||
|
d = other.d;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void QCommandLineOption::swap(QCommandLineOption &other)
|
||||||
|
|
||||||
|
Swaps option \a other with this option. This operation is very
|
||||||
|
fast and never fails.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the names set for this option.
|
||||||
|
*/
|
||||||
|
QStringList QCommandLineOption::names() const
|
||||||
|
{
|
||||||
|
return d->names;
|
||||||
|
}
|
||||||
|
|
||||||
|
void QCommandLineOptionPrivate::setNames(const QStringList &nameList)
|
||||||
|
{
|
||||||
|
QStringList newNames;
|
||||||
|
newNames.reserve(nameList.size());
|
||||||
|
if (nameList.isEmpty())
|
||||||
|
qWarning("QCommandLineOption: Options must have at least one name");
|
||||||
|
foreach (const QString &name, nameList) {
|
||||||
|
if (name.isEmpty()) {
|
||||||
|
qWarning("QCommandLineOption: Option names cannot be empty");
|
||||||
|
} else {
|
||||||
|
const QChar c = name.at(0);
|
||||||
|
if (c == QLatin1Char('-'))
|
||||||
|
qWarning("QCommandLineOption: Option names cannot start with a '-'");
|
||||||
|
else if (c == QLatin1Char('/'))
|
||||||
|
qWarning("QCommandLineOption: Option names cannot start with a '/'");
|
||||||
|
else if (name.contains(QLatin1Char('=')))
|
||||||
|
qWarning("QCommandLineOption: Option names cannot contain a '='");
|
||||||
|
else
|
||||||
|
newNames.append(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// commit
|
||||||
|
names.swap(newNames);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the name of the expected value, for the documentation, to \a valueName.
|
||||||
|
|
||||||
|
Options without a value assigned have a boolean-like behavior:
|
||||||
|
either the user specifies --option or they don't.
|
||||||
|
|
||||||
|
Options with a value assigned need to set a name for the expected value,
|
||||||
|
for the documentation of the option in the help output. An option with names \c{o} and \c{output},
|
||||||
|
and a value name of \c{file} will appear as \c{-o, --output <file>}.
|
||||||
|
|
||||||
|
Call QCommandLineParser::value() if you expect the option to be present
|
||||||
|
only once, and QCommandLineParser::values() if you expect that option
|
||||||
|
to be present multiple times.
|
||||||
|
|
||||||
|
\sa valueName()
|
||||||
|
*/
|
||||||
|
void QCommandLineOption::setValueName(const QString &valueName)
|
||||||
|
{
|
||||||
|
d->valueName = valueName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the name of the expected value.
|
||||||
|
|
||||||
|
If empty, the option doesn't take a value.
|
||||||
|
|
||||||
|
\sa setValueName()
|
||||||
|
*/
|
||||||
|
QString QCommandLineOption::valueName() const
|
||||||
|
{
|
||||||
|
return d->valueName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the description used for this option to \a description.
|
||||||
|
|
||||||
|
It is customary to add a "." at the end of the description.
|
||||||
|
|
||||||
|
The description is used by QCommandLineParser::showHelp().
|
||||||
|
|
||||||
|
\sa description()
|
||||||
|
*/
|
||||||
|
void QCommandLineOption::setDescription(const QString &description)
|
||||||
|
{
|
||||||
|
d->description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the description set for this option.
|
||||||
|
|
||||||
|
\sa setDescription()
|
||||||
|
*/
|
||||||
|
QString QCommandLineOption::description() const
|
||||||
|
{
|
||||||
|
return d->description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the default value used for this option to \a defaultValue.
|
||||||
|
|
||||||
|
The default value is used if the user of the application does not specify
|
||||||
|
the option on the command line.
|
||||||
|
|
||||||
|
If \a defaultValue is empty, the option has no default values.
|
||||||
|
|
||||||
|
\sa defaultValues() setDefaultValues()
|
||||||
|
*/
|
||||||
|
void QCommandLineOption::setDefaultValue(const QString &defaultValue)
|
||||||
|
{
|
||||||
|
QStringList newDefaultValues;
|
||||||
|
if (!defaultValue.isEmpty()) {
|
||||||
|
newDefaultValues.reserve(1);
|
||||||
|
newDefaultValues << defaultValue;
|
||||||
|
}
|
||||||
|
// commit:
|
||||||
|
d->defaultValues.swap(newDefaultValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the list of default values used for this option to \a defaultValues.
|
||||||
|
|
||||||
|
The default values are used if the user of the application does not specify
|
||||||
|
the option on the command line.
|
||||||
|
|
||||||
|
\sa defaultValues() setDefaultValue()
|
||||||
|
*/
|
||||||
|
void QCommandLineOption::setDefaultValues(const QStringList &defaultValues)
|
||||||
|
{
|
||||||
|
d->defaultValues = defaultValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the default values set for this option.
|
||||||
|
|
||||||
|
\sa setDefaultValues()
|
||||||
|
*/
|
||||||
|
QStringList QCommandLineOption::defaultValues() const
|
||||||
|
{
|
||||||
|
return d->defaultValues;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets whether to hide this option in the user-visible help output.
|
||||||
|
|
||||||
|
All options are visible by default. Setting \a hidden to true for
|
||||||
|
a particular option makes it internal, i.e. not listed in the help output.
|
||||||
|
|
||||||
|
\since 5.6
|
||||||
|
\sa isHidden
|
||||||
|
*/
|
||||||
|
void QCommandLineOption::setHidden(bool hide)
|
||||||
|
{
|
||||||
|
d->hidden = hide;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns true if this option is omitted from the help output,
|
||||||
|
false if the option is listed.
|
||||||
|
|
||||||
|
\since 5.6
|
||||||
|
\sa setHidden()
|
||||||
|
*/
|
||||||
|
bool QCommandLineOption::isHidden() const
|
||||||
|
{
|
||||||
|
return d->hidden;
|
||||||
|
}
|
||||||
|
#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
87
src/app/core/qcommandlineoption.h
Normal file
87
src/app/core/qcommandlineoption.h
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
|
||||||
|
** Contact: http://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL21$
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 or version 3 as published by the Free
|
||||||
|
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||||
|
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||||
|
** following information to ensure the GNU Lesser General Public License
|
||||||
|
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||||
|
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef QCOMMANDLINEOPTION_H
|
||||||
|
#define QCOMMANDLINEOPTION_H
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
#include <QSharedData>
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
#ifdef Q_CC_GNU
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class QCommandLineOptionPrivate;
|
||||||
|
|
||||||
|
class QCommandLineOption
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit QCommandLineOption(const QString &name);
|
||||||
|
explicit QCommandLineOption(const QStringList &names);
|
||||||
|
/*implicit*/ QCommandLineOption(const QString &name, const QString &description,
|
||||||
|
const QString &valueName = QString(),
|
||||||
|
const QString &defaultValue = QString());
|
||||||
|
/*implicit*/ QCommandLineOption(const QStringList &names, const QString &description,
|
||||||
|
const QString &valueName = QString(),
|
||||||
|
const QString &defaultValue = QString());
|
||||||
|
QCommandLineOption(const QCommandLineOption &other);
|
||||||
|
|
||||||
|
~QCommandLineOption();
|
||||||
|
|
||||||
|
QCommandLineOption &operator=(const QCommandLineOption &other);
|
||||||
|
#ifdef Q_COMPILER_RVALUE_REFS
|
||||||
|
inline QCommandLineOption &operator=(QCommandLineOption &&other)
|
||||||
|
{ qSwap(d, other.d); return *this; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline void swap(QCommandLineOption &other)
|
||||||
|
{ qSwap(d, other.d); }
|
||||||
|
|
||||||
|
QStringList names() const;
|
||||||
|
|
||||||
|
void setValueName(const QString &name);
|
||||||
|
QString valueName() const;
|
||||||
|
|
||||||
|
void setDescription(const QString &description);
|
||||||
|
QString description() const;
|
||||||
|
|
||||||
|
void setDefaultValue(const QString &defaultValue);
|
||||||
|
void setDefaultValues(const QStringList &defaultValues);
|
||||||
|
QStringList defaultValues() const;
|
||||||
|
|
||||||
|
void setHidden(bool hidden);
|
||||||
|
bool isHidden() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QSharedDataPointer<QCommandLineOptionPrivate> d;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef Q_CC_GNU
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Q_DECLARE_SHARED(QCommandLineOption)
|
||||||
|
|
||||||
|
#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
#endif // QCOMMANDLINEOPTION_H
|
1119
src/app/core/qcommandlineparser.cpp
Normal file
1119
src/app/core/qcommandlineparser.cpp
Normal file
File diff suppressed because it is too large
Load Diff
101
src/app/core/qcommandlineparser.h
Normal file
101
src/app/core/qcommandlineparser.h
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
|
||||||
|
** Contact: http://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL21$
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 or version 3 as published by the Free
|
||||||
|
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
||||||
|
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
||||||
|
** following information to ensure the GNU Lesser General Public License
|
||||||
|
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
||||||
|
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef QCOMMANDLINEPARSER_H
|
||||||
|
#define QCOMMANDLINEPARSER_H
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QtGlobal>
|
||||||
|
#include "qcommandlineoption.h"
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
class QCommandLineParserPrivate;
|
||||||
|
class QCoreApplication;
|
||||||
|
|
||||||
|
#ifdef Q_CC_GNU
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Weffc++"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class QCommandLineParser
|
||||||
|
{
|
||||||
|
Q_DECLARE_TR_FUNCTIONS(QCommandLineParser)
|
||||||
|
public:
|
||||||
|
QCommandLineParser();
|
||||||
|
~QCommandLineParser();
|
||||||
|
|
||||||
|
enum SingleDashWordOptionMode {
|
||||||
|
ParseAsCompactedShortOptions,
|
||||||
|
ParseAsLongOptions
|
||||||
|
};
|
||||||
|
void setSingleDashWordOptionMode(SingleDashWordOptionMode parsingMode);
|
||||||
|
|
||||||
|
enum OptionsAfterPositionalArgumentsMode {
|
||||||
|
ParseAsOptions,
|
||||||
|
ParseAsPositionalArguments
|
||||||
|
};
|
||||||
|
void setOptionsAfterPositionalArgumentsMode(OptionsAfterPositionalArgumentsMode mode);
|
||||||
|
|
||||||
|
bool addOption(const QCommandLineOption &commandLineOption);
|
||||||
|
bool addOptions(const QList<QCommandLineOption> &options);
|
||||||
|
|
||||||
|
QCommandLineOption addVersionOption();
|
||||||
|
QCommandLineOption addHelpOption();
|
||||||
|
void setApplicationDescription(const QString &description);
|
||||||
|
QString applicationDescription() const;
|
||||||
|
void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString());
|
||||||
|
void clearPositionalArguments();
|
||||||
|
|
||||||
|
void process(const QStringList &arguments);
|
||||||
|
void process(const QCoreApplication &app);
|
||||||
|
|
||||||
|
bool parse(const QStringList &arguments);
|
||||||
|
QString errorText() const;
|
||||||
|
|
||||||
|
bool isSet(const QString &name) const;
|
||||||
|
QString value(const QString &name) const;
|
||||||
|
QStringList values(const QString &name) const;
|
||||||
|
|
||||||
|
bool isSet(const QCommandLineOption &option) const;
|
||||||
|
QString value(const QCommandLineOption &option) const;
|
||||||
|
QStringList values(const QCommandLineOption &option) const;
|
||||||
|
|
||||||
|
QStringList positionalArguments() const;
|
||||||
|
QStringList optionNames() const;
|
||||||
|
QStringList unknownOptionNames() const;
|
||||||
|
|
||||||
|
Q_NORETURN void showVersion();
|
||||||
|
Q_NORETURN void showHelp(int exitCode = 0);
|
||||||
|
QString helpText() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Q_DISABLE_COPY(QCommandLineParser)
|
||||||
|
|
||||||
|
QCommandLineParserPrivate * const d;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef Q_CC_GNU
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif //QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
#endif // QCOMMANDLINEPARSER_H
|
|
@ -35,6 +35,7 @@
|
||||||
#include "vmaingraphicsview.h"
|
#include "vmaingraphicsview.h"
|
||||||
#include "../container/calculator.h"
|
#include "../container/calculator.h"
|
||||||
#include "../version.h"
|
#include "../version.h"
|
||||||
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
@ -46,7 +47,6 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QLoggingCategory>
|
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QLockFile>
|
#include <QLockFile>
|
||||||
|
|
|
@ -28,14 +28,15 @@
|
||||||
|
|
||||||
#include "dialogstandardmeasurements.h"
|
#include "dialogstandardmeasurements.h"
|
||||||
#include "ui_dialogstandardmeasurements.h"
|
#include "ui_dialogstandardmeasurements.h"
|
||||||
#include <QDir>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QDesktopWidget>
|
|
||||||
#include "../../xml/vstandardmeasurements.h"
|
#include "../../xml/vstandardmeasurements.h"
|
||||||
#include "../../core/vapplication.h"
|
#include "../../core/vapplication.h"
|
||||||
#include "../../core/vsettings.h"
|
#include "../../core/vsettings.h"
|
||||||
#include "../../container/vcontainer.h"
|
#include "../../container/vcontainer.h"
|
||||||
#include <QLoggingCategory>
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QDesktopWidget>
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(vStMeasur, "v.st.measurements")
|
Q_LOGGING_CATEGORY(vStMeasur, "v.st.measurements")
|
||||||
|
|
||||||
|
|
|
@ -29,15 +29,16 @@
|
||||||
#ifndef DIALOGTOOL_H
|
#ifndef DIALOGTOOL_H
|
||||||
#define DIALOGTOOL_H
|
#define DIALOGTOOL_H
|
||||||
|
|
||||||
|
#include "../../core/vapplication.h"
|
||||||
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include <QRadioButton>
|
#include <QRadioButton>
|
||||||
#include "../../core/vapplication.h"
|
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QLoggingCategory>
|
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(vDialog)
|
Q_DECLARE_LOGGING_CATEGORY(vDialog)
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,11 @@
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QCommandLineParser>
|
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
# include "../core/qcommandlineparser.h"
|
||||||
|
#else
|
||||||
|
# include <QCommandLineParser>
|
||||||
|
#endif
|
||||||
#include <QtXml>
|
#include <QtXml>
|
||||||
#include <QLibraryInfo>
|
#include <QLibraryInfo>
|
||||||
|
|
||||||
|
@ -48,7 +52,7 @@ int main(int argc, char *argv[])
|
||||||
Q_INIT_RESOURCE(theme);
|
Q_INIT_RESOURCE(theme);
|
||||||
Q_INIT_RESOURCE(flags);
|
Q_INIT_RESOURCE(flags);
|
||||||
|
|
||||||
QT_REQUIRE_VERSION(argc, argv, "5.2.0");
|
QT_REQUIRE_VERSION(argc, argv, "5.0.0");
|
||||||
|
|
||||||
VApplication app(argc, argv);
|
VApplication app(argc, argv);
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#include "vtooloptionspropertybrowser.h"
|
#include "vtooloptionspropertybrowser.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "../libs/ifc/xml/vpatternconverter.h"
|
#include "../libs/ifc/xml/vpatternconverter.h"
|
||||||
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
@ -60,7 +61,6 @@
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QLoggingCategory>
|
|
||||||
#include <QLockFile>
|
#include <QLockFile>
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(vMainWindow, "v.mainwindow")
|
Q_LOGGING_CATEGORY(vMainWindow, "v.mainwindow")
|
||||||
|
|
|
@ -27,12 +27,13 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "vtoolpoint.h"
|
#include "vtoolpoint.h"
|
||||||
#include <QKeyEvent>
|
#include "../../utils/logging.h"
|
||||||
#include <QLoggingCategory>
|
|
||||||
#include "../../geometry/vpointf.h"
|
#include "../../geometry/vpointf.h"
|
||||||
#include "../../visualization/vgraphicssimpletextitem.h"
|
#include "../../visualization/vgraphicssimpletextitem.h"
|
||||||
#include "../../undocommands/movelabel.h"
|
#include "../../undocommands/movelabel.h"
|
||||||
|
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(vToolPoint, "v.toolPoint")
|
Q_LOGGING_CATEGORY(vToolPoint, "v.toolPoint")
|
||||||
|
|
||||||
const QString VToolPoint::TagName = QStringLiteral("point");
|
const QString VToolPoint::TagName = QStringLiteral("point");
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#define VDATATOOL_H
|
#define VDATATOOL_H
|
||||||
|
|
||||||
#include "../container/vcontainer.h"
|
#include "../container/vcontainer.h"
|
||||||
#include <QLoggingCategory>
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(vTool)
|
Q_DECLARE_LOGGING_CATEGORY(vTool)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,8 @@
|
||||||
|
|
||||||
#include <QUndoCommand>
|
#include <QUndoCommand>
|
||||||
#include <QDomElement>
|
#include <QDomElement>
|
||||||
#include <QLoggingCategory>
|
|
||||||
|
#include "../../utils/logging.h"
|
||||||
#include "../xml/vpattern.h"
|
#include "../xml/vpattern.h"
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(vUndo)
|
Q_DECLARE_LOGGING_CATEGORY(vUndo)
|
||||||
|
|
|
@ -31,9 +31,10 @@
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QGraphicsItem>
|
#include <QGraphicsItem>
|
||||||
|
|
||||||
#include "../core/vapplication.h"
|
#include "../core/vapplication.h"
|
||||||
#include "../widgets/vmaingraphicsscene.h"
|
#include "../widgets/vmaingraphicsscene.h"
|
||||||
#include <QLoggingCategory>
|
#include "../../utils/logging.h"
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(vVis)
|
Q_DECLARE_LOGGING_CATEGORY(vVis)
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,12 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "vexception.h"
|
#include "vexception.h"
|
||||||
|
#include "../../../utils/logging.h"
|
||||||
|
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSpacerItem>
|
#include <QSpacerItem>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QLoggingCategory>
|
|
||||||
|
|
||||||
Q_LOGGING_CATEGORY(vExcep, "v.excep")
|
Q_LOGGING_CATEGORY(vExcep, "v.excep")
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ CONFIG -= debug_and_release debug_and_release_target
|
||||||
DEFINES += QT_MESSAGELOGCONTEXT
|
DEFINES += QT_MESSAGELOGCONTEXT
|
||||||
|
|
||||||
include(ifc.pri)
|
include(ifc.pri)
|
||||||
|
include(../../utils/utils.pri)
|
||||||
|
|
||||||
# This is static library so no need in "make install"
|
# This is static library so no need in "make install"
|
||||||
|
|
||||||
|
@ -74,7 +75,7 @@ CONFIG(debug, debug|release){
|
||||||
-isystem "$${OUT_PWD}/$${MOC_DIR}" \
|
-isystem "$${OUT_PWD}/$${MOC_DIR}" \
|
||||||
$$CLANG_DEBUG_CXXFLAGS # See Valentina.pri for more details.
|
$$CLANG_DEBUG_CXXFLAGS # See Valentina.pri for more details.
|
||||||
|
|
||||||
# -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and
|
# -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and
|
||||||
# want them in global list. Compromise decision delete them from local list.
|
# want them in global list. Compromise decision delete them from local list.
|
||||||
QMAKE_CXXFLAGS -= \
|
QMAKE_CXXFLAGS -= \
|
||||||
-Wmissing-prototypes
|
-Wmissing-prototypes
|
||||||
|
|
|
@ -31,10 +31,10 @@
|
||||||
|
|
||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QLoggingCategory>
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
#include "ifcdef.h"
|
#include "ifcdef.h"
|
||||||
|
#include "../../../utils/logging.h"
|
||||||
|
|
||||||
Q_DECLARE_LOGGING_CATEGORY(vXML)
|
Q_DECLARE_LOGGING_CATEGORY(vXML)
|
||||||
|
|
||||||
|
|
100
src/utils/logging.h
Normal file
100
src/utils/logging.h
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2014 Digia Plc.
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef LOGGING_H
|
||||||
|
#define LOGGING_H
|
||||||
|
|
||||||
|
#include <qglobal.h>
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Qt < 5.2 didn't feature categorized logging:
|
||||||
|
// Just enable qCWarning, qCCritical, but disable qCDebug
|
||||||
|
//
|
||||||
|
class QLoggingCategory
|
||||||
|
{
|
||||||
|
Q_DISABLE_COPY(QLoggingCategory)
|
||||||
|
public:
|
||||||
|
explicit QLoggingCategory(const char *category) : name(category) {}
|
||||||
|
~QLoggingCategory();
|
||||||
|
|
||||||
|
bool isDebugEnabled() const { return false; }
|
||||||
|
bool isWarningEnabled() const { return true; }
|
||||||
|
bool isCriticalEnabled() const { return true; }
|
||||||
|
|
||||||
|
const char *categoryName() const { return name; }
|
||||||
|
|
||||||
|
QLoggingCategory &operator()() { return *this; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
const char *name;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define Q_DECLARE_LOGGING_CATEGORY(name) \
|
||||||
|
extern QLoggingCategory &name();
|
||||||
|
|
||||||
|
// relies on QLoggingCategory(QString) being thread safe!
|
||||||
|
#define Q_LOGGING_CATEGORY(name, string) \
|
||||||
|
QLoggingCategory &name() \
|
||||||
|
{ \
|
||||||
|
static QLoggingCategory category(string); \
|
||||||
|
return category; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#if QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Qt 5.0, 5.1 do have already support for categories in QMessageLogger
|
||||||
|
//
|
||||||
|
|
||||||
|
#define qCDebug(category, ...) \
|
||||||
|
for (bool q_category_enabled = category().isDebugEnabled(); q_category_enabled; q_category_enabled = false) \
|
||||||
|
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).debug(__VA_ARGS__)
|
||||||
|
#define qCWarning(category, ...) \
|
||||||
|
for (bool q_category_enabled = category().isWarningEnabled(); q_category_enabled; q_category_enabled = false) \
|
||||||
|
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).warning(__VA_ARGS__)
|
||||||
|
#define qCCritical(category, ...) \
|
||||||
|
for (bool q_category_enabled = category().isCriticalEnabled(); q_category_enabled; q_category_enabled = false) \
|
||||||
|
QMessageLogger(__FILE__, __LINE__, Q_FUNC_QT_VERSION < 0x053000INFO, \
|
||||||
|
category().categoryName()).critical(__VA_ARGS__)
|
||||||
|
# endif // QT_VERSION > QT_VERSION_CHECK(5, 0, 0)
|
||||||
|
|
||||||
|
#else // QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
#include <QLoggingCategory>
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
|
||||||
|
|
||||||
|
// printf style for qCDebug was only added in Qt 5.3
|
||||||
|
|
||||||
|
#undef qCDebug
|
||||||
|
#undef qCWarning
|
||||||
|
#undef qCCritical
|
||||||
|
|
||||||
|
#define qCDebug(category, ...) \
|
||||||
|
for (bool q_category_enabled = category().isDebugEnabled(); q_category_enabled; q_category_enabled = false) \
|
||||||
|
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).debug(__VA_ARGS__)
|
||||||
|
#define qCWarning(category, ...) \
|
||||||
|
for (bool q_category_enabled = category().isWarningEnabled(); q_category_enabled; q_category_enabled = false) \
|
||||||
|
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).warning(__VA_ARGS__)
|
||||||
|
#define qCCritical(category, ...) \
|
||||||
|
for (bool q_category_enabled = category().isCriticalEnabled(); q_category_enabled; q_category_enabled = false) \
|
||||||
|
QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, category().categoryName()).critical(__VA_ARGS__)
|
||||||
|
|
||||||
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
|
||||||
|
|
||||||
|
#endif // QT_VERSION < QT_VERSION_CHECK(5, 2, 0)
|
||||||
|
|
||||||
|
#endif // LOGGING_H
|
2
src/utils/utils.pri
Normal file
2
src/utils/utils.pri
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/logging.h
|
Loading…
Reference in New Issue
Block a user