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:
--wenn noch keine checkboxen vorhanden dann erstmal erstellen
if not self.herbCheckboxes then
self.herbCheckboxes = {}
local tAnchorPointY = -64
local tAnchorPointX = 30
local tAnchorPointCount = 0
for itemID, optionValue in pairs(MillButton_Herblist[expansion]) do
local itemName = GetItemInfo(itemID)
self.herbCheckboxes[itemID] = Addon:CreateOptionsCheckButton(self, itemName)
self.herbCheckboxes[itemID].itemID = itemID
self.herbCheckboxes[itemID]:SetPoint("TOPLEFT", self, "TOPLEFT", tAnchorPointX, tAnchorPointY)
tAnchorPointY = tAnchorPointY - self.herbCheckboxes[itemID]:GetHeight()
tAnchorPointCount = tAnchorPointCount + 1
if tAnchorPointCount > 18 then
tAnchorPointX = tAnchorPointX + 180
tAnchorPointY = -64
tAnchorPointCount = 0
end
end
end
for itemID, checkboxObj in pairs(self.herbCheckboxes) do
if MillButtonDB[expansion] and MillButtonDB[expansion][itemID] then
checkboxObj:SetChecked(MillButtonDB[expansion][itemID])
else
checkboxObj:SetChecked(MillButton_Herblist[expansion][itemID])
end
checkboxObj:SetScript("OnClick", function(self)
-- print(self:GetParent().name)
-- print(self.itemID)
MillButtonDB[self:GetParent().name][self.itemID] = self:GetChecked()
end)
end
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.