123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <precomp.h>
- #include "skinwnd.h"
- #include <api/wnd/api_window.h>
- #include <api/wnd/wndclass/guiobjwnd.h>
- #include <api/script/scriptguid.h>
- #include <api/script/objects/c_script/c_group.h>
- #include <api/script/objects/c_script/c_layout.h>
- #include <api/script/objects/c_script/c_container.h>
- #include <api/wnd/wndclass/wndholder.h>
- SkinWnd::SkinWnd(const wchar_t *group_id, const wchar_t *prefered_container, int container_flag, RECT *animated_rect_source, int transcient, int starthidden)
- {
- isnew = 0;
- wnd = WASABI_API_WNDMGR->skinwnd_createByGroupId(group_id, prefered_container, container_flag, animated_rect_source, transcient, starthidden, &isnew);
- notifyMinMaxChanged();
- }
- SkinWnd::SkinWnd(GUID svc_or_group_guid, const wchar_t *prefered_container, int container_flag, RECT *animated_rect_source, int transcient, int starthidden)
- {
- isnew = 0;
- wnd = WASABI_API_WNDMGR->skinwnd_createByGuid(svc_or_group_guid, prefered_container, container_flag, animated_rect_source, transcient, starthidden, &isnew);
- notifyMinMaxChanged();
- }
- SkinWnd::~SkinWnd()
- {}
- void SkinWnd::destroy(RECT *animated_rect_dest)
- {
- if (wnd == NULL) return ;
- if (!isnew)
- {
- ifc_window *w = wnd->findWindowByInterface(windowHolderGuid);
- WindowHolder *wh = static_cast<WindowHolder*>(w->getInterface(windowHolderGuid));
- if (wh != NULL)
- {
- wh->onRemoveWindow();
- return ;
- }
- }
- WASABI_API_WNDMGR->skinwnd_destroy(wnd, animated_rect_dest);
- }
- int SkinWnd::runModal(int center)
- {
- if (wnd == NULL) return 0;
- ifc_window *w = wnd->getDesktopParent();
- if (center)
- {
- C_Layout l(getLayout());
- l.center();
- }
- w->setVisible(1);
- return w->runModal();
- }
- void SkinWnd::endModal(int retcode)
- {
- if (wnd == NULL) return ;
- wnd->endModal(retcode);
- }
- GuiObject *SkinWnd::findObject(const wchar_t *object_id)
- {
- if (wnd == NULL) return NULL;
- GuiObject *obj = NULL;
- obj = static_cast<GuiObject *>(wnd->getInterface(guiObjectGuid));
- return obj->guiobject_findObject(object_id);
- }
- ScriptObject *SkinWnd::getContainer()
- {
- if (wnd == NULL) return NULL;
- ifc_window *dw = wnd->getDesktopParent();
- if (!dw) return NULL;
- ScriptObject *o = static_cast<ScriptObject *>(dw->getInterface(scriptObjectGuid));
- if (o != NULL)
- {
- return C_Layout(o).getContainer();
- }
- return NULL;
- }
- ScriptObject *SkinWnd::getLayout()
- {
- if (wnd == NULL) return NULL;
- ifc_window *dw = wnd->getDesktopParent();
- if (!dw) return NULL;
- ScriptObject *o = static_cast<ScriptObject *>(dw->getInterface(scriptObjectGuid));
- return o;
- }
- void SkinWnd::notifyMinMaxChanged()
- {
- if (wnd != NULL)
- {
- wnd->signalMinMaxEnforcerChanged();
- }
- }
|