diff options
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/xuicheckbox.h')
-rw-r--r-- | Src/Wasabi/api/skin/widgets/xuicheckbox.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/xuicheckbox.h b/Src/Wasabi/api/skin/widgets/xuicheckbox.h new file mode 100644 index 00000000..295ad4e9 --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/xuicheckbox.h @@ -0,0 +1,81 @@ +#ifndef __SCRIPTCHECKBOX_H +#define __SCRIPTCHECKBOX_H + +#include <api/skin/widgets/checkbox.h> +#include <api/script/objects/c_script/h_guiobject.h> +#include <api/script/objcontroller.h> +#include <api/wnd/accessible.h> + +#define SCRIPTCHECKBOX_PARENT CheckBox + +// ----------------------------------------------------------------------- +// Your wnd object class +class ScriptCheckBox : public SCRIPTCHECKBOX_PARENT { + + public: + + ScriptCheckBox(); + virtual ~ScriptCheckBox(); + + // XuiObject automatically calls this back for all parameters registered using addParam + // encountered in the xml source + virtual int setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value); + + virtual void onToggle(); + + virtual int accessibility_getState() { return CHECKBOX_PARENT::accessibility_getState() | (isActivated() ? STATE_SYSTEM_CHECKED : 0); } +protected: + /*static */void CreateXMLParameters(int master_handle); + private: + + // a list of IDs for our xml attributes, we use them in addParam() in the constructor + enum { + SCRIPTCHECKBOX_TEXT = 0, + SCRIPTCHECKBOX_RADIOID, + SCRIPTCHECKBOX_RADIOVAL, + SCRIPTCHECKBOX_ACTION, + SCRIPTCHECKBOX_ACTIONPARAM, + SCRIPTCHECKBOX_ACTIONTARGET, + }; + int myxuihandle; + static XMLParamPair params[]; +}; + +// ----------------------------------------------------------------------------------------------------- +class CheckBoxController : public ScriptObjectControllerI { + public: + + virtual const wchar_t *getClassName() { return L"Checkbox"; } + virtual const wchar_t *getAncestorClassName() { return L"GuiObject"; } + virtual ScriptObjectController *getAncestorController() { return WASABI_API_MAKI->maki_getController(guiObjectGuid); } + virtual int getNumFunctions(); + virtual const function_descriptor_struct *getExportedFunctions(); + virtual GUID getClassGuid() { return checkBoxGuid; } + virtual ScriptObject *instantiate(); + virtual void destroy(ScriptObject *o); + virtual void *encapsulate(ScriptObject *o); + virtual void deencapsulate(void *o); + + public: + static scriptVar onToggle(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar newstate); + static scriptVar setChecked(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar state); + static scriptVar isChecked(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar setText(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar text); + static scriptVar getText(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + + private: + + static function_descriptor_struct exportedFunction[]; +}; + +extern CheckBoxController *checkBoxController; + + +// ----------------------------------------------------------------------- +// This defines the svc_xuiObject that exposes your wnd object + +extern const wchar_t ScriptCheckBoxXuiObjectStr[]; +extern char ScriptCheckBoxXuiSvcName[]; +class ScriptCheckBoxXuiSvc : public XuiObjectSvc<ScriptCheckBox, ScriptCheckBoxXuiObjectStr, ScriptCheckBoxXuiSvcName> {}; + +#endif |