This mod allows users to conveniently and intuitively resize interface objects.
This mod does nothing by itself; other mods must be explicitly programmed to use it.
When using this mod, any customizations you make will automatically be saved.
Contents:
____1. Download
____2. Customization guide
____3. Modding guide
____4. To-do list
____5. Changelog
Download:
Requires HoN Mod Manager
movf.honmod
Customization guide:
Opening the system
Simply click the "Movable frames" button in the game's options.
It will appear here:

Note - you can access this options panel ingame by pressing f6.
Customizing a frame:
Here's an example interface:

Now after clicking the "movable frames" button, it will look like this:

To select a frame, simply click one of the boxes.

Now, simply drag the center of the box to move the frame.
If the frame is resizable, handles will appear. Use these handles to resize the frame.
Some frames must maintain the ratio between width/height. These frames will only have four handles, as opposed to the normal eight.
Hold SHIFT to maintain aspect ratio.
Hold CONTROL to "fine-tune" the move/resize process. This will dramatically reduce mouse sensitivity and allow you to make pixel-by-pixel adjustments. This will also override frames snapping to eachother.
Using the menu:
As you have noticed, there is a menu that appears when you are customizing frames.
This menu has a list of every frame.
You can select a frame by clicking it in the list.
Also, you can hide/show a frame by clicking the "visible" checkbox.
To reset a frame to defaults, click it's "reset" button.
At the bottom of the list, there is an additional checkbox/reset button. These will apply the changes to all frames.
Multiselecting:
You can select more than one frame at a time.
There are two ways of selecting additional frames:
-Hold shift and click another frame
-Click and drag the mouse around several frames, then release.
-Hold shift and click the name of the frame in the menu
Once you have more than one frame selected, a large dragbox will appear that will allow you to move and resize all of the selected frames at the same time.
Note: This large dragbox will only be resizable if ALL of the selected frames are resizable. Likewise, if any of the selected frames must maintain aspect ratio, the large dragbox will maintain aspect ratio.
Modding guide:
In order to use Movable Frames in your mod, you must specify a requirement tag in your mod.xml
Code:
<requirement name="Movable Frames"/>
For each element that you wish to make movable/resizable, you must create an instance of "movf_frame"
It can be placed anywhere.
Here is a list of attributes: (underlined attributes are optional) (the values listed here are the defaults)
Code:
<instance
name="movf_frame"
id="exampleframe" Name of the ui element that you wish to move/resize
textid="Example Frame" Name that the user sees
visible="true" Whether the frame is visible by default
resizable="false" Whether the frame can be resized
maintainratio="false" Whether to maintain the aspect ratio
minwidth="0" Specified as a float. This is the minimum width the frame can be, relative to the original size.
minheight="0" Specified as a float. This is the minimum height the frame can be, relative to the original size.
maxwidth="0" Specified as a float. This is the maximum width the frame can be, relative to the original size.
maxheight="0" Specified as a float. This is the maximum height the frame can be, relative to the original size.
constraintoscreen="false" Whether the frame is bounded by the screen edges.
snap="false" Whether the frame can snap to other frames.
snapto="false" Whether other frames can snap to this frame.
margin="0h" Margin for use with snapping.
collapsemargins="false" If true, the greatest margin between two frames will be used. Otherwise, the sum of the margins is used.
overridepos="false" If true, use this instance to specify the default position of the frame, rather than the ui element itself.
x="" *
y="" *
width="" *
height="" *
align="" *
valign="" *
onupdate="" **
/>
*Only used when "overridepos" is true.
**This allows you to specify code to execute when the frame is being moved/resized. Everytime a user modifies a frame, the onupdate code will be executed.
Also, when a frame is updated, it is refreshed. Ie. if you have a frame named "examplepanel", it will do RefreshWidget('examplepanel') when the frame is updated.
Other templates:
movf_label creates a label that will scale the size of its text with the size of the label. The text will always fit.
Code:
<instance
name="movf_label"
fontmin="some int" The minimum size of the font of the label.
fontmax="some int" The maximum size of the font of the label.
Any label attribute can be used.
/>
To-do list
Code:
-Add functionality for the spectator interface in addition to the game interface.
-Snap to grid.
Changelog
Code:
v1.32
-Updated for HoN v1.0.0
v1.31
-The button in options is now greyed-out if you do not have a game active.
v1.30
-Updated for FE2
v1.22
-Allowed modders to specify an onrefresh="" in movf_label.
v1.21
-Re-added the frame for the menu button. (It was unintentionally removed in v1.2)
v1.2
-Multiselection!!
-Saving fixed?
-added new attributes to movf_label
-removed onevaluate, onposition, and onresize from movf_frame (sorry, had to be done to get multiselect to work)
-Constraintoscreen attribute removed. Instead, there is now a checkbox that allows you to constrain the current selection to the screen.
v1.1
-Hopefully fixed another saving bug.
v1.0
-Some technicality changes. I needed to change some variable names.
v0.9
-Possible fixed crash bug
v0.8
-Fixed save bug
v0.7
-Added a confirmation dialog to reset all
-Possibly fixed save bug
-Re-added some code that was accidentally deleted in the previous version
v0.6
-Fixed some issues with vertical stacking
-Added a quick access button to the ingame interface
v0.5
-movf_label added
v0.4
-Initial public release