Skip to content

Commit 17b9726

Browse files
committed
Added import/export for simulation actions in csv-format
1 parent 5789907 commit 17b9726

File tree

11 files changed

+178
-30
lines changed

11 files changed

+178
-30
lines changed

changelog.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@
7373

7474
# 0.3.5
7575

76-
* When you click `Insert` in the `DataView` window, the new value is added to the list,
76+
* When click `Insert` in the `DataView` window, the new value is added to the list,
7777
but taking into account the address and size of the element format above.
78-
* Added insert/delete hotkeys for port/device/actions elements (copy/paste for simulation actions)
78+
* Added insert/delete hotkeys for port/device/actions elements (+copy/paste for simulation actions)
7979
* Added a confirmation prompt when deleting items such as port and device
80-
* Import/Export whole DataView list in csv-format
81-
* Import/Export simulation actions in csv-format
80+
* Added import/export whole DataView list in csv-format
81+
* Added import/export for simulation actions in csv-format

src/client/project/client_builder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ mbClientBuilder::mbClientBuilder(QObject *parent) : mbCoreBuilder(parent)
4747
{
4848
}
4949

50-
QStringList mbClientBuilder::csvAttributes() const
50+
QStringList mbClientBuilder::csvDataViewItemAttributes() const
5151
{
5252
const mbClientDataViewItem::Strings &s = mbClientDataViewItem::Strings::instance();
53-
QStringList ls = mbCoreBuilder::csvAttributes();
53+
QStringList ls = mbCoreBuilder::csvDataViewItemAttributes();
5454
ls.insert(3, s.period);
5555
return ls;
5656
}

src/client/project/client_builder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class mbClientBuilder : public mbCoreBuilder
5757
inline bool save(mbClientProject* project) { return saveCore(reinterpret_cast<mbCoreProject*>(project)); }
5858

5959
public:
60-
QStringList csvAttributes() const override;
60+
QStringList csvDataViewItemAttributes() const override;
6161

6262
mbCoreProject *newProject () const override;
6363
mbCorePort *newPort () const override;

src/core/project/core_builder.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ bool mbCoreBuilder::saveXml(mbCoreProject *project)
112112
return saveXml(project->absoluteFilePath(), dom.data());
113113
}
114114

