Nenue@54
|
1 -- Veneer
|
Nenue@71
|
2 -- Base framework for making things draggable.
|
Nenue@0
|
3
|
Nenue@59
|
4 local vn, print = LibStub("LibKraken").register(VeneerController)
|
Nenue@54
|
5
|
Nenue@0
|
6
|
Nenue@59
|
7 local defaults = {
|
Nenue@59
|
8 enableAll = true,
|
Nenue@59
|
9 enableModule = {
|
Nenue@59
|
10 BuffFrame = true,
|
Nenue@59
|
11 },
|
Nenue@59
|
12 BuffFrame = {
|
Nenue@59
|
13 width = 48,
|
Nenue@59
|
14 height = 48,
|
Nenue@59
|
15 }
|
Nenue@59
|
16 }
|
Nenue@71
|
17 local configMode
|
Nenue@71
|
18 local veneers = {}
|
Nenue@71
|
19
|
Nenue@71
|
20 do
|
Nenue@71
|
21 local anonID = 0
|
Nenue@71
|
22 local AnonymousName = function()
|
Nenue@71
|
23 anonID = anonID + 1
|
Nenue@71
|
24 return 'VN' .. anonID
|
Nenue@71
|
25 end
|
Nenue@71
|
26 end
|
Nenue@71
|
27
|
Nenue@71
|
28
|
Nenue@71
|
29 local VeneerButton_Update = function(self)
|
Nenue@71
|
30 if configMode then
|
Nenue@71
|
31 self:SetScript('OnDragStart', self.StartMoving)
|
Nenue@71
|
32 self:SetScript('OnDragStop', self.StopMovingOrSizing)
|
Nenue@71
|
33 self:SetMovable(false)
|
Nenue@71
|
34 self:EnableMouse(false)
|
Nenue@71
|
35 self:RegisterForDrag('LeftButton')
|
Nenue@71
|
36
|
Nenue@71
|
37 self.bg:SetColorTexture(0,1,0,0.5)
|
Nenue@71
|
38 else
|
Nenue@71
|
39
|
Nenue@71
|
40 self:SetScript('OnDragStart', self.StartMoving)
|
Nenue@71
|
41 self:SetScript('OnDragStop', self.StopMovingOrSizing)
|
Nenue@71
|
42 self:SetMovable(false)
|
Nenue@71
|
43 self:EnableMouse(false)
|
Nenue@71
|
44
|
Nenue@71
|
45 self.bg:SetColorTexture(0,1,0,0)
|
Nenue@71
|
46 end
|
Nenue@71
|
47 end
|
Nenue@71
|
48
|
Nenue@71
|
49 local ToggleVeneerConfig = function()
|
Nenue@71
|
50 if configMode then
|
Nenue@71
|
51 configMode = false
|
Nenue@71
|
52 vn:print('Config mode off.')
|
Nenue@71
|
53 else
|
Nenue@71
|
54 configMode = true
|
Nenue@71
|
55 vn:print('Config mode on.')
|
Nenue@71
|
56 end
|
Nenue@71
|
57
|
Nenue@71
|
58 for frame, veneer in pairs(veneers) do
|
Nenue@71
|
59 VeneerButton_Update(veneer)
|
Nenue@71
|
60 end
|
Nenue@71
|
61 end
|
Nenue@71
|
62
|
Nenue@71
|
63 local VeneerButton_OnShow = function(self)
|
Nenue@71
|
64 VeneerButton_Update(self)
|
Nenue@71
|
65 end
|
Nenue@71
|
66
|
Nenue@71
|
67 vn.GetVeneer = function(frame)
|
Nenue@71
|
68 if not frame then
|
Nenue@71
|
69 print('|cFFFF4400Unable to acquire frame...|r')
|
Nenue@71
|
70 return
|
Nenue@71
|
71 end
|
Nenue@71
|
72
|
Nenue@71
|
73
|
Nenue@71
|
74 if veneers[frame] then
|
Nenue@71
|
75 return veneers[frame]
|
Nenue@71
|
76 end
|
Nenue@71
|
77
|
Nenue@71
|
78 local veneer = CreateFrame('Frame', (frame:GetName() or AnonymousName())..'Veneer', UIParent)
|
Nenue@71
|
79
|
Nenue@71
|
80 veneer:SetAllPoints(frame)
|
Nenue@71
|
81 veneer:SetParent(frame)
|
Nenue@71
|
82 veneer.bg = veneer:CreateTexture()
|
Nenue@71
|
83 veneer.bg:SetColorTexture(1,1,1,0)
|
Nenue@71
|
84 veneer.bg:SetAllPoints(veneer)
|
Nenue@71
|
85 veneer.bg:Show()
|
Nenue@71
|
86 veneer:Hide()
|
Nenue@71
|
87 veneer:EnableMouse(false)
|
Nenue@71
|
88
|
Nenue@71
|
89 veneer:SetScript('OnShow', VeneerButton_OnShow)
|
Nenue@71
|
90
|
Nenue@71
|
91 -- find current X/Y
|
Nenue@71
|
92 veneer.currentLeft = frame:GetLeft()
|
Nenue@71
|
93 veneer.currentTop = frame:GetTop()
|
Nenue@71
|
94
|
Nenue@71
|
95 veneers[frame] = veneer
|
Nenue@71
|
96 return veneers[frame]
|
Nenue@71
|
97 end
|
Nenue@0
|
98
|
Nenue@59
|
99 vn.init = function()
|
Nenue@59
|
100 if (not VeneerData) or (not VeneerData.version) then
|
Nenue@59
|
101 VeneerData = defaults
|
Nenue@0
|
102 end
|
Nenue@59
|
103 vn.db = VeneerData
|
Nenue@71
|
104 end
|
Nenue@62
|
105
|
Nenue@71
|
106
|
Nenue@71
|
107 vn.wrap = function(module)
|
Nenue@71
|
108 vn.modules = vn.modules or {}
|
Nenue@71
|
109 tinsert(vn.modules, module)
|
Nenue@71
|
110 end
|
Nenue@71
|
111
|
Nenue@71
|
112 SLASH_VENEER1 = "/veneer"
|
Nenue@71
|
113 SLASH_VENEER2 = "/vn"
|
Nenue@71
|
114
|
Nenue@71
|
115 SlashCmdList.VENEER = function()
|
Nenue@71
|
116 ToggleVeneerConfig()
|
Nenue@59
|
117 end |