aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/group.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/group.h')
-rw-r--r--Src/Wasabi/api/skin/widgets/group.h365
1 files changed, 365 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/group.h b/Src/Wasabi/api/skin/widgets/group.h
new file mode 100644
index 00000000..186541f6
--- /dev/null
+++ b/Src/Wasabi/api/skin/widgets/group.h
@@ -0,0 +1,365 @@
+#ifndef __GROUP_H
+#define __GROUP_H
+
+#ifndef _NOSTUDIO
+
+class Group;
+class Container;
+class Layout;
+class CfgItem;
+class CfgGroup;
+class SRegion;
+
+#include <bfc/tlist.h>
+#include <bfc/depview.h>
+#include <api/wnd/wndclass/embeddedxui.h>
+#include <api/wnd/wndclass/clickwnd.h>
+#include <api/wnd/wndclass/buttwnd.h>
+#include <tataki/bitmap/bitmap.h>
+#include <tataki/region/region.h>
+#ifdef WASABI_COMPILE_CONFIG
+#include <api/config/items/cfgitem.h>
+#endif // wasabi_compile_config
+
+#include <api/wndmgr/container.h>
+
+#endif // _nostudio
+
+#include <api/script/script.h>
+#include <api/script/scriptobj.h>
+#include <api/script/objects/guiobj.h>
+
+// {80F0F8BD-1BA5-42a6-A093-3236A00C8D4A}
+static const GUID cfgGroupGuid =
+{ 0x80f0f8bd, 0x1ba5, 0x42a6, { 0xa0, 0x93, 0x32, 0x36, 0xa0, 0xc, 0x8d, 0x4a } };
+
+#define RESIZE_MINW 96
+#define RESIZE_MINH 24
+
+class XmlObject;
+
+class GroupScriptController : 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);
+ virtual int getInstantiable();
+ virtual ScriptObject *cast(ScriptObject *, GUID g);
+
+ private:
+
+ static function_descriptor_struct exportedFunction[];
+
+};
+
+extern GroupScriptController *groupController;
+
+class XuiParam
+{
+ public:
+ XuiParam(const wchar_t *_param, const wchar_t *_value) : param(_param), value(_value) {}
+ virtual ~XuiParam() {}
+ StringW param;
+ StringW value;
+};
+
+#define GROUP_PARENT EmbeddedXuiObject
+
+class Group : public GROUP_PARENT
+{
+public:
+ Group();
+ virtual ~Group();
+
+ int onPaint(Canvas *canvas);
+
+ virtual int onResize();
+ virtual int onPostedMove();
+ virtual int onInit();
+ virtual Container *getParentContainer();
+ virtual int childNotify(ifc_window *child, int msg, intptr_t p1, intptr_t p2);
+
+ virtual void setBaseTexture(const wchar_t *b, int regis=1);
+ virtual SkinBitmap *getBaseTexture();
+ virtual ifc_window *getBaseTextureWindow();
+
+ virtual int setXmlParam(const wchar_t *paramname, const wchar_t *strvalue);
+ virtual int setXuiParam(int _xuihandle, int xuiid, const wchar_t *paramname, const wchar_t *strvalue);
+ virtual api_region *getRegion();
+ virtual void setRegion(api_region *r);
+ void reloadDefaults();
+ virtual int onGroupChange(const wchar_t *id);
+ virtual void autoResize();
+ virtual void startScripts();
+
+ void onCreateObject(GuiObject *o);
+ GuiObject *getObject(const wchar_t *id);
+
+ void sendNotifyToAllChildren(int notifymsg, intptr_t param1, intptr_t param2);
+
+ int isDeleting() { return deleting; }
+
+ void updatePos(GuiObject *o, RECT *r=NULL);
+
+ AutoSkinBitmap *background;
+ int x, y;
+#ifdef _WIN32
+ LPARAM wndHolder_getParentParam(int i=0);
+#endif
+
+ virtual void setDesignWidth(int w);
+ virtual void setDesignHeight(int h);
+ virtual int getDesignWidth();
+ virtual int getDesignHeight();
+
+ virtual void invalidateWindowRegion();
+ virtual void setRegionOp(int o);
+ virtual void setGroupContent(const wchar_t *id, SkinItem *specific_item, int scripts_enabled);
+ virtual const wchar_t *getGroupContentId();
+ virtual SkinItem *getGroupContentSkinItem();
+ virtual void setAutoWidthSource(const wchar_t *obj);
+ virtual void setAutoHeightSource(const wchar_t *obj);
+
+ virtual void cancelCapture() {};
+ virtual int getPreferences(int what);
+
+ virtual const wchar_t *vcpu_getClassName();
+ virtual ScriptObjectController *vcpu_getController() { return groupController; }
+
+ int getNumObjects();
+ ifc_window *enumObjects(int i);
+
+ void addChild(GuiObject *g);
+ void removeChild(GuiObject *g);
+
+#ifdef WASABI_COMPILE_WNDMGR
+ virtual void mouseResize(int x, int y, int resizeway);// screen coords!
+ virtual void beginMove();
+ virtual void beginScale();
+ virtual void beginResize();
+ virtual void endMove();
+ virtual void endScale();
+ virtual void endResize();
+#endif
+
+ virtual int getAutoWidth(void);
+ virtual int getAutoHeight(void);
+
+ virtual int isLayout();
+
+ void setDrawBackground(int t);
+ int getDrawBackground(void);
+
+#ifdef WASABI_COMPILE_CONFIG
+ static int isCfgGroup(Group *ptr);
+#endif
+
+ void addScript(int scriptid);
+ void deleteScripts();
+ int enumScript(int n);
+ int getNumScripts();
+ virtual int isDesktopAlphaSafe();
+ virtual int isTransparencySafe(int excludeme=0);
+
+ static int isGroup(Group *o);
+ const wchar_t *getBackgroundStr();
+ int getWidthBasedOn(GuiObject *o=NULL);
+ int getHeightBasedOn(GuiObject *o=NULL);
+
+ void fixPosition();
+
+ const wchar_t *embeddedxui_getEmbeddedObjectId() { return xui_embedded_id; }
+ virtual void onFillGroup();
+ virtual int onUnknownXuiParam(const wchar_t *xmlattributename, const wchar_t *value);
+
+ virtual ScriptObject *script_cast(GUID g);
+
+ virtual void onMinMaxEnforcerChanged();
+ virtual int isTransparencyForcedOff() { return 0; }
+
+protected:
+ /*static */void CreateXMLParameters(int master_handle);
+ static PtrList<CfgGroup> cfggrouplist;
+
+private:
+ StringW basetextureStr;
+ StringW xui_embedded_id;
+
+ void invalidateScaledReg();
+ void ensureScaledRegValid();
+
+ int resizing;
+ int size_w,size_h;
+ int cX,cY;
+ int captured;
+ POINT mousepos;
+ int propagatesize;
+
+ PtrList<XuiParam> xuiparams;
+
+ int moving;
+ int mover;
+ int drawbackground;
+ RECT oldRect;
+ int groupmaxheight;
+ int groupmaxwidth;
+ int groupminheight;
+ int groupminwidth;
+ int lockminmax;
+// int regionop;
+ TList<int> scripts;
+ RegionI *subtractedreg;
+ static PtrList<Group> groups;
+ StringW backgroundstr;
+ StringW instanceid;
+ RegionI *reg;
+ RegionI *scaledreg;
+ int scaledregionvalid;
+ int autoregionop;
+ StringW content_id;
+ SkinItem *content_item;
+ int no_init_on_addchild;
+ StringW autoheightsource;
+ StringW autowidthsource;
+ GuiObject *lastheightsource;
+ GuiObject *lastwidthsource;
+ int lastgetwidthbasedon, lastgetheightbasedon;
+
+ int default_w, default_h;
+ int design_w, design_h;
+ int scripts_enabled;
+ int xuihandle;
+ static XMLParamPair groupParams[];
+protected:
+ enum {
+ XUIGROUP_INSTANCEID=0,
+ XUIGROUP_BACKGROUND,
+ XUIGROUP_DRAWBACKGROUND,
+ XUIGROUP_DEFAULT_W,
+ XUIGROUP_DEFAULT_H,
+ XUIGROUP_MAXIMUM_H,
+ XUIGROUP_MAXIMUM_W,
+ XUIGROUP_MINIMUM_H,
+ XUIGROUP_MINIMUM_W,
+ XUIGROUP_PROPAGATESIZE,
+ XUIGROUP_LOCKMINMAX,
+ XUIGROUP_NAME,
+ XUIGROUP_AUTOWIDTHSOURCE,
+ XUIGROUP_AUTOHEIGHTSOURCE,
+ XUIGROUP_EMBED_XUI,
+ XUIGROUP_XUITAG,
+ XUIGROUP_INHERIT_GROUP,
+ XUIGROUP_INHERIT_CONTENT,
+ XUIGROUP_DESIGN_W,
+ XUIGROUP_DESIGN_H,
+ XUIGROUP_NUMPARAMS,
+ };
+
+// FG>
+// -- SCRIPT -----------------------------------------------------
+private:
+ PtrList<ScriptObject> script_objects;
+ PtrList<GuiObject> gui_objects;
+ int deleting;
+ int skinpart;
+ int alpha;
+ int disable_update_pos;
+
+public:
+ void addObject(GuiObject *o);
+ void removeObject(GuiObject *o);
+ void setSkinPartId(int i) { skinpart = i; }
+ int getSkinPartId() { return skinpart; }
+
+ static scriptVar script_vcpu_getObject(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar obj);
+ static scriptVar script_vcpu_getNumObjects(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_enumObject(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar i);
+ static scriptVar script_vcpu_onCreateObject(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar ob);
+ static scriptVar script_vcpu_getMousePosX(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_getMousePosY(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_subtractRegion(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar reg);
+ static scriptVar script_vcpu_isLayout(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_autoResize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+
+ static void instantiate(Layout *l);
+
+};
+
+extern const wchar_t groupXuiObjectStr[];
+extern char groupXuiSvcName[];
+class GroupXuiSvc : public XuiObjectSvc<Group, groupXuiObjectStr, groupXuiSvcName> {};
+
+
+#ifdef WASABI_COMPILE_CONFIG
+
+class CfgGroupScriptController : public GroupScriptController {
+ public:
+
+ virtual const wchar_t *getClassName();
+ virtual const wchar_t *getAncestorClassName();
+ virtual ScriptObjectController *getAncestorController() { return groupController; }
+ virtual int getNumFunctions();
+ virtual const function_descriptor_struct *getExportedFunctions();
+ virtual GUID getClassGuid();
+ virtual ScriptObject *instantiate();
+ virtual int getInstantiable();
+
+ private:
+
+ static function_descriptor_struct exportedFunction[];
+};
+
+extern CfgGroupScriptController *cfgGroupController;
+
+class CfgGroup : public Group, public DependentViewerTPtr<CfgItem> {
+ public:
+
+ CfgGroup();
+ virtual ~CfgGroup();
+
+ void setAttr(CfgItem *item, const wchar_t *name);
+ const wchar_t *vcpu_getClassName();
+ virtual ScriptObjectController *vcpu_getController() { return cfgGroupController; }
+
+ virtual int viewer_onEvent(CfgItem *item, int event, intptr_t param, void *ptr, size_t ptrlen);
+ virtual void dataChanged();
+
+ CfgItem *getCfgItem();
+ const wchar_t *getAttributeName();
+ const wchar_t *getCfgGuid() { return cfgguid; }
+ virtual int onInit();
+
+ static scriptVar script_vcpu_cfgGetInt(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_cfgSetInt(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v);
+ static scriptVar script_vcpu_cfgGetFloat(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_cfgSetFloat(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v);
+ static scriptVar script_vcpu_cfgGetString(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_cfgSetString(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v);
+ static scriptVar script_vcpu_cfgGetName(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_cfgGetGuid(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+ static scriptVar script_vcpu_onCfgChanged(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
+
+ private:
+
+ CfgItem *cfgitem;
+ StringW attrname;
+ StringW cfgguid;
+ static wchar_t txt[512];
+};
+
+extern const wchar_t cfgGroupXuiObjectStr[];
+extern char cfgGroupXuiSvcName[];
+class CfgGroupXuiSvc : public XuiObjectSvc<CfgGroup, cfgGroupXuiObjectStr, cfgGroupXuiSvcName> {};
+
+#endif // wasabi_compile_config
+
+
+#endif // group.h