Quantcast

Fix the bloody config

Adrian L Lange [08-06-09 - 16:12]
Fix the bloody config
Filename
pMinimap.toc
pMinimapConfig.lua
pMinimap_Config.lua
diff --git a/pMinimap.toc b/pMinimap.toc
index 8d9a5ad..dfbef69 100644
--- a/pMinimap.toc
+++ b/pMinimap.toc
@@ -14,4 +14,4 @@ pMinimap.lua

 libs\tekKonfig\tekKonfig.xml

-pMinimap_Config.lua
\ No newline at end of file
+pMinimapConfig.lua
diff --git a/pMinimapConfig.lua b/pMinimapConfig.lua
new file mode 100644
index 0000000..354a9f7
--- /dev/null
+++ b/pMinimapConfig.lua
@@ -0,0 +1 @@
+local GAP = 20

local SharedMedia = LibStub('LibSharedMedia-3.0')

local group = LibStub('tekKonfig-Group')
local slider = LibStub('tekKonfig-Slider')
local dropdown = LibStub('tekKonfig-Dropdown')
local checkbox = LibStub('tekKonfig-Checkbox')

local function updateFont()
	MiniMapMailText:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
	MinimapZoneText:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
	MinimapCoordinatesText:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
--	TimeManagerClockTicker:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
end

local function dropStrata()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.strata = self.value
		Minimap:SetFrameStrata(self.value)
	end

	for k, v in next, {'DIALOG', 'HIGH', 'MEDIUM', 'LOW', 'BACKGROUND'} do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local function dropZone()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.zonepoint = self.value

		MinimapZoneTextButton:ClearAllPoints()
		MinimapZoneTextButton:SetPoint(self.value == 'TOP' and 'BOTTOM' or 'TOP', Minimap, self.value, 0, pMinimap.db.zoneoffset)
	end

	for k, v in next, {'TOP', 'BOTTOM'} do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local function dropFont()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.font = self.value
		print(self.value)
		updateFont()
	end

	for k, v in next, SharedMedia:List('font') do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local function dropFontflag()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.fontflag = self.value
		updateFont()
	end

	for k, v in next, {'OUTLINE', 'THICKOUTLINE', 'MONOCHROME', 'NONE'} do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local addon = CreateFrame('Frame', nil, InterfaceOptionsFramePanelContainer)
