Mercurial > wow > breuesk
comparison Gui.lua @ 56:94ae80d58903
Settling in on a layout I like
| author | John@Yosemite-PC |
|---|---|
| date | Sun, 25 Mar 2012 13:09:31 -0400 |
| parents | 11f18e279229 |
| children | 615346b6ee99 |
comparison
equal
deleted
inserted
replaced
| 55:59829ae918eb | 56:94ae80d58903 |
|---|---|
| 8 local tostring=tostring | 8 local tostring=tostring |
| 9 local type=type | 9 local type=type |
| 10 local getn=getn | 10 local getn=getn |
| 11 setfenv(1,bsk) | 11 setfenv(1,bsk) |
| 12 | 12 |
| 13 local ChangeTab = function(container, event, group) | 13 local copy = function(t) |
| 14 container:ReleaseChildren() | 14 local c = {} |
| 15 if group == "tab2" then | 15 if not t then return c end |
| 16 local desc = AceGUI:Create("Label") | 16 for i,v in pairs(t) do c[i] = v end |
| 17 desc:SetText("This is Tab 1") | 17 return c |
| 18 desc:SetFullWidth(true) | 18 end |
| 19 container:AddChild(desc) | 19 local colorize = function(str,color) |
| 20 | 20 if str==nil or str=="" then return "" end |
| 21 local button = AceGUI:Create("Button") | 21 if type(color) == "table" then |
| 22 button:SetText("Tab 1 Button") | 22 color = string.format("%02x%02x%02x",255*color.r,255*color.g,255*color.b) |
| 23 button:SetWidth(200) | 23 end |
| 24 container:AddChild(button) | 24 if color == nil then return str end |
| 25 elseif group == "tab1" then | 25 return "|cff"..tostring(color or "ffffff")..str.."|r" |
| 26 --local leftGroup = AceGUI:Create("InlineGroup") | 26 end |
| 27 --leftGroup:SetFullHeight() | 27 |
| 28 --leftGroup:SetWidth(200) | 28 local CreateListSelector = function(OnValueChanged) |
| 29 | 29 PersonList:RefreshRaidList() |
| 30 local rightGroup = AceGUI:Create("InlineGroup") | 30 local pulldown = AceGUI:Create("Dropdown") |
| 31 rightGroup:SetTitle("title") | 31 local pull = {} |
| 32 --rightGroup:SetWidth(600) | 32 local ltemp = 0 |
| 33 --rightGroup:SetHeight(200) | 33 local lids = LootLists:GetAllIds() |
| 34 rightGroup.width = 'fill' | 34 for _,v in pairs(lids) do |
| 35 --rightGroup:SetFullWidth() | 35 local l = LootLists:Select(v) |
| 36 --rightGroup.alignoffset = 25 | 36 pull[l:GetId()] = l:GetName() |
| 37 rightGroup:SetLayout("Flow") | 37 --local entry = {value=i,text=v.name} |
| 38 | 38 if l:GetLength() > 0 then |
| 39 --local desc = AceGUI:Create("Label") | 39 pulldown:SetItemDisabled(i,true) |
| 40 --desc:SetText("This is Tab 1") | 40 if ltemp == 0 then |
| 41 --desc:SetFullWidth(true) | 41 ltemp = l:GetId() |
| 42 --container:AddChild(desc) | |
| 43 local icon = AceGUI:Create("Icon") | |
| 44 icon:SetImage([[Interface\Icons\INV_Misc_PocketWatch_01]]) | |
| 45 local sz = 64 * icon.frame:GetEffectiveScale() -- 64 matches the character frame icon size | |
| 46 icon:SetWidth(sz,sz) | |
| 47 icon:SetHeight(sz,sz) | |
| 48 icon:SetImageSize(sz,sz) | |
| 49 icon:SetCallback("OnEnter", function(widget) _G.GameTooltip:SetOwner(widget.frame,"ANCHOR_RIGHT"); _G.GameTooltip:SetHyperlink("item:16846:0:0:0:0:0:0:0"); _G.GameTooltip:Show() end ) | |
| 50 icon:SetCallback("OnLeave", function(widget) _G.GameTooltip:Hide() end ) | |
| 51 rightGroup:AddChild(icon) | |
| 52 | |
| 53 for i=1,12 do | |
| 54 icon = AceGUI:Create("Icon") | |
| 55 icon:SetImage([[Interface\Icons\INV_Misc_PocketWatch_01]]) | |
| 56 local sz = 64 * icon.frame:GetEffectiveScale() -- 64 matches the character frame icon size | |
| 57 icon:SetWidth(sz,sz) | |
| 58 icon:SetHeight(sz,sz) | |
| 59 icon:SetImageSize(sz,sz) | |
| 60 icon:SetCallback("OnEnter", function(widget) _G.GameTooltip:SetOwner(widget.frame,"ANCHOR_RIGHT"); _G.GameTooltip:SetHyperlink("item:16846:0:0:0:0:0:0:0"); _G.GameTooltip:Show() end ) | |
| 61 icon:SetCallback("OnLeave", function(widget) _G.GameTooltip:Hide() end ) | |
| 62 rightGroup:AddChild(icon) | |
| 63 end | |
| 64 | |
| 65 local item2 = {string="item2!", color = {r=1,g=0,b=0.5} } | |
| 66 local itemList = {"Item1", "item2", "Item3", "Item4"} | |
| 67 for i=5,29 do | |
| 68 table.insert(itemList,"Item"..i) | |
| 69 end | |
| 70 | |
| 71 local colorize = function(str,color) | |
| 72 if str==nil or str=="" then return "" end | |
| 73 if type(color) == "table" then | |
| 74 color = string.format("%02x%02x%02x",255*color.r,255*color.g,255*color.b) | |
| 75 end | |
| 76 if color == nil then return str end | |
| 77 return "|cff"..tostring(color or "ffffff")..str.."|r" | |
| 78 end | |
| 79 | |
| 80 PersonList:RefreshRaidList() -- todo: this should be elsewhere | |
| 81 | |
| 82 scroller = AceGUI:Create("ScrollFrame") | |
| 83 scroller:SetLayout("List") | |
| 84 scroller:SetHeight(0) -- prevents a nasty graphical bug, dont ask me why | |
| 85 scroller:SetFullHeight(true) | |
| 86 scroller:SetFullWidth(true) | |
| 87 | |
| 88 local label = AceGUI:Create("InteractiveLabel") | |
| 89 label:SetText("fucking hell\n") | |
| 90 scroller:AddChild(label) | |
| 91 scroller:AddChild(rightGroup) | |
| 92 | |
| 93 treecontrol = AceGUI:Create("TreeGroup") | |
| 94 treecontrol:EnableButtonTooltips(false) | |
| 95 treecontrol:SetFullWidth(true) | |
| 96 treecontrol:SetFullHeight(true) | |
| 97 treecontrol:SetAutoAdjustHeight(false) | |
| 98 | |
| 99 treecontrol:AddChild(scroller) | |
| 100 | |
| 101 local pulldown = AceGUI:Create("Dropdown") | |
| 102 local pull = {} | |
| 103 local ltemp = 0 | |
| 104 local lids = LootLists:GetAllIds() | |
| 105 for _,v in pairs(lids) do | |
| 106 local l = LootLists:Select(v) | |
| 107 pull[l:GetId()] = l:GetName() | |
| 108 --local entry = {value=i,text=v.name} | |
| 109 if l:GetLength() > 0 then | |
| 110 pulldown:SetItemDisabled(i,true) | |
| 111 if ltemp == 0 then | |
| 112 ltemp = l:GetId() | |
| 113 end | |
| 114 end | 42 end |
| 115 end | 43 end |
| 116 pulldown:SetWidth(175) | 44 end |
| 117 pulldown:SetList(pull) | 45 pulldown:SetWidth(175) |
| 118 --for i,v in pairs(lists) do | 46 pulldown:SetList(pull) |
| 119 -- if getn(v) == 0 then | 47 pulldown:SetCallback("OnValueChanged", OnValueChanged) |
| 120 -- pulldown:SetItemDisabled(i,true) | 48 if ltemp > 0 then pulldown:SetValue(ltemp); OnValueChanged(nil,nil,ltemp) end -- sadly, SetValue doesn't fire a OnValueChanged |
| 121 -- end | 49 return pulldown |
| 122 --end | 50 end |
| 123 local ovc = function(_,_,value) | 51 |
| 124 --treecontrol:ReleaseChildren() | 52 local tree = {} |
| 125 local tree = {} | 53 local ovc = function(t1,value) |
| 126 local l = LootLists:Select(value) | 54 tree = {} |
| 127 for le in l:OrderedListEntryIter() do | 55 local l = LootLists:Select(value) |
| 128 local line = {value=le:GetId(),text=le:GetName(),icon=[[Interface\Glues\CharacterCreate\UI-CharacterCreate-Classes]]} | 56 for le in l:OrderedListEntryIter() do |
| 129 line.iconCoords=_G.CLASS_ICON_TCOORDS[le:GetClass()] | 57 local line = {value=le:GetId(),text=le:GetName(),icon=[[Interface\Glues\CharacterCreate\UI-CharacterCreate-Classes]]} |
| 130 if not PersonList:IsActive(le:GetId()) then | 58 line.iconCoords=_G.CLASS_ICON_TCOORDS[le:GetClass()] |
| 131 line.disabled = true | 59 line.text=colorize(line.text,_G.RAID_CLASS_COLORS[le:GetClass()]) |
| 132 else | 60 line.disabled = not PersonList:IsActive(le:GetId()) |
| 133 line.text=colorize(line.text,_G.RAID_CLASS_COLORS[le:GetClass()]) | 61 table.insert(tree,line) |
| 134 end | 62 end |
| 135 table.insert(tree,line) | 63 t1:SetList(tree) |
| 136 end | 64 end |
| 137 treecontrol:SetTree(tree) | |
| 138 end | |
| 139 pulldown:SetCallback("OnValueChanged", ovc) | |
| 140 if ltemp > 0 then pulldown:SetValue(ltemp); ovc(nil,nil,ltemp) end -- sadly, SetValue doesn't fire a OnValueChanged | |
| 141 | |
| 142 container:AddChild(pulldown) | |
| 143 container:AddChild(treecontrol) | |
| 144 | |
| 145 --pulldown:EnableButtonTooltips(false) | |
| 146 --pulldown:SetFullWidth(true) | |
| 147 --pulldown:SetFullHeight(true) | |
| 148 --pulldown:SetAutoAdjustHeight(false) | |
| 149 | |
| 150 --pulldown:SetCallback("OnGroupSelected", function(widget,_,uniquevalue) print("OGS: uniquevalue: "..uniquevalue) | |
| 151 --end) | |
| 152 --pulldown:SetCallback("OnClick", function(widget,_,uniquevalue) print("Onclick: uniquevalue: " .. uniquevalue) end) | |
| 153 --pulldown:SetCallback("OnButtonEnter", function(widget,_,value) print("OnButtonEnter: value: " .. value) end) | |
| 154 | |
| 155 | |
| 156 end | |
| 157 end | |
| 158 | |
| 159 --local myhook = function(tooltip, spellid) | |
| 160 --tooltip:AddLine("MSS was here", 1, 1, 1) | |
| 161 --tooltip:Show() | |
| 162 --end | |
| 163 --if GameTooltip:GetScript("OnTooltipSetSpell") then | |
| 164 --GameTooltip:HookScript("OnTooltipSetSpell", myhook) | |
| 165 --else | |
| 166 --GameTooltip:SetScript("OnTooltipSetSpell", myhook) | |
| 167 --end | |
| 168 | 65 |
| 169 function CreateGUI() | 66 function CreateGUI() |
| 170 | 67 local admin = bsk.admin |
| 171 -- Create a container frame | 68 local f = AceGUI:Create("Frame") |
| 172 frame = AceGUI:Create("Frame") | 69 |
| 173 frame:SetCallback("OnClose",function(widget) AceGUI:Release(widget) end) | 70 f:SetCallback("OnClose",function(widget) AceGUI:Release(widget) end) |
| 174 frame:SetTitle("BSK") | 71 f:SetTitle("BSK") |
| 175 frame:SetLayout("Flow") | 72 f:SetLayout("Flow") |
| 176 frame:SetHeight(700) | 73 f:SetHeight(680) |
| 177 frame:SetWidth(700) | 74 f:SetWidth(580) |
| 178 | 75 |
| 179 --local opts = | 76 local left = AceGUI:Create("InlineGroup") |
| 180 --{ | 77 left:SetLayout("List") |
| 181 | 78 left:SetWidth(175) |
| 182 --} | 79 left:SetFullHeight(true) |
| 183 | 80 left.alignoffset=0.25 -- hack, as per http://forums.wowace.com/showthread.php?t=17114 |
| 184 | 81 |
| 185 | 82 local right = AceGUI:Create("InlineGroup") |
| 186 | 83 right:SetLayout("Flow") |
| 187 | 84 right:SetWidth(700-175-160) |
| 188 | 85 right:SetFullHeight(true) |
| 189 --local tab = AceGUI:Create("TabGroup") | 86 right.alignoffset=0.25 |
| 190 --tab:SetLayout("Flow") | 87 |
| 191 --tab:SetTabs( | 88 local t1 = AceGUI:Create("SelectorList") |
| 192 -- { | 89 t1:SetNumLines(25) |
| 193 -- { | 90 t1:SetFullWidth(true) |
| 194 -- text="Tab 1", | 91 t1:SetInteractive(admin) |
| 195 -- value="tab1" | 92 |
| 196 -- }, | 93 local listChange = function(_,_,value) |
| 197 | 94 ovc(t1,value) |
| 198 -- { | 95 end |
| 199 -- text="Tab 2", | 96 local p1 = CreateListSelector(listChange) |
| 200 -- value="tab2" | 97 p1:SetFullWidth(true) |
| 201 -- }, | 98 |
| 202 -- { | 99 left:AddChild(p1) |
| 203 -- text="Tab 3", | 100 left:AddChild(t1) |
| 204 -- value="tab3" | 101 |
| 205 -- }, | 102 local t2 = AceGUI:Create("SelectorList") |
| 206 -- { | 103 t2:SetNumLines(7) |
| 207 -- text="Tab 4", | 104 t2:SetFullWidth(true) |
| 208 -- value="tab4" | 105 t2:EnableButtonTooltips(true) |
| 209 -- } | 106 t2:SetList({ |
| 210 -- } | 107 { |
| 211 --) | 108 value=1, |
| 212 --tab.width = "fill" | 109 text = "|cffa335ee|Hitem:77109:4080:4009:0:0:0:0:0:85:0|h[Band of Reconstruction]|h|r", |
| 213 --tab.height = "fill" | 110 link = "|cffa335ee|Hitem:77109:4080:4009:0:0:0:0:0:85:0|h[Band of Reconstruction]|h|r", |
| 214 | 111 }, |
| 215 --tab:SetCallback("OnGroupSelected",ChangeTab) | 112 { |
| 216 --tab:SelectTab("tab1") | 113 value=2, |
| 217 --frame:AddChild(tab) | 114 text = "|cffa335ee|Hitem:19351:0:0:0:0:0:0:0:85:0|h[Maladath, Runed Blade of the Black Flight]|h|r", |
| 218 ChangeTab(frame,0,"tab1") | 115 link = "|cffa335ee|Hitem:19351:0:0:0:0:0:0:0:85:0|h[Maladath, Runed Blade of the Black Flight]|h|r" |
| 219 | 116 }, |
| 220 -- Create a button | 117 { |
| 221 --local btn = AceGUI:Create("Button") | 118 value=3, |
| 222 --btn:SetWidth(170) | 119 text = "|cffa335ee|Hitem:31986:0:0:0:0:0:0:0:85:0|h[Merciless Gladiator's Crossbow of the Phoenix]|h|r", |
| 223 --btn:SetText("Button !") | 120 link = "|cffa335ee|Hitem:31986:0:0:0:0:0:0:0:85:0|h[Merciless Gladiator's Crossbow of the Phoenix]|h|r" |
| 224 --btn:SetCallback("OnClick", function() Print("Click!") end) | 121 }, |
| 225 -- Add the button to the container | 122 { |
| 226 --frame:AddChild(btn) | 123 value=4, |
| 227 end | 124 text = "|cffa335ee|Hitem:65003:0:0:0:0:0:0:0:85:0|h[Reclaimed Ashkandi, Greatsword of the Brotherhood]|h|r", |
| 228 | 125 link = "|cffa335ee|Hitem:65003:0:0:0:0:0:0:0:85:0|h[Reclaimed Ashkandi, Greatsword of the Brotherhood]|h|r" |
| 229 | 126 }, |
| 127 { | |
| 128 value=5, | |
| 129 text = "|cffff8000|Hitem:19019:0:0:0:0:0:0:0:85:0|h[Thunderfury, Blessed Blade of the Windseeker]|h|r", | |
| 130 link = "|cffff8000|Hitem:19019:0:0:0:0:0:0:0:85:0|h[Thunderfury, Blessed Blade of the Windseeker]|h|r" | |
| 131 }, | |
| 132 }) | |
| 133 | |
| 134 local alb1 = AceGUI:Create("Button") | |
| 135 alb1:SetWidth(100) | |
| 136 alb1:SetText("Open Bids") | |
| 137 local alb2 = AceGUI:Create("Button") | |
| 138 alb2:SetWidth(100) | |
| 139 alb2:SetText("Assign") | |
| 140 local alb3 = AceGUI:Create("Button") | |
| 141 alb3:SetWidth(100) | |
| 142 alb3:SetText("Suicide") | |
| 143 | |
| 144 local spacer = AceGUI:Create("Label") | |
| 145 spacer:SetText(" ") | |
| 146 spacer:SetFullWidth(true) | |
| 147 local spacer2 = AceGUI:Create("Label") | |
| 148 spacer2:SetText(" ") | |
| 149 spacer2:SetFullWidth(true) | |
| 150 | |
| 151 local biddingZone = AceGUI:Create("SimpleGroup") | |
| 152 biddingZone:SetLayout("Flow") | |
| 153 biddingZone:SetFullWidth(true) | |
| 154 | |
| 155 local label = AceGUI:Create("Label") | |
| 156 label:SetText("Bidding now open for ...") | |
| 157 local biddingOn = AceGUI:Create("InteractiveLabel") | |
| 158 biddingOn:SetText( "|cffa335ee|Hitem:65003:0:0:0:0:0:0:0:85:0|h[Reclaimed Ashkandi, Greatsword of the Brotherhood]|h|r") | |
| 159 biddingOn:SetFullWidth(true) | |
| 160 biddingOn:SetCallback("OnEnter", function(widget) _G.GameTooltip:SetOwner(widget.frame,"ANCHOR_RIGHT"); _G.GameTooltip:SetHyperlink("|cffa335ee|Hitem:65003:0:0:0:0:0:0:0:85:0|h[Reclaimed Ashkandi, Greatsword of the Brotherhood]|h|r"); _G.GameTooltip:Show() end ) | |
| 161 biddingOn:SetCallback("OnLeave", function(widget) _G.GameTooltip:Hide() end ) | |
| 162 local b1 = AceGUI:Create("SelectorList") | |
| 163 b1:SetNumLines(6) | |
| 164 b1:SetInteractive(admin) | |
| 165 local dummydata = {copy(tree[1]),copy( tree[2] ),copy( tree[3] )} | |
| 166 for i,v in pairs(dummydata) do v.disabled = false end | |
| 167 dummydata[2].text = dummydata[2].text .. " (roll 73)" | |
| 168 b1:SetList(dummydata) | |
| 169 local bidTitle = AceGUI:Create("Label") | |
| 170 bidTitle:SetText("Current bids") | |
| 171 bidTitle:SetFullWidth(true) | |
| 172 | |
| 173 | |
| 174 local bidRetractButton = AceGUI:Create("Button") | |
| 175 bidRetractButton:SetText("Place Bid") | |
| 176 bidRetractButton:SetWidth(100) | |
| 177 local rollButton = AceGUI:Create("Button") | |
| 178 rollButton:SetText("Offset Roll") | |
| 179 rollButton:SetWidth(100) | |
| 180 | |
| 181 b1.alignoffset = 0.25 -- or else g1 won't align well | |
| 182 local g1 = AceGUI:Create("SimpleGroup") | |
| 183 g1.alignoffset = 0.25 | |
| 184 g1:SetWidth(120) | |
| 185 g1:SetLayout("List") | |
| 186 local adminForce = AceGUI:Create("Button") | |
| 187 adminForce:SetText("Force bid") | |
| 188 adminForce:SetWidth(100) | |
| 189 local adminRetract = AceGUI:Create("Button") | |
| 190 adminRetract:SetText("Retract bid") | |
| 191 adminRetract:SetWidth(100) | |
| 192 g1:AddChildren(adminForce,adminRetract) | |
| 193 | |
| 194 | |
| 195 | |
| 196 local suicideSelected = AceGUI:Create("Button") | |
| 197 suicideSelected:SetFullWidth(true) | |
| 198 suicideSelected:SetText("Suicide") | |
| 199 local undo = AceGUI:Create("Button") | |
| 200 undo:SetText("Undo") | |
| 201 undo:SetFullWidth(true) | |
| 202 local filter = AceGUI:Create("CheckBox") | |
| 203 filter:SetLabel("Only show active") | |
| 204 filter:SetFullWidth(true) | |
| 205 | |
| 206 left:AddChildren(filter) | |
| 207 if admin then left:AddChildren(suicideSelected,undo) end | |
| 208 biddingZone:AddChildren(spacer,label,biddingOn,bidRetractButton,rollButton,spacer2,bidTitle,b1) | |
| 209 if admin then biddingZone:AddChildren(g1) end | |
| 210 right:AddChildren(t2) | |
| 211 if admin then right:AddChildren(alb1,alb2,alb3) end | |
| 212 right:AddChildren(biddingZone) | |
| 213 f:AddChildren(left,right) | |
| 214 end |
