From f5d131671c5532fbeff24abb69b00f2bc5e9cc98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Sat, 29 Aug 2015 18:50:08 +0200 Subject: [PATCH] GUI: Let user add function in the library editor --- gui/librarydata.cpp | 2 ++ gui/librarydialog.cpp | 27 +++++++++++++++++++++++++-- gui/librarydialog.h | 1 + gui/librarydialog.ui | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 2 deletions(-) diff --git a/gui/librarydata.cpp b/gui/librarydata.cpp index d2638bbba..7bf1d6329 100644 --- a/gui/librarydata.cpp +++ b/gui/librarydata.cpp @@ -132,6 +132,8 @@ bool LibraryData::open(QIODevice &file) if (!doc.setContent(&file)) return false; + clear(); + QDomElement rootElement = doc.firstChildElement("def"); QStringList comments; for (QDomNode n = rootElement.firstChild(); !n.isNull(); n = n.nextSibling()) { diff --git a/gui/librarydialog.cpp b/gui/librarydialog.cpp index dc013afd2..3ca05ce53 100644 --- a/gui/librarydialog.cpp +++ b/gui/librarydialog.cpp @@ -23,6 +23,7 @@ #include #include #include +#include // TODO: get/compare functions from header @@ -57,12 +58,15 @@ void LibraryDialog::openCfg() mFileName.clear(); QFile file(selectedFile); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + ignoreChanges = true; data.open(file); mFileName = selectedFile; ui->buttonSave->setEnabled(false); ui->functions->clear(); - foreach(const struct LibraryData::Function &function, data.functions) - ui->functions->addItem(function.name); + foreach(const struct LibraryData::Function &function, data.functions) { + ui->functions->addItem(function.name); + } + ignoreChanges = false; } } } @@ -79,6 +83,25 @@ void LibraryDialog::saveCfg() } } +void LibraryDialog::addFunction() +{ + LibraryData::Function f; + bool ok; + f.name = QInputDialog::getText(this, tr("Add function"), tr("Function name"), QLineEdit::Normal, "doStuff", &ok); + if (!ok) + return; + int args = QInputDialog::getInt(this, tr("Add function"), tr("Number of arguments"), 0, 0, 20, 1, &ok); + if (!ok) + return; + for (int i = 1; i <= args; i++) { + LibraryData::Function::Arg arg; + arg.nr = i; + f.args.append(arg); + } + data.functions.append(f); + ui->functions->addItem(f.name); +} + void LibraryDialog::selectFunction(int row) { ignoreChanges = true; diff --git a/gui/librarydialog.h b/gui/librarydialog.h index 77b3747cf..9250e68c2 100644 --- a/gui/librarydialog.h +++ b/gui/librarydialog.h @@ -40,6 +40,7 @@ public: private slots: void openCfg(); void saveCfg(); + void addFunction(); void selectFunction(int row); void changeFunction(); void argumentChanged(QListWidgetItem *); diff --git a/gui/librarydialog.ui b/gui/librarydialog.ui index 17f3c19f4..a6ac8a5d1 100644 --- a/gui/librarydialog.ui +++ b/gui/librarydialog.ui @@ -66,6 +66,30 @@ + + + + + + Add + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -234,6 +258,22 @@ + + addFunction + clicked() + LibraryDialog + addFunction() + + + 48 + 282 + + + 65 + 298 + + + selectFunction(int) @@ -241,5 +281,6 @@ changeFunction() saveCfg() argumentChanged(QListWidgetItem*) + addFunction()