An extension for Grid.
GridLayoutLayouts.lua file contains many "Layouts" to arrange the unit buttons. Sometimes we may find it doesn't meet the needs.
This extension makes it possible to add new layouts in game. And it simplified the code to describe a layout.
Click "Grid - Layouts - Custom Layouts" to bring up a edit frame.
Each line stands for a Unit Button Group. The Grammer is:
List of the attributes
showRaid = [BOOLEAN] - true if the header should be shown while in a raid
showParty = [BOOLEAN] - true if the header should be shown while in a party and not in a raid
showPlayer = [BOOLEAN] - true if the header should show the player when not in a raid
showSolo = [BOOLEAN] - true if the header should be shown while not in a group (implies showPlayer)
nameList = [STRING] - a comma separated list of player names (not used if 'groupFilter' is set)
groupFilter = [1-8, STRING] - a comma seperated list of raid group numbers and/or uppercase class names and/or uppercase roles
strictFiltering = [BOOLEAN] - if true, then characters must match both a group and a class from the groupFilter list
sortMethod = ["INDEX", "NAME"] - defines how the group is sorted (Default: "INDEX")
sortDir = ["ASC", "DESC"] - defines the sort order (Default: "ASC")
groupBy = [nil, "GROUP", "CLASS", "ROLE"] - specifies a "grouping" type to apply before regular sorting (Default: nil)
groupingOrder = [STRING] - specifies the order of the groupings (ie. "1,2,3,4,5,6,7,8")
maxColumns = [NUMBER] - maximum number of columns the header will create (Default: 1)
unitsPerColumn = [NUMBER or nil] - maximum units that will be displayed in a singe column, nil is infinate (Default: nil)
The simplify is:
You don't need the entire class/role name, just the start part of it :
WARLOCK or WARLOC or WARL or WL -> "WARLOCK"
WARRIOR or WARR -> "WARRIOR"
MAINT or MT -> "MAINTANK"
MAINA or MA -> "MAINASSIST"
5/2 -> unitsPerColumn="5";maxColumns="2"
PET -> isPetGroup=true
INDEX or NAME -> sortMethod="INDEX" or sortMethod="NAME"
ASC or DESC -> sortDir="ASC" or sortDir="DESC"
STRICT -> strictFiltering="true"
GROUP or CLASS or ROLE -> groupBy="GROUP" or groupBy="CLASS" or groupBy="ROLE"
You don't need to write "groupFilter=", for example:
1,2,3,4,5 is just the same as groupFilter="1,2,3,4,5"
WARR,PAL,DRU is just the same as groupFilter="WARRIOR,PALADIN,DRUID"
If the group name is not group ids and not class or role names, for example:
Abcde,Xyz will be parsed to nameList="Abcde,Xyz"
That's all. A little complicated though. Advanced user only :(
Actually, I don't use this much, just put it here for sharing.
Attribute: noRepeat = true
Now you can add a NOREPEAT(NOREP,NOR and NR is just the same) attribute to non-pet group header, for example
WARRIOR,PAL;NOREPEAT 1;NOREPEAT 2;NOREPEAT 3;NOREPEAT 4;NOREPEAT 5;NOREPEAT Someone,Anotherone
In the above layout, the first group will contains WARRIORs and PALADINs, but not Someone or Anotherone.
And the next 5 groups will contains team 1-5 members, but not Someone or Anotherone, neither any WARRIORs or PALs.
Actually, group headers with NOREPEAT are parsed to specified nameList groups, therefore the 'groupBy' attribute will be ignore.