diff options
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/xuiframe.h')
-rw-r--r-- | Src/Wasabi/api/skin/widgets/xuiframe.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/xuiframe.h b/Src/Wasabi/api/skin/widgets/xuiframe.h new file mode 100644 index 00000000..0a16e4b4 --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/xuiframe.h @@ -0,0 +1,97 @@ +#ifndef __XUIFRAME_H +#define __XUIFRAME_H + +#include <api/wnd/wndclass/framewnd.h> +#include <api/script/objects/guiobj.h> + +#define SCRIPTFRAME_PARENT FrameWnd + +/* --------- Script Object for ScriptFrame --------- */ +class FrameScriptController : public GuiObjectScriptController +{ + public: + + virtual const wchar_t *getClassName(); + virtual const wchar_t *getAncestorClassName(); + virtual ScriptObjectController *getAncestorController() { return guiController; } + virtual int getNumFunctions(); + virtual const function_descriptor_struct *getExportedFunctions(); + virtual GUID getClassGuid(); + virtual ScriptObject *instantiate(); + virtual void destroy(ScriptObject *o); + virtual void *encapsulate(ScriptObject *o); + virtual void deencapsulate(void *o); + + private: + + static function_descriptor_struct exportedFunction[]; + +}; + +extern FrameScriptController *frameController; + +// ----------------------------------------------------------------------- +// Your wnd object class + +class ScriptFrame : public SCRIPTFRAME_PARENT { + + public: + + ScriptFrame(); + virtual ~ScriptFrame(); + + virtual int onInit(); + + virtual int setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value); + + void setOrientation(const wchar_t *elementname); + void setLeft(const wchar_t *groupname); + void setRight(const wchar_t *groupname); + void setFrom(const wchar_t *from); + void setWidth(const wchar_t *w); + void setResize(const wchar_t *r); + + virtual int wantRenderBaseTexture() { return 0; } + + void onResizeChildren(RECT leftr, RECT rightr); + + virtual const wchar_t *vcpu_getClassName(); + virtual ScriptObjectController *vcpu_getController() { return frameController; } +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 { + SCRIPTFRAME_SETORIENTATION = 0, + SCRIPTFRAME_SETLEFT, + SCRIPTFRAME_SETRIGHT, + SCRIPTFRAME_SETFROM, + SCRIPTFRAME_SETWIDTH, + SCRIPTFRAME_SETRESIZEABLE, + SCRIPTFRAME_SETMAXWIDTH, + SCRIPTFRAME_SETMINWIDTH, + SCRIPTFRAME_SETSNAP, + SCRIPTFRAME_SETV_BITMAP, + SCRIPTFRAME_SETV_GRABBER, + }; + static XMLParamPair params[]; + int myxuihandle; + StringW left, right; + ifc_window *rootwndleft, *rootwndright; + int from, orientation, resizable; + int width; + public: + static scriptVar script_vcpu_setPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar t); + static scriptVar script_vcpu_getPosition(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); +}; + + +// ----------------------------------------------------------------------- +// This defines the svc_xuiObject that exposes your wnd object + +extern const wchar_t ScriptFrameXuiObjectStr[]; +extern char ScriptFrameXuiSvcName[]; +class FrameXuiSvc : public XuiObjectSvc<ScriptFrame, ScriptFrameXuiObjectStr, ScriptFrameXuiSvcName> {}; + +#endif |