comparison AceGUIWidget-lib-st.lua @ 49:fd3dd12f96ce

Handle text generation modules being LoadOnDemand. lib-st widget to v5 to fix handling multiple live ST instances.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Sun, 29 Jan 2012 03:38:30 +0000
parents 1070a14cfee4
children 9232cacc9136
comparison
equal deleted inserted replaced
48:22db12e97313 49:fd3dd12f96ce
21 21
22 Version 1 initial functioning implementation 22 Version 1 initial functioning implementation
23 Version 2 reshuffle to follow new AceGUI widget coding style 23 Version 2 reshuffle to follow new AceGUI widget coding style
24 Version 3 add .tail_offset, defaulting to same absolute value as .head_offset 24 Version 3 add .tail_offset, defaulting to same absolute value as .head_offset
25 Version 4 restore original frame methods, as fortold by ancient prophecy 25 Version 4 restore original frame methods, as fortold by ancient prophecy
26 Version 5 don't bogart the widget object
26 -farmbuyer 27 -farmbuyer
27 -------------------------------------------------------------------------------]] 28 -------------------------------------------------------------------------------]]
28 local Type, Version = "lib-st", 4 29 local Type, Version = "lib-st", 4
29 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) 30 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
30 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end 31 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
74 local ShiftingSetPoint, ShiftingSetAllPoints 75 local ShiftingSetPoint, ShiftingSetAllPoints
75 local function WrapST (self, st) 76 local function WrapST (self, st)
76 if not st.frame then 77 if not st.frame then
77 error"lib-st instance has no '.frame' field... wtf did you pass to this function?" 78 error"lib-st instance has no '.frame' field... wtf did you pass to this function?"
78 end 79 end
79 if st.frame.obj and (st.frame.obj ~= self) then 80 --if st.frame.obj and (st.frame.obj ~= self) then
80 error"lib-st instance already has an '.obj' field from a different widget, cannot use with AceGUI!" 81 -- error"lib-st instance already has an '.obj' field from a different widget, cannot use with AceGUI!"
81 end 82 --end
82 self.st = st 83 self.st = st
83 if not st.head then 84 if not st.head then
84 error"lib-st instance has no '.head' field, must use either ScrollingTable:CreateST or this widget's CreatST first" 85 error"lib-st instance has no '.head' field, must use either ScrollingTable:CreateST or this widget's CreateST first"
85 end 86 end
86 self.frame = st.frame -- gutsy, but looks doable 87 self.frame = st.frame -- gutsy, but looks doable
87 88
88 -- Possibly have already wrapped this ST in a previous widget, careful. 89 -- Possibly have already wrapped this ST in a previous widget, careful.
89 if st.frame.obj ~= self then 90 --if st.frame.obj ~= self then
90 self.frame.customSetPoint = rawget(self.frame,"SetPoint") 91 self.frame.customSetPoint = rawget(self.frame,"SetPoint")
91 self.frame.realSetPoint = self.frame.SetPoint 92 self.frame.realSetPoint = self.frame.SetPoint
92 self.frame.SetPoint = ShiftingSetPoint 93 self.frame.SetPoint = ShiftingSetPoint
93 self.frame.SetAllPoints = ShiftingSetAllPoints 94 self.frame.SetAllPoints = ShiftingSetAllPoints
94 end 95 --end
95 96
96 -- This needs the .frame field. This also unconditionally creates .obj 97 -- This needs the .frame field. This also unconditionally creates .obj
97 -- inside that field and calls a SetScript on it as well. 98 -- inside that field and calls a SetScript on it as well.
98 return AceGUI:RegisterAsWidget(self) 99 return AceGUI:RegisterAsWidget(self)
99 end 100 end