Add initial configuration (just alpha and scale). Add basic slash command /omen.

This commit is contained in:
Xinhuan
2008-10-02 11:20:58 +08:00
parent 22759746a2
commit 49895213a4
2 changed files with 160 additions and 11 deletions
+138 -11
View File
@@ -26,7 +26,8 @@ local GetNumRaidMembers, GetNumPartyMembers = GetNumRaidMembers, GetNumPartyMemb
local db
local defaults = {
profile = {
Scale = 100,
Alpha = 1,
Scale = 1,
GrowUp = false,
Autocollapse = false,
NumBars = 10,
@@ -122,14 +123,7 @@ local function sizing()
Omen:UpdateBars()
end
function Omen:OnInitialize()
-- Create savedvariables
self.db = LibStub("AceDB-3.0"):New("Omen3DB", defaults)
self.db.RegisterCallback(self, "OnProfileChanged", "OnProfileChanged")
self.db.RegisterCallback(self, "OnProfileCopied", "OnProfileChanged")
self.db.RegisterCallback(self, "OnProfileReset", "OnProfileChanged")
db = self.db.profile
function Omen:CreateFrames()
-- Create anchor
self.Anchor = CreateFrame("Frame", "OmenAnchor", UIParent)
self.Anchor:SetResizable(true)
@@ -200,7 +194,19 @@ function Omen:OnInitialize()
self:SetAnchors()
end)
self.Grip:SetScript("OnHide", self.Grip:GetScript("OnHide"))
end
function Omen:OnInitialize()
-- Create savedvariables
self.db = LibStub("AceDB-3.0"):New("Omen3DB", defaults)
self.db.RegisterCallback(self, "OnProfileChanged", "OnProfileChanged")
self.db.RegisterCallback(self, "OnProfileCopied", "OnProfileChanged")
self.db.RegisterCallback(self, "OnProfileReset", "OnProfileChanged")
db = self.db.profile
self:CreateFrames()
self:SetupOptions()
-- Register events that are "always on". The rest are in :OnEnable()
self:RegisterEvent("PLAYER_LOGIN")
self:RegisterEvent("PLAYER_ENTERING_WORLD")
@@ -269,7 +275,7 @@ function Omen:SetAnchors(useDB)
local x, y, w, h
-- Set the scale, since the scaling affects the position
self.Anchor:SetScale(db.Scale / 100)
self.Anchor:SetScale(db.Scale)
-- Get position
if useDB then
@@ -582,6 +588,7 @@ function Omen:UpdateBars()
end
if #sortTable == 0 then
self:ClearAll()
self.TitleText:SetText(guidNameLookup[mobGUID])
return
end
sort(sortTable, sortfunction)
@@ -638,3 +645,123 @@ function Omen:ResizeBars()
end
end
-----------------------------------------------------------------------------
-- Omen config stuff
local options = {
type = "group",
name = "Omen",
get = function(info)
local key = info[#info]
return Omen.db.profile[key]
end,
set = function(info, value)
local key = info[#info]
Omen.db.profile[key] = value
end,
args = {
general = {
order = 1,
type = "group",
name = L["General Settings"],
args = {
intro = {
order = 1,
type = "description",
name = L["OMEN_DESC"],
cmdHidden = true,
},
Alpha = {
order = 3,
name = L["Alpha"],
type = "range",
min = 0, max = 1, step = 0.01,
isPercent = true,
desc = L["Controls the transparency of the main Omen window."],
set = function(info, value)
local key = info[#info]
Omen.db.profile[key] = value
Omen.Anchor:SetAlpha(value)
end,
},
Scale = {
order = 5,
name = L["Scale"],
type = "range",
min = 0.50, max = 1.50, step = 0.01,
isPercent = true,
desc = L["Controls the scaling of the main Omen window."],
set = function(info, value)
local key = info[#info]
Omen.db.profile[key] = value
Omen:SetAnchors()
end,
},
},
},
},
}
local optionsSlash = {
type = "group",
name = L["Slash Command"],
args = {
intro = {
order = 1,
type = "description",
name = L["OMEN_SLASH_DESC"],
cmdHidden = true,
},
toggle = {
type = "execute",
name = L["Toggle Omen"],
desc = L["Toggle Omen"].." ( /omen toggle )",
func = function()
Omen:Toggle()
end,
},
center = {
type = "execute",
name = L["Center Omen"],
desc = L["Center Omen"].." ( /omen center )",
func = function()
Omen.Anchor:ClearAllPoints()
Omen.Anchor:SetPoint("CENTER", UIParent, "CENTER")
Omen:SetAnchors()
end,
},
config = {
type = "execute",
name = L["Configure"],
desc = L["Open the configuration dialog"].." ( /omen config )",
func = function()
Omen:ShowConfig()
end,
guiHidden = true,
}
},
}
function Omen:SetupOptions()
self.optionsFrames = {}
-- setup options table
LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("Omen", options)
LibStub("AceConfig-3.0"):RegisterOptionsTable("OmenSlashCommand", optionsSlash, "omen")
self.optionsFrames.Omen = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", nil, nil, "general")
self:RegisterModuleOptions("Profiles", LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db), L["Profiles"])
self:RegisterModuleOptions("OmenSlashCommand", optionsSlash, L["Slash Command"])
end
function Omen:RegisterModuleOptions(name, optionTbl, displayName)
options.args[name] = (type(optionTbl) == "function") and optionTbl() or optionTbl
self.optionsFrames[name] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Omen", displayName, "Omen", name)
end
function Omen:ShowConfig()
-- Open the profiles tab before, so the menu expands
InterfaceOptionsFrame_OpenToCategory(self.optionsFrames.Profiles)
InterfaceOptionsFrame_OpenToCategory(self.optionsFrames.Omen)
end