#include #include "xuitabsheet.h" #include static ScriptTabSheetController TabsheetController; ScriptTabSheetController *tabsheetController=&TabsheetController; // ----------------------------------------------------------------------- const wchar_t ScriptTabSheetXuiObjectStr[] = L"Wasabi:TabSheet"; // This is the xml tag char ScriptTabSheetXuiSvcName[] = "Wasabi:TabSheet xui object"; XMLParamPair ScriptTabSheet::params[] = { {SCRIPTTABSHEET_SETCHILDREN, L"CHILDREN"}, {SCRIPTTABSHEET_SETCONTENTMARGINBOTTOM, L"CONTENT_MARGIN_BOTTOM"}, {SCRIPTTABSHEET_SETCONTENTMARGINLEFT, L"CONTENT_MARGIN_LEFT"}, {SCRIPTTABSHEET_SETCONTENTMARGINRIGHT, L"CONTENT_MARGIN_RIGHT"}, {SCRIPTTABSHEET_SETCONTENTMARGINTOP, L"CONTENT_MARGIN_TOP"}, {SCRIPTTABSHEET_SETTYPE, L"TYPE"}, {SCRIPTTABSHEET_SETWINDOWTYPE, L"WINDOWTYPE"}, }; // ----------------------------------------------------------------------- ScriptTabSheet::ScriptTabSheet() : TypeSheet(0) { getScriptObject()->vcpu_setInterface(tabsheetGuid, (void *)static_cast(this)); getScriptObject()->vcpu_setClassName(L"TabSheet"); // this is the script class name getScriptObject()->vcpu_setController(tabsheetController); myxuihandle = newXuiHandle(); CreateXMLParameters(myxuihandle); wndtype = 0; type = TABSHEET_GROUPS; left_margin = right_margin = bottom_margin = top_margin = 0; } void ScriptTabSheet::CreateXMLParameters(int master_handle) { //SCRIPTTABSHEET_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); } // ----------------------------------------------------------------------- ScriptTabSheet::~ScriptTabSheet() { children_id.deleteAll(); } // ----------------------------------------------------------------------- int ScriptTabSheet::setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value) { if (xuihandle != myxuihandle) return SCRIPTTABSHEET_PARENT::setXuiParam(xuihandle, xmlattributeid, xmlattributename, value); switch (xmlattributeid) { case SCRIPTTABSHEET_SETWINDOWTYPE: setWindowType(value); break; case SCRIPTTABSHEET_SETCHILDREN: setChildrenIds(value); break; case SCRIPTTABSHEET_SETTYPE: setType(value); break; case SCRIPTTABSHEET_SETCONTENTMARGINLEFT: case SCRIPTTABSHEET_SETCONTENTMARGINTOP: case SCRIPTTABSHEET_SETCONTENTMARGINRIGHT: case SCRIPTTABSHEET_SETCONTENTMARGINBOTTOM: setContentMarginX(value, xmlattributeid); break; default: return 0; } return 1; } // ----------------------------------------------------------------------- void ScriptTabSheet::setWindowType(const wchar_t *paramvalue) { if (WCSEQLSAFE(wndtype, paramvalue)) return; wndtype = paramvalue; reloadChildren(); } // ----------------------------------------------------------------------- void ScriptTabSheet::setChildrenIds(const wchar_t *paramvalue) { if (WCSEQLSAFE(paramvalue, L"")) { children_id.removeAll(); } ParamParser pp(paramvalue); for (int i=0;iabstract_setAllowDeferredContent(1); w->setContent(children_id.enumItem(i)->getValue()); addChild(w); } TypeSheet::setWindowType(wndtype); if (!wndtype.isempty()) TypeSheet::load(); } // ----------------------------------------------------------------------- int ScriptTabSheet::onInit() { int r = SCRIPTTABSHEET_PARENT::onInit(); setButtonType(type); reloadChildren(); return r; } void ScriptTabSheet::setContentMarginX(const wchar_t *value, int what) { switch (what) { case SCRIPTTABSHEET_SETCONTENTMARGINLEFT: setContentMarginLeft(WTOI(value)); break; case SCRIPTTABSHEET_SETCONTENTMARGINTOP: setContentMarginTop(WTOI(value)); break; case SCRIPTTABSHEET_SETCONTENTMARGINRIGHT: setContentMarginRight(WTOI(value)); break; case SCRIPTTABSHEET_SETCONTENTMARGINBOTTOM: setContentMarginBottom(WTOI(value)); break; } } // ----------------------------------------------------------------------- // Script Object // -- Functions table ------------------------------------- function_descriptor_struct ScriptTabSheetController::exportedFunction[] = { {L"getCurPage", 0, (void*)ScriptTabSheetController::tabsheet_getCurPage }, {L"setCurPage", 1, (void*)ScriptTabSheetController::tabsheet_setCurPage }, }; ScriptObject *ScriptTabSheetController::instantiate() { ScriptTabSheet *sts = new ScriptTabSheet; ASSERT(sts != NULL); return sts->getScriptObject(); } void ScriptTabSheetController::destroy(ScriptObject *o) { ScriptTabSheet *sts = static_cast(o->vcpu_getInterface(tabsheetGuid)); ASSERT(sts != NULL); delete sts; } void *ScriptTabSheetController::encapsulate(ScriptObject *o) { return NULL; // no encapsulation for tabsheet yet } void ScriptTabSheetController::deencapsulate(void *o) { } int ScriptTabSheetController::getNumFunctions() { return sizeof(exportedFunction) / sizeof(function_descriptor_struct); } const function_descriptor_struct *ScriptTabSheetController::getExportedFunctions() { return exportedFunction; } scriptVar ScriptTabSheetController::tabsheet_getCurPage(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) { SCRIPT_FUNCTION_INIT ScriptTabSheet *sts = static_cast(o->vcpu_getInterface(tabsheetGuid)); int a = 0; if (sts) a = sts->getCurPage(); return MAKE_SCRIPT_INT(a); } scriptVar ScriptTabSheetController::tabsheet_getNumPages(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) { SCRIPT_FUNCTION_INIT ScriptTabSheet *sts = static_cast(o->vcpu_getInterface(tabsheetGuid)); int a = 0; if (sts) a = sts->getNumPages(); return MAKE_SCRIPT_INT(a); } scriptVar ScriptTabSheetController::tabsheet_setCurPage(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a) { SCRIPT_FUNCTION_INIT ScriptTabSheet *sts = static_cast(o->vcpu_getInterface(tabsheetGuid)); int _a = GET_SCRIPT_INT(a); if (sts) sts->setCurPage(_a); RETURN_SCRIPT_VOID; } scriptVar ScriptTabSheetController::tabsheet_nextPage(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) { SCRIPT_FUNCTION_INIT ScriptTabSheet *sts = static_cast(o->vcpu_getInterface(tabsheetGuid)); if (sts) sts->nextPage(); RETURN_SCRIPT_VOID; } scriptVar ScriptTabSheetController::tabsheet_previousPage(SCRIPT_FUNCTION_PARAMS, ScriptObject *o) { SCRIPT_FUNCTION_INIT ScriptTabSheet *sts = static_cast(o->vcpu_getInterface(tabsheetGuid)); if (sts) sts->previousPage(); RETURN_SCRIPT_VOID; }