Back to Home

ESO Lua File v101036

common/zo_uierrors/errorframe.lua

[◄ back to folders ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
--
--[[ ZO_ErrorFrame ]]--
--
local ZO_ErrorFrame = ZO_Object:Subclass()
function ZO_ErrorFrame:New(...)
    local errorFrame = ZO_Object.New(self)
    errorFrame:Initialize(...)
    return errorFrame
end
function ZO_ErrorFrame:Initialize(control)
    self.control = control
    self.textEditControl = control:GetNamedChild("TextEdit")
    self.titleControl = control:GetNamedChild("Title")
    self.dismissControl = control:GetNamedChild("Dismiss")
    self.dismissKeybind = self.dismissControl:GetNamedChild("Keybind")
    self.dismissKeybind:SetKeybind("UI_SHORTCUT_PRIMARY")
    self.moreInfoButton = control:GetNamedChild("MoreInfo")
    ZO_CheckButton_SetToggleFunction(self.moreInfoButton, function()
        self.moreInfo = not self.moreInfo
        SetCVar("UIErrorShowMoreInfo", self.moreInfo and "1" or "0")
        self:RefreshErrorText()
    end)
    self.queuedErrors = {}
    self.suppressErrorDialog = false
    self.displayingError = false
    self.moreInfo = GetCVar("UIErrorShowMoreInfo") == "1"
    ZO_CheckButton_SetCheckState(self.moreInfoButton, self.moreInfo)
    EVENT_MANAGER:RegisterForEvent("ErrorFrame", EVENT_LUA_ERROR, function(eventCode, ...) self:OnUIError(...) end)
end
function ZO_ErrorFrame:UpdatePlatformStyles()
    ApplyTemplateToControl(self.textEditControl, ZO_GetPlatformTemplate("ZO_ErrorFrameTextEdit"))
    ApplyTemplateToControl(self.titleControl, ZO_GetPlatformTemplate("ZO_ErrorFrameTitle"))
    ApplyTemplateToControl(self.dismissControl, ZO_GetPlatformTemplate("ZO_ErrorFrameDismiss"))
    ApplyTemplateToControl(self.dismissKeybind, ZO_GetPlatformTemplate("ZO_KeybindButton"))
end
function ZO_ErrorFrame:InitializePlatformStyles()
    ZO_PlatformStyle:New(function(...) self:UpdatePlatformStyles(...) end)
end
function ZO_ErrorFrame:GetNextQueuedError()
    if #self.queuedErrors > 0 then
        return table.remove(self.queuedErrors, 1)
    end
end
function ZO_ErrorFrame:OnUIError(errorString)
    if not self.suppressErrorDialog and errorString then
        table.insert(self.queuedErrors, errorString)
        if not self.displayingError then
            self.displayingError = true
            self.control:SetHidden(false)
            local fullError = self:GetNextQueuedError()
            --Colored Full Error: Wrap the <Locals>...</Locals> section with color markup
            self.coloredFullError = string.gsub(fullError, "<Locals>.-</Locals>", function(match)
                return "|caaaaaa"..match.."|r"
            end)
            
            --Copy Error : Tab the <Locals>...</Locals> section for easier reading.
            self.copyError = string.gsub(fullError, "<Locals>.-</Locals>", function(match)
                return "\t"..match
            end)
            --Simple Error: Remove the <Locals>...</Locals> section and any newline after it if there is one
            self.simpleError = string.gsub(fullError, "<Locals>.-</Locals>\n?", "")
            self:RefreshErrorText()
        end
    end
end
function ZO_ErrorFrame:CopyErrorToClipboard()
    if self.copyError then
        CopyToClipboard(self.copyError)
    end
end
function ZO_ErrorFrame:RefreshErrorText()
    if self.simpleError then
        self.textEditControl:SetText(self.moreInfo and self.coloredFullError or self.simpleError)
    else
        self.textEditControl:SetText("")
    end
    self.textEditControl:SetTopLineIndex(1)
end
function ZO_ErrorFrame:HideCurrentError()
    if not self.suppressErrorDialog then
        if self.displayingError then
            self.displayingError = false
            self.control:SetHidden(true)
            self.textEditControl:SetText("")
        end
        
    end
end
function ZO_ErrorFrame:HideAllErrors()
    if not self.suppressErrorDialog then
        self.queuedErrors = {}
        self:HideCurrentError()
    end
end
function ZO_ErrorFrame:ToggleSupressDialog()
    if not self.suppressErrorDialog then
        self:HideAllErrors()
    end
    self.suppressErrorDialog = not self.suppressErrorDialog
end
-- XML Handlers
    ZO_ERROR_FRAME = ZO_ErrorFrame:New(control)
end
    ZO_ERROR_FRAME:HideCurrentError()
end
function ZO_UIErrors_HideAll()
    ZO_ERROR_FRAME:HideAllErrors()
end
    ZO_ERROR_FRAME:ToggleSupressDialog()
end