Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
157
Src/Wasabi/api/wndmgr/autopopup.cpp
Normal file
157
Src/Wasabi/api/wndmgr/autopopup.cpp
Normal file
|
@ -0,0 +1,157 @@
|
|||
#include <precomp.h>
|
||||
#include "autopopup.h"
|
||||
|
||||
static PtrListQuickSorted<AutoPopupEntry, AutoPopupEntrySort> entries;
|
||||
static int nid=0;
|
||||
|
||||
int AutoPopup::registerGuid(int skinpartid, GUID g, const wchar_t *desc, const wchar_t *prefered_container, int required)
|
||||
{
|
||||
if (desc == NULL || !*desc) desc = L"[????]";
|
||||
AutoPopupEntry *ape = new AutoPopupEntry(skinpartid, g, NULL, desc, prefered_container, required);
|
||||
entries.addItem(ape);
|
||||
return ape->getNid();
|
||||
}
|
||||
|
||||
int AutoPopup::registerGroupId(int skinpartid, const wchar_t *groupid, const wchar_t *desc, const wchar_t *prefered_container, int required) {
|
||||
if (desc == NULL || !*desc) desc = L"[????]";
|
||||
AutoPopupEntry *ape = new AutoPopupEntry(skinpartid, INVALID_GUID, groupid, desc, prefered_container, required);
|
||||
entries.addItem(ape);
|
||||
return ape->getNid();
|
||||
}
|
||||
|
||||
int AutoPopup::getNumItems() { return entries.getNumItems(); }
|
||||
AutoPopupEntry *AutoPopup::enumItem(int n) { return entries.enumItem(n); }
|
||||
|
||||
int AutoPopup::getNumGroups() {
|
||||
int n = 0;
|
||||
foreach(entries)
|
||||
AutoPopupEntry *e = entries.getfor();
|
||||
if (e->getGroupId() != NULL && e->getGuid() == INVALID_GUID) n++;
|
||||
endfor;
|
||||
return n;
|
||||
}
|
||||
|
||||
int AutoPopup::getNumGuids() {
|
||||
int n = 0;
|
||||
foreach(entries)
|
||||
AutoPopupEntry *e = entries.getfor();
|
||||
if (e->getGroupId() == NULL && e->getGuid() != INVALID_GUID) n++;
|
||||
endfor;
|
||||
return n;
|
||||
}
|
||||
|
||||
const wchar_t *AutoPopup::enumGroup(int n) {
|
||||
int c = 0;
|
||||
foreach(entries)
|
||||
AutoPopupEntry *e = entries.getfor();
|
||||
if (e->getGroupId() != NULL && e->getGuid() == INVALID_GUID) {
|
||||
if (c == n) return e->getGroupId();
|
||||
c++;
|
||||
}
|
||||
endfor;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GUID AutoPopup::enumGuid(int n) {
|
||||
int c = 0;
|
||||
foreach(entries)
|
||||
AutoPopupEntry *e = entries.getfor();
|
||||
if (e->getGroupId() == NULL && e->getGuid() != INVALID_GUID) {
|
||||
if (c == n) return e->getGuid();
|
||||
c++;
|
||||
}
|
||||
endfor;
|
||||
return INVALID_GUID;
|
||||
}
|
||||
|
||||
const wchar_t *AutoPopup::enumGroupDescription(int n) {
|
||||
int c = 0;
|
||||
foreach(entries)
|
||||
AutoPopupEntry *e = entries.getfor();
|
||||
if (e->getGroupId() != NULL && e->getGuid() == INVALID_GUID) {
|
||||
if (c == n) return e->getDescription();
|
||||
c++;
|
||||
}
|
||||
endfor;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const wchar_t *AutoPopup::enumGuidDescription(int n) {
|
||||
int c = 0;
|
||||
foreach(entries)
|
||||
AutoPopupEntry *e = entries.getfor();
|
||||
if (e->getGroupId() == NULL && e->getGuid() != INVALID_GUID) {
|
||||
if (c == n) return e->getDescription();
|
||||
c++;
|
||||
}
|
||||
endfor;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
AutoPopupEntry *AutoPopup::getByDesc(const wchar_t *desc) {
|
||||
foreach(entries)
|
||||
if (!WCSICMP(desc, entries.getfor()->getDescription()))
|
||||
return entries.getfor();
|
||||
endfor;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void AutoPopup::reset() { entries.deleteAll(); nid = 0; }
|
||||
|
||||
const wchar_t *AutoPopup::getDefaultContainerParams(const wchar_t *groupid, GUID g, int *flag) {
|
||||
if (groupid == NULL) { // guid
|
||||
for (int i=entries.getNumItems()-1;i>=0;i--) {
|
||||
if (entries.enumItem(i)->getGuid() == g) {
|
||||
if (flag != NULL) *flag = entries.enumItem(i)->getContainerHow();
|
||||
return entries.enumItem(i)->getPreferedContainer();
|
||||
}
|
||||
}
|
||||
} else { // groupid
|
||||
for (int i=entries.getNumItems()-1;i>=0;i--)
|
||||
{
|
||||
if (WCSCASEEQLSAFE(entries.enumItem(i)->getGroupId(), groupid))
|
||||
{
|
||||
if (flag != NULL) *flag = entries.enumItem(i)->getContainerHow();
|
||||
return entries.enumItem(i)->getPreferedContainer();
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void AutoPopup::unregister(int id) {
|
||||
for (int i=0;i<entries.getNumItems();i++) {
|
||||
AutoPopupEntry *ape = entries.enumItem(i);
|
||||
if (ape->getNid() == id) {
|
||||
delete ape;
|
||||
entries.removeByPos(i);
|
||||
i--;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AutoPopup::removeSkinPart(int id) {
|
||||
for (int i=0;i<entries.getNumItems();i++) {
|
||||
AutoPopupEntry *ape = entries.enumItem(i);
|
||||
if (ape->getSkinpart() == id) {
|
||||
delete ape;
|
||||
entries.removeByPos(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int AutoPopup::allocNid() { return nid++; }
|
||||
|
||||
void AutoPopup::removeAllAddons() {
|
||||
for (int i=0;i<entries.getNumItems();i++) {
|
||||
AutoPopupEntry *ape = entries.enumItem(i);
|
||||
if (ape->getSkinpart() != SKINPARTID_NONE) {
|
||||
delete ape;
|
||||
entries.removeByPos(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue