diff options
Diffstat (limited to 'Src/Wasabi/api/wndmgr/autopopup.h')
-rw-r--r-- | Src/Wasabi/api/wndmgr/autopopup.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wndmgr/autopopup.h b/Src/Wasabi/api/wndmgr/autopopup.h new file mode 100644 index 00000000..c37bd122 --- /dev/null +++ b/Src/Wasabi/api/wndmgr/autopopup.h @@ -0,0 +1,76 @@ +#ifndef __AUTOPOPUP_H +#define __AUTOPOPUP_H + +#include <bfc/ptrlist.h> +#include <bfc/string/StringW.h> + +class AutoPopupEntry; +class AutoPopupEntrySort; + +#define SKINPARTID_NONE -1 + +class AutoPopup { + + public: + + static int registerGuid(int skinpartid/*SKINPARTID_NONE*/, GUID g, const wchar_t *desc, const wchar_t *prefered_container=NULL, int required=FALSE); + static int registerGroupId(int skinpartid/*SKINPARTID_NONE*/, const wchar_t *groupid, const wchar_t *desc, const wchar_t *prefered_container=NULL, int required=FALSE); + static void unregister(int id); + + static int getNumItems(); + static AutoPopupEntry *enumItem(int n); + static AutoPopupEntry *getByDesc(const wchar_t *desc); + + static void reset(); + static void removeSkinPart(int id); + + static int allocNid(); + static void removeAllAddons(); + + static int getNumGuids(); + static GUID enumGuid(int n); + static int getNumGroups(); + static const wchar_t *enumGroup(int n); + static const wchar_t *enumGuidDescription(int n); + static const wchar_t *enumGroupDescription(int n); + + static const wchar_t *getDefaultContainerParams(const wchar_t *groupid, GUID g, int *flag); +}; + +class AutoPopupEntry { + + public: + + AutoPopupEntry(int skinpartid, GUID g, const wchar_t *grpid, const wchar_t *description, const wchar_t *prefered_container=NULL, int required=TRUE) : guid(g), groupid(grpid), desc(description), container(prefered_container), container_how(required), skinpart(skinpartid) { nid = AutoPopup::allocNid(); } + virtual ~AutoPopupEntry() { } + + GUID getGuid() { return guid; } + const wchar_t *getGroupId() { return groupid; } + const wchar_t *getDescription() { return desc; } + int getNid() { return nid; } + const wchar_t *getPreferedContainer() { return container; } + int getContainerHow() { return container_how; } + int getSkinpart() { return skinpart; } + + private: + + GUID guid; + StringW groupid; + StringW desc; + int nid; + StringW container; + int container_how; + int skinpart; +}; + +class AutoPopupEntrySort { +public: + static int compareItem(AutoPopupEntry *p1, AutoPopupEntry *p2) { + return WCSICMP(p1->getDescription(), p2->getDescription()); + } + static int compareAttrib(const wchar_t *attrib, AutoPopupEntry *item) { + return WCSICMP(attrib, item->getDescription()); + } +}; + +#endif |