diff options
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/button.h')
-rw-r--r-- | Src/Wasabi/api/skin/widgets/button.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/button.h b/Src/Wasabi/api/skin/widgets/button.h new file mode 100644 index 00000000..383c9b75 --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/button.h @@ -0,0 +1,134 @@ +#ifndef _BUTTON_H +#define _BUTTON_H + +#include <bfc/string/bfcstring.h> +#include <api/script/script.h> +#include <api/wnd/wndclass/buttwnd.h> +#include <api/script/objects/guiobj.h> +#include <api/syscb/callbacks/corecbi.h> +#include <api/wndmgr/layout.h> +#include <api/wnd/wndclass/guiobjwnd.h> +#include <api/service/svcs/svc_xuiobject.h> + +#define BUTTON_PARENT ButtonWnd + +class ComponentBucket2; + +class ScriptObject; + +class ButtonScriptController: 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 ButtonScriptController *buttonController; + +namespace Wasabi // Apple defines "Button" so we're pretty much forced to namespace this... annoying +{ +#ifdef WASABI_COMPILE_MEDIACORE +class Button : public BUTTON_PARENT, public CoreCallbackI { +#else +class Button : public BUTTON_PARENT { +#endif + +public: + Button(); + virtual ~Button(); + + virtual int onInit(); + virtual int setXuiParam(int _xuihandle, int xmlattributeid, const wchar_t *paramname, const wchar_t *strvalue); + virtual void setParam(const wchar_t *p); + virtual int getPreferences(int what); + virtual const wchar_t *getParam(); + virtual int onLeftButtonUp(int x, int y); + virtual int onLeftButtonDown(int x, int y); + virtual void onLeftPush(int x, int y); + virtual void onRightPush(int x, int y); + virtual int onActivateButton(int is); + + virtual int childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2); + + virtual int wantAutoContextMenu(); +#ifdef WASABI_WIDGETS_COMPBUCK + virtual void setCBTarget(const wchar_t *t); +#endif + virtual void setAction(const wchar_t *action); + + virtual int onShowWindow(Container *c, GUID guid, const wchar_t *groupid); + virtual int onHideWindow(Container *c, GUID guid, const wchar_t *groupid); + +protected: + /*static */void CreateXMLParameters(int master_handle); +#ifdef WASABI_COMPILE_MEDIACORE + virtual int corecb_onEQStatusChange(int newval); + virtual int corecb_onEQAutoChange(int newval); +#endif + StringW s_normal, s_down, s_hover, s_active; + int btn_getXuiHandle() { return xuihandle; } + int retcode; + virtual void setupBitmaps(); + + enum { + BUTTON_TEXT = 0, + BUTTON_ACTION, + BUTTON_IMAGE, + BUTTON_DOWNIMAGE, + BUTTON_HOVERIMAGE, + BUTTON_ACTIVEIMAGE, + BUTTON_PARAM, + BUTTON_RECTRGN, + BUTTON_CBTARGET, + BUTTON_BORDERS, + BUTTON_BORDERSTYLE, + BUTTON_RETCODE, + BUTTON_ACTIONTARGET, + BUTTON_CENTER_IMAGE, + BUTTON_TEXTCOLOR, + BUTTON_TEXTHOVERCOLOR, + BUTTON_TEXTDIMMEDCOLOR, + BUTTON_NUMPARAMS, + }; + +private: + StringW param; + StringW action, actionstr, actionname; + StringW action_target; + ComponentBucket2 *cbtarget; + int borders; + int disablenextcontextmenu; + int xuihandle; + static XMLParamPair params[]; + +public: + static scriptVar script_vcpu_setActivatedNoCallback(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v); + static scriptVar script_vcpu_onLeftClick(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onRightClick(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_leftClick(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_rightClick(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_setActivated(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v); + static scriptVar script_vcpu_getActivated(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onActivate(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v); +}; +} + +extern const wchar_t buttonXuiObjectStr[]; +extern char buttonXuiSvcName[]; +class ButtonXuiSvc : public XuiObjectSvc<Wasabi::Button, buttonXuiObjectStr, buttonXuiSvcName> {}; + + +#endif |