ESOUI SVN ESOutpost

[/] [trunk/] [ESOutpost/] [GUI.lua] - Blame information for rev 8

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 Seerah-7
-- ESOutpost © ZAM Network LLC
2 Seerah-7
-- All Rights Reserved
3 Seerah-7
 
4 Seerah-7
local wm = WINDOW_MANAGER
5 Seerah-7
local M = ESOutpostMaps
6 Seerah-7
 
7 Seerah-7
 
8 Seerah-7
local gui = wm:CreateTopLevelWindow("ESOutpostGUI")
9 Seerah-7
gui:SetDimensions(525, 350)
10 Seerah-7
gui:SetAnchor(CENTER)
11 Seerah-7
gui:SetClampedToScreen(true)
12 Seerah-7
gui:SetClampedToScreenInsets(-425, -15, 5, 5)   --width of tooltip frame on left == 416
13 Seerah-7
gui:SetMouseEnabled(true)
14 Seerah-7
gui:SetMovable(true)
15 Seerah-7
gui:SetHandler("OnReceiveDrag", function(self)
16 Seerah-7
                self:StartMoving()
17 Seerah-7
        end)
18 Seerah-7
gui:SetHandler("OnMouseUp", function(self)
19 Seerah-7
                self:StopMovingOrResizing()
20 Seerah-7
        end)
21 Seerah-7
gui.bg = wm:CreateControlFromVirtual("ESOutpostBG", gui, "ZO_DefaultBackdrop")
22 Seerah-7
 
23 Seerah-7
gui.bg.watermark = wm:CreateControl(nil, gui.bg, CT_TEXTURE)
24 Seerah-7
gui.bg.watermark:SetDimensions(300, 300)
25 Seerah-7
gui.bg.watermark:SetAnchor(CENTER)
26 Seerah-7
gui.bg.watermark:SetTexture("ESOutpost\\ESO-Outpost-Logo.dds")
27 Seerah-7
gui.bg.watermark:SetAlpha(.3)
28 Seerah-7
 
29 Seerah-7
gui.title = wm:CreateControl(nil, gui, CT_LABEL)
30 Seerah-7
gui.title:SetFont("ZoFontCallout")
31 Seerah-7
gui.title:SetAnchor(TOP)
32 Seerah-7
gui.title:SetText("|cC5C29EESO|rutpost")
33 Seerah-7
 
34 Seerah-7
gui.icon = wm:CreateControl(nil, gui, CT_TEXTURE)
35 Seerah-7
gui.icon:SetAnchor(TOPLEFT, gui, TOPLEFT, 15, 70)
36 Seerah-7
gui.icon:SetDimensions(100, 100)
37 Seerah-7
gui.icon:SetTexture("EsoUI\\Art\\ActionBar\\abilityframe64_up.dds")
38 Seerah-7
gui.icon.texture = wm:CreateControl(nil, gui.icon, CT_TEXTURE)
39 Seerah-7
gui.icon.texture:SetDimensions(90, 90)
40 Seerah-7
gui.icon.texture:SetAnchor(CENTER)
41 Seerah-7
 
42 Seerah-7
gui.name = wm:CreateControl(nil, gui, CT_LABEL)
43 Seerah-7
gui.name:SetFont("ZoFontHeader4")
44 Seerah-7
gui.name:SetAnchor(TOPLEFT, gui.icon, TOPRIGHT, 20, 0)
45 Seerah-7
gui.name:SetDimensions(365, 32)
46 Seerah-7
gui.name:SetWrapMode(TEXT_WRAP_MODE_ELLIPSIS)
47 Seerah-7
 
48 Seerah-7
gui.lvl = wm:CreateControl(nil, gui, CT_LABEL)
49 Seerah-7
gui.lvl:SetFont("ZoFontHeader2")
50 Seerah-7
gui.lvl:SetHeight(26)
51 Seerah-7
gui.lvl:SetWrapMode(TEXT_WRAP_MODE_ELLIPSIS)
52 Seerah-7
gui.lvl:SetAnchor(TOPLEFT, gui.name, BOTTOMLEFT, 0, 6)
53 Seerah-7
gui.lvl:SetText("Level")
54 Seerah-7
 
