diff Gui.lua @ 71:d5e2dfe0c269

Starting to track loot state separately
author John@Yosemite-PC
date Tue, 03 Apr 2012 23:23:22 -0400
parents 236117ab8a49
children 9e5b0a2368ad
line wrap: on
line diff
--- a/Gui.lua	Thu Mar 29 23:24:51 2012 -0400
+++ b/Gui.lua	Tue Apr 03 23:23:22 2012 -0400
@@ -48,8 +48,9 @@
     end
     pulldown:SetWidth(175)
     pulldown:SetList(pull)
+    SListPopulator:SetSwidget(pulldown)
     pulldown:SetCallback("OnValueChanged", function(_,_,value) SListPopulator:SelectList(value) end)
-    if ltemp > 0 then pulldown:SetValue(ltemp); SListPopulator:SelectList(ltemp) end -- sadly, SetValue doesn't fire a OnValueChanged
+    if ltemp > 0 then SListPopulator:SelectList(ltemp) end -- default value
     return pulldown
 end
 
@@ -115,10 +116,11 @@
 {
     filtered = false,
     widget = nil,
+    swidget = nil,
     data = nil,
     lref = nil,
 
-    ["Release"] = function(self) self.filtered, self.widget, self.data, self.lref = false, nil, nil, nil end,
+    ["Release"] = function(self) self.filtered, self.widget, self.swidget, self.data, self.lref = false, nil, nil, nil, nil end,
     ["Redraw"] = function(self)
         if self.lref == nil or self.widget == nil then return end -- don't do work if not fully initialized
         self.data = {}
@@ -136,6 +138,12 @@
         self.widget:SetList(self.data)
         SListEventDispatch:Event("Redraw")
     end,
+    ["SetSwidget"] = function(self,w) 
+        if type(w) ~= "table" or type(w.SetList) ~= "function" then
+            _G.error("Bad SetWidget")
+        end
+        self.swidget = w
+    end,
     ["SetWidget"] = function(self,w) 
         if type(w) ~= "table" or type(w.SetList) ~= "function" then
             _G.error("Bad SetWidget")
@@ -147,8 +155,10 @@
         self:Redraw()
     end,
     ["SelectList"] = function(self,value) 
+        self.swidget:SetValue(value)
         self.lref = LootLists:Select(value)
         self:Redraw()
+        Comm:ActivateList(value)
     end,
     ["DataEvent"] = function(self)
         self:Redraw()
@@ -213,11 +223,11 @@
 
 local RListPopulator =
 {
-    data = {},
     widget = nil,
-    ["Release"] = function(self) self.data = {}; self.widget = nil end,
+    ["RollEvent"] = function(self) self:Redraw() end,
+    ["Release"] = function(self) self.widget = nil end,
     ["Redraw"] = function(self)
-        self.widget:SetList(self.data)
+        self.widget:SetList(statebids)
         RListEventDispatch:Event("Redraw")
     end,
     ["SetWidget"] = function(self,w)
@@ -225,34 +235,29 @@
             _G.error("Bad SetWidget")
         end
         self.widget = w
-        if debug then
-            local dummydata = {}
-            local tree = SListPopulator.data
-            for i,v in pairs(tree) do dummydata[i] = copy(v); dummydata[i].disabled = false end
-            if dummydata[2] then dummydata[2].text = dummydata[2].text .. " (roll 73)" end
-            self.data = dummydata
-        end
+        --if debug then
+        --    local dummydata = {}
+        --    local tree = SListPopulator.data
+        --    for i,v in pairs(tree) do dummydata[i] = copy(v); dummydata[i].disabled = false end
+        --    if dummydata[2] then dummydata[2].text = dummydata[2].text .. " (roll 73)" end
+        --    self.data = dummydata
+        --end
         self:Redraw()
     end,
     ["Force"] = function(self,who)
-        for i,v in pairs(self.data) do
-            if who.value == v.value then
-                print(who.value .. " is already on the list")
-                return -- no double adds please
-            end
-        end
         local new = self.Convert(who,72)
-        table.insert(self.data,new)
-        -- todo: keep this list sorted
-        self:Redraw()
+        InitiateBid(new)
+        --self:Redraw()
     end,
     ["Retract"] = function(self,who)
-        for i,v in pairs(self.data) do
-            if who.value == v.value then
-                table.remove(self.data,i)
-            end
-        end
-        self:Redraw()
+        -- todo
+        --for i,v in pairs(self.data) do
+        --    if who.value == v.value then
+        --        table.remove(self.data,i)
+        --    end
+        --end
+        InitiateRetract(copy(who))
+        --self:Redraw()
     end,
     ["Convert"] = function(who,roll) -- convert an LE object into one suitable to put in a SelectorList
         local new = copy(who)
@@ -286,6 +291,7 @@
 function OnInitializeSetStaticData()
     SetChangeListener(DataEventDispatch)
     DataEventDispatch:RegisterListener(SListPopulator)
+    RegisterListenerRolls(RListPopulator)
 end
 
 function CreateGUI()
@@ -397,6 +403,8 @@
                     RListEventDispatch:SetTarget(b1)
                     RListPopulator:SetWidget(b1)
 
+                    InitiateOpenBid(LListEventDispatch:LatestValue())
+
                     local g1
                     if admin then
                         b1.alignoffset = 0.25 -- or else g1 won't align well