115-
QStringList mbCoreBuilder::csvAttributes() const
115+
QStringList mbCoreBuilder::csvDataViewItemAttributes() const
116116
{
117117
const mbCoreDataViewItem::Strings &s = mbCoreDataViewItem::Strings::instance();
118118
return QStringList() << s.device
@@ -494,7 +494,7 @@ QList<mbCoreDataViewItem *> mbCoreBuilder::importDataViewItemsCsv(QIODevice *io)
494494
{
495495
QByteArray line = io->readLine();
496496
QString row = QString::fromUtf8(line);
497-
MBSETTINGS settings = parseCsvDataViewItem(attrNames, row);
497+
MBSETTINGS settings = parseCsvRowItem(attrNames, row);
498498
if (settings.isEmpty())
499499
continue;
500500
mbCoreDataViewItem *item = toDataViewItem(settings);
@@ -600,13 +600,13 @@ bool mbCoreBuilder::exportDataViewItemsXml(QIODevice *io, const QList<mbCoreData
600600

601601
bool mbCoreBuilder::exportDataViewItemsCsv(QIODevice *io, const QList<mbCoreDataViewItem *> &cfg)
602602
{
603-
QStringList lsHeader = csvAttributes();
603+
QStringList lsHeader = csvDataViewItemAttributes();
604604
QString sHeader = makeCsvRow(lsHeader);
605605
io->write(sHeader.toUtf8());
606606
Q_FOREACH (const mbCoreDataViewItem *item, cfg)
607607
{
608608
MBSETTINGS settings = toSettings(item);
609-
QString sLine = makeCsvDataViewItem(lsHeader, settings);
609+
QString sLine = makeCsvRowItem(lsHeader, settings);
610610
io->write(sLine.toUtf8());
611611
}
612612
return true;;
@@ -748,7 +748,7 @@ QString mbCoreBuilder::makeCsvDataViewSettings(const QStringList &attrNames, con
748748
return v;
749749
}
750750

751-
MBSETTINGS mbCoreBuilder::parseCsvDataViewItem(const QStringList &attrNames, const QString &row)
751+
MBSETTINGS mbCoreBuilder::parseCsvRowItem(const QStringList &attrNames, const QString &row)
752752
{
753753
MBSETTINGS settings;
754754
QStringList attrs = parseCsvRow(row);
@@ -765,7 +765,7 @@ MBSETTINGS mbCoreBuilder::parseCsvDataViewItem(const QStringList &attrNames, con
765765
return settings;
766766
}
767767

768-
QString mbCoreBuilder::makeCsvDataViewItem(const QStringList &attrNames, const MBSETTINGS &settings)
768+
QString mbCoreBuilder::makeCsvRowItem(const QStringList &attrNames, const MBSETTINGS &settings)
769769
{
770770
QStringList attrs;
771771

src/core/project/core_builder.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class MB_EXPORT mbCoreBuilder : public QObject
8484
virtual bool saveXml(mbCoreProject *project);
8585

8686
public:
87-
virtual QStringList csvAttributes() const;
87+
virtual QStringList csvDataViewItemAttributes() const;
8888

8989
virtual mbCoreProject *newProject () const = 0;
9090
virtual mbCorePort *newPort () const = 0;
@@ -164,8 +164,8 @@ protected Q_SLOTS:
164164
protected:
165165
MBSETTINGS parseCsvDataViewSettings(const QString &row);
166166
QString makeCsvDataViewSettings(const QStringList &attrNames, const MBSETTINGS &settings);
167-
MBSETTINGS parseCsvDataViewItem(const QStringList &attrNames, const QString &row);
168-
QString makeCsvDataViewItem(const QStringList &attrNames, const MBSETTINGS &settings);
167+
MBSETTINGS parseCsvRowItem(const QStringList &attrNames, const QString &row);
168+
QString makeCsvRowItem(const QStringList &attrNames, const MBSETTINGS &settings);
169169
QStringList parseCsvRow(const QString &row);
170170
QString makeCsvRow(const QStringList &items);
171171

src/server/gui/server_ui.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ const mbServerUi::Strings &mbServerUi::Strings::instance()
6565
}
6666

6767
mbServerUi::Defaults::Defaults() :
68-
cacheFormat(mb::Dec)
68+
cacheFormat(mb::Dec),
69+
filterFileActions(mbCoreDialogs::Filter_CsvFiles|mbCoreDialogs::Filter_XmlFiles|mbCoreDialogs::Filter_AllFiles)
6970
{
7071
}
7172

@@ -780,7 +781,7 @@ void mbServerUi::menuSlotActionImport()
780781
QString file = m_dialogs->getOpenFileName(this,
781782
QStringLiteral("Import Actions ..."),
782783
QString(),
783-
m_dialogs->getFilterString(mbCoreDialogs::Filter_XmlFiles|mbCoreDialogs::Filter_AllFiles));
784+
m_dialogs->getFilterString(Defaults::instance().filterFileActions));
784785
if (!file.isEmpty())
785786
{
786787
auto actions = builder()->importActions(file);
@@ -798,15 +799,17 @@ void mbServerUi::menuSlotActionExport()
798799
mbServerProject *project = core()->project();
799800
if (project)
800801
{
801-
auto selected = m_actionsUi->selectedItems();
802-
if (selected.count())
802+
auto items = m_actionsUi->selectedItems();
803+
if (items.isEmpty())
804+
items = project->actions();
805+
if (items.count())
803806
{
804807
QString file = m_dialogs->getSaveFileName(this,
805808
QStringLiteral("Export Actions ..."),
806809
QString(),
807-
m_dialogs->getFilterString(mbCoreDialogs::Filter_XmlFiles|mbCoreDialogs::Filter_AllFiles));
810+
m_dialogs->getFilterString(Defaults::instance().filterFileActions));
808811
if (!file.isEmpty())
809-
builder()->exportActions(file, selected);
812+
builder()->exportActions(file, items);
810813
}
811814
}
812815
}
@@ -838,7 +841,7 @@ void mbServerUi::slotActionCopy()
838841
{
839842
QBuffer buff;
840843
buff.open(QIODevice::ReadWrite);
841-
builder()->exportActions(&buff, selectedItems);
844+
builder()->exportActionsXml(&buff, selectedItems);
842845
buff.seek(0);
843846
QByteArray b = buff.readAll();
844847
QApplication::clipboard()->setText(QString::fromUtf8(b));
@@ -858,7 +861,7 @@ void mbServerUi::slotActionPaste()
858861
QByteArray b = text.toUtf8();
859862
QBuffer buff(&b);
860863
buff.open(QIODevice::ReadOnly);
861-
QList<mbServerAction*> items = builder()->importActions(&buff);
864+
QList<mbServerAction*> items = builder()->importActionsXml(&buff);
862865
if (items.count())
863866
{
864867
int index = -1;

src/server/gui/server_ui.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class mbServerUi : public mbCoreUi
6969
struct Defaults : public mbCoreUi::Defaults
7070
{
7171
mb::DigitalFormat cacheFormat;
72+
int filterFileActions;
7273
Defaults();
7374
static const Defaults &instance();
7475
};

src/server/project/server_action.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ mbServerAction::Strings::Strings() :
3131
actionType (QStringLiteral("actionType")),
3232
byteOrder (QStringLiteral("byteOrder")),
3333
registerOrder (QStringLiteral("registerOrder")),
34+
extended (QStringLiteral("extended")),
3435
incrementValue (QStringLiteral("incrementValue")),
3536
sinePeriod (QStringLiteral("sinePeriod")),
3637
sinePhaseShift (QStringLiteral("sinePhaseShift")),
@@ -142,6 +143,7 @@ MBSETTINGS mbServerAction::commonSettings() const
142143
p[s.actionType ] = mb::enumKey(actionType());
143144
p[s.byteOrder ] = mb::enumDataOrderKey(byteOrder());
144145
p[s.registerOrder] = mb::enumDataOrderKey(registerOrder());
146+
p[s.extended ] = extendedSettingsStr();
145147
return p;
146148
}
147149

@@ -214,6 +216,15 @@ void mbServerAction::setCommonSettings(const MBSETTINGS &settings)
214216
if (ok)
215217
setRegisterOrder(v);
216218
}
219+
220+
it = settings.find(s.extended);
221+
if (it != end)
222+
{
223+
QString v = it.value().toString();
224+
setExtendedSettingsStr(v);
225+
}
226+
227+
217228
}
218229

219230
MBSETTINGS mbServerAction::extendedSettings() const

src/server/project/server_action.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class mbServerAction : public QObject
5151
const QString actionType ;
5252
const QString byteOrder ;
5353
const QString registerOrder ;
54+
const QString extended ;
5455
const QString incrementValue ;
5556
const QString sinePeriod ;
5657
const QString sinePhaseShift ;

0 commit comments

Comments
 (0)