aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/xuistatus.cpp
blob: efc10ddd061d47d4f264c5d84c23bef2ed20f529 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <precomp.h>
#include "xuistatus.h"

const wchar_t StatusXuiObjectStr[] = L"LayoutStatus"; // This is the xml tag
char StatusXuiSvcName[] = "Status xui object";

LayoutStatusController _layoutStatusController;
LayoutStatusController *layoutStatusController = &_layoutStatusController;


XMLParamPair XuiStatus::params[] = {
  {EXCLUDE, L"EXCLUDE"},
  {INCLUDE, L"INCLUDEONLY"},
	};

XuiStatus::XuiStatus() {
  getScriptObject()->vcpu_setInterface(layoutStatusGuid, (void *)static_cast<XuiStatus *>(this));
  getScriptObject()->vcpu_setClassName(L"LayoutStatus"); // this is the script class name
  getScriptObject()->vcpu_setController(layoutStatusController);

  myxuihandle = newXuiHandle();
CreateXMLParameters(myxuihandle);	
}

void XuiStatus::CreateXMLParameters(int master_handle)
{
	//XUISTATUS_PARENT::CreateXMLParameters(master_handle);
	int numParams = sizeof(params) / sizeof(params[0]);
	hintNumberOfParams(myxuihandle, numParams);
	for (int i = 0;i < numParams;i++)
		addParam(myxuihandle, params[i], XUI_ATTRIBUTE_IMPLIED);
}

int XuiStatus::setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value) {
  if (xuihandle != myxuihandle)
    return XUISTATUS_PARENT::setXuiParam(xuihandle, xmlattributeid, xmlattributename, value);
  switch (xmlattributeid) {
    case EXCLUDE:
      setExclude(value);
    break;
    case INCLUDE:
      setIncludeOnly(value);
    break;
    default:
      return 0;
  }
  return 1;
}

// -----------------------------------------------------------------------
void XuiStatus::callme(const wchar_t *str) 
{
  fakeButtonPush(str);
}

// -----------------------------------------------------------------------
// Script Object

// -- Functions table -------------------------------------
function_descriptor_struct LayoutStatusController::exportedFunction[] = {
  {L"callme",             1, (void*)LayoutStatusController::layoutstatus_callme },
};

ScriptObject *LayoutStatusController::instantiate() {
  XuiStatus *xs = new XuiStatus;
  ASSERT(xs != NULL);
  return xs->getScriptObject();
}

void LayoutStatusController::destroy(ScriptObject *o) {
  XuiStatus *xs = static_cast<XuiStatus *>(o->vcpu_getInterface(layoutStatusGuid));
  ASSERT(xs!= NULL);
  delete xs;
}

void *LayoutStatusController::encapsulate(ScriptObject *o) {
  return NULL; // no encapsulation for layoutstatus yet
}

void LayoutStatusController::deencapsulate(void *o) {
}

int LayoutStatusController::getNumFunctions() { 
  return sizeof(exportedFunction) / sizeof(function_descriptor_struct); 
}

const function_descriptor_struct *LayoutStatusController::getExportedFunctions() { 
  return exportedFunction; 
}


scriptVar LayoutStatusController::layoutstatus_callme(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar str) {
  SCRIPT_FUNCTION_INIT
  XuiStatus *xs = static_cast<XuiStatus *>(o->vcpu_getInterface(layoutStatusGuid));
  if (xs) xs->callme(GET_SCRIPT_STRING(str));
  RETURN_SCRIPT_VOID;  
}