From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Wasabi/api/skin/widgets/button.h | 134 +++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 Src/Wasabi/api/skin/widgets/button.h (limited to 'Src/Wasabi/api/skin/widgets/button.h') 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 +#include +#include +#include +#include +#include +#include +#include + +#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 {}; + + +#endif -- cgit