diff --git a/src/musrgui/PAdmin.cpp b/src/musrgui/PAdmin.cpp index cff4a93e..b7d0ab72 100644 --- a/src/musrgui/PAdmin.cpp +++ b/src/musrgui/PAdmin.cpp @@ -213,10 +213,62 @@ bool PAdminXMLParser::characters(const QString& str) bool PAdminXMLParser::endDocument() { // check if all necessary items are found + QString str; + + if (fAdmin->getExecPath().find('$') >= 0) { + str = expandPath(fAdmin->getExecPath()); + if (!str.isEmpty()) + fAdmin->setExecPath(str); + } + + if (fAdmin->getDefaultSavePath().find('$') >= 0) { + str = expandPath(fAdmin->getDefaultSavePath()); + if (!str.isEmpty()) + fAdmin->setDefaultSavePath(str); + } + + if (fAdmin->getMsrDefaultFilePath().find('$') >= 0) { + expandPath(fAdmin->getMsrDefaultFilePath()); + if (!str.isEmpty()) + fAdmin->setMsrDefaultFilePath(str); + } return true; } +//-------------------------------------------------------------------------- +/** + *
Called at the end of the XML parse process.
+ */
+QString PAdminXMLParser::expandPath(const QString &str)
+{
+ QString token;
+ QString path;
+ QString msg;
+ QString newStr="";
+
+ QStringList list = QStringList::split("/", str);
+
+ for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
+ token = *it;
+ if (token.contains("$")) {
+ token.remove('$');
+ path = std::getenv(token.latin1());
+ if (path.isEmpty()) {
+ msg = QString("Couldn't expand '%1'. Some things might not work properly").arg(token);
+ QMessageBox::warning(0, "**WARNING**", msg, QMessageBox::Ok, QMessageBox::NoButton);
+ newStr = "";
+ break;
+ }
+ newStr += "/" + path;
+ } else {
+ newStr += "/" + token;
+ }
+ }
+
+ return newStr;
+}
+
//--------------------------------------------------------------------------
// implementation of PAdmin class
//--------------------------------------------------------------------------
diff --git a/src/musrgui/PAdmin.h b/src/musrgui/PAdmin.h
index e4d7f7b9..1b34f8e2 100644
--- a/src/musrgui/PAdmin.h
+++ b/src/musrgui/PAdmin.h
@@ -69,6 +69,8 @@ class PAdminXMLParser : public QXmlDefaultHandler
bool characters(const QString&);
bool endDocument();
+ QString expandPath(const QString&);
+
EAdminKeyWords fKeyWord;
bool fFunc;
PTheory fTheoryItem;
diff --git a/src/musrgui/musrgui_startup.xml b/src/musrgui/musrgui_startup.xml
index afc46f38..164b5e15 100644
--- a/src/musrgui/musrgui_startup.xml
+++ b/src/musrgui/musrgui_startup.xml
@@ -5,9 +5,9 @@
This is handling default setting parameters for the musrgui.