addon.name = 'pMinimap'
addon:Hide()
addon:SetScript('OnShow', function(self)
	local title, subtitle = LibStub('tekKonfig-Heading').new(self, 'pMinimap', 'Options for pMinimap')
	LibStub('tekKonfig-Scroll').new(self, 5)

	local group1 = group.new(self, 'Minimap', 'TOPLEFT', subtitle, 'BOTTOMLEFT')
	group1:SetHeight(120)
	group1:SetWidth(370)

	local scale = slider.new(self, 'Scale', 0.5, 2.5, 'TOPLEFT', group1, 15, -15)
	scale:SetValueStep(0.01)
	scale:SetValue(pMinimap.db.scale)
	scale:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.scale = value
		Minimap:SetScale(value)
	end)

	local level = slider.new(self, 'Framelevel', 1, 15, 'TOPLEFT', scale, 'BOTTOMLEFT', 0, -GAP)
	level:SetValueStep(1)
	level:SetValue(pMinimap.db.level)
	level:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.level = value
		Minimap:SetFrameLevel(value)
	end)

	local strata = dropdown.new(self, 'Framestrata', 'LEFT', scale, 'RIGHT', GAP * 2, 0)
	UIDropDownMenu_Initialize(strata, dropStrata)

	local group2 = group.new(self, 'Modules', 'TOPLEFT', group1, 'BOTTOMLEFT', 0, -GAP)
	group2:SetHeight(105)
	group2:SetWidth(370)

	local coordinates = checkbox.new(self, 22, 'Coordinates', 'TOPLEFT', group2, 10, -10)
	coordinates:SetChecked(pMinimap.db.coordinates)
	coordinates:SetScript('OnClick', function(self)
		pMinimap.db.coordinates = not pMinimap.db.coordinates

		if(pMinimap.db.coordinates) then
			MinimapCoordinates:Show()
			MinimapCoordinates:ClearAllPoints()
			MinimapCoordinates:SetPoint(pMinimap.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
		else
			MinimapCoordinates:Hide()
		end

		if(pMinimap.db.clock) then
			TimeManagerClockButton:ClearAllPoints()
			TimeManagerClockButton:SetPoint(pMinimap.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
		end
	end)

	local coordinatesdecimals = slider.new(self, 'Coordinates Decimals', 0, 3, 'TOPRIGHT', group2, -15, -15)
	coordinatesdecimals:SetValueStep(1)
	coordinatesdecimals:SetValue(pMinimap.db.coordinatesdecimals)
	coordinatesdecimals:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.coordinatesdecimals = value
	end)

	local clock = checkbox.new(self, 22, 'Clock (Disabled NYI)', 'TOPLEFT', coordinates, 'BOTTOMLEFT', 0, -GAP / 2)
	clock:SetChecked(pMinimap.db.clock)
	clock:Disable()
	clock:SetScript('OnClick', function(self)
		pMinimap.db.clock = not pMinimap.db.clock

		if(pMinimap.db.clock) then
			if(not pMinimap:IsEventRegistered('CALENDAR_UPDATE_PENDING_INVITES')) then
				pMinimap:Clock()
			else
				TimeManagerClockButton:Show()
				TimeManagerClockButton:ClearAllPoints()
				TimeManagerClockButton:SetPoint(pMinimap.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
			end

			pMinimap.CALENDAR_UPDATE_PENDING_INVITES()
		else
			TimeManagerClockButton:Hide()
		end

		if(pMinimap.coordinates) then
			MinimapCoordinates:ClearAllPoints()
			MinimapCoordinates:SetPoint(pMinimap.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
		end
	end)

	local mail = checkbox.new(self, nil, 'Mail', 'TOPLEFT', clock, 'BOTTOMLEFT', 0, -GAP / 2)
	mail:SetChecked(pMinimap.db.mail)
	mail:SetScript('OnClick', function(self)
		pMinimap.db.mail = not pMinimap.db.mail

		if(pMinimap.db.mail) then
			MiniMapMailIcon:Hide()
			MiniMapMailText:Show()
		else
			MiniMapMailIcon:Show()
			MiniMapMailText:Hide()
		end
	end)

	local durability = checkbox.new(self, nil, 'Durability', 'LEFT', mail, 'RIGHT', GAP * 3, 0)
	durability:SetChecked(pMinimap.db.durability)
	durability:SetScript('OnClick', function(self)
		pMinimap.db.durability = not pMinimap.db.durability

		if(pMinimap.db.durability) then
			DurabilityFrame:SetAlpha(0)
			pMinimap:RegisterEvent('UPDATE_INVENTORY_ALERTS')
			pMinimap.UPDATE_INVENTORY_ALERTS()
		else
			DurabilityFrame:SetAlpha(1)
			pMinimap:UnregisterEvent('UPDATE_INVENTORY_ALERTS')
			Minimap:SetBackdropColor(unpack(pMinimap.db.bordercolors))
		end
	end)

	local group3 = group.new(self, 'Background', 'TOPLEFT', group2, 'BOTTOMLEFT', 0, -GAP)
	group3:SetHeight(60)
	group3:SetWidth(370)

	local borderoffset = slider.new(self, 'Thickness', 0, 10, 'TOPLEFT', group3, 15, -15)
	borderoffset:SetValueStep(0.5)
	borderoffset:SetValue(pMinimap.db.borderoffset)
	borderoffset:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.borderoffset = value
		Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - value, bottom = - value, left = - value, right = - value}})
		Minimap:SetBackdropColor(unpack(pMinimap.db.bordercolors))
	end)

	-- bordercolor

	local group4 = group.new(self, 'Zone', 'TOPLEFT', group3, 'BOTTOMLEFT', 0, -GAP)
	group4:SetHeight(95)
	group4:SetWidth(370)

	local zone = checkbox.new(self, 22, 'Zone Toggle', 'TOPLEFT', group4, 10, -10)
	zone:SetChecked(pMinimap.db.zone)
	zone:SetScript('OnClick', function(self)
		pMinimap.db.zone = not pMinimap.db.zone

		if(pMinimap.db.zone) then
			MinimapZoneTextButton:Show()
		else
			MinimapZoneTextButton:Hide()
		end
	end)

	local zonepoint = dropdown.new(self, 'Zone Point', 'TOPLEFT', zone, 'BOTTOMLEFT')
	UIDropDownMenu_Initialize(zonepoint, dropZone)

	local zoneoffset = slider.new(self, 'Zone Offset', -25, 25, 'TOPRIGHT', group4, -15, -15)
	zoneoffset:SetValueStep(0.5)
	zoneoffset:SetValue(pMinimap.db.zoneoffset)
	zoneoffset:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.zoneoffset = value
		MinimapZoneTextButton:ClearAllPoints()
		MinimapZoneTextButton:SetPoint(pMinimap.db.zonepoint == 'TOP' and 'BOTTOM' or 'TOP', Minimap, pMinimap.db.zonepoint, 0, value)
	end)

	local group5 = group.new(self, 'Fonts', 'TOPLEFT', group4, 'BOTTOMLEFT', 0, -GAP)
	group5:SetHeight(110)
	group5:SetWidth(370)

	local font = dropdown.new(self, 'Font', 'TOPLEFT', group5, 10, -4)
	UIDropDownMenu_Initialize(font, dropFont)

	local fontflag = dropdown.new(self, 'Font Flag', 'BOTTOMLEFT', group5, 10, 4)
	UIDropDownMenu_Initialize(fontflag, dropFontflag)

	local fontsize = slider.new(self, 'Font Size', 5, 18, 'TOPRIGHT', group5, -15, -15)
	fontsize:SetValueStep(1)
	fontsize:SetValue(pMinimap.db.fontsize)
	fontsize:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.fontsize = value
		updateFont()
	end)

	self:SetScript('OnShow', nil)
