/* buttons grid */ /* With this system rows can easily have 1 to 4 buttons or create perfectly aligned 1 to 4 columns layouts < - - - PANEL_XMAX - - - >| < - - - PANELX - - - > .-- XSPACE side padding --. | | |.- All CLM1 | || X2CLM2 -. X3CLM3 | || | | | +v|-------------|----|-------v+ <-/ | | | | [ But1 ] | 1 button of BUTW1 size <- -/ | | | [ But1 ]=[ But2 ] | 2 buttons of BUTW2 size <- -/ | v | [ But1 ]=[ But2 ]#[ But3 ] | 3 buttons of BUTW3 size | | | v ^ | [But1]#[But2]=[But3]#[But4] | | 4 buttons of BUTW3 size | <- ^ ^ -\ | ^ | +-------|------|-------|------+ | | | | | | '- YSPACE '---.--' '- X4CLM4 '- BUTH (row to row) | Padding based in XSPACE (= normal, # +1 pix to make all match) Calls like uiBlockBeginAlign/uiBlockEndAlign will make the button to button space disappear if needed, forming a compact group, in some themes TODO: Figure relations, meaning and usage of PANELY, PANEL_YMAX, PANELW, PANELH */ #define PANELX 320 #define PANELY 0 #define PANELW 318 #define PANELH 204 #define XSPACE 10 #define YSPACE 6 #define PANEL_XMAX (PANELX - XSPACE) #define PANEL_YMAX 210 /* The widths follow 300, 150, 100 and 75, which is nice (discarding spacing) sadly spacers and integer rounding make 3 and 4 column complex cases so they better be manually set and checked following the comments */ #define BUTW1 (PANELX - (2 * XSPACE)) #define BUTW2 ((BUTW1 / 2) - XSPACE) /* Manual calc so BUTW3 + XSPACE + BUTW3 + (XSPACE+1) + BUTW3 = BUTW1 */ /* Could be something like ((BUTW1/3)-(1+(2*XSPACE)) if starting with 300 */ #define BUTW3 93 /* This time BUTW4 + (XSPACE+1) + BUTW4 + XSPACE + BUTW4 + (XSPACE+1) + BUTW4 = BUTW1 */ /* That would be ((BUTW1/4)-(2+(3*XSPACE)) if starting with 300 */ #define BUTW4 67 /* NOTE: Again, BUTW3 and BUTW4 values and formulas include manual tuning, retune if base BUTW1 stops being 300 pixels. You have been warned */ #define ICONBUTW 20 #define BUTH 22 /* X axis start positions of column presets */ /* First number declares how many columns total */ /* Second number declares the exact column it controls */ /* So X3CLM2 means X start position of 2nd button for a row of 3 buttons */ #define X1CLM1 XSPACE #define X2CLM1 X1CLM1 #define X2CLM2 (X2CLM1 + BUTW2 + XSPACE) #define X3CLM1 X1CLM1 #define X3CLM2 (X3CLM1 + BUTW3 + XSPACE) /* By substracting from end we already get the extra 1 pix */ #define X3CLM3 (PANEL_XMAX - BUTW3) #define X4CLM1 X1CLM1 /* Extra pix to reach the BUTW1 total size */ #define X4CLM2 (X4CLM1 + BUTW4 + XSPACE + 1) #define X4CLM3 (X4CLM2 + BUTW4 + XSPACE) /* By substracting from end we already get the other extra 1 pix */ #define X4CLM4 (PANEL_XMAX - BUTW4) /* end buttons grid */