comparison Gui.lua @ 68:a177b863ed6c

Event chaining from the data storage to the GUI elements
author John@Yosemite-PC
date Wed, 28 Mar 2012 23:29:36 -0400
parents 8387dc2ff658
children b7352f007028
comparison
equal deleted inserted replaced
67:8387dc2ff658 68:a177b863ed6c
44 end 44 end
45 end 45 end
46 end 46 end
47 pulldown:SetWidth(175) 47 pulldown:SetWidth(175)
48 pulldown:SetList(pull) 48 pulldown:SetList(pull)
49 pulldown:SetCallback("OnValueChanged", function(_,_,value) SListPopulator:SetList(value) end) 49 pulldown:SetCallback("OnValueChanged", function(_,_,value) SListPopulator:SelectList(value) end)
50 if ltemp > 0 then pulldown:SetValue(ltemp); SListPopulator:SetList(ltemp) end -- sadly, SetValue doesn't fire a OnValueChanged 50 if ltemp > 0 then pulldown:SetValue(ltemp); SListPopulator:SelectList(ltemp) end -- sadly, SetValue doesn't fire a OnValueChanged
51 return pulldown 51 return pulldown
52 end 52 end
53 53
54 local f, right 54 local f, right
55 local escapeButton = 55 local escapeButton =
108 108
109 SListEventDispatch = SelectorListEventDispatcher:new() 109 SListEventDispatch = SelectorListEventDispatcher:new()
110 LListEventDispatch = SelectorListEventDispatcher:new() 110 LListEventDispatch = SelectorListEventDispatcher:new()
111 RListEventDispatch = SelectorListEventDispatcher:new() 111 RListEventDispatch = SelectorListEventDispatcher:new()
112 112
113 local AdminLootEventCollector =
114 {
115 listeners = {},
116 target1 =
117 {
118 },
119 target2 =
120 {
121 },
122
123
124 }
125
126 local SListPopulator = 113 local SListPopulator =
127 { 114 {
128 filtered = false, 115 filtered = false,
129 widget = nil, 116 widget = nil,
130 data = nil, 117 data = nil,
156 end, 143 end,
157 ["SetFiltered"] = function(self,value) 144 ["SetFiltered"] = function(self,value)
158 self.filtered = value 145 self.filtered = value
159 self:Redraw() 146 self:Redraw()
160 end, 147 end,
161 ["SetList"] = function(self,value) 148 ["SelectList"] = function(self,value)
162 self.lref = LootLists:Select(value) 149 self.lref = LootLists:Select(value)
163 self:Redraw() 150 self:Redraw()
151 end,
152 ["DataEvent"] = function(self)
153 self:Redraw()
164 end 154 end
165 } 155 }
156
157 DataEventDispatch =
158 {
159 -- todo: batch events
160 listeners = {},
161 ["DataEvent"] = function(self,_) --todo: pass along the received event
162 for i,v in pairs(self.listeners) do
163 if v and v["DataEvent"] then
164 v:DataEvent()
165 end
166 end
167 end,
168 ["RegisterListener"] = function(self,listener)
169 if not listener or not listener["DataEvent"] then
170 _G.error("Bad listener")
171 end
172 table.insert(self.listeners,listener)
173 end
174 }
175
176 function OnInitializeSetStaticData()
177 SetChangeListener(DataEventDispatch)
178 DataEventDispatch:RegisterListener(SListPopulator)
179 end
166 180
167 function CreateGUI() 181 function CreateGUI()
168 -- special registration procedure to be closable with the escape button 182 -- special registration procedure to be closable with the escape button
169 --escapeButton.shown = true 183 --escapeButton.shown = true
170 --_G["BSK_ESCAPEBUTTON"] = escapeButton 184 --_G["BSK_ESCAPEBUTTON"] = escapeButton
259 LListEventDispatch:RegisterListener(alb1.userdata) 273 LListEventDispatch:RegisterListener(alb1.userdata)
260 alb1:SetCallback("OnClick", 274 alb1:SetCallback("OnClick",
261 function(widget) 275 function(widget)
262 if widget.userdata.state then -- we were bidding when the button was pressed 276 if widget.userdata.state then -- we were bidding when the button was pressed
263 biddingZone:ReleaseChildren() 277 biddingZone:ReleaseChildren()
278 widget:SetText("Open Bids")
264 RListEventDispatch:Release() 279 RListEventDispatch:Release()
265 else 280 else
281 widget:SetText("Close bids")
266 local spacer = AceGUI:Create("Label") 282 local spacer = AceGUI:Create("Label")
267 spacer:SetText(" ") 283 spacer:SetText(" ")
268 spacer:SetFullWidth(true) 284 spacer:SetFullWidth(true)
269 local spacer2 = AceGUI:Create("Label") 285 local spacer2 = AceGUI:Create("Label")
270 spacer2:SetText(" ") 286 spacer2:SetText(" ")
415 if admin then 431 if admin then
416 432
417 suicideSelected = AceGUI:Create("Button") 433 suicideSelected = AceGUI:Create("Button")
418 suicideSelected:SetFullWidth(true) 434 suicideSelected:SetFullWidth(true)
419 suicideSelected:SetText("Suicide") 435 suicideSelected:SetText("Suicide")
436 suicideSelected:SetCallback("OnClick",
437 function(_)
438 local p = SListEventDispatch:LatestValue()
439 local lref = SListPopulator.lref
440 lref:SuicidePerson(p.value)
441 end
442 )
443
420 -- use userdata + SListEventDispatch to toggle state 444 -- use userdata + SListEventDispatch to toggle state
421 suicideSelected.userdata = 445 suicideSelected.userdata =
422 { 446 {
423 widget = suicideSelected, 447 widget = suicideSelected,
424 ["Redraw"] = function(self,_) self.widget:SetDisabled(true) end, 448 ["Redraw"] = function(self,_) self.widget:SetDisabled(true) end,