end)

InterfaceOptions_AddCategory(addon)
\ No newline at end of file
diff --git a/pMinimap_Config.lua b/pMinimap_Config.lua
deleted file mode 100644
index efff672..0000000
--- a/pMinimap_Config.lua
+++ /dev/null
@@ -1 +0,0 @@
-local GAP = 20

local SharedMedia = LibStub('LibSharedMedia-3.0')

local group = LibStub('tekKonfig-Group')
local slider = LibStub('tekKonfig-Slider')
local dropdown = LibStub('tekKonfig-Dropdown')
local checkbox = LibStub('tekKonfig-Checkbox')

local function updateFont()
	MiniMapMailText:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
	MinimapZoneText:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
	MinimapCoordinates:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
--	TimeManagerClockTicker:SetFont(SharedMedia:Fetch('font', pMinimap.db.font), pMinimap.db.fontsize, pMinimap.db.fontflag)
end

local function dropStrata()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.strata = self.value
		Minimap:SetFrameStrata(self.value)
	end

	for k, v in next, {'DIALOG', 'HIGH', 'MEDIUM', 'LOW', 'BACKGROUND'} do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local function dropZone()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.zonepoint = self.value

		MinimapZoneTextButton:ClearAllPoints()
		MinimapZoneTextButton:SetPoint(self.value == 'TOP' and 'BOTTOM' or 'TOP', Minimap, self.value, 0, pMinimap.db.zoneoffset)
	end

	for k, v in next, {'TOP', 'BOTTOM'} do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local function dropFont()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.font = SharedMedia:List('font')[self.value]
		print('|cffff8080pMinimap:|r DEBUG:', pMinimap.db.font)
		updateFont()
	end

	for k, v in next, SharedMedia:List('font') do
		info.text = k
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local function dropFontFlag()
	local info = UIDropDownMenu_CreateInfo()
	info.func = function(self)
		pMinimap.db.fontflag = self.value
		updateFont()
	end

	for k, k in next, {'OUTLINE', 'THICKOUTLINE', 'MONOCHROME', 'NONE'} do
		info.text = v
		info.value = v
		UIDropDownMenu_AddButton(info)
	end
