Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ADDON_NAME = "Click4Info"
- local DEBUG_MODE = true
- local MAX_SEARCH_RESULTS = 250
- local SearchCounter = 0
- local VERSION_CODE = 0.2
- local VERSION_SV = 0.1
- local ROW_TYPE_ID = 1
- local FREE_MOUSE = false
- local CURRENT_PANEL = "favorites"
- local SEARCH_TYPE = nil
- local CASE_SENS = false
- local SEARCH_IN_PROGRESS = false
- local colorRed = "|cFF0000" -- Red
- local colorDrkOrange = "|cFFA500" -- Dark Orange
- local colorTeal = "|c00FFFF" -- Addon Name color
- local colorYellow = "|cFFFF00" -- yellow
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_BTN_FAVORITES", "Favorite Scripts")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_BTN_ALL", "All Scripts")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_BTN_FUNCTION", "Function Search")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_BTN_CONSTANT", "Constant Search")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_BTN_VALUE", "Value Search")
- local DevelopIt = ZO_Object:New()
- local CLICK4INFO_FILTER_DATA = {
- [1] = {
- normal = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- pressed = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- highlight = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- disabled = "/esoui/art/icons/poi/poi_wayshrine_incomplete.dds",
- tooltip = SI_BINDING_NAME_CLICK4INFO_BTN_FAVORITES,
- descriptor = 1,
- panelType = "favorites",
- searchType = "sdfdsf",
- callback = ChangePanel,
- },
- [2] = {
- normal = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- pressed = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- highlight = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- disabled = "/esoui/art/icons/poi/poi_wayshrine_incomplete.dds",
- tooltip = SI_BINDING_NAME_CLICK4INFO_BTN_ALL,
- descriptor = 2,
- panelType = "all",
- callback = ChangePanel,
- },
- [3] = {
- normal = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- pressed = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- highlight = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- disabled = "/esoui/art/icons/poi/poi_wayshrine_incomplete.dds",
- tooltip = SI_BINDING_NAME_CLICK4INFO_BTN_FUNCTION,
- descriptor = 3,
- panelType = "functions",
- searchType = "function",
- callback = ChangePanel,
- },
- [4] = {
- normal = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- pressed = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- highlight = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- disabled = "/esoui/art/icons/poi/poi_wayshrine_incomplete.dds",
- tooltip = SI_BINDING_NAME_CLICK4INFO_BTN_CONSTANT,
- descriptor = 4,
- panelType = "constants",
- searchType = "number",
- callback = ChangePanel,
- },
- [5] = {
- normal = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- pressed = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- highlight = "/esoui/art/icons/poi/poi_wayshrine_complete.dds",
- disabled = "/esoui/art/icons/poi/poi_wayshrine_incomplete.dds",
- tooltip = SI_BINDING_NAME_CLICK4INFO_BTN_VALUE,
- descriptor = 5,
- panelType = "value",
- callback = ChangePanel,
- },
- }
- local function debugMsg(msg)
- if not DEBUG_MODE then return end
- d(msg)
- end
- local function CameraChanged()
- if not IsPlayerActivated() then return end
- SetGameCameraUIMode(FREE_MOUSE)
- end
- local function SetupMenuBar()
- local menuBar = CLICK4INFO.menuBar
- ZO_MenuBar_ClearButtons(menuBar)
- for _, filterInfo in ipairs(CLICK4INFO_FILTER_DATA) do
- local btn = ZO_MenuBar_AddButton(menuBar, filterInfo)
- end
- end
- -- RowControl callback
- local function setupDataRow(rowControl, data, scrollList)
- local label = rowControl:GetNamedChild("Label")
- local name, value
- if data.key then
- name = data.key
- elseif data.scriptName then
- name = data.scriptName
- end
- label:SetText(name)
- end
- Click4Info = ZO_Object:New()
- -- Setup WAYPOINTIT, create all constants.
- function Click4Info:New()
- local obj = ZO_Object.New(self)
- obj.name = ADDON_NAME
- obj.SavedVarVersion = VERSION_SV
- obj.CodeVersion = VERSION_CODE
- -----------------------------------------------------
- -- Bind windows to obj
- obj.mainWin = Click4InfoWin
- obj.scrollList = Click4InfoWinScrollList
- obj.menuBar = Click4InfoWinMenuBar
- obj.caseSens = Click4InfoWinCaseSens
- obj.scriptWin = AddScriptWin
- obj.nameEditBox = AddScriptWinNameEditBox
- obj.scriptEditBox = AddScriptWinScriptEditBox
- -----------------------------------------------------
- return obj
- end
- -- Initialize everything else
- function Click4Info:Initialize()
- local defaultSavedVars = {
- scripts = {}
- }
- local BUTTON_HEIGHT = 50
- self.sv = ZO_SavedVars:NewAccountWide("Click4InfoSavedVars", self.SavedVarVersion, nil, defaultSavedVars)
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_FREE_MOUSE", "Free Mouse")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_ZGOO_MOUSE", "/zgoo Mouse")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_RELOADUI", "ReloadUI")
- ZO_CreateStringId("SI_BINDING_NAME_CLICK4INFO_TOGGLE_WINDOW", "Toggle Window")
- SetupMenuBar()
- ZO_ScrollList_AddDataType(self.scrollList, ROW_TYPE_ID, "Click4InfoRowControl", BUTTON_HEIGHT, setupDataRow)
- local menuBarObject = self.menuBar.m_object
- local buttonObject = menuBarObject:ButtonObjectForDescriptor(1)
- menuBarObject:SetClickedButton(buttonObject, true)
- self:SetAll()
- EVENT_MANAGER:RegisterForEvent(Click4Info.name, EVENT_GAME_CAMERA_DEACTIVATED, CameraChanged)
- EVENT_MANAGER:RegisterForEvent(Click4Info.name, EVENT_GAME_CAMERA_UI_MODE_CHANGED, CameraChanged)
- end
- function Click4Info:UpdateScrollList(sourceTable)
- --if self.mainWin:IsHidden() or not sourceTable then return end
- local next = next
- --if next(sourceTable) ~= nil then return end
- debugMsg("Passed return checks")
- local scrollList = self.scrollList
- local dataList = ZO_ScrollList_GetDataList(scrollList)
- local dataTable = sourceTable
- ZO_ScrollList_Clear(scrollList)
- -- Populate the new dataList
- for key, rowData in zo_insecurePairs(dataTable) do
- debugMsg("Adding Row Entry")
- local entry = ZO_ScrollList_CreateDataEntry(ROW_TYPE_ID, rowData, 1)
- table.insert(dataList, entry)
- end
- --[[
- table.sort(dataList, function(objA, objB)
- if objA.data.key < objB.data.key then return true end
- return false
- end)
- --]]
- debugMsg("Committing")
- ZO_ScrollList_Commit(scrollList)
- end
- function Click4Info:SetAll()
- local allScripts = self.sv.scripts
- self:UpdateScrollList(allScripts)
- end
- function Click4Info:GetFavorites()
- local allScripts = self.sv.scripts
- local favorites = {}
- for k,v in pairs(allScripts) do
- if v.favorite then
- table.insert(favorites, v)
- end
- end
- return favorites
- end
- function Click4Info:SetFavorites()
- local favorites = self:GetFavorites()
- self:UpdateScrollList(favorites)
- end
- function Click4Info:GetSearchTable()
- if CURRENT_PANEL == "favorites" then
- return self:GetFavorites()
- elseif CURRENT_PANEL == "all" then
- return self.sv.scripts
- else
- return _G
- end
- end
- local function DoFavoritesSearch(text, searchType)
- end
- local function DoAllSearch(text, searchType)
- end
- local function GetCaseSens()
- if CLICK4INFO.caseSens:GetState() == BSTATE_PRESSED then
- return true
- end
- return false
- end
- local function DoLowerSearch(text, searchType)
- local searchTable = CLICK4INFO:GetSearchTable()
- local searchResults = {}
- local searchText = string.lower(text)
- for key, value in zo_insecurePairs(_G) do
- if not searchType or type(value) == searchType then
- if string.lower(key):find(searchText) then
- table.insert(searchResults, {["key"] = key, ["value"] = value})
- end
- end
- end
- return searchResults
- end
- local function DoCaseSearch(text, searchType)
- local searchTable = CLICK4INFO:GetSearchTable()
- local searchResults = {}
- for key, value in zo_insecurePairs(searchTable) do
- if not searchType or type(value) == searchType then
- if key:find(text) then
- table.insert(searchResults, {["key"] = key, ["value"] = value})
- end
- end
- end
- return searchResults
- end
- local function DoValueSearch(text)
- local searchTable = CLICK4INFO:GetSearchTable()
- local searchResults = {}
- local searchNumber = tonumber(text)
- for key, value in zo_insecurePairs(searchTable) do
- if type(value) == "number" and value == searchNumber then
- table.insert(searchResults, {["key"] = key, ["value"] = value})
- end
- end
- return searchResults
- end
- function Click4Info:SetSearch(text, searchType)
- local searchResults = {}
- local panelType = CURRENT_PANEL
- if self.caseSens:GetState() == BSTATE_PRESSED then
- bCaseSens = true
- end
- if CURRENT_PANEL == "value" then
- searchResults = DoValueSearch(text)
- elseif bCaseSens then
- searchResults = DoCaseSearch(text, searchType)
- else
- searchResults = DoLowerSearch(text, searchType)
- end
- --[[
- panelType = "favorites",
- panelType = "all",
- panelType = "functions"
- panelType = "constants",
- panelType = "value",
- --]]
- self:UpdateScrollList(searchResults)
- end
- function Click4Info_Search(self)
- if SEARCH_IN_PROGRESS then return end
- SEARCH_IN_PROGRESS = true
- local text = self:GetText()
- if not (text and type(text)=="string" and text ~= "") then return end
- CLICK4INFO:SetSearch(text, SEARCH_TYPE)
- SEARCH_IN_PROGRESS = false
- end
- -------------------------------------------------------------------
- -- OnAddOnLoaded --
- -------------------------------------------------------------------
- local function OnAddOnLoaded(event, addonName)
- if addonName == ADDON_NAME then
- CLICK4INFO = Click4Info:New()
- CLICK4INFO:Initialize()
- end
- end
- -------------------------------------------------------------------
- -------------------------------------------------------------------
- ---------------------------------------------------------------------
- -- Register Events --
- ---------------------------------------------------------------------
- EVENT_MANAGER:RegisterForEvent(ADDON_NAME, EVENT_ADD_ON_LOADED, OnAddOnLoaded)
- function Click4Info_RowSelect(self, button, upInside)
- if not upInside then return end
- if button == 2 then
- debugMsg("btn 2")
- elseif button == 1 then
- debugMsg("btn 1")
- end
- end
- function Click4Info_Toggle_AddScriptWin(self)
- local bHide = not CLICK4INFO.scriptWin:IsHidden()
- CLICK4INFO.scriptWin:SetHidden(bHide)
- end
- local function DoesScriptNameExist(scriptName)
- local scripts = CLICK4INFO.sv.scripts
- for name, script in pairs(scripts) do
- if name == scriptName then
- return true
- end
- end
- return false
- end
- function Click4Info_AddScript(self)
- local scriptName = CLICK4INFO.nameEditBox:GetText()
- local script = CLICK4INFO.scriptEditBox:GetText()
- if not scriptName or scriptName == "" then return end
- if not script or script == "" then return end
- debugMsg("Adding Script")
- -- Add a check to see if it already exists
- if not DoesScriptNameExist(scriptName) then
- table.insert(CLICK4INFO.sv.scripts, {["scriptName"] = scriptName, ["script"] = script})
- end
- end
- function Click4Info_ChangePanel(self, button)
- local data = self.m_object.m_buttonData
- CURRENT_PANEL = data.panelType
- SEARCH_TYPE = data.searchType
- if data.panelType == "all" then
- CLICK4INFO:SetAll()
- elseif data.panelType == "favorites" then
- CLICK4INFO:SetFavorites()
- end
- end
- function Click4Info_FreeMouse()
- FREE_MOUSE = not FREE_MOUSE
- CameraChanged()
- end
- function Click4Info_Toggle_Window()
- local bSetHidden = not CLICK4INFO.mainWin:IsHidden()
- CLICK4INFO.mainWin:SetHidden(bSetHidden)
- end
Advertisement
Add Comment
Please, Sign In to add comment