aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/wnd/wndclass/guiobjwnd.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/wnd/wndclass/guiobjwnd.h')
-rw-r--r--Src/Wasabi/api/wnd/wndclass/guiobjwnd.h237
1 files changed, 237 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wnd/wndclass/guiobjwnd.h b/Src/Wasabi/api/wnd/wndclass/guiobjwnd.h
new file mode 100644
index 00000000..f172c92f
--- /dev/null
+++ b/Src/Wasabi/api/wnd/wndclass/guiobjwnd.h
@@ -0,0 +1,237 @@
+#ifndef __GUIOBJWND_H
+#define __GUIOBJWND_H
+
+#if defined(WIN32) || defined(WIN64)
+#define USEAPPBAR
+#endif
+
+#ifdef USEAPPBAR
+#include <api/wnd/wndclass/appbarwnd.h>
+#define GUIOBJECTWND_PARENT AppBarWnd
+#else
+#include <api/wnd/wndclass/clickwnd.h>
+#define GUIOBJECTWND_PARENT ClickWnd
+#endif
+
+#include <api/script/scriptobj.h>
+#include <api/script/objects/guiobject.h>
+#include <api/script/objects/rootobj.h>
+#include <api/skin/xmlobject.h>
+#include <api/service/svcs/svc_xuiobject.h>
+
+// {E5760861-5489-4ffc-BE02-061D9DA6CD1B}
+const GUID guiObjectWndGuid =
+ { 0xe5760861, 0x5489, 0x4ffc, { 0xbe, 0x2, 0x6, 0x1d, 0x9d, 0xa6, 0xcd, 0x1b } };
+
+#define XUI_ATTRIBUTE_IMPLIED XML_ATTRIBUTE_IMPLIED
+#define XUI_ATTRIBUTE_REQUIRED XML_ATTRIBUTE_REQUIRED
+
+class GuiObjectWnd : public GUIOBJECTWND_PARENT, public RootObjectInstance, public XmlObjectI
+{
+public:
+ GuiObjectWnd();
+ virtual ~GuiObjectWnd();
+
+#ifdef WASABI_COMPILE_CONFIG
+ virtual int onReloadConfig() { return 1; }
+#endif
+
+ // XmlObject
+
+ virtual int setXmlParamById(int xmlhandle, int attrid, const wchar_t *name, const wchar_t *value);
+ virtual int onUnknownXmlParam(const wchar_t *param, const wchar_t *value);
+ virtual int newXuiHandle() { return newXmlHandle(); }
+
+ // ClickWnd
+
+ virtual int onRightButtonDown(int x, int y);
+ virtual int onRightButtonUp(int x, int y);
+ virtual int onLeftButtonDown(int x, int y);
+ virtual int onLeftButtonUp(int x, int y);
+ virtual int onMouseMove(int x, int y);
+ virtual int onLeftButtonDblClk(int x, int y);
+ virtual int onRightButtonDblClk(int x, int y);
+ virtual int onMouseWheelUp(int click, int lines);
+ virtual int onMouseWheelDown(int click, int lines);
+ virtual int onResize();
+ virtual int onActivate();
+ virtual int onDeactivate();
+ virtual void onEnterArea();
+ virtual void onLeaveArea();
+ virtual void onSetVisible(int show);
+ virtual int onEnable(int en);
+ virtual void onCancelCapture();
+ virtual int dragDrop(ifc_window *sourceWnd, int x, int y);
+ virtual int acceptExternalDrops() { return 1; }
+ virtual int dragEnter(ifc_window *sourceWnd);
+ virtual int dragOver(int x, int y, ifc_window *sourceWnd);
+ virtual int dragLeave(ifc_window *sourceWnd);
+ virtual void *getInterface(GUID g);
+ virtual int onAction(const wchar_t *action, const wchar_t *param, int x, int y, intptr_t p1, intptr_t p2, void *data, size_t datalen, ifc_window *source);
+ virtual const wchar_t *getId();
+ virtual int onAcceleratorEvent(const wchar_t *name);
+
+ virtual void setContent(const wchar_t *groupid_orguid, int autoresizefromcontent = 0);
+ virtual void setContentBySkinItem(SkinItem *item, int autoresizefromcontent = 0);
+ virtual void onNewContent() {}
+
+ // AbstractWndHolder
+ virtual void abstract_onNewContent();
+
+
+ virtual int onUnknownXuiParam(const wchar_t *param, const wchar_t *value) { return 0; }
+
+ virtual GuiObject *findObject(const wchar_t *object_id);
+#ifdef WASABI_COMPILE_SCRIPT
+ virtual ScriptObject *findScriptObject(const wchar_t *object_id);
+#endif
+#ifdef WASABI_COMPILE_SKIN
+ virtual GuiObject *getContent() { return abstract_getContent(); }
+ virtual ScriptObject *getContentScriptObject() { return abstract_getContentScriptObject(); }
+ virtual ifc_window *getContentRootWnd() { return abstract_getContentRootWnd(); }
+#endif
+
+ // BaseWnd
+
+ virtual int onInit();
+ virtual int onPostOnInit();
+ virtual int onChar(unsigned int c);
+ virtual int onKeyDown(int vkcode);
+ virtual int onKeyUp(int vkcode);
+
+ virtual int onGetFocus();
+ virtual int onKillFocus();
+ virtual int wantFocus();
+
+ const wchar_t *getTip();
+ // GuiObjectWnd
+ int wantTranslation();
+ GuiObject *getGuiObject();
+ RootObject *getRootObject();
+ int cfg_reentry;
+
+ // XuiObject
+ virtual int setXuiParam(int _xuihandle, int attrid, const wchar_t *name, const wchar_t *value);
+
+protected:
+ /*static */void CreateXMLParameters(int master_handle);
+private:
+ GuiObject *my_gui_object;
+ int xuihandle;
+ static XMLParamPair params[];
+
+
+public:
+
+ enum {
+ GUIOBJECT_ID = 0,
+ GUIOBJECT_ALPHA,
+ GUIOBJECT_ACTIVEALPHA,
+ GUIOBJECT_INACTIVEALPHA,
+ GUIOBJECT_SYSREGION,
+ GUIOBJECT_RECTRGN,
+ GUIOBJECT_TOOLTIP,
+ GUIOBJECT_SYSMETRICSX,
+ GUIOBJECT_SYSMETRICSY,
+ GUIOBJECT_SYSMETRICSW,
+ GUIOBJECT_SYSMETRICSH,
+ GUIOBJECT_MOVE,
+ GUIOBJECT_RENDERBASETEXTURE,
+ GUIOBJECT_CFGATTR,
+ GUIOBJECT_X,
+ GUIOBJECT_Y,
+ GUIOBJECT_W,
+ GUIOBJECT_H,
+ GUIOBJECT_VISIBLE,
+ GUIOBJECT_ENABLED,
+ GUIOBJECT_RELATX,
+ GUIOBJECT_RELATY,
+ GUIOBJECT_RELATW,
+ GUIOBJECT_RELATH,
+ GUIOBJECT_DROPTARGET,
+ GUIOBJECT_GHOST,
+ GUIOBJECT_NOTIFY,
+ GUIOBJECT_FOCUSONCLICK,
+ GUIOBJECT_TABORDER,
+ GUIOBJECT_WANTFOCUS,
+ GUIOBJECT_SETNODBLCLICK,
+ GUIOBJECT_SETNOLEFTCLICK,
+ GUIOBJECT_SETNORIGHTCLICK,
+ GUIOBJECT_SETNOMOUSEMOVE,
+ GUIOBJECT_SETNOCONTEXTMENU,
+ GUIOBJECT_SETX1,
+ GUIOBJECT_SETY1,
+ GUIOBJECT_SETX2,
+ GUIOBJECT_SETY2,
+ GUIOBJECT_SETANCHOR,
+ GUIOBJECT_SETCURSOR,
+ GUIOBJECT_FITTOPARENT,
+ GUIOBJECT_USERDATA,
+#ifdef USEAPPBAR
+ GUIOBJECT_APPBAR,
+#endif
+ GUIOBJECT_TRANSLATE,
+ GUIOBJECT_NUMPARAMS
+ };
+
+
+};
+
+template <class T, const wchar_t XMLTAG[], char SVCNAME[]>
+class XuiObjectSvc : public svc_xuiObjectI
+{
+public:
+ static const wchar_t *xuisvc_getXmlTag() { return XMLTAG; }
+
+ int testTag(const wchar_t *xmltag)
+ {
+ if (!WCSICMP(xmltag, XMLTAG)) return 1;
+ return 0;
+ }
+ GuiObject *instantiate(const wchar_t *xmltag, ifc_xmlreaderparams *params = NULL)
+ {
+ if (testTag(xmltag))
+ {
+ T * obj = new T;
+ ASSERT(obj != NULL);
+ return obj->getGuiObject();
+ }
+ return NULL;
+ }
+ void destroy(GuiObject *g)
+ {
+ T *obj = static_cast<T *>(g->guiobject_getRootWnd());
+ delete obj;
+ }
+ static const char *getServiceName() { return SVCNAME; }
+};
+
+template <class T>
+class XuiObjectSvc2 : public svc_xuiObjectI
+{
+public:
+ static const wchar_t *xuisvc_getXmlTag() { return T::xuiobject_getXmlTag(); }
+ int testTag(const wchar_t *xmltag)
+ {
+ if (!WCSICMP(xmltag, T::xuiobject_getXmlTag())) return 1;
+ return 0;
+ }
+ GuiObject *instantiate(const wchar_t *xmltag, ifc_xmlreaderparams *params = NULL)
+ {
+ if (testTag(xmltag))
+ {
+ T * obj = new T;
+ ASSERT(obj != NULL);
+ return obj->getGuiObject();
+ }
+ return NULL;
+ }
+ void destroy(GuiObject *g)
+ {
+ T *obj = static_cast<T *>(g->guiobject_getRootWnd());
+ delete obj;
+ }
+ static const char *getServiceName() { return T::xuiobject_getServiceName(); }
+};
+
+#endif