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. - /home/nemu/analysis/bin + $HOME/analysis/bin ./ - /home/nemu/analysis/musrfit/src/musrgui + $HOME/analysis/musrfit/src/musrgui mue4 @@ -170,6 +170,6 @@ 0 - +