55 Seerah-7
gui.lvlNumbg = wm:CreateControlFromVirtual("ESOutpostLevelBG", gui, "ZO_EditBackdrop")
56 Seerah-7
gui.lvlNumbg:SetDimensions(33, 28)
57 Seerah-7
gui.lvlNumbg:SetAnchor(LEFT, gui.lvl, RIGHT, 5, 0)
58 Seerah-7
gui.lvlNum = wm:CreateControlFromVirtual("ESOutpostLevel", gui.lvlNumbg, "ZO_DefaultEditForBackdrop")
59 Seerah-7
gui.lvlNum:SetTextType(TEXT_TYPE_NUMERIC)
60 Seerah-7
gui.lvlNum.tooltipText = "Please confirm the level of the item as stated in the tooltip.\nOccasionally, this information as given by the API to ESOutpost is incorrect.\nIf the item has no level, this number should be 0."
61 Seerah-7
gui.lvlNum:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
62 Seerah-7
gui.lvlNum:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
63 3 Seerah-7
gui.lvlNum:SetHandler("OnEscape", gui.lvlNum.LoseFocus)
64 Seerah-7
gui.lvlNum:SetHandler("OnTab", function()
65 Seerah-7
                if not gui.traitValue:IsHidden() then
66 Seerah-7
                        gui.traitValue:TakeFocus()
67 Seerah-7
                elseif not gui.enchantValueX:IsHidden() then
68 Seerah-7
                        gui.enchantValueX:TakeFocus()
69 Seerah-7
                end
70 Seerah-7
        end)
71 2 Seerah-7
 
72 Seerah-7
gui.type = wm:CreateControl(nil, gui, CT_LABEL)
73 Seerah-7
gui.type:SetFont("ZoFontHeader2")
74 Seerah-7
gui.type:SetHeight(26)
75 5 Seerah-7
gui.type:SetAnchor(LEFT, gui.lvlNumbg, RIGHT, 15, 1)
76 2 Seerah-7
gui.type:SetAnchor(TOPRIGHT, gui.name, BOTTOMRIGHT, 0, 6)
77 Seerah-7
gui.type:SetWrapMode(TEXT_WRAP_MODE_ELLIPSIS)
78 Seerah-7
 
79 Seerah-7
gui.statValue = wm:CreateControl(nil, gui, CT_LABEL)
80 Seerah-7
gui.statValue:SetFont("ZoFontHeader2")
81 Seerah-7
gui.statValue:SetAnchor(TOPLEFT, gui.lvl, BOTTOMLEFT, 0, 6)
82 Seerah-7
gui.statValue:SetHeight(26)
83 Seerah-7
gui.statValue:SetWrapMode(TEXT_WRAP_MODE_ELLIPSIS)
84 Seerah-7
 
85 Seerah-7
gui.trait = wm:CreateControl(nil, gui, CT_LABEL)
86 Seerah-7
gui.trait:SetFont("ZoFontHeader2")
87 Seerah-7
gui.trait:SetAnchor(LEFT, gui.statValue, RIGHT, 20, 0)
88 Seerah-7
gui.trait:SetHeight(26)
89 Seerah-7
gui.trait:SetWrapMode(TEXT_WRAP_MODE_ELLIPSIS)
90 Seerah-7
 
91 Seerah-7
gui.traitValuebg = wm:CreateControlFromVirtual("ESOutpostTraitValueBG", gui, "ZO_EditBackdrop")
92 Seerah-7
gui.traitValuebg:SetDimensions(50, 28)
93 Seerah-7
gui.traitValuebg:SetAnchor(LEFT, gui.trait, RIGHT, 10, 0)
94 Seerah-7
gui.traitValue = wm:CreateControlFromVirtual("ESOutpostTraitValue", gui.traitValuebg, "ZO_DefaultEditForBackdrop")
95 Seerah-7
gui.traitValue:SetTextType(TEXT_TYPE_NUMERIC)
96 Seerah-7
gui.traitValue.tooltipText = "Please enter the amount of the trait's effect.\nThis is a |cFFFFFFwhite|r number, found in the item's tooltip in the item trait description."
97 Seerah-7
gui.traitValue:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
98 Seerah-7
gui.traitValue:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
99 3 Seerah-7
gui.traitValue:SetHandler("OnTab", function()
100 Seerah-7
                if not gui.enchantValueX:IsHidden() then
101 Seerah-7
                        gui.enchantValueX:TakeFocus()
102 Seerah-7
                end
103 Seerah-7
        end)
