jcallahan@249
|
1 -- LUA API ------------------------------------------------------------
|
jcallahan@249
|
2
|
jcallahan@249
|
3 local _G = getfenv(0)
|
jcallahan@249
|
4
|
jcallahan@249
|
5 local table = _G.table
|
jcallahan@249
|
6
|
jcallahan@249
|
7 -- ADDON NAMESPACE ----------------------------------------------------
|
jcallahan@249
|
8
|
jcallahan@249
|
9 local ADDON_NAME, private = ...
|
jcallahan@249
|
10
|
jcallahan@249
|
11 local LibStub = _G.LibStub
|
jcallahan@249
|
12 local WDP = LibStub("AceAddon-3.0"):GetAddon(ADDON_NAME)
|
jcallahan@249
|
13
|
jcallahan@249
|
14 local ParseGUID = private.ParseGUID
|
jcallahan@249
|
15
|
jcallahan@249
|
16 -- HELPERS ------------------------------------------------------------
|
jcallahan@249
|
17
|
jcallahan@249
|
18 local comment_frame
|
jcallahan@249
|
19 do
|
jcallahan@249
|
20 local panel = _G.CreateFrame("Frame", "WDP_CommentFrame", _G.UIParent, "TranslucentFrameTemplate")
|
jcallahan@249
|
21 panel:SetSize(480, 454)
|
jcallahan@249
|
22 panel:SetPoint("CENTER", _G.UIParent, "CENTER")
|
jcallahan@249
|
23 panel:SetFrameStrata("DIALOG")
|
jcallahan@249
|
24 panel.Bg:SetTexture([[Interface\FrameGeneral\UI-Background-Rock]], true, true)
|
jcallahan@249
|
25 panel.Bg:SetHorizTile(true)
|
jcallahan@249
|
26 panel.Bg:SetVertTile(true)
|
jcallahan@249
|
27 panel:Hide()
|
jcallahan@249
|
28 comment_frame = panel
|
jcallahan@249
|
29
|
jcallahan@249
|
30 table.insert(_G.UISpecialFrames, panel:GetName())
|
jcallahan@249
|
31
|
jcallahan@249
|
32 local streaks = panel:CreateTexture("$parentTopTileStreaks", "BORDER", "_UI-Frame-TopTileStreaks", -6)
|
jcallahan@249
|
33 streaks:SetPoint("TOPLEFT", 13, -13)
|
jcallahan@249
|
34 streaks:SetPoint("BOTTOMRIGHT", panel, "TOPRIGHT", -13, -35)
|
jcallahan@249
|
35
|
jcallahan@249
|
36 local header = _G.CreateFrame("Frame", "$parentHeader", panel, "TranslucentFrameTemplate")
|
jcallahan@249
|
37 -- header:SetSize(180, 45)
|
jcallahan@249
|
38 header:SetSize(128, 64)
|
jcallahan@249
|
39 header:SetPoint("CENTER", panel, "TOP", 0, -8)
|
jcallahan@249
|
40 header.Bg:SetTexture([[Interface\FrameGeneral\UI-Background-Marble]])
|
jcallahan@249
|
41 header.Bg:SetHorizTile(true)
|
jcallahan@249
|
42 header.Bg:SetVertTile(true)
|
jcallahan@249
|
43 panel.header = header
|
jcallahan@249
|
44
|
jcallahan@249
|
45 local logo = header:CreateTexture(nil, "ARTWORK")
|
jcallahan@249
|
46 logo:SetTexture([[Interface\AddOns\WoWDBProfiler\wowdb-logo]])
|
jcallahan@249
|
47 logo:SetPoint("TOPLEFT", header, 10, -10)
|
jcallahan@249
|
48 logo:SetPoint("BOTTOMRIGHT", header, -10, 10)
|
jcallahan@249
|
49
|
jcallahan@249
|
50 --[[
|
jcallahan@249
|
51 local header_label = header:CreateFontString(nil, "ARTWORK", "GameFontNormal")
|
jcallahan@249
|
52 header_label:SetPoint("CENTER", 0, 0)
|
jcallahan@249
|
53 header_label:SetText(ADDON_NAME)
|
jcallahan@249
|
54 ]]
|
jcallahan@249
|
55
|
jcallahan@249
|
56 local close = _G.CreateFrame("Button", nil, panel, "UIPanelCloseButton")
|
jcallahan@249
|
57 close:SetPoint("TOPRIGHT", panel, "TOPRIGHT", -7, -7)
|
jcallahan@249
|
58
|
jcallahan@249
|
59 local scroll_frame = _G.CreateFrame("ScrollFrame", "$parentScrollFrame", panel)
|
jcallahan@249
|
60 scroll_frame:SetSize(435, 150)
|
jcallahan@249
|
61 scroll_frame:SetPoint("BOTTOM", 0, 70)
|
jcallahan@249
|
62
|
jcallahan@249
|
63 scroll_frame:SetScript("OnScrollRangeChanged", function(self, x, y)
|
jcallahan@249
|
64 _G.ScrollFrame_OnScrollRangeChanged(self, x, y)
|
jcallahan@249
|
65 end)
|
jcallahan@249
|
66
|
jcallahan@249
|
67 scroll_frame:SetScript("OnVerticalScroll", function(self, offset)
|
jcallahan@249
|
68 local scrollbar = self.ScrollBar
|
jcallahan@249
|
69 scrollbar:SetValue(offset)
|
jcallahan@249
|
70
|
jcallahan@249
|
71 local min, max = scrollbar:GetMinMaxValues()
|
jcallahan@249
|
72
|
jcallahan@249
|
73 if offset == 0 then
|
jcallahan@249
|
74 scrollbar.ScrollUpButton:Disable()
|
jcallahan@249
|
75 else
|
jcallahan@249
|
76 scrollbar.ScrollUpButton:Enable()
|
jcallahan@249
|
77 end
|
jcallahan@249
|
78
|
jcallahan@249
|
79 if (scrollbar:GetValue() - max) == 0 then
|
jcallahan@249
|
80 scrollbar.ScrollDownButton:Disable()
|
jcallahan@249
|
81 else
|
jcallahan@249
|
82 scrollbar.ScrollDownButton:Enable()
|
jcallahan@249
|
83 end
|
jcallahan@249
|
84 end)
|
jcallahan@249
|
85
|
jcallahan@249
|
86 scroll_frame:SetScript("OnMouseWheel", function(self, delta)
|
jcallahan@249
|
87 _G.ScrollFrameTemplate_OnMouseWheel(self, delta)
|
jcallahan@249
|
88 end)
|
jcallahan@249
|
89
|
jcallahan@249
|
90 local edit_container = _G.CreateFrame("Frame", nil, scroll_frame)
|
jcallahan@249
|
91 edit_container:SetPoint("TOPLEFT", scroll_frame, -7, 7)
|
jcallahan@249
|
92 edit_container:SetPoint("BOTTOMRIGHT", scroll_frame, 7, -7)
|
jcallahan@249
|
93 edit_container:SetFrameLevel(scroll_frame:GetFrameLevel() - 1)
|
jcallahan@249
|
94 edit_container:SetBackdrop({
|
jcallahan@249
|
95 bgFile = [[Interface\Tooltips\UI-Tooltip-Background]],
|
jcallahan@249
|
96 edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]],
|
jcallahan@249
|
97 tile = true,
|
jcallahan@249
|
98 tileSize = 16,
|
jcallahan@249
|
99 edgeSize = 16,
|
jcallahan@249
|
100 insets = {
|
jcallahan@249
|
101 left = 5,
|
jcallahan@249
|
102 right = 5,
|
jcallahan@249
|
103 top = 5,
|
jcallahan@249
|
104 bottom = 5
|
jcallahan@249
|
105 }
|
jcallahan@249
|
106 })
|
jcallahan@249
|
107
|
jcallahan@249
|
108 edit_container:SetBackdropBorderColor(_G.TOOLTIP_DEFAULT_COLOR.r, _G.TOOLTIP_DEFAULT_COLOR.g, _G.TOOLTIP_DEFAULT_COLOR.b)
|
jcallahan@249
|
109 edit_container:SetBackdropColor(0, 0, 0)
|
jcallahan@249
|
110
|
jcallahan@249
|
111 local edit_box = _G.CreateFrame("EditBox", nil, scroll_frame)
|
jcallahan@249
|
112 edit_box:SetMultiLine(true)
|
jcallahan@249
|
113 edit_box:SetMaxLetters(3000)
|
jcallahan@249
|
114 edit_box:EnableMouse(true)
|
jcallahan@249
|
115 edit_box:SetAutoFocus(false)
|
jcallahan@249
|
116 edit_box:SetFontObject("ChatFontNormal")
|
jcallahan@249
|
117 edit_box:SetSize(420, 220)
|
jcallahan@249
|
118 edit_box:HighlightText(0)
|
jcallahan@249
|
119
|
jcallahan@249
|
120 edit_box:SetScript("OnCursorChanged", _G.ScrollingEdit_OnCursorChanged)
|
jcallahan@249
|
121 edit_box:SetScript("OnEscapePressed", _G.EditBox_ClearFocus)
|
jcallahan@249
|
122 edit_box:SetScript("OnShow", function(self)
|
jcallahan@249
|
123 _G.EditBox_SetFocus(self)
|
jcallahan@249
|
124
|
jcallahan@249
|
125 if self:GetNumLetters() > 0 then
|
jcallahan@249
|
126 panel.submitButton:Enable()
|
jcallahan@249
|
127 else
|
jcallahan@249
|
128 panel.submitButton:Disable()
|
jcallahan@249
|
129 end
|
jcallahan@249
|
130 end)
|
jcallahan@249
|
131
|
jcallahan@249
|
132 edit_box:SetScript("OnTextChanged", function(self, user_input)
|
jcallahan@249
|
133 local parent = self:GetParent()
|
jcallahan@249
|
134 local num_letters = self:GetNumLetters()
|
jcallahan@249
|
135 _G.ScrollingEdit_OnTextChanged(self, parent)
|
jcallahan@249
|
136 parent.charCount:SetText(self:GetMaxLetters() - num_letters)
|
jcallahan@249
|
137
|
jcallahan@249
|
138 if num_letters > 0 then
|
jcallahan@249
|
139 panel.submitButton:Enable();
|
jcallahan@249
|
140 end
|
jcallahan@249
|
141 end)
|
jcallahan@249
|
142
|
jcallahan@249
|
143 edit_box:SetScript("OnUpdate", function(self, elapsed)
|
jcallahan@249
|
144 _G.ScrollingEdit_OnUpdate(self, elapsed, self:GetParent())
|
jcallahan@249
|
145 end)
|
jcallahan@249
|
146
|
jcallahan@249
|
147 scroll_frame:SetScrollChild(edit_box)
|
jcallahan@249
|
148
|
jcallahan@249
|
149 local char_count = scroll_frame:CreateFontString(nil, "OVERLAY", "GameFontDisableLarge")
|
jcallahan@249
|
150 char_count:SetPoint("BOTTOMRIGHT", -15, 0)
|
jcallahan@249
|
151 scroll_frame.charCount = char_count
|
jcallahan@249
|
152
|
jcallahan@249
|
153 local scroll_bar = _G.CreateFrame("Slider", "$parentScrollBar", scroll_frame, "UIPanelScrollBarTemplate")
|
jcallahan@249
|
154 scroll_bar:SetPoint("TOPLEFT", scroll_frame, "TOPRIGHT", -13, -16)
|
jcallahan@249
|
155 scroll_bar:SetPoint("BOTTOMLEFT", scroll_frame, "BOTTOMRIGHT", -13, 16)
|
jcallahan@249
|
156 scroll_frame.ScrollBar = scroll_bar
|
jcallahan@249
|
157
|
jcallahan@249
|
158 _G.ScrollFrame_OnLoad(scroll_frame)
|
jcallahan@249
|
159
|
jcallahan@249
|
160 local submit = _G.CreateFrame("Button", "$parentSubmit", panel, "GameMenuButtonTemplate")
|
jcallahan@249
|
161 submit:SetSize(160, 30)
|
jcallahan@249
|
162 submit:SetPoint("BOTTOM", 0, 15)
|
jcallahan@249
|
163 submit:SetText(_G.SUBMIT)
|
jcallahan@249
|
164 submit:Enable(false)
|
jcallahan@249
|
165
|
jcallahan@249
|
166 submit:SetScript("OnClick", function()
|
jcallahan@249
|
167 -- TODO: Make this assign the comment to the correct SavedVariables entry.
|
jcallahan@249
|
168 edit_box:SetText("")
|
jcallahan@249
|
169 _G.HideUIPanel(panel)
|
jcallahan@249
|
170 end)
|
jcallahan@249
|
171 panel.submitButton = submit
|
jcallahan@249
|
172 end
|
jcallahan@249
|
173
|
jcallahan@249
|
174 local function CreateUnitComment(unit_type, unit_idnum)
|
jcallahan@249
|
175 comment_frame:Show()
|
jcallahan@249
|
176 end
|
jcallahan@249
|
177
|
jcallahan@249
|
178 local function CreateCursorComment()
|
jcallahan@249
|
179 -- TODO: Implement!
|
jcallahan@249
|
180 end
|
jcallahan@249
|
181
|
jcallahan@249
|
182 -- METHODS ------------------------------------------------------------
|
jcallahan@249
|
183
|
jcallahan@249
|
184 function private.ProcessCommentCommand(arg)
|
jcallahan@249
|
185 if not arg or arg == "" then
|
jcallahan@249
|
186 WDP:Print("You must supply a valid comment type.")
|
jcallahan@249
|
187 return
|
jcallahan@249
|
188 end
|
jcallahan@249
|
189
|
jcallahan@249
|
190 if arg == "cursor" then
|
jcallahan@249
|
191 WDP:Print("Not yet implemented.")
|
jcallahan@249
|
192 return
|
jcallahan@249
|
193 end
|
jcallahan@249
|
194
|
jcallahan@249
|
195 if not _G.UnitExists(arg) then
|
jcallahan@249
|
196 WDP:Printf("Unit '%s' does not exist.", arg)
|
jcallahan@249
|
197 return
|
jcallahan@249
|
198 end
|
jcallahan@249
|
199 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID(arg))
|
jcallahan@249
|
200
|
jcallahan@249
|
201 if not unit_idnum then
|
jcallahan@249
|
202 WDP:Printf("Unable to determine unit from '%s'", arg)
|
jcallahan@249
|
203 return
|
jcallahan@249
|
204 end
|
jcallahan@249
|
205 CreateUnitComment(unit_type, unit_idnum)
|
jcallahan@249
|
206 end
|