Button Forge

DescriptionButton Forge is an Action Bar addon that allows you to create completely new Action Bars (as many as you want). Each bar can have up to 1500 buttons organised into rows and columns (up to 5000 buttons total).

Your existing UI wont be changed by Button Forge, it will continue to function and look how it currently does. The bars you create are totally independent allowing you to simply and cleanly add additional action bars to your UI.

The new buttons operate almost identically to the default action buttons (i.e. drag and drop actions as you normally would, etc); there are a few subtle differences though, such as the ability to drop non usable items into the buttons (handy for keeping count of items you're harvesting).

Creation and configuration of the bars is done via the mouse using a GUI interface. This GUI is designed to be straight forward and easy to use, although there is documentation for both basic and advanced configuration options below.

Features

Create as many bars as you wish (theoretical limit is 5000)

Create as many buttons as you wish (up to 1500 per bar with a total maximum of 5000)

Setup visibility macros for your bars so that they can be shown and hidden (such as during combat, when mounted, stealthed, etc...)

Bonus Bar:5 support (create and customise one or more bars for use when in a vehicle or possessing etc)

Button Facade Support

Localisations

enUS

koKR Translation provided by chkid (주시자의눈 of Elune)

ruRU Translation provided by Another

zhCN Translation provided by s.F

How Do I (Basics)

Enter into configuration mode
Configuration mode is where you will do things such as create new bars and buttons, position them, etc...
There are several ways to enter this mode, any of the following can be used:

Enter the Button Forge page in Interface->Addons and use the button found there

Create a Key Binding in the Key Bindings menu under the Button Forge section (recommended)

Drag the Configuration Mode button found on the Button Forge toolbar onto a Button Forge bar, it can then be used to quickly enter and exit configuration mode (also recommended)

Exit configuration mode
All of the ways to activate config mode will also deactivate it

Create a bar
Click the Create Bar button, then click on screen where you want your new bar

Destroy a bar
Click the Destroy Bar button, then click on the bar you wish to destroy

Add or remove rows and columns of buttons on a bar
Use the Column and Row drag icons on the bar to adjust how many rows and columns of buttons there are

Change the scale of a bar
Use the Scale icon on the bar to adjust the size of the buttons

Position the bar
Click on the bar background and drag it to the desired location

Make the bar only visible for a given talent spec
Use the Spec 1/2 Buttons found on the left side of the bar (a faded icon means it wont be displayed for that talent spec)

Make the bar visible when in a vehicle
By default bars are invisible while in a vehicle, use the vehicle button found on the left side of the bar to change this (a faded icon means it wont be displayed while in a vehicle)

How Do I (Advanced)

Enable advanced configuration controls for the bars

Click the advanced tools button on the Button Forge toolbar to toggle the display of the advanced options

Set key bindings for the buttons

Click the keyboard icon on the bar to enter Key Bind mode

Click the button you wish to set a binding for

On the binding dialog that has popped up click the key binding button (similar to the standard Key Binding UI)

Press the key binding you want to assign

The dialog can be closed by clicking the x this will close the dialog but leave the bar in Key Bind mode, or press esc to completely exit Key Bind mode

Notes:

Key Bindings in Button Forge are implemented as overrides, this means that any existing bindings wont be removed, but if identical the override will be triggered instead (at least provided the bar is visible on screen)

Button Forge currently wont inform you if the binding already exists on another Button Forge button and it will allow multiple bars to have the same binding, this feature allows some advance ui configurations to be created which will be described further down

If multiple Button Forge bars have the same key binding it will be ambiguous which button will be triggered, however if only one bar is currently visible that is the button that will be triggered

The Button Forge UI for Key Bindings may see some alteration in v1 (I feel the flow of creating bindings is not yet as smooth as it could be)

Make a bar only visible while in combat... or out of combat, or while stealthed, cat form, etc...

Any macro conditional in the game can potentially also be used to control if a Button Forge bar is hidden or visible (even during combat)

To setup a visibility macro click the Eye icon and type in the conditional and then press enter (or escape to cancel)... Some basic examples are:

[combat] hide; show

[stealth, harm] show; hide

[form:3] show; hide

Notes:

Visibility macros are more commonly known as visibility state drivers (I just call them visibility macros to draw attention to the fact that you use macro conditionals to control the visibility)

The Spec and Vehicle show/hide options (the ones just above the eye icon) also use the visibility macro to control when the bar is displayed. If you specify a visibility conditional and also have one or more of the Spec/Vehicle options set to hide then behind the scenes the necessary rules will be prepended to your visibility macro for the bar...
e.g:

Spec 1 is hidden, and Vehicle is hidden, no visibility macro is set would result in the following state driver: [spec:1] hide; [vehicleui] hide; show

Vehicle hidden, and the combat macro example from above is set would result in the following state driver: [spec:1] hide; [vehicleui] hide; [combat] hide; show

Spec 1/2 both shown, Vehicle shown and no visibility macro set: ...No visibility driver will be set for the bar, and it will always be visible

Make the actions on a bar change depending on combat status, or while stealthed, or cat form, etc...

This actually can't be done, but the same effect can be achieved by taking visibility macros a step further.
You can place several bars into the same position on screen and setup visibility macros so that only 1 is displayed at any given time, I will describe the following example to illustrate how to do this.

Lets say you are a druid and want a bar in the center of the screen to have actions for catform and bearform in the same position, and to swap between them depending on your current form:

Create a bar and position it where you want, set it's scale and the number of buttons you want on it

Optionally add a label to it to help identify it easier in the interface (lets make this one the bear bar)

Drag the abilities you want on to it

Set the visibility macro to [bonusbar:3] show; hide

Create another bar place it in the same position as the first one... You might notice that it has docking to make this really easy

Double click the scale button to default the bar to have the same scale as the first bar (double click again will revert back to the standard scale of 1)

Optionally label the bar (for cat form this time)

Drag the abilities you want to it

Set the visibility macro to [bonusbar:1] show; hide

Exit configuration mode and give it a try

If you also wanted to setup key bindings you could do this as well since you can reuse bindings. The buttons in each position on the two bars can have the same binding since only one bar will show up at a time (if at all).
Also note that if you want to alternate between which bar you are working on during configuration mode you can use the Send to Front and Send to Back icons so you don't have to move bars out of the way.

Make tabs for bars so that it is easier to configure bars located in the same place on screen

Set a label for the bar and position the top left corner of the bar be the same as another bars. Each bar that has a label set will have that label organised from left to right above the bars. Clicking the respective tab (label) will bring that bar to the top.

Note: Even without a tab for the bar you can still bring it to the front or send it to the back by clicking on it's Send To Front and Senf To Back buttons respectively.

Create a bonus bar (contains the abilities when you enter a vehicle, possess another unit, or the special abilities given during specific fights)

This can be done using the Create Bonus Bar button. Note that the standard Bonus Bar will continue to function as normal so creating a Button Forge bonus bar is purely optional.

Notes:

The Button Forge bonus bar is a clone of Bonus Bar 5; that is the action bar that receives special actions at certain times during game play (e.g. the actions you can use in a vehicle, or while possessing another unit, etc)

It is possible to create multiple BF bonus bars

The BF Bonus Bar is almost identical to a standard BF Bar except for the following:

Whenever the Bonus Bar has the number of cols or rows updated it will attempt to replace any missing bonus actions if they have been removed from the bar (this makes it easy to change from a horizontal to vertical bar)

All the actions found on the Button Forge bonus bar can be dragged into different positions, and also onto other BF bars (by default the Bonus Bar has the buttons locked, so this would need to be changed first)

Changing around the actions on a BF bonus bar will have no effect on the normal Bonus Bar

Enable Right Click Self Cast

This can be done using the Right Click Self Cast button.

F.A.Q
You may have some questions not covered above, I will try to address those here.

Why do all bars and buttons show up in configuration mode even when some are configured not to show up currently?

This is done so that you always can configure a bar even if it has a rule set to prevent it from being visible. This also means you can assign actions to bars that you otherwise wouldn't be able to without having to temporarily unset their visibility macro etc...

Why do certain bars/buttons hide in configuration mode when I enter combat?

This happens because sometimes combat may happen when you least expect it. So that you don't have a messy UI which could make it very hard for you to respond to the threat, the Bars and buttons will obey their display rules when in combat regardless of if you are in configuration mode or not.

Why does my key combination trigger some strange action when in configuration mode?

If you have the same key binding for multiple buttons it could be triggering any of them... and most likely not the one you intend! This is because while in configuration mode all buttons are visible and so it is ambigous which key binding to use, while this is annoying (it even trips me up sometimes) it will correct itself once you exit configuration mode (or enter combat).

Why does my key combination trigger some strange action when not in configuration mode?

This will most likely be because you have used the same key binding for multiple buttons and those buttons are visible at the same time, in such a case you will need to either choose a different binding, or configure the display rules for the bars such that only one of the buttons is visible at a time (please note that even if empty buttons are hidden, the key binding will still apply... it is only when the bar itself is configured to hide that the binding wont apply).

Why can't I allocated more buttons to my bar?

Several configuration options wont work while in combat. Or alternatively you may have hit the upper limit for the number of buttons on the bar (currently 1500), or the total number of allowed buttons may be exceeded (currently 5000).

Why can't I set the scale?

Several configuration options wont work while in combat. Or alternatively the desired scale may cause the bar to exceed the size of the screen in which case the scale will be rejected.

I've setup bars for my different druid forms but when switching between them the bars dissappear briefly?!

This is because the visibility rules are treated exactly and there may be a brief swap over period where none of the conditionals are true.

E.g. If you were using [form:1] show; hide for Bear, and [form:3] show; hide for cat to show the bar, when you switch between cat and bear form there is actually a brief period where you are neither of those forms and so neither of those bars will show.

To get around this issue use the [bonusbar:#] conditional in place of the form conditional. It responds to shapeshift changes etc but will keep the bar available the same length of time the default ui keeps it available. (this could also apply to other classes and conditionals where the bonusbar may be a slightly better choice)

Why doesn't my bar have a tab?

Either the bar has not been assigned a label, or its the only bar with its Top Left corner in that position...
If you wish for the bar to have a tab either assign it a label and/or align its top left corner to another bars top left corner (auto docking will take care of this when dragging the bar close to another... except in the case mentioned next)

Why aren't my bars auto-docking?

This is most likely because you are in combat, it is not possible to autodock in this case unfortunately... Note also that auto docking will only take place when the top left corner of two bars get fairly close to each other.

Bonus Actions are appearing on my Bonus Bar when I change the number of rows/cols, why?

This is intentional so that changing the orientation of the bar is easy... Note that having multiple rows and columns could sometimes result in the abilities being repopulated into locations which might seem strange, this is due to the specific rules of how the bonus actions are repopulated (always remember an action wont be populated back onto the bar if it is already there, and also that button positions are always counted from left to right, top to bottom)

Why can I sometimes trigger actions on the BF bonus bar even when Bonus Bar 5 is not active (and I'm seeing the blue Bonus Action number icons)

This is because sometimes the bonus actions assigned remain available even after the bonus bar is gone (e.g. Mind of the Beast), I believe this is the case when it is for actions you could trigger anyway (e.g. if a hunter possesses his pet, even after the possession ends all the pets actions are still available and valid).

The default (and recommended) behaviour is for the bonus bar to be hidden when not available.

There are no raise and lower aim commands on the Bonus Bar even while in a vehicle that supports them

This is because the action that the standard raise and lower buttons have (which is raise/lower while held down) cannot be duplicated by an addon; instead the the aim can only be raised/lowered in increments. For this first release of BF with Bonus Bar support I have decided to not create buttons to do this... (If people request it I can look to introduce it however).

Note that using mouse look to raise lower will work as normal, as will the standard raise and lower buttons

Addon Status:
As the addon has only recently been released I have marked it as beta, although it is intended to be fit for use.
I am still performing fine tuning both to the GUI and also to the display update of actions on the buttons (particularly surrounding macros and low mana/energy/rage/runic power situations).

The following is a general list of what I am looking at:

Low mana/energy/rage/runic power situations

Go through and check that all macro conditionals cause macro display updates (this is actually quite an involved process...)

Improve companion (mount/critter) usability indicators

Review how key bindings are configured (I anticipate that I will be adjusting this as I feel it is not yet a smooth process)

Fine tune general aspects of the GUI

Look into providing a couple of different button skins to choose from - (ButtonFacade is not an option at this point in time)

Add information messages for when configuration actions fail (e.g. because of combat)

bar show/hide groups (something along the lines of profiles to allow different bar sets for different situations... this will be a bit different to the visibility macros)

28-February-2015 v0.9.39
Updated for WoW v6.1
Bars will not be clamped to screen in this version; due to clamp offsets becoming broken
this will be reveresed at a later date when the clamp offsets work again

--- Missing change log entries (opps) ---

20-Novemeber-2013 v0.9.32
- Fixed unrecognised Flyout actions causing an error on when on BF bars (either from loading a profile, or from inherited settings from a prior same named character)
- Also corrected issue that caused flyout actions to not correctly be put on the cursor when removed from BF bars

20-September-2013 v0.9.31
Updated for WoW v5.4 Added Profile functionality to ButtonForge It is now possible to save the current BF layout and use it on either the current character or other characters, either with the actions, or with just the bar/button layouts (and keybindings etc) The new commands are
-saveprofile (saves the current setup as a profile for later use)
-loadprofile (loads a profile, along with all actions on the buttons - this can even be done for diff classes, the actions simply wont be recognised in some cases)
-loadprofiletemplate (loads a profile but all buttons are blanked, treating the profile as a template for other chars)
-undoprofile (reverts back to the setup prior to the last loadprofile, even if that was a previous session... note this itself can not be undone, so beware)
-deleteprofile (simply deletes a previously saved profile)
-listprofiles

04-June-2013 v0.9.30
Button Forge will now cast keybindings on the key down phase in the same manner the standard action buttons do, this behaviour is also toggled using the standard Interface-Combat option "Cast action keybinds on key down"*
* Added a new global setting for Button Forge "ForceOffCastOnKeyDown" that will override the above feature so that it is always off if desired, you must log back in for this setting to take effect
(When ForceOffCastOnKeyDown is set, it will actually cause the original ButtonForge click handling pre v0.9.30 to apply)

23-May-2013 v0.9.28
Update to work against wow v5.3
Improved support of Masque skinning
Slightly update look of Buttons to match with the current style of the standard buttons in wow

06-March-2013 v0.9.27
Updated for WoW v5.2

13-December-2012 v0.9.26
More support for spell charges (i.e. for warlock demonology spells that have charges)
slash commands that accept yes/no will now also accept toggle

09-December-2012 v0.9.25
Button Forge will now display spell charges on its buttons when appropriate (this also applies if the spell is from a macro)
A new slash command -hidepetbattle allows making it so that Button Forge bars can stay visible during a pet battle (by turning that option for the bar off, by default it's on)

02-December-2012 v0.9.24
Updated Button Forge for WoW v5.1
Fixed Button Forge to support battlepets again (under the hood they were subtly changed in how they work)

17-October-2012 v0.9.23
BattlePets can now be added to Button Forge bars (tooltips are not yet available for them)
All Button Forge bars will hide during Pet Battles

09-September-2012 v0.9.22
Fixed the Button Forge Bonusbar (now the vehicle/override bar) to work again.
Also fixed dragging button forge custom icons to not show a blackbox while dragging

03-September-2012 v0.9.21
Fixed to hide bars by default when the Override Bar is active (this used to be BonusBar:5)

28-August-2012 v0.9.20
Updated for WoW v5.0.4[indent]Issues that were resolved for the updated WoW API:

Lua errors prevening Button Forge even working

Cooldown error for mounts and companion pets

Picking up spells wasn't working

Handling of dynamic spells was largely unusable

Still outstanding:

Now that pets are battle pets they can't be set or activated from Button Forge (your existing pets still show up and can be picked up and moved, but that's it)

Flyout spells (the one with the little arrow) is dropped rather than put on the cursor when removing from Button Forge

Also a minor graphic glitch that the little arrow sometimes doesn't show for the flyouts

Some code tidy up to remove redundant code (there are now better options to achieving some functionality)

Others???

06-February-2012 v0.9.17

Features:

New bar option 'GUI' available via /bufo commands. defaults to 'on'. Turning the gui off for a bar will cause it to be hidden and to no longer interact with the mouse but its keybindings will be unaffected (think of it as Key Bind only mode). The GUI will be temporarily forced 'on' provided you're not in combat, and are in Button Forge config mode, or are holding the Shift key while also have an item on the cursor (this is to ease setting the bar up how you want it)

New bar option 'Alpha' available via /bufo commands, defaults to 1. This will simply change the opacity of the bar, the mouse will still interact with the bar, even if it's fully transparent (unlike the new 'GUI' option, the alpha will not be forced up when in config mode etc...)

Localisation support added for 'deDE', translation supplied by Rumorix/PUNK2018

Fixed: Button Forge will now only show the action tooltip for a macro if the macro has the #showtooltip tag in it

Hi.
Maybe I missed the option, but, is there any way to make bars 'click-through'? As in, I can see the bar, use the keybinds on it, but it doesn't interact with the mouse.

To keep them visible but not interactable (except for the keybind) there isn't such an option.

I think conceptually such a thing could be setup as a slash command without too much difficulty though (I believe it could simply alter how the current GUI Off option works which from memory puts the bars opacity to 0) - I'll pencil it in as a possible addition

Right now i can't put pets in the bars
and when i drag a mount icon out of the bars it often change to another mount
this one is really annoying as i have to go search the mount again in my mount list and i have a lot of them.

__________________
For GLORY and HONOR,
CRASH THE HORDE TO BLOOD AND DUST.

Right now i can't put pets in the bars
and when i drag a mount icon out of the bars it often change to another mount
this one is really annoying as i have to go search the mount again in my mount list and i have a lot of them.

Mmm I think I had seen some odd behaviour as well with the mounts, I'll try to get that sorted when I tackle the battlepets, this weekend with any luck...

I have considered the possibility of supporting macrotext type buttons and think it would make a good addition to Button Forge. Although I'm not sure when it will be that I add such a feature.

I would love you to add this. I have been using Macaroon throughout WotlK and Cataclysm, but it currently doesn't work in MoP, so I've switched to your addon. Macrotext buttons are the one thing I really do miss.

I have considered the possibility of supporting macrotext type buttons and think it would make a good addition to Button Forge. Although I'm not sure when it will be that I add such a feature.

I would love you to add this. I have been using Macaroon throughout WotlK and Cataclysm, but it currently doesn't work in MoP, so I've switched to your addon. Macrotext buttons are the one thing I really do miss.

I think that Macaroon is called Ion now, I don't know about it's current status against MoP but it looks like it is still supported.

As for support of macrotext in Button Forge, hopefully I can give this some proper attention when I start reworking it, certainly I have been seeing cases crop up where I wish I had the feature myself.

I was getting aggravated with another bar addon and gave this one a shot. I was pleasantly shocked at how elegant it is to use.

I had a question about showing stacks on buttons. My monk has a button for Tigerseye Brew. Everytime you do a certain move the number on that icon will increase by 1 up to a maximum of 10 (which is when we want to click it). So we use it as a visual indicator in addition to a button. With Button Forge that icon is always blank regardless of how many stacks you have. Is there something I need to configure or does this fall into a "known issue" area/feature not implemented kind of thing?

I was getting aggravated with another bar addon and gave this one a shot. I was pleasantly shocked at how elegant it is to use.

I had a question about showing stacks on buttons. My monk has a button for Tigerseye Brew. Everytime you do a certain move the number on that icon will increase by 1 up to a maximum of 10 (which is when we want to click it). So we use it as a visual indicator in addition to a button. With Button Forge that icon is always blank regardless of how many stacks you have. Is there something I need to configure or does this fall into a "known issue" area/feature not implemented kind of thing?

Thanks!

Thanks for the comments

And it actually fell into the "Unknown issue" area, so I'm glad you mentioned it.
I've been behind with getting BF fully updated for MoP but I'm hoping to make more of a push on it soon, getting the buttons working like the standard buttons is one of the primary goals of BF so hopefully I'll be able to get this sorted for the next release.

Edit: damn, it being a level 56 ability makes it a little trickier for meEdit 2: PTR to the rescue

I think that Macaroon is called Ion now, I don't know about it's current status against MoP but it looks like it is still supported.

As for support of macrotext in Button Forge, hopefully I can give this some proper attention when I start reworking it, certainly I have been seeing cases crop up where I wish I had the feature myself.

I did try Ion, it is lacking a crucial feature (profiles; they do not exist so .. I sign to my Hunter, create bars, key binds, sign out .. go to my warlock and tada!! Hunter bars and key binds).

I am pleased that you shall consider Macrotext buttons .. I do have one final request (I know nothing of addon programming so I do not even know if this is possible, though I certainly haven't seen another addon do this)

I do like that in ButtonForge I can create macro conditionals to show and hide bars. Would it be possible to extend this so that the buttons on those bars cast according to the bars macro conditional?

Some examples

For my Healer I create bar with this macro conditional [@mouseover,help,nodead] .. I place my heal spells on this .. and keybind these. Now the bar only appears when I hover over a friendly unit, though the spells cast as though that macro conditional is used (ie so they all hit my mouseover target)

For my Hunter I create [@focustarget,harm,nodead] .. again the bar appears only when my focus has a hostile target, though the bars spells all then hit my focus target (regardless of whether I actually have target this at all).

I believe if ButtonForge could do this, it shall save a huge amount of macro space instantly (for nearly all of my chars are healers, and their macros mainly consist of [@mouseover,help,nodead] for every single heal spell).

I did see an addon wich *kind of* can do this (ImpliedTarget). I say *kind of* for .. it only does work with standard blizard toolbars / bartender / dominoes .. but also it is *one macro conditional for all bars*. I only mention this for it may provide clues for how to achieve this with ButtonForge (if it can be done, as I say I do know nothing for addon programming).

First of all I'd like to thank you for creating this nice addon. It works pretty well.

However for me, to make this addon fully functional ( as a replacement for Group Buttons, party bars, extreme unitbuttons or healium ), I need an extra option.

As a healer I would like to be able to set the target for a bar.
It's main advantage would be for healing, but would also help for other things.

In the old days I used group buttons, currently only the Healium and extreme unitbuttons addons allows this afaik. But extreme unitbuttons is no longer maintained and buggy atm.

So what my setup would look like is the following :

A self bar, where the spells ( buttons ) only target myself.
A hostile ( harm ) bar, where the spells only target hostiles and when no hostile is selected, this bar is hidden.
A friendly ( help ) bar, works the same as the hostile one.
Party bars, a bar for each party member, where I target part1, party2, etc

Now the first 3 I can do already with Button Forge. For the self bar I had to make macro's where I set target=player, which worked fine.

But for the party bars I don't have enough macro spots. I can make a macro like "/cast [target=party1] flash heal" and it works fine. So I thought I was done, until I ran into the macro limit.

So if it would be possible to make an extra target macro option ( working the same like with the visibility macro, but for targets ) where I could set [target=party1] or [target=player] , etc, which works on the whole bar, that would be the best.

On the other hand, if I could create more macro's, that would help too, then again, I would have to make like 7 x 5 = 35 macro buttons, and they also need to have the same characteristics as the regular blizzard buttons ( like when flash heal starts flashing when I can cast a free flash heal ).

It does seem some textures shall cause buttons to appear with two borders, I did try the following to fix this, and although it seems to work, I do not really know what I am doing .. though you do, so maybe you can make this work properly

It is basically down to the 2 changes that you mentioned. Any bar that has a pet on it will get the error and as a result will not be properly initialized, explaining the fact that some bars are fine and others are not.

As a partial workaround, edit Button.lua and change GetSummonedPetID on line 1213 to GetSummonedPetGUID

That will at least allow the bars to initialize properly although pets will still not work.

If alternator doesn't issue a fix soon I'll have another look and see if I can figure out how to fix the pets.

I've set up this donation page to give you the option to donate, but please don't feel obliged. As this addon is my own creative hobby and not my job, I wont take donations to implement features or to work on Button Forge. But any donations made out of generosity will be appreciated

Here is a random list of things that I might use the money on:
- My computer (a better vid card is next on the list although my 3850 is still running nicely for my current needs)
- Going for a coffee with my friend
- Protein rtd's (the powder is yuck)
- Computer games which I don't have time to play... I find working on my addon in my free time more satisfying at the moment
- Icecream