From 6e92de93b23c335622696dbdf8cdd68b9b4a591c Mon Sep 17 00:00:00 2001 From: "selmer%netscape.com" Date: Sun, 29 Aug 1999 23:42:43 +0000 Subject: [PATCH] Initial handling of configuration local cache files using onNext=Reload(dir) in INI file git-svn-id: svn://10.0.0.236/trunk@45093 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/cck/driver/WizardMachine.cpp | 42 +++++++++++++++++++++++++++- mozilla/cck/driver/WizardMachine.h | 1 + 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/mozilla/cck/driver/WizardMachine.cpp b/mozilla/cck/driver/WizardMachine.cpp index 324e9d90fbe..c5d743d7a68 100644 --- a/mozilla/cck/driver/WizardMachine.cpp +++ b/mozilla/cck/driver/WizardMachine.cpp @@ -734,6 +734,36 @@ void CWizardMachineApp::ExecuteAction(char action) } } +CString CWizardMachineApp::replaceVars(char *str) +{ + char buf[MIN_SIZE]; + char *b = buf; + while (*str) + { + if (*str == '%') + { + char *n = ++str; + while (*str && *str != '%') + str++; + if (*str == '%') + { + *str = '\0'; + WIDGET *w = findWidget(n); + strcpy(b, w->value); + b += strlen(w->value); + } + else + exit(12); + str++; + } + else + *b++ = *str++; + } + *b = '\0'; + + return CString(buf); +} + void CWizardMachineApp::GoToNextNode() { //check if it is a container node @@ -745,8 +775,18 @@ void CWizardMachineApp::GoToNextNode() //---------------------------------------------------------------------------------------------- if (CurrentNode->navControls->onNextAction) { - if (strncmp(CurrentNode->navControls->onNextAction, "Reload", 6) == 0) + char buf[MIN_SIZE]; + strcpy(buf, (char *)(LPCTSTR) CurrentNode->navControls->onNextAction); + char *pcmd = strtok(buf, "("); + if (pcmd) { + char *parms = strtok(NULL, ")"); + if (strcmp(pcmd, "Reload") == 0) + { + CString newDir = replaceVars(parms); + CachePath = Path + newDir + "\\" + CacheFile; + FillGlobalWidgetArray(CachePath); + } } } diff --git a/mozilla/cck/driver/WizardMachine.h b/mozilla/cck/driver/WizardMachine.h index 26cd9c986a4..dcadb8e3529 100644 --- a/mozilla/cck/driver/WizardMachine.h +++ b/mozilla/cck/driver/WizardMachine.h @@ -160,6 +160,7 @@ public: char* GetBufferElement(const char *buffer, int index); char* GetSectionBuffer(CString iniFile, CString section); void ExecuteAction(char action); + CString replaceVars(char *str); void GoToNextNode(); void GoToPrevNode(); void ExitApp();