aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/xuiaddparams.cpp
blob: aa6d5daa419a8ebd70935fc78d949321b586c060 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <precomp.h>

#include "xuiaddparams.h"
#include <api/script/scriptguid.h>

// -----------------------------------------------------------------------
const wchar_t AddParamsXuiObjectStr[] = L"AddParams"; // This is the xml tag
char AddParamsXuiSvcName[] = "AddParams xui object"; 

// -----------------------------------------------------------------------
AddParams::AddParams():myxuihandle(0) {
}

// -----------------------------------------------------------------------
AddParams::~AddParams() {
  pastlist.deleteAll();
}

// -----------------------------------------------------------------------
int AddParams::setXmlParam(const wchar_t *param, const wchar_t *value) 
{
  int r = ADDPARAMS_PARENT::setXmlParam(param, value);
  if (!WCSCASEEQLSAFE(param, L"group") && !WCSCASEEQLSAFE(param, L"target")) {
    Pair<StringW, StringW> *pair = new Pair<StringW, StringW>(param, value);
    pastlist.addItem(pair);
  }
  return r;
}

// -----------------------------------------------------------------------
void AddParams::actuator_onPerform(GuiObject *target) { // guaranteed non NULL
  ADDPARAMS_PARENT::actuator_onPerform(target);
  XmlObject *xtarget = static_cast<XmlObject *>(target->guiobject_getScriptObject()->vcpu_getInterface(xmlObjectGuid));
  foreach(pastlist)
    const wchar_t *a = pastlist.getfor()->a;
    int xp = xtarget->getXmlParam(a);
    StringW newval((xp == -1) ? L"" : xtarget->getXmlParamValue(xp));
    newval.cat(pastlist.getfor()->b);
    xtarget->setXmlParam(a, newval);
  endfor;
}