104 2 Seerah-7
 
105 Seerah-7
gui.enchant = wm:CreateControlFromVirtual("ESOutpostEnchant", gui, "ZO_StatsDropdownRow")
106 Seerah-7
gui.enchant:SetAnchor(TOPLEFT, gui.icon, BOTTOMLEFT, 0, 15)
107 Seerah-7
gui.enchant:SetWidth(350)
108 Seerah-7
local enchantdrop = gui.enchant:GetNamedChild("Dropdown")
109 Seerah-7
enchantdrop:SetWidth(350)
110 Seerah-7
gui.enchant.callback = function(_, choiceText, choice)
111 Seerah-7
        gui.enchant.type = choiceText
112 Seerah-7
        gui.enchant.hash = choice.hash
113 Seerah-7
        if choice.vars == 0 then
114 Seerah-7
                gui.enchantValueXbg:SetHidden(true)
115 Seerah-7
                gui.enchantValueYbg:SetHidden(true)
116 Seerah-7
        else
117 Seerah-7
                gui.enchantValueXbg:SetHidden(false)
118 Seerah-7
                gui.enchantValueYbg:SetHidden(choice.vars ~= 2)
119 Seerah-7
                gui.enchantValueX:SetText("")
120 Seerah-7
                gui.enchantValueY:SetText("")
121 Seerah-7
        end
122 Seerah-7
end
123 Seerah-7
enchantdrop.tooltipText = 'Please select the enchant on your item.\nIf your item is not enchanted, select "None".'
124 Seerah-7
enchantdrop:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
125 Seerah-7
enchantdrop:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
126 Seerah-7
gui.enchant.dropdown:SetSelectedItem("Select Enchant")
127 Seerah-7
 
128 Seerah-7
gui.locked = wm:CreateControl("ESOutpostLock", gui.enchant, CT_TEXTURE)
129 Seerah-7
gui.locked:SetDimensions(16, 16)
130 Seerah-7
gui.locked:SetTexture("EsoUI\\Art\\Miscellaneous\\locked_up.dds")
131 Seerah-7
gui.locked:SetAnchor(LEFT, gui.enchant, RIGHT, 10, 0)
132 Seerah-7
 
133 Seerah-7
gui.enchantValueXbg = wm:CreateControlFromVirtual("ESOutpostEnchantValueXBG", gui, "ZO_EditBackdrop")
134 Seerah-7
gui.enchantValueXbg:SetDimensions(40, 28)
135 Seerah-7
gui.enchantValueXbg:SetAnchor(LEFT, gui.locked, RIGHT, 10, 0)
136 Seerah-7
gui.enchantValueX = wm:CreateControlFromVirtual("ESOutpostEnchantValueX", gui.enchantValueXbg, "ZO_DefaultEditForBackdrop")
137 Seerah-7
gui.enchantValueX:SetTextType(TEXT_TYPE_NUMERIC)
138 Seerah-7
gui.enchantValueX.tooltipText = "Please enter the value of |cFFFFFF<x>|r.\nThis is a |cFFFFFFwhite|r number in the enchant text, found in the item's tooltip."
139 Seerah-7
gui.enchantValueX:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
140 Seerah-7
gui.enchantValueX:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
141 3 Seerah-7
gui.enchantValueX:SetHandler("OnEscape", gui.enchantValueX.LoseFocus)
142 Seerah-7
gui.traitValue:SetHandler("OnTab", function()
143 Seerah-7
                if not gui.enchantValueY:IsHidden() then
144 Seerah-7
                        gui.enchantValueY:TakeFocus()
145 Seerah-7
                end
146 Seerah-7
        end)
147 2 Seerah-7
 
