git-svn-id: svn://db.shs.com.ru/libs@164 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -141,8 +141,8 @@ bool CDType::calculate(PIEvaluator * e, PIVector<const CDType * > stack) {
|
||||
}
|
||||
|
||||
|
||||
PIVector<CDType::Enumerator> CDType::parseEnumComment(PIString c) {
|
||||
PIVector<CDType::Enumerator> ret;
|
||||
PIVariantTypes::Enum CDType::parseEnumComment(PIString c) {
|
||||
PIVariantTypes::Enum ret;
|
||||
if (c.isEmpty()) return ret;
|
||||
if (type_ == "e") {
|
||||
PIStringList sl = c.inBrackets('{', '}').split(",");
|
||||
@@ -157,11 +157,11 @@ PIVector<CDType::Enumerator> CDType::parseEnumComment(PIString c) {
|
||||
s.cutLeft(ind + 1).trim();
|
||||
}
|
||||
}
|
||||
ret << CDType::Enumerator(cval, s);
|
||||
ret << PIVariantTypes::Enumerator(cval, s);
|
||||
++cval;
|
||||
}
|
||||
}
|
||||
piCout << c << "=" << ret;
|
||||
//piCout << c << "=" << ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -317,11 +317,11 @@ void CDSection::write(PIIODevice * d, const PIString & prefix) {
|
||||
d->write(l.toUTF8());
|
||||
l.clear(); l << ck.index() << ".v = " << ck.value() << " #" << ck.type() << " " << ck.name() << " \n";
|
||||
d->write(l.toUTF8());
|
||||
if (!ck.enumValues().isEmpty()) {
|
||||
if (!ck.enumValues().enum_list.isEmpty()) {
|
||||
l.clear(); l << ck.index() << ".ev = {";
|
||||
//PIVector<CDType::Enumerator> el = ck.enumValues();
|
||||
piForeachC (CDType::Enumerator & e, ck.enumValues())
|
||||
l << e.first << " - " << e.second << ", ";
|
||||
piForeachC (PIVariantTypes::Enumerator & e, ck.enumValues().enum_list)
|
||||
l << e.value << " - " << e.name << ", ";
|
||||
l.cutRight(2);
|
||||
l << "} \n";
|
||||
d->write(l.toUTF8());
|
||||
@@ -497,11 +497,11 @@ PIVector<CDType * > CDSection::children(bool recursive) const {
|
||||
}
|
||||
|
||||
|
||||
PIVector<CDType::Enumerator> CDSection::enumValues() const {
|
||||
PIVector<CDType::Enumerator> ret;
|
||||
PIVariantTypes::Enum CDSection::enumValues() const {
|
||||
PIVariantTypes::Enum ret;
|
||||
PIMap<int, CDType>::const_iterator i;
|
||||
for (i = k.begin(); i != k.end(); ++i)
|
||||
ret << CDType::Enumerator(i.key(), i.value().name());
|
||||
ret << PIVariantTypes::Enumerator(i.key(), i.value().name());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "pistring.h"
|
||||
#include "pimap.h"
|
||||
#include "pivarianttypes.h"
|
||||
|
||||
class PIIODevice;
|
||||
class PIEvaluator;
|
||||
@@ -18,7 +19,6 @@ class CDType {
|
||||
friend class CDSection;
|
||||
public:
|
||||
enum cdT {cdNull, cdK, cdX, cdC};
|
||||
typedef PIPair<int, PIString> Enumerator;
|
||||
CDType();
|
||||
CDType(int i, const PIString & n, const PIString & t, const PIString & v, const PIString & f, const PIString & c, cdT cd_t);
|
||||
int index() const {return index_;}
|
||||
@@ -35,19 +35,19 @@ public:
|
||||
void setFormula(const PIString & formula);
|
||||
void setComment(const PIString & comment) {comment_ = comment;}
|
||||
operator double() const {return value_d;}
|
||||
const PIVector<CDType::Enumerator> & enumValues() const {return enum_values;}
|
||||
void setEnumValues(const PIVector<CDType::Enumerator> & ev) {enum_values = ev;}
|
||||
const PIVariantTypes::Enum & enumValues() const {return enum_values;}
|
||||
void setEnumValues(const PIVariantTypes::Enum & ev) {enum_values = ev;}
|
||||
const PIString & errorString() const {return error_;}
|
||||
PIDeque<int> path() const {return path_;}
|
||||
|
||||
protected:
|
||||
bool calculate(PIEvaluator * e, PIVector<const CDType * > stack = PIVector<const CDType * >());
|
||||
PIVector<CDType::Enumerator> parseEnumComment(PIString c);
|
||||
PIVariantTypes::Enum parseEnumComment(PIString c);
|
||||
cdT cd_type_;
|
||||
int index_;
|
||||
PIString name_, type_;
|
||||
PIString value_s, formula_, comment_, error_;
|
||||
PIVector<CDType::Enumerator> enum_values;
|
||||
PIVariantTypes::Enum enum_values;
|
||||
CDSection * parent;
|
||||
PIDeque<int> path_;
|
||||
double value_d;
|
||||
@@ -85,7 +85,7 @@ public:
|
||||
void calculate();
|
||||
void makePath(PIDeque<int> p = PIDeque<int>());
|
||||
PIVector<CDType * > children(bool recursive = true) const;
|
||||
PIVector<CDType::Enumerator> enumValues() const;
|
||||
PIVariantTypes::Enum enumValues() const;
|
||||
|
||||
PIString name;
|
||||
PIString alias;
|
||||
|
||||
@@ -15,7 +15,7 @@ if(DEFINED ENV{QNX_HOST})
|
||||
else()
|
||||
add_library(${PROJECT_NAME} SHARED ${CPPS})
|
||||
endif()
|
||||
set(LIBS ${QT_QTCORE_LIBRARY} ${PIP_LIBRARY})
|
||||
set(LIBS ${QT_QTCORE_LIBRARY} ${PIP_LIBRARY} qad_utils)
|
||||
target_link_libraries(${PROJECT_NAME} ${LIBS})
|
||||
if(LIB)
|
||||
if(WIN32)
|
||||
|
||||
@@ -2,6 +2,24 @@
|
||||
#include "qvariantedit.h"
|
||||
|
||||
|
||||
const QAD::Enum PI2QADEnum(const PIVariantTypes::Enum & el) {
|
||||
QAD::Enum ret;
|
||||
piForeachC (PIVariantTypes::Enumerator & e, el.enum_list)
|
||||
ret << QAD::Enumerator(e.value, PI2QString(e.name));
|
||||
ret.selectValue(el.selectedValue());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
const PIVariantTypes::Enum QAD2PIEnum(const QAD::Enum & el) {
|
||||
PIVariantTypes::Enum ret;
|
||||
foreach (const QAD::Enumerator & e, el.enum_list)
|
||||
ret << PIVariantTypes::Enumerator(e.value, Q2PIString(e.name));
|
||||
ret.selectValue(el.selectedValue());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
const QVariant PI2QVariant(const PIVariant & v) {
|
||||
switch (v.type()) {
|
||||
case PIVariant::pivBool: return QVariant(v.toBool());
|
||||
@@ -22,6 +40,9 @@ const QVariant PI2QVariant(const PIVariant & v) {
|
||||
case PIVariant::pivTime: return QVariant(PI2QTime(v.toTime()));
|
||||
case PIVariant::pivDate: return QVariant(PI2QDate(v.toDate()));
|
||||
case PIVariant::pivDateTime: return QVariant(PI2QDateTime(v.toDateTime()));
|
||||
case PIVariant::pivEnum: return QVariant::fromValue(PI2QADEnum(v.toEnum()));
|
||||
case PIVariant::pivFile: return QVariant::fromValue(PI2QADFile(v.toFile()));
|
||||
case PIVariant::pivDir: return QVariant::fromValue(PI2QADDir(v.toDir()));
|
||||
//case PIVariant::pivSystemTime: return QVariant(v.to());
|
||||
default: return QVariant();
|
||||
}
|
||||
@@ -43,7 +64,10 @@ const PIVariant Q2PIVariant(const QVariant & v) {
|
||||
case QVariant::Time: return PIVariant(Q2PITime(v.toTime()));
|
||||
case QVariant::Date: return PIVariant(Q2PIDate(v.toDate()));
|
||||
case QVariant::DateTime: return PIVariant(Q2PIDateTime(v.toDateTime()));
|
||||
default: return PIVariant();
|
||||
default: break;
|
||||
}
|
||||
if (v.canConvert<QAD::Enum>()) return PIVariant(QAD2PIEnum(v.value<QAD::Enum>()));
|
||||
if (v.canConvert<QAD::File>()) return PIVariant(QAD2PIFile(v.value<QAD::File>()));
|
||||
if (v.canConvert<QAD::Dir>()) return PIVariant(QAD2PIDir(v.value<QAD::Dir>()));
|
||||
return PIVariant();
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "pimathmatrix.h"
|
||||
#include "pitime.h"
|
||||
#include "pivariant.h"
|
||||
#include "qad_types.h"
|
||||
#include <QString>
|
||||
#include <QByteArray>
|
||||
#include <QPointF>
|
||||
@@ -47,6 +48,14 @@ inline const PIDate Q2PIDate(const QDate & v) {return PIDate(v.year(), v.month()
|
||||
inline const PITime Q2PITime(const QTime & v) {return PITime(v.hour(), v.minute(), v.second(), v.msec());}
|
||||
inline const PIDateTime Q2PIDateTime(const QDateTime & v) {return PIDateTime(Q2PIDate(v.date()), Q2PITime(v.time()));}
|
||||
|
||||
|
||||
const QAD::Enum PI2QADEnum(const PIVariantTypes::Enum & el);
|
||||
inline const QAD::File PI2QADFile(const PIVariantTypes::File & v) {return QAD::File(PI2QString(v.file), PI2QString(v.filter), v.is_abs);}
|
||||
inline const QAD::Dir PI2QADDir(const PIVariantTypes::Dir & v) {return QAD::Dir(PI2QString(v.dir), v.is_abs);}
|
||||
const PIVariantTypes::Enum QAD2PIEnum(const QAD::Enum & el);
|
||||
inline const PIVariantTypes::File QAD2PIFile(const QAD::File & v) {return PIVariantTypes::File(Q2PIString(v.file), Q2PIString(v.filter), v.is_abs);}
|
||||
inline const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v) {return PIVariantTypes::Dir(Q2PIString(v.dir), v.is_abs);}
|
||||
|
||||
const QVariant PI2QVariant(const PIVariant & v);
|
||||
|
||||
const PIVariant Q2PIVariant(const QVariant & v);
|
||||
|
||||
@@ -64,6 +64,12 @@ QStringList QAD::Enum::names() const {
|
||||
}
|
||||
|
||||
|
||||
QAD::Enum & QAD::Enum::operator <<(const QAD::Enumerator & v) {
|
||||
enum_list << v;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
QAD::Enum & QAD::Enum::operator <<(const QString & v) {
|
||||
enum_list << Enumerator(enum_list.size(), v);
|
||||
return *this;
|
||||
|
||||
@@ -32,6 +32,7 @@ namespace QAD {
|
||||
QString enum_name;
|
||||
QString selected;
|
||||
QList<Enumerator> enum_list;
|
||||
Enum & operator <<(const Enumerator & v);
|
||||
Enum & operator <<(const QString & v);
|
||||
Enum & operator <<(const QStringList & v);
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "qpointedit.h"
|
||||
#include "float.h"
|
||||
|
||||
|
||||
QPointEdit::QPointEdit(QWidget * parent): QWidget(parent), lay(QBoxLayout::LeftToRight, this) {
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <QBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QEvent>
|
||||
#include "float.h"
|
||||
|
||||
|
||||
class QPointEdit: public QWidget
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "qrectedit.h"
|
||||
#include "float.h"
|
||||
|
||||
|
||||
QRectEdit::QRectEdit(QWidget * parent): QWidget(parent), lay(QBoxLayout::LeftToRight, this) {
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <QBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QEvent>
|
||||
#include "float.h"
|
||||
|
||||
|
||||
class QRectEdit: public QWidget
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "spinslider.h"
|
||||
#include <qmath.h>
|
||||
|
||||
|
||||
SpinSlider::SpinSlider(QWidget * parent): QWidget(parent) {
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#include <QSlider>
|
||||
#include <QDoubleSpinBox>
|
||||
#include <QBoxLayout>
|
||||
#include <qmath.h>
|
||||
|
||||
QT_BEGIN_HEADER
|
||||
|
||||
|
||||
@@ -11,14 +11,6 @@
|
||||
using namespace CDUtils;
|
||||
|
||||
|
||||
QList<QAD::Enumerator> CDEnum2QADEnum(const PIVector<CDType::Enumerator> & el) {
|
||||
QList<QAD::Enumerator> ret;
|
||||
piForeachC (CDType::Enumerator & e, el)
|
||||
ret << QAD::Enumerator(e.first, PI2QString(e.second));
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
CDKItemModel::CDKItemModel(QObject *parent) : QAbstractItemModel(parent) {
|
||||
root = 0;
|
||||
internalRebuild();
|
||||
@@ -233,8 +225,7 @@ QVariant CDKItem::value(CDType t, int role) const {
|
||||
if (t.type() == "n") return t.toInt();
|
||||
if (t.type() == "b") return t.toBool();
|
||||
if (t.type() == "e") {
|
||||
QAD::Enum et;
|
||||
et.enum_list = CDEnum2QADEnum(t.enumValues());
|
||||
QAD::Enum et = PI2QADEnum(t.enumValues());
|
||||
et.selectValue(t.toInt());
|
||||
if (role == Qt::EditRole) return QVariant::fromValue<QAD::Enum>(et);
|
||||
else return et.selectedName();
|
||||
|
||||
Reference in New Issue
Block a user