Description
IFrameManager is a frame positioning addon. Addons register their frames within IFrameManager and it then allows the user to move the frames, snap to each other, and bind frames together permanently.
Features
- Frames snap to each others' edges
- Anchors for permanent positioning
- Resolution/Scale independent
Users Guide
To go into the edit mode, that is to have all the movable overlays displayed, use the slash command /ifm. Once the black overlay frames are visible, you can move them with your mouse. If you move the edges of two frames close enough to each other, they will snap.
If you press and hold down the left control key, anchors will appear inside the overlay frames. To bind two frames to each other permanently, first click on an anchor inside the frame you want to bind to another frame, this anchor will turn blue. Then click on an anchor inside another frame you want to bind the first frame to. Voila, now the first frame will always be positioned relatively to the second frame. Now you can fine-tune the position of the first frame, moving it will not break its anchor.
If you move the mouse over a frame, the frame to which the mouseover frame is bound to will turn red, indicating that the mouseover frame is bound to the second (red) one. If no frame turns red, it means that the frame is bound to UIParent. Additionally, if you press and hold down the left control key, the anchors on which the frame is bound will turn yellow.
You can bind every frame to all edges, corners and the center of UIParent. All frames are bound to the center of UIParent by default.
To reset a binding of a frame, bind the frame to itself (press and hold down the left control key, and click twice on an anchor in the frame), the frame will then be bound to the center of UIParent. If you try to create a binding that would result in a circular dependency, IFrameManager will warn you and not allow to perform the binding.
AddOns that support IFrameManager
- Perl Classic Unit Frames
- coolDown
- HealSync
Instructions for Developers
To register 'myAddOnFrame' within IFrameManager, use the following code:
Code:
IFrameManager:Register(myAddOnFrame, IFrameManager:Interface())
The frame you want to register:
- must have a name (:GetName() must not return nil)
- must be reachable through getglobal()
- must be available when VARIABLES_LOADED is dispatched
ChangeLog
0.1.1.0
- changed minimap button position, see screenshot
- many bugs fixed
0.1.0.0
- added Minimap button to toggel between the two modes.
- added check to not allow the user to 'start' the edit mode twice.