From 118bd9eaee19bf4c3978d5c8361086817ae00721 Mon Sep 17 00:00:00 2001 From: Petr G Date: Thu, 9 Jun 2016 08:31:21 +0300 Subject: [PATCH] Main UI wnd saves position and size on relog --- ViragDevTool.lua | 115 ++++++++++++++++++++++++++++++++---------------------- ViragDevTool.xml | 1 + 2 files changed, 69 insertions(+), 47 deletions(-) diff --git a/ViragDevTool.lua b/ViragDevTool.lua index 245e9b2..88b4b6a 100644 --- a/ViragDevTool.lua +++ b/ViragDevTool.lua @@ -12,27 +12,27 @@ ViragDevTool = { CMD = { --"/vdt help" HELP = function(msg) - local arg = function(txt) return "|cFF96C0CE" ..txt.."|cFFFFFFFF" end - local arg2 = function(txt) return "|cFFBEB9B5" ..txt.."|cFFFFFFFF" end - local arg3 = function(txt) return "|cFF00FF00" ..txt.."|cFFFFFFFF" end + local arg = function(txt) return "|cFF96C0CE" .. txt .. "|cFFFFFFFF" end + local arg2 = function(txt) return "|cFFBEB9B5" .. txt .. "|cFFFFFFFF" end + local arg3 = function(txt) return "|cFF00FF00" .. txt .. "|cFFFFFFFF" end -- todo print info to chat ViragDevTool:print("/vdt - toggle UI") ViragDevTool:print("/vdt " .. arg("name") .. " - add _G." .. arg("name") .. " to the list") - ViragDevTool:print("/vdt " .. arg("name") .." ".. arg2("parent") - .. " - add ".. arg2("parent") .. "." .. arg("name") .. " to the list.\n" .. + ViragDevTool:print("/vdt " .. arg("name") .. " " .. arg2("parent") + .. " - add " .. arg2("parent") .. "." .. arg("name") .. " to the list.\n" .. arg2("parent") .. " can be like A.B so this will look in _G.A.B." .. arg("name")) - ViragDevTool:print("/vdt " .. arg3("find") .." " .. arg("name") .." ".. arg2("parent") - .. " - add " .. arg("name") .." _G." .. arg("*name*") .."to the list" .. - "Adds any field name that has " .. arg("name") .." part in its name") - ViragDevTool:print("/vdt " .. arg3("startswith") .." " .. arg("name") .." ".. arg2("parent") + ViragDevTool:print("/vdt " .. arg3("find") .. " " .. arg("name") .. " " .. arg2("parent") + .. " - add " .. arg("name") .. " _G." .. arg("*name*") .. "to the list" .. + "Adds any field name that has " .. arg("name") .. " part in its name") + ViragDevTool:print("/vdt " .. arg3("startswith") .. " " .. arg("name") .. " " .. arg2("parent") .. " - same as find but will look only for name* ") - ViragDevTool:print("/vdt " .. arg3("m") .." add frame at mouse location to the list. Recommendation: use binds for this cmd") + ViragDevTool:print("/vdt " .. arg3("m") .. " add frame at mouse location to the list. Recommendation: use binds for this cmd") - ViragDevTool:print("/vdt " .. arg3("eventadd") .." " .. arg("event") .." ".. arg2("unit") - .."\nExample: /vdt eventadd UNIT_AURA player") + ViragDevTool:print("/vdt " .. arg3("eventadd") .. " " .. arg("event") .. " " .. arg2("unit") + .. "\nExample: /vdt eventadd UNIT_AURA player") - ViragDevTool:print("/vdt " .. arg3("eventremove") .." " .. arg("event") - .."\nExample: /vdt eventremove UNIT_AURA \n /vdt eventremove ALL will reset events in events tab to default state") + ViragDevTool:print("/vdt " .. arg3("eventremove") .. " " .. arg("event") + .. "\nExample: /vdt eventremove UNIT_AURA \n /vdt eventremove ALL will reset events in events tab to default state") return ViragDevTool.CMD, msg end, @@ -109,6 +109,10 @@ ViragDevTool = { -- selected list in gui. one of 3 list from settings: history or favourites or events sideBarTabSelected = "history", + -- UI saved state + isWndOpen = true, + isSideBarOpen = false, + -- stores history of recent calls to /vdt MAX_HISTORY_SIZE = 50, history = { @@ -118,13 +122,13 @@ ViragDevTool = { "startswith Virag", "ViragDevTool.settings.history", }, + favourites = {}, --todo implement -- events to monitor -- format ({event = "EVENT_NAME", unit = "player", active = true}, ...) -- default events inactive events = { - { event = "CURSOR_UPDATE", active = false @@ -138,7 +142,6 @@ ViragDevTool = { event = "CHAT_MSG_CHANNEL", active = false } - }, } } @@ -147,7 +150,6 @@ ViragDevTool = { -- just remove global reference so it is easy to read with my ide local ViragDevTool = ViragDevTool - local pairs, tostring, type, print, string, getmetatable, table, pcall = pairs, tostring, type, print, string, getmetatable, table, pcall @@ -447,15 +449,20 @@ end ----------------------------------------------------------------------------------------------- function ViragDevTool:ToggleUI() self:Toggle(self.wndRef) + self.settings.isWndOpen = self.wndRef:IsVisible() end function ViragDevTool:Toggle(view) - if view then - if view:IsVisible() then - view:Hide() - else - view:Show() - end + self:SetVisible(view, not view:IsVisible()) +end + +function ViragDevTool:SetVisible(view, isVisible) + if not view then return end + + if isVisible then + view:Show() + else + view:Hide() end end @@ -560,7 +567,6 @@ end ----------------------------------------------------------------------------------------------- -- Sidebar UI ----------------------------------------------------------------------------------------------- - function ViragDevTool:ToggleSidebar() self:Toggle(self.wndRef.sideFrame) self:UpdateSideBarUI() @@ -641,7 +647,7 @@ function ViragDevTool:UpdateSideBarUI() view:SetText("") view:SetScript("OnMouseUp", nil) --events update - elseif selectedTab == "events" and type(currItem) =="table" and currItem.event then + elseif selectedTab == "events" and type(currItem) == "table" and currItem.event then local color = currItem.active and ViragDevTool.colors.white or ViragDevTool.colors.gray view:SetText(color .. currItem.event) view:SetScript("OnMouseUp", function() @@ -653,8 +659,8 @@ function ViragDevTool:UpdateSideBarUI() end sideButton:SetScript("OnMouseUp", function() --move to top - table.remove(data,lineplusoffset) - self:UpdateSideBarUI() + table.remove(data, lineplusoffset) + self:UpdateSideBarUI() end) frame:Show(); else @@ -774,7 +780,7 @@ function ViragDevTool:AddToHistory(strValue) local hist = self.settings.history -- if already contains value then just move it to top - for k, v in pairs (hist or {}) do + for k, v in pairs(hist or {}) do if v == strValue then table.remove(hist, k) table.insert(hist, 1, strValue) @@ -792,7 +798,7 @@ function ViragDevTool:AddToHistory(strValue) end while #hist > maxSize do -- can have only 10 values in history - table.remove(hist, maxSize) + table.remove(hist, maxSize) end self:UpdateSideBarUI() @@ -830,7 +836,7 @@ function ViragDevTool:StartMonitorEvent(event, unit) local eventName = event if unit then eventName = eventName .. " " .. tostring(unit) end - self:print("Start event monitoring: " .. eventName ) + self:print("Start event monitoring: " .. eventName) end function ViragDevTool:StopMonitorEvent(event, unit) @@ -843,7 +849,7 @@ function ViragDevTool:StopMonitorEvent(event, unit) local eventName = event if unit then eventName = eventName .. " " .. tostring(unit) end - self:print("Stop event monitoring: " .. eventName ) + self:print("Stop event monitoring: " .. eventName) end end @@ -862,7 +868,7 @@ function ViragDevTool:SetMonitorEventScript() f:SetScript("OnEvent", function(this, ...) local args = { ... } - local event = args [1] + local event = args[1] if ViragDevTool:GetMonitoredEvent(event) then if #args == 1 then args = args[1] end ViragDevTool:Add(args, event) @@ -888,35 +894,50 @@ function ViragDevTool:GetMonitoredEvent(event, args) end end -function ViragDevTool:SetupForSettings(newSettings) - -- need this to update outdated settings - -- for now it is just validity check of structure +function ViragDevTool:SetupForSettings(s) - local s = newSettings or self.default_settings - self.settings = s - s.history = s.history or {} - s.favourites = s.favourites or {} - s.events = s.events or {} - if #s.events == 0 then - s.events = self.default_settings.events - end - s.sideBarTabSelected = s.sideBarTabSelected or "history" + if s == nil then + s = self.default_settings + else + -- validating current settings and updating if version changed + + for k,defaultValue in pairs (self.default_settings) do + local savedValue = s[k] -- saved value from "newSettings" + + -- if setting is a table of size 0 or if value is nil set it to default + -- for now we have only arrays in settings so its fine to use #table + if (type(savedValue) == "table" and #savedValue == 0) + or savedValue == nil then - local size = s.MAX_HISTORY_SIZE - s.MAX_HISTORY_SIZE = size and size or 50 + s[k] = defaultValue + end + end + end + --save to local var, so it is easy to use + self.settings = s - --end of setup refresh gui and register listeners + -- refresh gui + -- setup selected sidebar tab history/events/ favourites self:EnableSideBarTab(s.sideBarTabSelected) + -- setup open o closed main wnd + self:SetVisible(self.wndRef, s.isWndOpen) + + -- setup open o closed sidebar + self:SetVisible(self.wndRef.sideFrame, s.isSideBarOpen) + + --setup events part 1 register listeners for _, tEvent in pairs(self.settings.events) do if tEvent.active then self:StartMonitorEvent(tEvent.event, tEvent.unit) end end + -- setup events part 2 set scripts on frame to listen registered events self:SetMonitorEventScript() + return s end diff --git a/ViragDevTool.xml b/ViragDevTool.xml index 1b84dd7..9abc2f0 100644 --- a/ViragDevTool.xml +++ b/ViragDevTool.xml @@ -127,6 +127,7 @@ + self:SetUserPlaced(true) ViragDevTool:OnLoad(self) self:SetMinResize(600, 100); self:RegisterForDrag("LeftButton"); -- 1.7.9.5