end

local addon = CreateFrame('Frame', nil, InterfaceOptionsFramePanelContainer)
addon.name = 'pMinimap'
addon:Hide()
addon:SetScript('OnShow', function(self)
	local title, subtitle = LibStub('tekKonfig-Heading').new(self, 'pMinimap', 'Options for pMinimap')
	LibStub('tekKonfig-Scroll').new(self, 5)

	local group1 = group.new(self, 'Minimap', 'TOPLEFT', subtitle, 'BOTTOMLEFT')
	group1:SetHeight(120)
	group1:SetWidth(370)

	local scale = slider.new(self, 'Scale', 0.5, 2.5, 'TOPLEFT', group1, 15, -15)
	scale:SetValueStep(0.01)
	scale:SetValue(pMinimap.db.scale)
	scale:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.scale = value
		Minimap:SetScale(value)
	end)

	local level = slider.new(self, 'Framelevel', 1, 15, 'TOPLEFT', scale, 'BOTTOMLEFT', 0, -GAP)
	level:SetValueStep(1)
	level:SetValue(pMinimap.db.level)
	level:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.level = value
		Minimap:SetFrameLevel(value)
	end)

	local strata = dropdown.new(self, 'Framestrata (NYI)', 'LEFT', scale, 'RIGHT', GAP * 2, 0)
	UIDropDownMenu_Initialize(strata, dropStrata)

	local group2 = group.new(self, 'Modules', 'TOPLEFT', group1, 'BOTTOMLEFT', 0, -GAP)
	group2:SetHeight(105)
	group2:SetWidth(370)

	local coordinates = checkbox.new(self, 22, 'Coordinates', 'TOPLEFT', group2, 10, -10)
	coordinates:SetScript('OnClick', function(self)
		pMinimap.db.coordinates = not pMinimap.db.coordinates

		if(pMinimap.db.coordinates) then
			MinimapCoordinates:Show()
			MinimapCoordinates:ClearAllPoints()
			MinimapCoordinates:SetPoint(pMinimap.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
		else
			MinimapCoordinates:Hide()
		end

		if(pMinimap.db.clock) then
			TimeManagerClockButton:ClearAllPoints()
			TimeManagerClockButton:SetPoint(pMinimap.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
		end
	end)

	local coordinatesdecimals = slider.new(self, 'Coordinates Decimals', 0, 3, 'TOPRIGHT', group2, -15, -15)
	coordinatesdecimals:SetValueStep(1)
	coordinatesdecimals:SetValue(pMinimap.db.coordinatesdecimals)
	coordinatesdecimals:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.coordinatesdecimals = value
	end)

	local clock = checkbox.new(self, 22, 'Clock (Disabled NYI)', 'TOPLEFT', coordinates, 'BOTTOMLEFT', 0, -GAP / 2)
	clock:Disable()
	clock:SetScript('OnClick', function(self)
		pMinimap.db.clock = not pMinimap.db.clock

		if(pMinimap.db.clock) then
			if(not pMinimap:IsEventRegistered('CALENDAR_UPDATE_PENDING_INVITES')) then
				pMinimap:Clock()
			else
				TimeManagerClockButton:Show()
				TimeManagerClockButton:ClearAllPoints()
				TimeManagerClockButton:SetPoint(pMinimap.db.coordinates and 'BOTTOMLEFT' or 'BOTTOM', Minimap)
			end

			pMinimap.CALENDAR_UPDATE_PENDING_INVITES()
		else
			TimeManagerClockButton:Hide()
		end

		if(pMinimap.coordinates) then
			MinimapCoordinates:ClearAllPoints()
			MinimapCoordinates:SetPoint(pMinimap.db.clock and 'BOTTOMRIGHT' or 'BOTTOM')
		end
	end)

	local mail = checkbox.new(self, nil, 'Mail', 'TOPLEFT', clock, 'BOTTOMLEFT', 0, -GAP / 2)
	mail:SetScript('OnClick', function(self)
		pMinimap.db.mail = not pMinimap.db.mail

		if(pMinimap.db.mail) then
			MiniMapMailIcon:Hide()
			MiniMapMailText:Show()
		else
			MiniMapMailIcon:Show()
			MiniMapMailText:Hide()
		end
	end)

	local durability = checkbox.new(self, nil, 'Durability', 'LEFT', mail, 'RIGHT', GAP * 3, 0)
	durability:SetScript('OnClick', function(self)
		pMinimap.db.durability = not pMinimap.db.durability

		if(pMinimap.db.durability) then
			DurabilityFrame:SetAlpha(0)
			pMinimap:RegisterEvent('UPDATE_INVENTORY_ALERTS')
			pMinimap.UPDATE_INVENTORY_ALERTS()
		else
			DurabilityFrame:SetAlpha(1)
			pMinimap:UnregisterEvent('UPDATE_INVENTORY_ALERTS')
			Minimap:SetBackdropColor(unpack(pMinimap.db.bordercolors))
		end
	end)

	local group3 = group.new(self, 'Background', 'TOPLEFT', group2, 'BOTTOMLEFT', 0, -GAP)
	group3:SetHeight(60)
	group3:SetWidth(370)

	local borderoffset = slider.new(self, 'Thickness', 0, 10, 'TOPLEFT', group3, 15, -15)
	borderoffset:SetValueStep(0.5)
	borderoffset:SetValue(pMinimap.db.borderoffset)
	borderoffset:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.borderoffset = value
		Minimap:SetBackdrop({bgFile = [=[Interface\ChatFrame\ChatFrameBackground]=], insets = {top = - value, bottom = - value, left = - value, right = - value}})
		Minimap:SetBackdropColor(unpack(pMinimap.db.bordercolors))
	end)

	-- bordercolor

	local group4 = group.new(self, 'Zone', 'TOPLEFT', group3, 'BOTTOMLEFT', 0, -GAP)
	group4:SetHeight(95)
	group4:SetWidth(370)

	local zone = checkbox.new(self, 22, 'Zone Toggle', 'TOPLEFT', group4, 10, -10)
	zone:SetScript('OnClick', function(self)
		pMinimap.db.zone = not pMinimap.db.zone

		if(pMinimap.db.zone) then
			MinimapZoneTextButton:Show()
		else
			MinimapZoneTextButton:Hide()
		end
	end)

	local zonepoint = dropdown.new(self, 'Zone Point', 'TOPLEFT', zone, 'BOTTOMLEFT')
	UIDropDownMenu_Initialize(zonepoint, dropZone)

	local zoneoffset = slider.new(self, 'Zone Offset', -25, 25, 'TOPRIGHT', group4, -15, -15)
	zoneoffset:SetValueStep(0.5)
	zoneoffset:SetValue(pMinimap.db.zoneoffset)
	zoneoffset:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.zoneoffset = value
		MinimapZoneTextButton:ClearAllPoints()
		MinimapZoneTextButton:SetPoint(pMinimap.db.zonepoint == 'TOP' and 'BOTTOM' or 'TOP', Minimap, pMinimap.db.zonepoint, 0, value)
	end)

	local group5 = group.new(self, 'Fonts', 'TOPLEFT', group4, 'BOTTOMLEFT', 0, -GAP)
	group5:SetHeight(110)
	group5:SetWidth(370)

	local font = dropdown.new(self, 'Font', 'TOPLEFT', group5, 10, -4)
	UIDropDownMenu_Initialize(font, dropFont)

	local fontflag = dropdown.new(self, 'Font Flag', 'BOTTOMLEFT', group5, 10, 4)
	UIDropDownMenu_Initialize(fontflag, dropFontflag)

	local fontsize = slider.new(self, 'Font Size', 5, 18, 'TOPRIGHT', group5, -15, -15)
	fontsize:SetValueStep(1)
	fontsize:SetValue(pMinimap.db.fontsize)
	fontsize:SetScript('OnValueChanged', function(self, value)
		pMinimap.db.fontsize = value
		updateFont()
	end)

	self:SetScript('OnShow', nil)
end)

InterfaceOptions_AddCategory(addon)
\ No newline at end of file