Quantcast

Update bar defaults automatically

Scott Sibley [09-10-10 - 19:03]
Update bar defaults automatically
Filename
Modules/Bars.lua
diff --git a/Modules/Bars.lua b/Modules/Bars.lua
index 4da09ff..654b076 100644
--- a/Modules/Bars.lua
+++ b/Modules/Bars.lua
@@ -225,9 +225,22 @@ function mod:OnInitialize()
 		self.db.profile.bars = {}
 	end

-	for k, v in pairs(defaultWidgets) do
-		if not self.db.profile.bars[k] then
-			self.db.profile.bars[k] = copy(v)
+	for i, v in ipairs(defaultWidgets) do
+		for j, vv in ipairs(self.db.profile.bars) do
+			if v.name == vv.name then
+				for k, val in pairs(v) do
+					if v[k] ~= vv[k] and not vv[k.."Dirty"] then
+						vv[k] = v[k]
+					end
+				end
+				v.tagged = true
+			end
+		end
+	end
+
+	for i, v in ipairs(defaultWidgets) do
+		if not v.tagged and not v.deleted then
+			tinsert(self.db.profile.bars, v)
 		end
 	end

@@ -327,7 +340,11 @@ function mod:RebuildOpts()
 					type = "input",
 					pattern = "%d",
 					get = function() return tostring(db.height or defaults.height) end,
-					set = function(info, v) db.height = tonumber(v); createBars() end,
+					set = function(info, v)
+						db.height = tonumber(v);
+						db[k.."Dirty"] = true
+						createBars();
+					end,
 					order = 2
 				},
 				update = {
@@ -336,7 +353,11 @@ function mod:RebuildOpts()
 					type = "input",
 					pattern = "%d",
 					get = function() return tostring(db.update or defaults.update) end,
-					set = function(info, v) db.update = tonumber(v); createBars() end,
+					set = function(info, v)
+						db.update = tonumber(v);
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 3
 				},
 				--[[direction = {
@@ -365,6 +386,7 @@ function mod:RebuildOpts()
 					end,
 					set = function(info, v)
 						db.texture1 = LSM:List("statusbar")[v]
+						db[k.."Dirty"] = true
 						createBars()
 					end,
 					order = 4
@@ -379,6 +401,7 @@ function mod:RebuildOpts()
 					end,
 					set = function(info, v)
 						db.texture2 = LSM:List("statusbar")[v]
+						db[k.."Dirty"] = true
 						createBars() end,
 					order = 5
 				},
@@ -387,7 +410,11 @@ function mod:RebuildOpts()
 					desc = "This bar's anchor point. These arguments are passed to bar:SetPoint()",
 					type = "input",
 					get = function() return db.point end,
-					set = function(info, v) db.point = v; createBars() end,
+					set = function(info, v)
+						db.point = v;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 6
 				},
 				top = {
@@ -395,7 +422,11 @@ function mod:RebuildOpts()
 					desc = "Toggle whether to place the first bar on top",
 					type = "toggle",
 					get = function() return db.top end,
-					set = function(info, v) db.top = v; createBars() end,
+					set = function(info, v)
+						db.top = v;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 7
 				},
 				expression = {
@@ -405,7 +436,11 @@ function mod:RebuildOpts()
 					multiline = true,
 					width = "full",
 					get = function() return db.expression end,
-					set = function(info, v) db.expression = v; createBars() end,
+					set = function(info, v)
+						db.expression = v;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 8
 				},
 				expression2 = {
@@ -415,7 +450,11 @@ function mod:RebuildOpts()
 					multiline = true,
 					width = "full",
 					get = function() return db.expression2 end,
-					set = function(info, v) db.expression2 = v ; createBars()end,
+					set = function(info, v)
+						db.expression2 = v ;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 9
 				},
 				min = {
@@ -425,7 +464,11 @@ function mod:RebuildOpts()
 					multiline = true,
 					width = "full",
 					get = function() return db.min end,
-					set = function(info, v) db.min = v; createBars() end,
+					set = function(info, v)
+						db.min = v;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 10

 				},
@@ -436,7 +479,11 @@ function mod:RebuildOpts()
 					multiline = true,
 					width = "full",
 					get = function() return db.max end,
-					set = function(info, v) db.max = v; createBars() end,
+					set = function(info, v)
+						db.max = v;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 11
 				},
 				color1 = {
@@ -446,7 +493,10 @@ function mod:RebuildOpts()
 					multiline = true,
 					width = "full",
 					get = function() return db.color1 end,
-					set = function(info, v) db.color1 = v; createBars() end,
+					set = function(info, v)
+						db.color1 = v;
+						db[k.."Dirty"] = true
+					createBars() end,
 					order = 12
 				},
 				color2 = {
@@ -456,7 +506,11 @@ function mod:RebuildOpts()
 					multiline = true,
 					width = "full",
 					get = function() return db.color2 end,
-					set = function(info, v) db.color2 = v; createBars() end,
+					set = function(info, v)
+						db.color2 = v;
+						db[k.."Dirty"] = true
+						createBars()
+					end,
 					order = 13
 				}
 			}