From b4213fcb9318464258dbecdc8b97e4fcdd793d14 Mon Sep 17 00:00:00 2001 From: Peter Eliasson Date: Sun, 8 Feb 2015 14:30:15 +0100 Subject: [PATCH 1/4] Renamed ShowReportWindow -> ShowReportFrame. --- src/gui.lua | 2 +- src/report.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui.lua b/src/gui.lua index 28cdc3f..4a77771 100644 --- a/src/gui.lua +++ b/src/gui.lua @@ -174,7 +174,7 @@ function gui:CreateActionContainer() reportBtn:SetDisabled(true); reportBtn:SetRelativeWidth(0.5); reportBtn:SetCallback("OnClick", function() - addon.report:ShowReportWindow( + addon.report:ShowReportFrame( self.selectedGuild, self.selectedZone, self.selectedDifficulty, diff --git a/src/report.lua b/src/report.lua index 13707f7..a3fe55f 100644 --- a/src/report.lua +++ b/src/report.lua @@ -99,7 +99,7 @@ function report:SendData(channelId, whisperToName, dataTitle, filterString, pars end -function report:ShowReportWindow(guildId, zoneId, difficultyId, encounterId, roleId, parses, filters) +function report:ShowReportFrame(guildId, zoneId, difficultyId, encounterId, roleId, parses, filters) if self.currentFrame then self.currentFrame:Release(); self.currentFrame = nil; -- 1.7.9.5 From a30b84ba2e1991148b3b070facb1d0e5d791a5ef Mon Sep 17 00:00:00 2001 From: Peter Eliasson Date: Sun, 8 Feb 2015 15:17:44 +0100 Subject: [PATCH 2/4] Report window now hidden on esc. --- src/report.lua | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/report.lua b/src/report.lua index a3fe55f..08bf12a 100644 --- a/src/report.lua +++ b/src/report.lua @@ -54,7 +54,6 @@ local function getParseStringFromParse(rank, parse) end end - function report:SendData(channelId, whisperToName, dataTitle, filterString, parses, numParses) numParses = min(numParses, MAX_PARSES_TO_SEND); channelId = string.upper(channelId); @@ -98,12 +97,15 @@ function report:SendData(channelId, whisperToName, dataTitle, filterString, pars end end +function report:HideReportFrame() + if self.reportFrame then + self.reportFrame:Release(); + self.reportFrame = nil; + end +end function report:ShowReportFrame(guildId, zoneId, difficultyId, encounterId, roleId, parses, filters) - if self.currentFrame then - self.currentFrame:Release(); - self.currentFrame = nil; - end + self:HideReportFrame(); local channelId = self.lastChannelId or "SELF"; @@ -184,8 +186,7 @@ function report:ShowReportFrame(guildId, zoneId, difficultyId, encounterId, role local numParses = numToSendSlider:GetValue(); local whisperToName = whisperToNameEditBox:GetText(); self:SendData(channelId, whisperToName, dataTitle, filterString, parses, numParses); - report.currentFrame = nil; - frame:Release(); + self:HideReportFrame(); end); frame:AddChild(dataTitleLabel); @@ -197,6 +198,24 @@ function report:ShowReportFrame(guildId, zoneId, difficultyId, encounterId, role frame:AddChild(numToSendSlider); frame:AddChild(sendButton); - self.currentFrame = frame; + self.reportFrame = frame; frame:Show(); -end \ No newline at end of file +end + +function report:OnCloseSpecialWindows() + local found; + if self.reportFrame then + self:HideReportFrame() + found = 1 + end + return self.hooks["CloseSpecialWindows"]() or found; +end + +function report:OnEnable() + self:RawHook("CloseSpecialWindows", "OnCloseSpecialWindows", true); +end + +function report:OnDisable() + self:HideReportFrame(); + self:UnHook("CloseSpecialWindows"); +end -- 1.7.9.5 From c9da4241622f0b44fddfc4a91fdbc4b6008036b6 Mon Sep 17 00:00:00 2001 From: Peter Eliasson Date: Sun, 8 Feb 2015 17:55:12 +0100 Subject: [PATCH 3/4] Added options based on AceConfig. Currently only options for the upcomming purge module. --- lib/lib_include.xml | 2 ++ src/main.lua | 13 ++++--- src/options.lua | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/src_include.xml | 1 + 4 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 src/options.lua diff --git a/lib/lib_include.xml b/lib/lib_include.xml index 3fdb57d..20388cd 100644 --- a/lib/lib_include.xml +++ b/lib/lib_include.xml @@ -10,4 +10,6 @@ + + \ No newline at end of file diff --git a/src/main.lua b/src/main.lua index fc2266a..d5e5f2d 100644 --- a/src/main.lua +++ b/src/main.lua @@ -22,7 +22,8 @@ addon:SetDefaultModulePrototype(modPrototype) -- Db default settings addon.dbDefaults = { realm = { - modules = {} + modules = {}, + options = {} }, global = { dbVersion = 1 @@ -31,7 +32,7 @@ addon.dbDefaults = { -- The current db version. Clear (migrate?) the database if -- version of database doesn't match this version. -addon.dbVersion = 2 +addon.dbVersion = 2; -- Constants DEBUG_PRINT = false; @@ -160,8 +161,12 @@ function addon:OnEnable() self:RegisterEvent("PLAYER_GUILD_UPDATE") self:RegisterEvent("ZONE_CHANGED_NEW_AREA") - self:RegisterChatCommand("gshs", function() - self.gui:ShowMainFrame(); + self:RegisterChatCommand("gshs", function(arg) + if arg == "config" then + self.options:ShowOptionsFrame(); + else + self.gui:ShowMainFrame(); + end end) self:UpdateMyGuildName(); diff --git a/src/options.lua b/src/options.lua new file mode 100644 index 0000000..cf620d4 --- /dev/null +++ b/src/options.lua @@ -0,0 +1,94 @@ +local addonName, addonTable = ... + +-- Set up module +local addon = addonTable[1]; +local options = addon:NewModule("options"); +addon.options = options; + + +addon.dbDefaults.realm.options = { + purgeEnabled = true, + purgeMaxParseAge = 30, + purgeMinPlayerParsesPerFight = 2, +} +addon.dbVersion = addon.dbVersion + 0; + +local optionsTable; +local function createOptionsTable() + optionsTable = { + name = "Guild Skada High Score", + handler = options, + get = "GetRealmOptionValue", + set = "SetRealmOptionValue", + type = 'group', + args = { + versionHeader = { + order = 1, + type = "header", + name = format("Version: %s", addon.versionName), + width = "Full", + }, + purgeSettings = { + name = "Purge Settings", + type = "group", + inline = true, + args = { + purgeEnabled = { + order = 1, + type = "toggle", + name = "Enable Purging of Parses", + desc = "Enables purging of parses matching some specified condition.", + }, + purgeMaxParseAge = { + order = 3, + type = "range", + min = 0, + max = 60, + step = 1, + name = "Max Parse Age (days)", + desc = "Number of days to keep parses.", + disabled = function() return not addon.db.realm.options.purgeEnabled; end, + }, + purgeMinPlayerParsesPerFight = { + order = 5, + type = "range", + min = 0, + softMax = 20, + max = 100, + step = 1, + name = "Min Parses Per Player/Fight", + desc = "The minimum number of parses to keep for a specific player and fight. These parses will not be removed even if they are older than the max parse age.", + disabled = function() return not addon.db.realm.options.purgeEnabled; end, + } + }, + order = 20, + }, + }, + }; +end + +function options.GetRealmOptionValue(self, info) + local key = info[#info]; + return addon.db.realm.options[key]; +end + +function options.SetRealmOptionValue(self, info, value) + local key = info[#info]; + addon.db.realm.options[key] = value; +end + +function options:GetOptionsTable() + if not optionsTable then + createOptionsTable() + end + return optionsTable +end + +function options:ShowOptionsFrame() + InterfaceOptionsFrame_OpenToCategory(self.optionsFrame); +end + +function options:OnEnable() + LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable(addonName, options.GetOptionsTable); + self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions(addonName); +end diff --git a/src/src_include.xml b/src/src_include.xml index 28ad07e..0bb3dfd 100644 --- a/src/src_include.xml +++ b/src/src_include.xml @@ -4,5 +4,6 @@