148 Seerah-7
gui.enchantValueYbg = wm:CreateControlFromVirtual("ESOutpostEnchantValueYBG", gui, "ZO_EditBackdrop")
149 Seerah-7
gui.enchantValueYbg:SetDimensions(40, 28)
150 Seerah-7
gui.enchantValueYbg:SetAnchor(LEFT, gui.enchantValueX, RIGHT, 15, -1)
151 Seerah-7
gui.enchantValueY = wm:CreateControlFromVirtual("ESOutpostEnchantValueY", gui.enchantValueYbg, "ZO_DefaultEditForBackdrop")
152 Seerah-7
gui.enchantValueY:SetTextType(TEXT_TYPE_NUMERIC)
153 Seerah-7
gui.enchantValueY.tooltipText = "Please enter the value of |cFFFFFF<y>|r.\nThis is a |cFFFFFFwhite|r number in the enchant text, found in the item's tooltip."
154 Seerah-7
gui.enchantValueY:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
155 Seerah-7
gui.enchantValueY:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
156 3 Seerah-7
gui.enchantValueY:SetHandler("OnEscape", gui.enchantValueY.LoseFocus)
157 2 Seerah-7
 
158 Seerah-7
gui.generate = wm:CreateControlFromVirtual("ESOutpostGenerate", gui, "ZO_DefaultButton")
159 Seerah-7
gui.generate:SetAnchor(BOTTOM, gui, BOTTOM, 0, -75)
160 Seerah-7
gui.generate:SetDimensions(400, 32)
161 Seerah-7
gui.generate:SetText("Generate Merchandise Appraisal String")
162 Seerah-7
gui.generate.tooltipText = "Click to generate your Appraisal String after ensuring all information is correct."
163 Seerah-7
gui.generate:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
164 Seerah-7
gui.generate:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
165 Seerah-7
 
166 Seerah-7
gui.genstringbg = wm:CreateControlFromVirtual("ESOutpostGeneratedStringBG", gui, "ZO_EditBackdrop")
167 Seerah-7
gui.genstringbg:SetDimensions(475, 30)
168 Seerah-7
gui.genstringbg:SetAnchor(BOTTOMLEFT, gui, BOTTOMLEFT, 15, -20)
169 Seerah-7
gui.genstringbg:SetAnchor(BOTTOMRIGHT, gui, BOTTOMRIGHT, -65, -20)
170 Seerah-7
gui.genstring = wm:CreateControlFromVirtual("ESOutpostGeneratedString", gui.genstringbg, "ZO_DefaultEditForBackdrop")
171 Seerah-7
gui.genstring:SetMaxInputChars(1000)
172 Seerah-7
gui.genstring.tooltipText = "Copy this text to your clipboard using the |cFFFFFFCopy|r button, then paste your Appraisal String at |cFFFFFFESOutpost.com|r"
173 Seerah-7
gui.genstring:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
174 Seerah-7
gui.genstring:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
175 Seerah-7
gui.genstring:SetHandler("OnEscape", gui.genstring.LoseFocus)
176 Seerah-7
gui.genstring:SetCopyEnabled(true)
177 Seerah-7
gui.genstring:SetEditEnabled(false)
178 Seerah-7
 
179 Seerah-7
gui.copy = wm:CreateControlFromVirtual("ESOutpostCopy", gui, "ZO_DefaultTextButton")
180 Seerah-7
gui.copy:SetWidth(50)
181 Seerah-7
gui.copy:SetAnchor(BOTTOMRIGHT, gui, BOTTOMRIGHT, -15, -20)
182 Seerah-7
gui.copy:SetText("Copy")
183 Seerah-7
gui.copy:SetHandler("OnClicked", function()
184 Seerah-7
                gui.genstring:CopyAllTextToClipboard()
185 Seerah-7
                ZO_Alert(nil, SOUNDS.SKILL_GAINED, "|cC5C29EESO|rutpost: Copied to clipboard.")
186 Seerah-7
        end)
187 Seerah-7
 
188 Seerah-7
gui.close = wm:CreateControlFromVirtual("ESOutpostClose", gui, "ZO_CloseButton")
189 Seerah-7
gui.close:SetHandler("OnClicked", function() gui:SetHidden(true) end)
190 Seerah-7
 
191 Seerah-7
gui.tooltip = wm:CreateControlFromVirtual("ESOutpostTooltip", gui, "ZO_ItemIconTooltip")
192 Seerah-7
gui.tooltip:ClearAnchors()
193 Seerah-7
gui.tooltip:SetAnchor(TOPRIGHT, gui, TOPLEFT, -10, -8)
194 Seerah-7
gui.tooltip:SetHidden(false)
195 Seerah-7
 
196 Seerah-7
gui:SetHidden(true)
197 Seerah-7
 
198 Seerah-7
 
