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/wndmgr/skinembed.h | 76 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Src/Wasabi/api/wndmgr/skinembed.h (limited to 'Src/Wasabi/api/wndmgr/skinembed.h') diff --git a/Src/Wasabi/api/wndmgr/skinembed.h b/Src/Wasabi/api/wndmgr/skinembed.h new file mode 100644 index 00000000..e33630ab --- /dev/null +++ b/Src/Wasabi/api/wndmgr/skinembed.h @@ -0,0 +1,76 @@ +#ifndef __SKIN_EMBEDDER_H +#define __SKIN_EMBEDDER_H + +#include +#include +#include +#include +#include +#include + +#define CB_DESTROYCONTAINER 0x887 + +class ifc_window; +class WindowHolder; +class Container; +class Layout; + +class SkinEmbedEntry { + public: + SkinEmbedEntry(api_dependent *d, ifc_window *w, GUID g, const wchar_t *gid, const wchar_t *prefered_container, int container_flag, Container *c, WindowHolder *wh) : groupid(gid), guid(g), dep(d), wnd(w), required(container_flag), layout(prefered_container), container(c), wndholder(wh) { } + virtual ~SkinEmbedEntry() { } + + StringW groupid; + GUID guid; + api_dependent *dep; + ifc_window *wnd; + int required; + StringW layout; + Container *container; + WindowHolder *wndholder; +}; + +class SkinEmbedder : public DependentViewerI, public TimerClientDI { + public: + + SkinEmbedder(); + virtual ~SkinEmbedder(); + + int toggle(GUID g, const wchar_t *prefered_container=NULL, int container_flag=0, RECT *r=NULL, int transcient=0); + int toggle(const wchar_t *groupid, const wchar_t *prefered_container=NULL, int container_flag=0, RECT *r=NULL, int transcient=0); + ifc_window *create(GUID g, const wchar_t *prefered_container=NULL, int container_flag=0, RECT *r=NULL, int transcient=0, int starthidden=0, int *isnew=NULL); + ifc_window *create(const wchar_t *groupid, const wchar_t *prefered_container=NULL, int container_flag=0, RECT *r=NULL, int transcient=0, int starthidden=0, int *isnew=NULL); + void destroy(ifc_window *w, RECT *r=NULL); + int getNumItems(GUID g); + int getNumItems(const wchar_t *groupid); + ifc_window *enumItem(GUID g, int n); + ifc_window *enumItem(const wchar_t *groupid, int n); + WindowHolder *getSuitableWindowHolder(GUID g, const wchar_t *group_id, Container *cont, Layout *lay, int visible, int dynamic, int empty, int has_self, int autoavail); + void registerWindowHolder(WindowHolder *w); + void unregisterWindowHolder(WindowHolder *w); + void destroyContainer(Container *o); + virtual int timerclient_onDeferredCallback(intptr_t param1, intptr_t param2); + virtual void timerclient_timerCallback(int id); +#ifdef WASABI_COMPILE_CONFIG + void restoreSavedState(); + void saveState(); +#endif + void attachToSkin(ifc_window *w, int side, int size); + + virtual int viewer_onItemDeleted(api_dependent *item); + static void cancelDestroyContainer(Container *c); + + private: + ifc_window *create(GUID g, const wchar_t *groupid, const wchar_t *prefered_container=NULL, int container_flag=0, RECT *r=NULL, int transcient=0, int starthidden=0, int *isnew=NULL); + + PtrList wndholders; + PtrList inserted; + PtrList allofthem; + static PtrList in_deferred_callback; + static PtrList cancel_deferred_destroy; + static PtrList deferred_destroy; +}; + +extern SkinEmbedder *skinEmbedder; + +#endif -- cgit