aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/xuiframe.h
blob: 0a16e4b41c6d3a5798b2bd817bc0b47cab54bbc7 (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
#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