Flex Bar has some GUI stuff

Flexbar is arcane: Okay - this criticism holds water -- the programmer of Flexbar found Vi to be user friendly.  The heavy reliance on slash commands stems from both that and the fact that editing GUI elements in WoW is a royal pain.

However, Flexbar 1.37 has several GUI panels to make some things a bit easier. 

For all windows - escape will close any open menus, if there are no open menus it will close any open GUI panels, if there are no open GUI panels it will close the FlexBar Main Menu, if it isn't open it will behave like normal.

Look in KeyBindings in the Main Game Menu for direct bindings to the FlexBar main menu and to all these panels.

Global Options

  1. Load Speed:  This defaults to std (standard) which has a pause in it before loading the profile.  The reason for this was a poor design decision early on in FlexBar that caused WoW to store where it thought some of the buttons should be.  The conflict cause some of them to move.  I have fixed this in the XML - BUT, if you have had flexbar before then those locations are cached.  If you want to use fast load, go to your World of Warcraft\WTF\Account\<account name>\<character name>\ directory to the layout-cache.txt file.  Remove all entries with "FlexFrame" in them (or delete it entirely).  This may cause some of your empty buttons to show a clear background - just drag an action them, then remove it, that will fix it.  Now you can toggle fast load.  Safe load is a holdover from the lost configurations, there should be no need for it now.
  2. Detailed Feedback:  Also known as verbose mode, this gives a great deal of feed back on the actions FlexBar is taking.  Keep it off most times for your sanity.
  3. Hide Tooltips:  Check to hide FlexBar Button tooltips
  4. Force Shading:  This will enable buttons to automatically shade red if they are out of range, green if they are unusable and blue if they don't have enough mana.
  5. Auto Performance:  Check to have FlexBar try to automatically set your event notification level.  For any event group which does not have one of its events int he event list, that event group will be turned off (see performance panel).  For any event group with an event in the event list, it will be set to low.  Please be aware of the potential problems this will cause with certain conditionals.  See performance panel for details.

Event Editor:

The most powerful part of FlexBar is also its most difficult to manage - taking actions on events.  Among the problems I've seen are:  Long and not consistently named events, a lack of understanding of the possible targets for events and a cumbersome interface for editing/adding/deleting events.

Enter the Event Editor window:

At the top is a scrolling list of events (scroll with either the large arrow buttons on the top left or with your scroll wheel).  To the right of each event are 5 buttons - EDT (edit this event), DEL (insert above this line), DEL (delete this event), a down arrow (swap this event with the one underneath it) and and up arrow (swap this event with the one above it).

At the bottom is a set of entry boxes for the various parameters of an event - most with drop-down menus accessed by the down arrow to the right.  For every event the following fields are available:

  1. On=          This is the event name to watch for.  The drop down list is prepopulated with EVERY event that FlexBar currently raises.  If you hand type the event, single quotes are still required.  On tabbing out of this box, the drop down arrow to the second box becomes available.
  2. Target=      This is the target that raised the event.  The drop down menu will contain a list of possible targets if the are available.  Most events have a limited list of possible targets.  Some, however, I was unable to enumerate when I wrote this.  Among those are buff names, debuff names and aura names and combat targets.  What I've had FlexBar do is keep track of every buff/debuff/combat type/aura name it sees so it eventually will give you a better list of these.  One thing you should do is turn the event group Unit Combat to high and go melee a bit to populate that list with the 5 actions in your native language.
  3. If =             This has a dual drop down - one a list of conditionals and the other a list of (,),and,or,not - use these to build your if expression.  One thing it does not have is auto target fill in for the conditions, you'll still have to do that manually.
  4. Command=  This is the command you want to execute on that event, the drop down shows a list of all commands that can be do on an event.  On selecting a command, a series of parameter boxes appear with drops downs for each paramter the command can take.
  5. In=               This is the delay to wait before executing the command.  Delay is in tenths of a second
  6. Tname=        This the optional name for the timer started with the In= parameter, using this name the timer can be terminated
  7. TToggle=      The only value for this is 'true' - if it is true, then if a timer is already running with that name, it is cancelled.

Below this are the command specific parameters

Finally there are two buttons -

See the topic "Advanced Use: Events, Delays and Conditionals" for examples.

Performance Panel:

FlexBar has a lot going on under the hood, and this brings up justified worries about its impact on framerates.  In order to address this, the Performance Panel allows you to customize Event detection and reporting to reduce CPU load.

Every event is part of an Events Group (see the detailed list of events for the group name for each event).  The performance panel has a button for each group with options of Off, Low and High.

OFF  At this setting the events in the group will not be raised at all, moreover the least amount of processing takes place determining that we don't want to do it (for polled events like isusable, inrange etc, the timer on which these states are checked are turned off.  For events that happen off of WoW events, we exit in the first line of the handler)  For some (like buttonpresses) it just disables reporting (so we don't process the event list - although it is a negligible savings, since that routine exits immediately if we don't have any commands attached to that event)

LOW  At Low, the event is processed, but it is raised only for those targets that are specified in the events list.  IE:  if the only usable event we have in the list is Show Button=1 on='IsUsable' Target=1, then on low setting it will only raise IsUsable for button 1, not the rest.  Moreover, for items like not/isusable, outof/nowinrange, (not)enoughmana, cooldownmet/start - it only loops through the buttons we are interested - potentially avoiding a tremendous amount of cpu usage.  For other events it merely restricts reporting.  For many events Low and High are indistinguisable (for those events with no target need).

HIGH  The default state, scan every target, report every target.  Potentially CPU expensive for button the events mentioned in Low because it requires scanning each of 120 buttons for an action, then for the mana/range/usable/cooldown state of teh button of buttons with an action.

Important Caveat:  Several conditionals (UnitBuff/UnitDebuff/UnitDebuffType/HasBuff/HasDeBuff/HasDebuffType) are dependent on the event group of the associated events being turned to high to always produce accurate results.  If it is turned to Low, then these conditionals will only be accurate for units specified as targets of one of the events.  If you are a class with buffs or the ability to dispell debuffs, I recommend this either be turned to High, or (in the case of having Auto Performance set) you include the units you are interested in in dummy events:  EG Runscript Script='do end' on='UnitBuff' Target=['player' 'party1' 'party2' 'party3' 'party4']  -- this will force FlexBar to keep this info up to date.

 

Scripts Editor:

The FlexBar scripts editor provides a (very) simple note-pad like editor that can hold 10240 characters.  There are some quirks to it:  Hitting home or end will take you to the beginning/end of the whole edit box, not the line as in a regular editor.  If you hit return at the bottom of the editor and it is the last line in the script the cursor will dissappear below the border until you start typing -- just keep an extra blank line at the bottom to avoid this.  Clicking in the box sometimes causes a large portion to be highlighted, be careful.

At the bottom of the window are several UI elements

Auto Items Manager:

Note: Auto items are no longer necessary for the most part. as of WoW patch 1.6 most of this functionality is built into the default button interface, and thus into Flexbar buttons. 

This window displays a scrolling list of all usable items that you have in your action bar (such as potions, bandaids and the like).  To the left of each item is a check box, to the right the number of them you have and the ID at which they reside.  Checking the box will cause FlexBar to try to make those items stick in that ID slot:  When you run out it will keep the icon in there and it will try to reload them into that ID when you get more.

When you run out of an Auto Item, an event is raised (autoitemout) as is an event when they are replaced in the action bar.

If you are out of an Auto Item it is still displayed in the box - until you uncheck it, at which time it will dissappear.

Auto Items can not be dragged out of their buttons, nor can other actions be dragged onto them.