199 Seerah-7
------------
200 Seerah-7
 
201 Seerah-7
 
202 Seerah-7
local buttonPool
203 Seerah-7
local function CreateButton(buttonPool)
204 Seerah-7
        local button = ZO_ObjectPool_CreateControl("ESOutpostItemButton", buttonPool, GuiRoot)
205 Seerah-7
        button.outpostBtn = true
206 8 Seerah-7
        button.data = {tooltipText = "ESOutpost"}
207 2 Seerah-7
        button:SetHandler("OnClicked", CollectESOutpostItemData)
208 Seerah-7
        button:SetHandler("OnMouseEnter", function(...)
209 Seerah-7
                        local anim = button.row:GetNamedChild("Highlight").animation
210 Seerah-7
                        if anim then
211 Seerah-7
                                anim:PlayInstantlyToEnd()
212 Seerah-7
                        end
213 Seerah-7
                        ZO_Options_OnMouseEnter(...)
214 Seerah-7
                end)
215 Seerah-7
        button:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
216 Seerah-7
        return button
217 Seerah-7
end
218 Seerah-7
 
219 Seerah-7
local function RemoveButton(button)
220 Seerah-7
        button:SetHidden(true)
221 Seerah-7
        button.row.outpostIcon = nil
222 Seerah-7
end
223 Seerah-7
 
224 Seerah-7
function gui:CreateInventoryButtons()
225 Seerah-7
        ESOutpostDB = ESOutpostDB or {icons = true}
226 Seerah-7
        local db = ESOutpostDB
227 Seerah-7
 
228 Seerah-7
        if not buttonPool then
229 Seerah-7
                buttonPool = ZO_ObjectPool:New(CreateButton, RemoveButton)
230 Seerah-7
        end
231 Seerah-7
 
232 Seerah-7
        local inventories = PLAYER_INVENTORY.inventories
233 Seerah-7
        local origCallback
234 Seerah-7
        local function newCallback(row, slot, ...)
235 Seerah-7
                origCallback(row, slot, ...)
236 Seerah-7
                if db.icons then
237 Seerah-7
                        local itemData = row.dataEntry.data
238 Seerah-7
                        if not IsItemBound(itemData.bagId, itemData.slotIndex) then
239 Seerah-7
                                if not row.outpostIcon then
240 Seerah-7
                                        local button, key = buttonPool:AcquireObject()
241 Seerah-7
                                        local rowLabel = row:GetNamedChild("Name")
242 Seerah-7
                                        button:SetParent(rowLabel)
243 Seerah-7
                                        button:ClearAnchors()
244 Seerah-7
                                        button:SetAnchor(LEFT, rowLabel, RIGHT)
245 Seerah-7
                                        button:SetHidden(false)
246 Seerah-7
                                        row.outpostIcon = button
247 Seerah-7
                                        button.row = row
248 Seerah-7
                                        button.key = key
249 Seerah-7
                                end
250 Seerah-7
                        else
251 Seerah-7
                                if row.outpostIcon then
252 Seerah-7
                                        buttonPool:ReleaseObject(row.outpostIcon.key)
253 Seerah-7
                                end
254 Seerah-7
                        end
255 Seerah-7
                end
256 Seerah-7
        end
257 Seerah-7
        for i = 1, #inventories do
258 Seerah-7
                local inventoryView = inventories[i].listView
259 Seerah-7
                --skip this - only want backpack, bank and guild bank
260 Seerah-7
                if inventoryView ~= ZO_PlayerInventoryQuest then
261 Seerah-7
                        --find the callback function for updating inventory rows
262 Seerah-7
                        local callback = inventoryView.dataTypes[1].setupCallback
263 Seerah-7
                        origCallback = callback
264 Seerah-7
                        --overwrite it to have our post-hook
265 Seerah-7
                        inventoryView.dataTypes[1].setupCallback = newCallback
266 Seerah-7
                end
267 Seerah-7
        end
268 Seerah-7
 
269 Seerah-7
        SLASH_COMMANDS["/esoutpost"] = function()
270 Seerah-7
                        db.icons = not db.icons
271 Seerah-7
                        if db.icons then
272 Seerah-7
                                buttonPool:ReleaseAllObjects()
273 Seerah-7
                        end
274 Seerah-7
                end
275 Seerah-7
end