From 89b3f90131b863ff7288956341c5cbf0168ffe09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 3 Aug 2017 20:29:43 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@255 a8b55f48-bf90-11e4-a774-851b48703e85 --- cd_utils/cdutils_k.cpp | 14 +++++- cd_utils/cdutils_k.h | 4 +- cd_utils/cdutils_types.cpp | 68 ++++++++++++++--------------- cd_utils/cdutils_types.h | 10 +++-- piqt_utils/piqt_connection_edit.cpp | 2 +- qad/blockview/blockview.cpp | 2 +- qad/blockview/blockview.h | 2 +- qcd_utils/qcd_kmodel.h | 2 +- 8 files changed, 58 insertions(+), 46 deletions(-) diff --git a/cd_utils/cdutils_k.cpp b/cd_utils/cdutils_k.cpp index e240877..45f6230 100644 --- a/cd_utils/cdutils_k.cpp +++ b/cd_utils/cdutils_k.cpp @@ -25,13 +25,23 @@ bool KInterface::test(int v) { } +CDType & KInterface::operator [](const PIString & name_) { + return core->k_[name_]; +} + + +const CDType KInterface::operator [](const PIString & name_) const { + return core->k_[name_]; +} + + CDType & KInterface::operator [](const PIDeque & path_) { return core->k_[path_]; } -CDType & KInterface::operator [](const PIString & name_) { - return core->k_[name_]; +const CDType KInterface::operator [](const PIDeque & path_) const { + return core->k_[path_]; } diff --git a/cd_utils/cdutils_k.h b/cd_utils/cdutils_k.h index 2d7a2a5..de3c2f1 100644 --- a/cd_utils/cdutils_k.h +++ b/cd_utils/cdutils_k.h @@ -20,9 +20,9 @@ public: CDType & operator [](int v); const CDType operator [](int v) const; CDType & operator [](const PIString & name_); - const CDType operator [](const PIString & name_) const {return (*this)[name_];} + const CDType operator [](const PIString & name_) const; CDType & operator [](const PIDeque & path_); - const CDType operator [](const PIDeque & path_) const {return (*this)[path_];} + const CDType operator [](const PIDeque & path_) const; CDSection & section(int v); const CDSection section(int v) const; CDSection & section(const PIDeque & path); diff --git a/cd_utils/cdutils_types.cpp b/cd_utils/cdutils_types.cpp index 71bdc2a..a3345a9 100644 --- a/cd_utils/cdutils_types.cpp +++ b/cd_utils/cdutils_types.cpp @@ -205,7 +205,39 @@ PIVariantTypes::Enum CDType::parseEnumComment(PIString c) { //} -CDType & CDSection::operator [](const PIString & name_) { +int CDSection::count(bool recursive) const { + int ret = k.size_s(); + if (recursive) { + PIMap::const_iterator i; + for (i = s.begin(); i != s.end(); ++i) + ret += i->second.count(recursive); + } + return ret; +} + + +int CDSection::sectionsCount() const { + return s.size(); +} + + +PIStringList CDSection::index_names() const { + PIStringList ret; + PIMap::const_iterator i; + for (i = k.begin(); i != k.end(); ++i) + ret << i->second.name(); + return ret; +} + + +void CDSection::calculate() { + /*CDCore::instance()->k_.*/prepareCalculate(); + PIEvaluator e; + calculateRecursive(&e); +} + + +CDType & CDSection::getByName(const PIString & name_) { PIStringList np = name_.split("."); if (np.isEmpty()) return null; //piCout << np; @@ -255,7 +287,7 @@ CDType & CDSection::operator [](const PIString & name_) { } -CDType & CDSection::operator [](const PIDeque & path_) { +CDType & CDSection::getByPath(const PIDeque & path_) { if (path_.isEmpty()) return null; CDSection * s = this; for (int i = 0; i < path_.size_s() - 1; ++i) @@ -264,37 +296,6 @@ CDType & CDSection::operator [](const PIDeque & path_) { return (*s)[path_.back()]; } -int CDSection::count(bool recursive) const { - int ret = k.size_s(); - if (recursive) { - PIMap::const_iterator i; - for (i = s.begin(); i != s.end(); ++i) - ret += i->second.count(recursive); - } - return ret; -} - - -int CDSection::sectionsCount() const { - return s.size(); -} - - -PIStringList CDSection::index_names() const { - PIStringList ret; - PIMap::const_iterator i; - for (i = k.begin(); i != k.end(); ++i) - ret << i->second.name(); - return ret; -} - - -void CDSection::calculate() { - /*CDCore::instance()->k_.*/prepareCalculate(); - PIEvaluator e; - calculateRecursive(&e); -} - void CDSection::write(PIIODevice * d, const PIString & prefix) { if (!d) return; @@ -557,4 +558,3 @@ PIVariantTypes::Enum CDSection::enumValues() const { return ret; } - diff --git a/cd_utils/cdutils_types.h b/cd_utils/cdutils_types.h index 6eecd28..cb036b5 100644 --- a/cd_utils/cdutils_types.h +++ b/cd_utils/cdutils_types.h @@ -78,10 +78,10 @@ public: // CDType & operator [](int v) {if (!k.contains(v)) k[v].index_ = v; return k[v];} CDType & operator [](int v) {return k[v];} const CDType operator [](int v) const {return k[v];} - CDType & operator [](const PIString & name_); - const CDType operator [](const PIString & name_) const {return (*this)[name_];} - CDType & operator [](const PIDeque & path_); - const CDType operator [](const PIDeque & path_) const {return (*this)[path_];} + CDType & operator [](const PIString & name_) {return getByName(name_);} + const CDType operator [](const PIString & name_) const {return const_cast(this)->getByName(name_);} + CDType & operator [](const PIDeque & path_) {return getByPath(path_);} + const CDType operator [](const PIDeque & path_) const {return const_cast(this)->getByPath(path_);} CDSection & section(int v) {return s[v];} const CDSection section(int v) const {return s[v];} @@ -103,6 +103,8 @@ protected: k = k_; s = s_; } + CDType & getByName(const PIString & name_); + CDType & getByPath(const PIDeque & path_); void write(PIIODevice * d, const PIString & prefix = PIString()); void read(const void * ep); void update(CDSection & v, UpdateModeFlags mode = SaveByName); diff --git a/piqt_utils/piqt_connection_edit.cpp b/piqt_utils/piqt_connection_edit.cpp index b3fff44..8c88675 100644 --- a/piqt_utils/piqt_connection_edit.cpp +++ b/piqt_utils/piqt_connection_edit.cpp @@ -13,7 +13,7 @@ ConnectionEdit::ConnectionEdit(QWidget * parent): QDialog(parent) { ui->setupUi(this); new ConfigHighlighter(ui->codeEdit->document()); loading = false; - connect(ui->blockView, SIGNAL(actionEvent(BlockItemBase::Action,QList)), this, SLOT(recreateRequest())); + connect(ui->blockView, SIGNAL(schemeAction(BlockItemBase::Action,QList)), this, SLOT(recreateRequest())); connect(ui->blockView->scene(), SIGNAL(selectionChanged()), this, SLOT(selectionChanged())); conn = 0; PICodeInfo::EnumInfo * ei = PICodeInfo::enumsInfo->value("PIIODevice::DeviceMode"); diff --git a/qad/blockview/blockview.cpp b/qad/blockview/blockview.cpp index 8ec97b5..d01ad13 100644 --- a/qad/blockview/blockview.cpp +++ b/qad/blockview/blockview.cpp @@ -704,7 +704,7 @@ void BlockView::deleteCopyTemp() { void BlockView::emitActionEvent(BlockItemBase::Action action, QList items) { if (!ae_enabled) return; - emit actionEvent(action, items); + emit schemeAction(action, items); } diff --git a/qad/blockview/blockview.h b/qad/blockview/blockview.h index db0078a..8d80d0d 100644 --- a/qad/blockview/blockview.h +++ b/qad/blockview/blockview.h @@ -186,7 +186,7 @@ public slots: signals: void blockDoubleClicked(BlockItem * ); void busDoubleClicked(BlockBusItem * ); - void actionEvent(BlockItemBase::Action action, QList items); + void schemeAction(BlockItemBase::Action action, QList items); void blockRemoved(BlockItem * item); void connectionsChanged(); void copyEnabledChanged(bool); diff --git a/qcd_utils/qcd_kmodel.h b/qcd_utils/qcd_kmodel.h index 324b396..f77a89d 100644 --- a/qcd_utils/qcd_kmodel.h +++ b/qcd_utils/qcd_kmodel.h @@ -11,7 +11,7 @@ class CDSection; class CDType; } namespace QAD { -class Enum; +struct Enum; } class CDKItemModel;