aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/wndmgr/skinembed.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Wasabi/api/wndmgr/skinembed.h')
-rw-r--r--Src/Wasabi/api/wndmgr/skinembed.h76
1 files changed, 76 insertions, 0 deletions
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 <bfc/nsguid.h>
+#include <bfc/string/bfcstring.h>
+#include <bfc/string/StringW.h>
+#include <bfc/ptrlist.h>
+#include <bfc/depend.h>
+#include <api/timer/timerclient.h>
+
+#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<WindowHolder> wndholders;
+ PtrList<SkinEmbedEntry> inserted;
+ PtrList<SkinEmbedEntry> allofthem;
+ static PtrList<SkinEmbedEntry> in_deferred_callback;
+ static PtrList<Container> cancel_deferred_destroy;
+ static PtrList<Container> deferred_destroy;
+};
+
+extern SkinEmbedder *skinEmbedder;
+
+#endif