View Single Post
02-27-15, 11:40 AM   #30
Duugu
Premium Member
 
Duugu's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 851
Ich würde an Deiner stelle das Erstellen und Konfigurieren der Checkboxen nicht mit MillbuttonDB (also der Tabelle mit den gespeicherten Werten des Users), sondern mit MillButton_Herblist (also der Default-Tabelle) durchführen.

Erst wenn Du den eigentlichen Wert (checked/unchecked) festlegst und wenn einer klickt und du den aktuellen Wert speicherst solltest Du das mit MillbuttonDB machen.

Also ungefähr so: (Zeile 7 und 22-26 ... wieder ungetestet)

Lua Code:
  1. --wenn noch keine checkboxen vorhanden dann erstmal erstellen
  2.             if not self.herbCheckboxes then
  3.                 self.herbCheckboxes = {}
  4.                 local tAnchorPointY = -64
  5.         local tAnchorPointX  = 30
  6.         local tAnchorPointCount  = 0
  7.                 for itemID, optionValue in pairs(MillButton_Herblist[expansion]) do
  8.                     local itemName = GetItemInfo(itemID)
  9.                     self.herbCheckboxes[itemID] = Addon:CreateOptionsCheckButton(self, itemName)
  10.                     self.herbCheckboxes[itemID].itemID = itemID
  11.                     self.herbCheckboxes[itemID]:SetPoint("TOPLEFT", self, "TOPLEFT", tAnchorPointX, tAnchorPointY)
  12.                     tAnchorPointY = tAnchorPointY - self.herbCheckboxes[itemID]:GetHeight()
  13.                     tAnchorPointCount = tAnchorPointCount + 1
  14.                     if tAnchorPointCount > 18 then
  15.                         tAnchorPointX = tAnchorPointX + 180
  16.                         tAnchorPointY = -64
  17.                         tAnchorPointCount = 0
  18.                     end
  19.                 end
  20.             end
  21.             for itemID, checkboxObj in pairs(self.herbCheckboxes) do
  22.             if MillButtonDB[expansion] and MillButtonDB[expansion][itemID] then
  23.                 checkboxObj:SetChecked(MillButtonDB[expansion][itemID])
  24.             else
  25.                 checkboxObj:SetChecked(MillButton_Herblist[expansion][itemID])
  26.             end
  27.             checkboxObj:SetScript("OnClick", function(self)
  28.                 --  print(self:GetParent().name)
  29.                 --  print(self.itemID)
  30.                     MillButtonDB[self:GetParent().name][self.itemID] = self:GetChecked()
  31.             end)
  32.             end
  33.         end)

So werden dann alle Änderungen die Du an MillButton_Herblist machst automatisch in MillButtonDB durchgereicht. Und wenn es neue Herbs gibt die noch nicht in MillbuttonDB sind, dann wird einfach der Standardwert aus MillButton_Herblist genutzt.
Wenn Du in MillButton_Herblist welche entfernst, dann bleiben die in MillButtonDB zwar bis in alle Ewigkeiten drin, aber da die Liste der Checkboxen ja über MillButton_Herblist erstellt wird kann Dir das egal sein.
  Reply With Quote