123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 |
- #ifndef __LAYOUT_H
- #define __LAYOUT_H
- class Layout;
- class Group;
- class Container;
- class Layer;
- #include <bfc/tlist.h>
- #include <bfc/depend.h>
- #include <tataki/bitmap/bitmap.h>
- #include <api/wnd/wndclass/buttwnd.h>
- #include <tataki/region/region.h>
- #include <api/wndmgr/container.h>
- #include <api/skin/group.h>
- #include <api/skin/widgets/layer.h>
- #include <api/wndmgr/guistatuscb.h>
- #include <api/script/script.h>
- #include <api/script/scriptobj.h>
- #ifdef WASABI_WIDGETS_GUIOBJECT
- #include <api/script/objects/guiobj.h>
- #endif
- #include <api/wnd/accessible.h>
- #include <api/wndmgr/alphamgr.h>
- #include <api/wnd/resizable.h>
- class XmlObject;
- class Layout;
- extern AlphaMgr *alphaMgr;
- class LayoutScriptController : public GroupScriptController {
- public:
- virtual const wchar_t *getClassName();
- virtual const wchar_t *getAncestorClassName();
- virtual ScriptObjectController *getAncestorController() { return groupController; }
- virtual int getNumFunctions();
- virtual const function_descriptor_struct *getExportedFunctions();
- virtual GUID getClassGuid();
- virtual ScriptObject *instantiate();
- virtual int getInstantiable();
- virtual void destroy(ScriptObject *o);
- virtual void *encapsulate(ScriptObject *o);
- virtual void deencapsulate(void *o);
- private:
- static function_descriptor_struct exportedFunction[];
-
- };
- extern LayoutScriptController *layoutController;
- #ifndef _NOSTUDIO
- class AutoOpacityLinker;
- #define LAYOUT_PARENT Group
- #define LAYOUT_SCRIPTPARENT Group
- class Layout : public LAYOUT_SCRIPTPARENT, public DependentViewerI, public GuiResizable
- {
- public:
- Layout();
- virtual ~Layout();
- #ifdef _WIN32
- virtual LRESULT wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
- #else
- virtual OSStatus eventHandler(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData);
- #endif
- // int onPaint(Canvas *canvas);
- virtual int onInit();
- virtual int init(OSMODULEHANDLE inst, OSWINDOWHANDLE parent, int nochild);
- virtual int reinit(OSMODULEHANDLE inst, OSWINDOWHANDLE parent, int nochild);
- virtual int childNotify(ifc_window *child, int msg, intptr_t param1=0, intptr_t param2=0);
- virtual int onActionNotify(int action, intptr_t param=0);
-
- virtual void resize(int x, int y, int w, int h, int wantcb=1);
- virtual void move(int x, int y);
- // virtual int onRightButtonDown(int x, int y);
- // virtual int onLeftButtonDown(int x, int y);
- // virtual int onMouseMove(int x, int y);
- // virtual int onLeftButtonUp(int x, int y);
- virtual int onResize();
- virtual int onPostedMove();
- virtual int onPaint(Canvas *canvas);
- virtual void onSetDesktopAlpha(int a);
- virtual int isLayout();
- virtual void setAlphaBackground(const wchar_t *txture);
- virtual SkinBitmap *getBaseTexture();
- virtual void onGuiObjectSetVisible(GuiObject *o, int status); // called whenever a child shows/hide
- virtual ifc_window *getCustomOwner();
- virtual void addLockedLayout(Layout *l);
- virtual void removeLockedLayout(Layout *l);
- virtual int getNumLockedLayouts();
- virtual Layout *enumLockedLayout(int n);
- virtual int isLocked();
- virtual void lockTo(Layout *l);
- virtual Layout *getLockedTo();
- void updateLockedLayouts();
- virtual int onGetFocus();
- virtual int onKillFocus();
- virtual void snapAdjust(int left, int right, int top, int bottom);
- virtual void onShow(void);
- virtual void onHide(void);
- virtual void center();
- virtual int wantDesktopAlpha();
- virtual void setWantDesktopAlpha(int want);
- virtual int handleDesktopAlpha();
- virtual int setXuiParam(int _xuihandle, int attribid, const wchar_t *paramname, const wchar_t *strvalue);
- void setWindowRegion(api_region *reg);
- virtual int allowResize() {
- return !isLocked()
- #ifdef USEAPPBAR
- && !appbar_isDocked()
- #endif
- ;
- }
- // container/component callbacks to get notified that a container
- // has been set visible/invisible
- void containerToggled(const wchar_t *id,int visible);
- void componentToggled(GUID *guid, int visible);
- void setParentContainer(Container *c);
- virtual Container *getParentContainer();
- virtual int isClickThrough();
- void onSetVisible(int show);
- virtual void cancelCapture();
- virtual int onActivate();
- virtual int onDeactivate();
- virtual int forceTransparencyFlag();
- int x, y;
- #ifdef _WIN32
- void setForwardMsgWnd(HWND wnd) { forwardMsgWnd = wnd; }
- LPARAM wndHolder_getParentParam(int i=0);
- #endif
- void scaleTo(int s);
- virtual void setRenderRatio(double s);
- virtual void beginMove();
- virtual void beginScale();
- virtual void beginResize();
- virtual void endMove();
- virtual void endScale();
- virtual void endResize();
- virtual void setEndMoveResize(int w, int h) {
- m_w = w;
- m_h = h;
- m_endmovesize = 1;
- };
- virtual ifc_window *guiresizable_getRootWnd() { return (this); }
-
-
- virtual void lockScale(int locked);
- virtual int isScaleLocked() { return scalelocked; }
- virtual void onMove();
- virtual int isDesktopAlphaSafe();
- void addSubRegionLayer(Layer *l);
- void removeSubRegionLayer(Layer *l);
- virtual void setInDesktop(int a);
- virtual int getInDesktop();
- virtual void setAlpha(int a);
- virtual int getAlpha();
- virtual int getPaintingAlpha();
- virtual void timerCallback(int id);
- virtual void setLinkWidth(const wchar_t *layoutid);
- virtual void setLinkHeight(const wchar_t *layoutid);
- virtual void setBaseTexture(const wchar_t *b, int regis=1);
- virtual void setPaintingAlpha(int activealpha, int inactivealpha=-1);
- static void onGlobalEnableDesktopAlpha(int enabled);
- void savePosition();
- #ifdef USEAPPBAR
- void saveAppBarPosition();
- #endif
- virtual void setStatusText(const wchar_t *txt, int overlay=0);
- virtual void addAppCmds(AppCmds *commands);
- virtual void removeAppCmds(AppCmds *commands);
- void pushCompleted(int max=100);
- void incCompleted(int add=1);
- void setCompleted(int pos);
- void popCompleted();
- virtual void registerStatusCallback(GuiStatusCallback *lcb);
- virtual int viewer_onItemDeleted(api_dependent *item);
- virtual int wantActivation() { return wantactiv && LAYOUT_PARENT::wantActivation(); }
- void loadSavedState();
- virtual void updateOnTop();
-
- virtual int runAction(int actionid, const wchar_t *param=NULL);
- virtual void getSnapAdjust(RECT *r);
- virtual void updateTransparency();
- virtual int onDeferredCallback(intptr_t p1, intptr_t p2);
- virtual int wantRedrawOnResize() { return wantredrawonresize; }
- virtual void setWantRedrawOnResize(int v);
- #ifdef USEAPPBAR
- virtual int appbar_wantAutoHide() { return getAppBarAutoHide(); }
- virtual int appbar_wantAlwaysOnTop() { return getAppBarAlwaysOnTop(); }
-
- virtual int getAppBarAutoHide();
- virtual void setAppBarAutoHide(int ah);
-
- virtual int getAppBarAlwaysOnTop();
- virtual void setAppBarAlwaysOnTop(int aot);
- #endif
- virtual void pushForceUnlink() { m_forceunlink++; }
- virtual void popForceUnlink() { m_forceunlink--; }
- virtual int isUnlinked() {
- #ifdef USEAPPBAR
- return unlinked || appbar_isDocked() || m_forceunlink;
- #else
- return unlinked || m_forceunlink;
- #endif
- }
- void setAutoOpacify(int a);
- int getAutoOpacify() { return autoopacify; }
- void offscreenCheck();
- int isOffscreen(ifc_window *w);
- int getResizable();
- int getScalable();
- void setTransparencyOverride(int v);
- int getTransparencyOverride() { return transparencyoverride; }
- enum {
- LAYOUT_SETDESKTOPALPHA=0,
- LAYOUT_SETINDESKTOP,
- LAYOUT_SETALPHA,
- LAYOUT_SETLINKWIDTH,
- LAYOUT_SETLINKHEIGHT,
- LAYOUT_SETOWNER,
- LAYOUT_SETLOCKTO,
- LAYOUT_SETOSFRAME,
- LAYOUT_SETALPHABACKGROUND,
- LAYOUT_SETNOACTIVATION,
- LAYOUT_SETONTOP,
- LAYOUT_SNAPADJUSTLEFT,
- LAYOUT_SNAPADJUSTTOP,
- LAYOUT_SNAPADJUSTRIGHT,
- LAYOUT_SNAPADJUSTBOTTOM,
- LAYOUT_UNLINKED,
- LAYOUT_NOPARENT,
- LAYOUT_FORCEALPHA,
- LAYOUT_NODOCK,
- LAYOUT_NOOFFSCREENCHECK,
- LAYOUT_RESIZABLE,
- LAYOUT_SCALABLE,
- };
-
- void onMouseEnterLayout();
- void onMouseLeaveLayout();
- int getNoParent() { return noparent; }
- void setNoParent(int np) { noparent = np; }
- int isAlphaForced() { return forcealpha; }
- AlphaMgr *getAlphaMgr() { return alphaMgr; }
- int getNoDock() { return nodock; }
- void setNoDock(int nd) { nodock = nd; }
- int isTransparencyForcedOff() { return transparency_autooff; }
- void controlMenu();
- void setNoOffscreenCheck(int nocheck);
-
- #ifdef USEAPPBAR
- void onDock(int side);
- void onUnDock();
- virtual void appbar_onDock(int side);
- virtual void appbar_onUnDock();
- virtual void appbar_onSlide();
- #endif
- protected:
- /*static */void CreateXMLParameters(int master_handle);
- /* virtual int dragEnter(ifc_window *sourceWnd);
- virtual int dragOver(int x, int y, ifc_window *sourceWnd);
- virtual int dragDrop(ifc_window *sourceWnd, int x, int y);
- virtual int acceptExternalDrops() { return 1; }*/
- virtual int wantClickWndAutoInvalidate() { return 0; }
- private:
- StringW MakePrefix();
- static XMLParamPair params[];
- void fixPosition();
- void saveAllPositions();
- void activateChildren(int act);
- #ifdef _WIN32
- void getExplorerWindows(HWND *parent, HWND *listview, HWND *webserver);
- #endif
- void desktopAlpha_autoTurnOn();
- void desktopAlpha_autoTurnOff();
- void transparency_autoTurnOn();
- void transparency_autoTurnOff();
- void globalEnableDesktopAlpha(int enabled);
- #ifdef _WIN32
- HWND forwardMsgWnd;
- #endif
- int resizing;
- int wantactiv;
- int size_w,size_h;
- int cX,cY;
- int captured;
- POINT mousepos;
- #ifdef _WIN32
- HWND webserver;
- HWND listview;
- #endif
- int alphagoingon;
- int alphagoingoff;
- int scalelocked;
- int wantredrawonresize;
- int xuihandle;
- RegionI *reg;
- //PtrList<Layer> *subregionlayers;
- Container *p_container;
- StringW alphabackgroundstr;
- ifc_window *wndholders;
- int abortSaving();
- int transparencyoverride;
- int default_x;
- int default_y;
- int moving;
- int scaling;
- int mover;
- int indesktop;
- int alpha;
- StringW linkedheight, linkedwidth;
- int inlinkwidth, inlinkheight;
- AutoSkinBitmap alphabackground;
- int wantdesktopalpha;
- int galphadisabled;
- static PtrList<Layout> alllayouts;
- StringW owner;
- PtrList<Layout> locked;
- StringW lockto;
- Layout *lockedto;
- int inpostedmove;
- int osframe;
- PtrList<GuiStatusCallback> statuscbs;
- int initontop;
- // GarbageCollector gc;
- PtrList<AppCmds> appcmds;
- int inresize;
- int unlinked;
- int snap_adjust_left;
- int snap_adjust_top;
- int snap_adjust_right;
- int snap_adjust_bottom;
- int disable_auto_alpha;
- int autoopacify;
- int noparent;
- int forcealpha;
- redock_struct redock;
- static int broadcasting;
- int nodock;
- uint32_t transparency_reenabled_at;
- int transparency_autooff;
- int nooffscreencheck;
- int resizable;
- int scalable;
- int m_w, m_h;
- int m_endmovesize;
- int m_allowsavedock;
- int m_forceunlink;
- #ifdef USEAPPBAR
- int appbar_want_autohide;
- int appbar_want_alwaysontop;
- #endif
- // FG>
- // -- SCRIPT -----------------------------------------------------
- public:
- static scriptVar script_vcpu_onDock(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar side);
- static scriptVar script_vcpu_onUndock(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_getScale(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_setScale(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s);
- static scriptVar script_vcpu_onScale(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s);
- static scriptVar script_vcpu_setDesktopAlpha(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s);
- static scriptVar script_vcpu_getDesktopAlpha(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_isTransparencySafe(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_isLayoutAnimationSafe(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_getContainer(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_center(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_onMove(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_onEndMove(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_onUserResize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar x, scriptVar y, scriptVar w, scriptVar h);
- static scriptVar script_vcpu_snapAdjust(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar left, scriptVar top, scriptVar right, scriptVar bottom);
- static scriptVar script_vcpu_setRedrawOnResize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar v);
- static scriptVar script_vcpu_beforeRedock(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_redock(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_getSnapAdjustTop(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_getSnapAdjustLeft(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_getSnapAdjustRight(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_getSnapAdjustBottom(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_onMouseEnterLayout(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_onMouseLeaveLayout(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar script_vcpu_onSnapAdjustChanged(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- #else
- class Layout : public LAYOUT_SCRIPTPARENT {
- public:
- #endif
- // INSERT_SCRIPT_OBJECT_CONTROL
- };
- // END SCRIPT
- #endif
|