vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | --[[ |
2 | MoveAnything! vJ.11000.2 |
||
3 | Based on MA! 1.12 by Skrag |
||
4 | |||
5 | Read the ReadMe |
||
6 | ]] |
||
7 | local function Error( msg ) |
||
8 | Print( msg, 1.0, 0.2, 0.2 ); |
||
9 | end |
||
10 | |||
11 | function Print(msg, r, g, b, frame) |
||
12 | if (not r) then r = 1.0; end |
||
13 | if (not g) then g = 1.0; end |
||
14 | if (not b) then b = 1.0; end |
||
15 | if ( frame ) then |
||
16 | frame:AddMessage(msg,r,g,b); |
||
17 | else |
||
18 | if ( DEFAULT_CHAT_FRAME ) then |
||
19 | DEFAULT_CHAT_FRAME:AddMessage(msg, r, g, b); |
||
20 | end |
||
21 | end |
||
22 | end |
||
23 | |||
24 | function table.find( table, value ) |
||
25 | for i, v in table do |
||
26 | if( v == value ) then |
||
27 | return i; |
||
28 | end |
||
29 | end |
||
30 | return nil; |
||
31 | end |
||
32 | |||
33 | ------------------------------------------------ |
||
34 | |||
35 | BINDING_HEADER_MOVEANYTHING = "MoveAnything!"; |
||
36 | MA_LEFTARROW = "<"; |
||
37 | MA_RIGHTARROW = ">"; |
||
38 | CurrentMover = 1; |
||
39 | |||
40 | StaticPopupDialogs["MOVEANYTHING_RESET_CONFIRM"] = { |
||
41 | text = "Reset all MoveAnything Data?", |
||
42 | button1 = TEXT(YES), |
||
43 | button2 = TEXT(NO), |
||
44 | OnAccept = function() |
||
45 | MoveAnythingOptions_ResetAll(); |
||
46 | end, |
||
47 | timeout = 0, |
||
48 | exclusive = 1, |
||
49 | showAlert = 1 |
||
50 | }; |
||
51 | |||
52 | MOVEANYTHING_MOVEATONETIME = 20; |
||
53 | MOVEANYTHING_SCROLL_HEIGHT = 25; |
||
54 | |||
55 | function MoveAnything_ToggleVisibilityOnFrame(frame) |
||
56 | if ( not frame ) then return; end |
||
57 | |||
58 | local opt = MoveAnything_FindFrameOptions(frame:GetName(),"ShowFrame"); |
||
59 | |||
60 | if( opt and opt.hidden == true ) then |
||
61 | |||
62 | MoveAnything_ShowFrame(frame) |
||
63 | else |
||
64 | MoveAnything_HideFrame(frame) |
||
65 | |||
66 | end |
||
67 | |||
68 | end |
||
69 | |||
70 | function TestPos( frame, x, y ) |
||
71 | frame:ClearAllPoints(); |
||
72 | if( frame.HiddenSetPoint ) then |
||
73 | frame:HiddenSetPoint( "BOTTOMLEFT", frame:GetParent():GetName(), "BOTTOMLEFT", x, y ); |
||
74 | else |
||
75 | frame:SetPoint( "BOTTOMLEFT", frame:GetParent():GetName(), "BOTTOMLEFT", x, y ); |
||
76 | end |
||
77 | end |
||
78 | |||
79 | function TestInfo() |
||
80 | Print( "PlayerFrame "..PlayerFrame:GetLeft()..", "..PlayerFrame:GetBottom().." ("..PlayerFrame:GetScale()..")" ); |
||
81 | Print( "PetFrame "..PetFrame:GetLeft()..", "..PetFrame:GetBottom().." ("..PetFrame:GetScale()..")" ); |
||
82 | end |
||
83 | |||
84 | function ListFrameOptions() |
||
85 | local count = 0; |
||
86 | for i, v in MoveAnything_FrameOptions do |
||
87 | count = count + 1; |
||
88 | end |
||
89 | Print( count.." frame options" ); |
||
90 | for i, v in MoveAnything_FrameOptions do |
||
91 | Print( "FrameOptions: "..v.name ); |
||
92 | end |
||
93 | end |
||
94 | |||
95 | function ListCustomFrames() |
||
96 | Print( table.getn( MoveAnything_CustomFrames ).." custom frames" ); |
||
97 | for i, v in MoveAnything_CustomFrames do |
||
98 | Print( v.name ); |
||
99 | end |
||
100 | end |
||
101 | |||
102 | function MADebOpt( frameName ) |
||
103 | for i, v in MoveAnything_FrameOptions[ frameName ] do |
||
104 | Print( frameName.."."..i.." = "..tostring(v) ); |
||
105 | end |
||
106 | end |
||
107 | |||
108 | function MADeb() |
||
109 | ListCustomFrames(); |
||
110 | ListFrameOptions(); |
||
111 | end |
||
112 | |||
113 | function MALocate() |
||
114 | if( not MALocator:IsVisible() ) then |
||
115 | MALocator:Show(); |
||
116 | end |
||
117 | end |
||
118 | |||
119 | function MoveAnythingUpdater_OnUpdate(arg1) |
||
120 | if MoveAnythingUpdater:GetScale() == UIParent:GetScale() then |
||
121 | MoveAnythingUpdater:SetScale(0.2) |
||
122 | MoveAnything_RefreshPositions() |
||
123 | end |
||
124 | end |
||
125 | |||
126 | MoveAnything_Frames = {}; |
||
127 | MoveAnything_CustomFrames = {}; |
||
128 | MoveAnything_CharacterSettings = {}; |
||
129 | MoveAnything_UseCharacterSettings = false; |
||
130 | MoveAnything_InitRun = false; |
||
131 | MoveAnything_FrameOptions = nil; |
||
132 | |||
133 | MoveAnything_NoScale = { TooltipMover = true, FramerateMover = true }; |
||
134 | MoveAnything_ScaleWH = { MainMenuExpBar = true }; |
||
135 | MoveAnything_DetachFromParent = { MainMenuBarPerformanceBarFrame = true }; |
||
136 | MoveAnything_NoHide = { MAOptions = true }; |
||
137 | MoveAnything_HideList = {}; |
||
138 | MoveAnything_HideList["MainMenuBar"] = { |
||
139 | { "MainMenuBarArtFrame", "BACKGROUND","ARTWORK"}, |
||
140 | { "PetActionBarFrame", "OVERLAY"}, |
||
141 | { "ShapeshiftBarFrame", "OVERLAY"}, |
||
142 | { "MainMenuBar", "DISABLEMOUSE"}, |
||
143 | { "BonusActionBarFrame", "OVERLAY", "DISABLEMOUSE"}, |
||
144 | }; |
||
145 | MoveAnything_HideList["MainMenuExpBar"] = { |
||
146 | { "MainMenuExpBar", "WH", "BORDER", "OVERLAY"}, |
||
147 | { "ExhaustionTick", "FRAME"}, |
||
148 | { "MainMenuExpBar", function( show ) |
||
149 | if( show ) then |
||
150 | MoveAnything_AllowExternalVisibility( MainMenuExpBar.TextString ); |
||
151 | else |
||
152 | MoveAnything_PreventExternalVisibility( MainMenuExpBar.TextString ); |
||
153 | end |
||
154 | end}, |
||
155 | }; |
||
156 | |||
157 | MoveAnything_HideUsingWH = { MainMenuExpBar = true }; |
||
158 | |||
159 | MoveAnything_MoveOnlyWhenVisible = {}; |
||
160 | MoveAnything_MoveOnlyWhenVisible["GroupLootFrame1"] = true; |
||
161 | MoveAnything_MoveOnlyWhenVisible["GroupLootFrame2"] = true; |
||
162 | MoveAnything_MoveOnlyWhenVisible["GroupLootFrame3"] = true; |
||
163 | MoveAnything_MoveOnlyWhenVisible["GroupLootFrame4"] = true; |
||
164 | |||
165 | MoveAnything_DefaultFrameList = { |
||
166 | |||
167 | { "MAOptions", "MoveAnything! Options Window" }, |
||
168 | |||
169 | { "Separator", "**** Standard Party Frames ****" }, |
||
170 | { "PlayerFrame", "Player" }, |
||
171 | { "TargetFrame", "Target" }, |
||
172 | { "PartyMemberFrame1", "Party Member 1" }, |
||
173 | { "PartyMemberFrame2", "Party Member 2" }, |
||
174 | { "PartyMemberFrame3", "Party Member 3" }, |
||
175 | { "PartyMemberFrame4", "Party Member 4" }, |
||
176 | |||
177 | { "Separator", "**** Pets ****" }, |
||
178 | { "PetFrame", "Pet" }, |
||
179 | { "PartyMemberFrame1PetFrame", "Party Pet 1" }, |
||
180 | { "PartyMemberFrame2PetFrame", "Party Pet 2" }, |
||
181 | { "PartyMemberFrame3PetFrame", "Party Pet 3" }, |
||
182 | { "PartyMemberFrame4PetFrame", "Party Pet 4" }, |
||
183 | |||
184 | { "Separator", "**** Bags ****" }, |
||
185 | { "BagFrame1", "Bag 1 (Backpack)" }, |
||
186 | { "BagFrame2", "Bag 2" }, |
||
187 | { "BagFrame3", "Bag 3" }, |
||
188 | { "BagFrame4", "Bag 4" }, |
||
189 | { "BagFrame5", "Bag 5" }, |
||
190 | |||
191 | { "Separator", "**** Bank ****" }, |
||
192 | { "BankFrame", "Bank Teller Window" }, |
||
193 | { "BankBagFrame1", "Bank Bag 1" }, |
||
194 | { "BankBagFrame2", "Bank Bag 2" }, |
||
195 | { "BankBagFrame3", "Bank Bag 3" }, |
||
196 | { "BankBagFrame4", "Bank Bag 4" }, |
||
197 | { "BankBagFrame5", "Bank Bag 5" }, |
||
198 | { "BankBagFrame6", "Bank Bag 6" }, |
||
199 | |||
200 | { "Separator", "**** Bottom Bar ****" }, |
||
201 | { "MainMenuBar", "Bottom Bar" }, |
||
202 | { "MainMenuBarArtFrame", "Art Frame" }, |
||
203 | { "MainMenuBarMaxLevelBar", "Max Level Bar" }, |
||
204 | { "MainMenuExpBar", "Experience Bar" }, |
||
205 | { "MainMenuBarPerformanceBarFrame", "Lag Meter" }, |
||
206 | |||
207 | { "Separator", "**** Action Button Bars ****" }, |
||
208 | { "BasicActionButtonsMover", "Action Buttons" }, |
||
209 | { "BasicActionButtonsVerticalMover", "Action Buttons (Vertical)" }, |
||
210 | { "PetActionButtonsMover", "Pet Action Buttons" }, |
||
211 | { "PetActionButtonsVerticalMover", "Pet Action Buttons (Vertical)" }, |
||
212 | { "ShapeshiftButtonsMover", "Stance / Aura / Shapeshift Buttons" }, |
||
213 | { "ShapeshiftButtonsVerticalMover", "Stance / Aura / Shapeshift (Vertical)" }, |
||
214 | |||
215 | { "Separator", "**** Bag and Micro Button Bars ****" }, |
||
216 | { "BagButtonsMover", "Bag Buttons" }, |
||
217 | { "BagButtonsVerticalMover", "Bag Buttons (Vertical)" }, |
||
218 | { "MicroButtonsMover", "Micro Buttons" }, |
||
219 | { "MicroButtonsVerticalMover", "Micro Buttons (Vertical)" }, |
||
220 | |||
221 | { "Separator", "**** Extra Action Bars ****" }, |
||
222 | { "MultiBarBottomLeft", "Bottom Left ActionBar" }, |
||
223 | { "MultiBarBottomRight", "Bottom Right ActionBar" }, |
||
224 | { "MultiBarRight", "Right ActionBar" }, |
||
225 | { "MultiBarLeft", "Right ActionBar 2" }, |
||
226 | |||
227 | { "Separator", "**** Minimap and Minimap Hangers ****" }, |
||
228 | { "MinimapCluster", "MiniMap" }, |
||
229 | { "MinimapZoneTextButton", "MiniMap Zone Text" }, |
||
230 | { "MinimapZoomIn", "MiniMap Zoom In Button" }, |
||
231 | { "MinimapZoomOut", "MiniMap Zoom Out Button" }, |
||
232 | { "MiniMapMailFrame", "MiniMap Mail Notification" }, |
||
233 | { "MiniMapTrackingFrame", "MiniMap Tracking" }, |
||
234 | { "MiniMapMeetingStoneFrame", "MiniMap Meeting Stone" }, |
||
235 | { "MiniMapBattlefieldFrame", "MiniMap Battlefield" }, |
||
236 | { "GameTimeFrame", "MiniMap Day-Night Clock" }, |
||
237 | |||
238 | { "Separator", "**** Battle Grounds Elements ****" }, |
||
239 | { "WorldStateAlwaysUpFrame", "Flags Frame"}, |
||
240 | { "AlwaysUpFrame1", "Alliance Flag"}, |
||
241 | { "AlwaysUpFrame2", "Horde Flag"}, |
||
242 | |||
243 | { "Separator", "**** Dice Roll Frames ****" }, |
||
244 | { "GroupLootFrame1", "Dice Roll Frame 1" }, |
||
245 | { "GroupLootFrame2", "Dice Roll Frame 2" }, |
||
246 | { "GroupLootFrame3", "Dice Roll Frame 3" }, |
||
247 | { "GroupLootFrame4", "Dice Roll Frame 4" }, |
||
248 | |||
249 | { "Separator", "**** Miscellaneous Screen Items ****" }, |
||
250 | { "StaticPopup1", "Static Popup Frame" }, |
||
251 | { "UIErrorsFrame", "UI Errors Frame" }, |
||
252 | { "CastingBarFrame", "Casting Bar" }, |
||
253 | { "BuffFrame", "Buff Window" }, |
||
254 | { "TemporaryEnchantFrame", "Item buff/Debuff Windows" }, |
||
255 | { "TooltipMover", "Tooltip" }, |
||
256 | { "FramerateMover", "Framerate" }, |
||
257 | { "DurabilityFrame", "Durability Damage Portrait" }, |
||
258 | { "QuestWatchFrame", "Quest Tracker" }, |
||
259 | { "QuestTimerFrame", "Quest Timer" }, |
||
260 | { "ComboFrame", "Rogue Combo point counter" }, |
||
261 | { "MirrorTimer1", "Breath/Fatigue Bar" }, |
||
262 | |||
263 | { "Separator", "**** General Info Panel Placement ****" }, |
||
264 | { "UIPanelMover1", "Info Panel 1" }, |
||
265 | { "UIPanelMover2", "Info Panel 2" }, |
||
266 | |||
267 | { "Separator", "**** Specific Info Panels ****" }, |
||
268 | { "CharacterFrame", "Character / Pet / Reputation / Skills" }, |
||
269 | { "TradeSkillFrame", "Trade Skills" }, |
||
270 | { "InspectFrame", "Inspect View" }, |
||
271 | { "SpellBookFrame", "Spell Book" }, |
||
272 | { "LootFrame", "Looting Window" }, |
||
273 | { "TaxiFrame", "Flight Paths" }, |
||
274 | { "QuestLogFrame", "Quest Log" }, |
||
275 | { "MerchantFrame", "Merchant Inventory" }, |
||
276 | { "TradeFrame", "Trade Window" }, |
||
277 | { "FriendsFrame", "Friends / Who / Guild / Raid" }, |
||
278 | { "MacroFrame", "Macros" }, |
||
279 | { "MailFrame", "Mailbox" }, |
||
280 | { "TalentFrame", "Talent Tree" }, |
||
281 | { "PetStableFrame", "Pet Stable" }, |
||
282 | { "AuctionFrame", "Auction House" }, |
||
283 | } |
||
284 | |||
285 | function MoveAnything_AddPredefinedFrames( frameList ) |
||
286 | for i, val in frameList do |
||
287 | if( val[1] ) then |
||
288 | if( val[1] == "Separator" ) then |
||
289 | MoveAnything_AddSeparator( val[2], true ); |
||
290 | else |
||
291 | MoveAnything_AddFrameToMovableList( val[1], val[2], true ); |
||
292 | end |
||
293 | end |
||
294 | end |
||
295 | end |
||
296 | |||
297 | function MoveAnything_AddDefaultFrames() |
||
298 | MoveAnything_AddPredefinedFrames( MoveAnything_DefaultFrameList ); |
||
299 | MoveAnything_AddPredefinedFrames( MoveAnything_PredefinedCustomFrameList ); |
||
300 | end |
||
301 | |||
302 | function MoveAnything_ScaleAllowed( frameName ) |
||
303 | if( MoveAnything_NoScale[ frameName ] or MoveAnything_ScaleWH[ frameName ] ) then |
||
304 | return false; |
||
305 | end |
||
306 | return true; |
||
307 | end |
||
308 | |||
309 | function MAGetParent( frame ) |
||
310 | if ( not frame or not frame.GetParent ) then return; end |
||
311 | if( frame:GetParent() == nil ) then |
||
312 | return UIParent; |
||
313 | end |
||
314 | |||
315 | return frame:GetParent(); |
||
316 | end |
||
317 | |||
318 | function MAGetScale( frame, effective ) |
||
319 | if( frame:GetScale() == nil ) then |
||
320 | return 1; |
||
321 | end |
||
322 | |||
323 | if ( effective ) then |
||
324 | return frame:GetEffectiveScale(); |
||
325 | else |
||
326 | return frame:GetScale(); |
||
327 | end |
||
328 | end |
||
329 | |||
330 | function MoveAnything_RefreshPositions() |
||
331 | if( not MoveAnything_InitRun ) then |
||
332 | return; |
||
333 | end |
||
334 | |||
335 | local frame, parent; |
||
336 | for i, opt in MoveAnything_FrameOptions do |
||
337 | frame = getglobal( opt.name ); |
||
338 | if( frame ) then |
||
339 | if( opt.movable or opt.hidden ) then |
||
340 | MoveAnything_HookFrame( opt.name ); |
||
341 | end |
||
342 | if( opt.movable ) then |
||
343 | if( MoveAnything_DetachFromParent[ opt.name ] ) then |
||
344 | parent = UIParent; |
||
345 | else |
||
346 | parent = MAGetParent( frame ); |
||
347 | end |
||
348 | frame:HiddenClearAllPoints(); |
||
349 | frame:HiddenSetPoint( "BOTTOMLEFT", parent:GetName(), "BOTTOMLEFT", opt.x, opt.y ); |
||
350 | if( opt.scale ) then |
||
351 | frame:HiddenSetScale( opt.scale ); |
||
352 | if( frame.attachedChildren ) then |
||
353 | for i, v in frame.attachedChildren do |
||
354 | v:HiddenSetScale( opt.scale ); |
||
355 | end |
||
356 | end |
||
357 | end |
||
358 | end |
||
359 | if( opt.hidden ) then |
||
360 | MoveAnything_HideFrame( frame ); |
||
361 | end |
||
362 | end |
||
363 | end |
||
364 | end |
||
365 | |||
366 | function MoveAnything_CurrentSettingsName() |
||
367 | local settingname = "default"; |
||
368 | |||
369 | if( MoveAnything_UseCharacterSettings ) then |
||
370 | settingname = GetCVar( "realmName" ).." "..UnitName( "player" ); |
||
371 | end |
||
372 | |||
373 | return settingname; |
||
374 | end |
||
375 | |||
376 | function MoveAnything_CopySettings( fromName, toName ) |
||
377 | if( MoveAnything_CharacterSettings[toName] == nil ) then |
||
378 | MoveAnything_CharacterSettings[toName] = {}; |
||
379 | end |
||
380 | for i, val in MoveAnything_CharacterSettings[fromName] do |
||
381 | MoveAnything_CharacterSettings[toName][i] = val; |
||
382 | end |
||
383 | MoveAnything_FrameOptions = MoveAnything_CharacterSettings[MoveAnything_CurrentSettingsName()]; |
||
384 | MoveAnything_RefreshPositions(); |
||
385 | end |
||
386 | |||
387 | function MoveAnything_Init() |
||
388 | if( MoveAnything_InitRun ) then |
||
389 | return; |
||
390 | end |
||
391 | |||
392 | MoveAnything_AddDefaultFrames(); |
||
393 | |||
394 | -- update settings from old versions |
||
395 | if( MoveAnything_FrameOptions ~= nil ) then |
||
396 | MoveAnything_CharacterSettings["default"] = MoveAnything_FrameOptions; |
||
397 | MoveAnything_FrameOptions = nil; |
||
398 | end |
||
399 | |||
400 | local settingname = MoveAnything_CurrentSettingsName(); |
||
401 | |||
402 | if( MoveAnything_CharacterSettings[settingname] == nil ) then |
||
403 | MoveAnything_CharacterSettings[settingname] = {}; |
||
404 | end |
||
405 | MoveAnything_FrameOptions = MoveAnything_CharacterSettings[settingname]; |
||
406 | |||
407 | -- now add all the custom frames |
||
408 | for i, v in MoveAnything_CustomFrames do |
||
409 | if( not MoveAnything_FindFrame( v.name ) ) then |
||
410 | -- pass true for isDefault, so it doesn't get re-added to the custom list |
||
411 | MoveAnything_AddFrameToMovableList( v.name, v.helpfulname, true ); |
||
412 | end |
||
413 | end |
||
414 | |||
415 | MoveAnything_InitRun = true; |
||
416 | |||
417 | MoveAnything_RefreshPositions(); |
||
418 | end |
||
419 | |||
420 | function MoveAnything_GetFrameCount() |
||
421 | return table.getn( MoveAnything_Frames ); |
||
422 | end |
||
423 | |||
424 | function MoveAnything_ClearFrameOptions( frameName ) |
||
425 | MoveAnything_FrameOptions[frameName] = nil; |
||
426 | MoveAnything_RemoveIfCustom( frameName ); |
||
427 | end |
||
428 | |||
429 | function MoveAnything_FindFrameOptions( frameName, why ) |
||
430 | if( MoveAnything_FrameOptions == nil ) then |
||
431 | return; |
||
432 | end |
||
433 | return MoveAnything_FrameOptions[frameName]; |
||
434 | end |
||
435 | |||
436 | function MoveAnything_FindFrame( frameName ) |
||
437 | for i in MoveAnything_Frames do |
||
438 | if( MoveAnything_Frames[i].name == frameName ) then |
||
439 | return MoveAnything_Frames[i]; |
||
440 | end |
||
441 | end |
||
442 | return nil; |
||
443 | end |
||
444 | |||
445 | function MoveAnything_RemoveIfCustom( frameName ) |
||
446 | local removed = false; |
||
447 | for i,v in MoveAnything_CustomFrames do |
||
448 | if( v.name == frameName ) then |
||
449 | table.remove( MoveAnything_CustomFrames, i ); |
||
450 | removed = true; |
||
451 | break; |
||
452 | end |
||
453 | end |
||
454 | if( removed ) then |
||
455 | for i,v in MoveAnything_Frames do |
||
456 | if( v.name == frameName ) then |
||
457 | table.remove( MoveAnything_Frames, i ); |
||
458 | break; |
||
459 | end |
||
460 | end |
||
461 | end |
||
462 | end |
||
463 | |||
464 | function MoveAnything_PreventExternalVisibility( frame ) |
||
465 | frame.MAWantsToBeVisible = frame:IsVisible(); |
||
466 | frame:Hide(); |
||
467 | frame.HiddenShow = frame.Show; |
||
468 | frame.HiddenHide = frame.Hide; |
||
469 | frame.HiddenIsVisible = frame.IsVisible; |
||
470 | frame.Show = MoveAnything_HiddenShow; |
||
471 | frame.Hide = MoveAnything_HiddenHide; |
||
472 | frame.IsVisible = MoveAnything_HiddenIsVisible; |
||
473 | if( frame.attachedChildren ) then |
||
474 | for i, val in frame.attachedChildren do |
||
475 | MoveAnything_PreventExternalVisibility( val ); |
||
476 | end |
||
477 | end |
||
478 | end |
||
479 | |||
480 | function MoveAnything_AllowExternalVisibility( frame ) |
||
481 | frame.Show = frame.HiddenShow; |
||
482 | frame.Hide = frame.HiddenHide; |
||
483 | frame.IsVisible = frame.HiddenIsVisible; |
||
484 | frame.HiddenShow = nil; |
||
485 | frame.HiddenHide = nil; |
||
486 | frame.HiddenIsVisible = nil; |
||
487 | if( frame.MAWantsToBeVisible ) then |
||
488 | frame.MAWantsToBeVisible = nil |
||
489 | frame:Show(); |
||
490 | end |
||
491 | if( frame.attachedChildren ) then |
||
492 | for i, val in frame.attachedChildren do |
||
493 | MoveAnything_AllowExternalVisibility( val ); |
||
494 | end |
||
495 | end |
||
496 | end |
||
497 | |||
498 | function MoveAnything_PreventExternalMovement( frame ) |
||
499 | if( frame.HiddenSetPoint == nil ) then |
||
500 | frame.HiddenSetPoint = frame.SetPoint; |
||
501 | frame.SetPoint = function() end; |
||
502 | end |
||
503 | if( frame.HiddenSetAllPoints == nil ) then |
||
504 | frame.HiddenSetAllPoints = frame.SetAllPoints; |
||
505 | frame.SetAllPoints = function() end; |
||
506 | end |
||
507 | if( frame.HiddenClearAllPoints == nil ) then |
||
508 | frame.HiddenClearAllPoints = frame.ClearAllPoints; |
||
509 | frame.ClearAllPoints = function() end; |
||
510 | end |
||
511 | if( frame.HiddenSetScale == nil ) then |
||
512 | frame.HiddenSetScale = frame.SetScale; |
||
513 | frame.SetScale = function() end; |
||
514 | end |
||
515 | if( frame.attachedChildren ) then |
||
516 | for i, val in frame.attachedChildren do |
||
517 | MoveAnything_PreventExternalMovement( val ); |
||
518 | end |
||
519 | end |
||
520 | end |
||
521 | |||
522 | function MoveAnything_AllowExternalMovement( frame ) |
||
523 | if( frame.HiddenSetPoint ) then |
||
524 | frame.SetPoint = frame.HiddenSetPoint; |
||
525 | frame.HiddenSetPoint = nil; |
||
526 | end |
||
527 | if( frame.HiddenSetAllPoints ) then |
||
528 | frame.SetAllPoints = frame.HiddenSetAllPoints; |
||
529 | frame.HiddenSetAllPoints = nil; |
||
530 | end |
||
531 | if( frame.HiddenClearAllPoints ) then |
||
532 | frame.ClearAllPoints = frame.HiddenClearAllPoints; |
||
533 | frame.HiddenClearAllPoints = nil; |
||
534 | end |
||
535 | if( frame.HiddenSetScale ) then |
||
536 | frame.SetScale = frame.HiddenSetScale; |
||
537 | frame.HiddenSetScale = nil; |
||
538 | end |
||
539 | if( frame.attachedChildren ) then |
||
540 | for i, val in frame.attachedChildren do |
||
541 | MoveAnything_AllowExternalMovement( val ); |
||
542 | end |
||
543 | end |
||
544 | end |
||
545 | |||
546 | function MoveAnything_HookFrame( frameName ) |
||
547 | local frame = getglobal( frameName ); |
||
548 | |||
549 | if( not MoveAnything_IsFrameHooked( frameName ) ) then |
||
550 | local opt = MoveAnything_FindFrameOptions( frameName, "HookFrame" ); |
||
551 | if( opt == nil ) then |
||
552 | MoveAnything_FrameOptions[frameName] = {}; |
||
553 | opt = MoveAnything_FrameOptions[frameName]; |
||
554 | opt.movable = false; |
||
555 | opt.hidden = false; |
||
556 | end |
||
557 | opt.name = frameName; |
||
558 | opt.originalLeft, opt.originalBottom = MoveAnything_GetRelativeBottomLeft( frame ); |
||
559 | if( MoveAnything_ScaleWH[ frameName ] ) then |
||
560 | opt.originalWidth = frame:GetWidth(); |
||
561 | opt.originalHeight = frame:GetHeight(); |
||
562 | opt.originalScale = nil; |
||
563 | else |
||
564 | opt.originalWidth = nil; |
||
565 | opt.originalHeight = nil; |
||
566 | opt.originalScale = MAGetScale( frame ); |
||
567 | end |
||
568 | |||
569 | end |
||
570 | if( UIPanelWindows[frame:GetName()] ) then |
||
571 | local left = GetLeftFrame(); |
||
572 | local center = GetCenterFrame(); |
||
573 | |||
574 | if( frame == left ) then |
||
575 | UIParent.left = nil; |
||
576 | if( center ) then |
||
577 | MovePanelToLeft(); |
||
578 | end |
||
579 | elseif( frame == center and left ) then |
||
580 | UIParent.center = nil; |
||
581 | end |
||
582 | local opt = MoveAnything_FindFrameOptions( frameName, "Hook UIPanel" ); |
||
583 | if( opt ) then |
||
584 | opt.UIPanelWindows = UIPanelWindows[frame:GetName()]; |
||
585 | end |
||
586 | UIPanelWindows[frame:GetName()] = nil; |
||
587 | end |
||
588 | if( frame.OnMoveAnythingHook ) then |
||
589 | frame.OnMoveAnythingHook( frame ); |
||
590 | end |
||
591 | MoveAnything_PreventExternalMovement( frame ); |
||
592 | end |
||
593 | |||
594 | function MoveAnything_IsFrameHooked( frameName ) |
||
595 | if( frameName == nil ) then return; end |
||
596 | local opt = MoveAnything_FindFrameOptions( frameName, "IsFrameHooked "..frameName ); |
||
597 | if( opt ) then |
||
598 | if( opt.movable or opt.hidden ) then |
||
599 | return true; |
||
600 | end |
||
601 | end |
||
602 | return false; |
||
603 | end |
||
604 | |||
605 | function MoveAnything_IsFrameHidden( frameName ) |
||
606 | if( frameName == nil ) then return; end |
||
607 | local opt = MoveAnything_FindFrameOptions( frameName, "IsFrameHooked "..frameName ); |
||
608 | if( opt ) then |
||
609 | if( opt.hidden ) then |
||
610 | return true; |
||
611 | end |
||
612 | end |
||
613 | return false; |
||
614 | end |
||
615 | |||
616 | function MoveAnything_AddFrameToMovableList( frameName, helpfulName, isDefault ) |
||
617 | if( not MoveAnything_FindFrame( frameName ) ) then |
||
618 | local frame = getglobal( frameName ); |
||
619 | local listOptions = {}; |
||
620 | listOptions.name = frameName; |
||
621 | listOptions.helpfulName = helpfulName; |
||
622 | if( listOptions.helpfulName == nil ) then |
||
623 | listOptions.helpfulName = listOptions.name; |
||
624 | end |
||
625 | table.insert( MoveAnything_Frames, listOptions ); |
||
626 | -- if this is not a built-in default frame, we also need to add it to CustomFrames |
||
627 | if( not isDefault ) then |
||
628 | table.insert( MoveAnything_CustomFrames, listOptions ); |
||
629 | end |
||
630 | if( MAOptions:IsVisible() ) then |
||
631 | MoveAnythingOptions_Update(); |
||
632 | end |
||
633 | end |
||
634 | end |
||
635 | |||
636 | function MoveAnything_AddSeparator( separatorText, isDefault ) |
||
637 | local listOptions = {}; |
||
638 | listOptions.name = nil; |
||
639 | listOptions.helpfulName = separatorText; |
||
640 | table.insert( MoveAnything_Frames, listOptions ); |
||
641 | -- if this is not a built-in default frame, we also need to add it to CustomFrames |
||
642 | if( not isDefault ) then |
||
643 | table.insert( MoveAnything_CustomFrames, listOptions ); |
||
644 | end |
||
645 | if( MAOptions:IsVisible() ) then |
||
646 | MoveAnythingOptions_Update(); |
||
647 | end |
||
648 | end |
||
649 | |||
650 | function MoveAnything_SizingAnchor( button ) |
||
651 | local s, e = string.find( button:GetName(), "Resize_" ) |
||
652 | local anchorto = string.sub( this:GetName(), e + 1 ); |
||
653 | local anchor; |
||
654 | |||
655 | if( anchorto == "LEFT" ) then anchor = "RIGHT"; |
||
656 | elseif( anchorto == "RIGHT" ) then anchor = "LEFT"; |
||
657 | elseif( anchorto == "TOP" ) then anchor = "BOTTOM"; |
||
658 | elseif( anchorto == "BOTTOM" ) then anchor = "TOP"; |
||
659 | end |
||
660 | |||
661 | return anchorto, anchor; |
||
662 | end |
||
663 | |||
664 | function MoveAnything_Move( moveFrameName, helpfulName ) |
||
665 | if( MoveAnything_MoveOnlyWhenVisible[ moveFrameName ] ) then |
||
666 | local frame = getglobal( moveFrameName ); |
||
667 | if( frame == nil or not frame:IsVisible() ) then |
||
668 | Error( "That window may only be moved when it is visible" ); |
||
669 | return; |
||
670 | end |
||
671 | end |
||
672 | |||
673 | if( not MoveAnything_FindMAFrame( moveFrameName ) ) then |
||
674 | local frame = MoveAnything_FindAvailableFrame(); |
||
675 | if( frame == nil ) then |
||
676 | Error( "You can only move "..MOVEANYTHING_MOVEATONETIME.." frames at once." ); |
||
677 | elseif( getglobal( moveFrameName ) == nil ) then |
||
678 | Error( "\""..moveFrameName.."\" is not a valid frame name." ); |
||
679 | else |
||
680 | local moveFrame = getglobal( moveFrameName ); |
||
681 | MoveAnything_AddFrameToMovableList( moveFrameName, helpfulName ); |
||
682 | MoveAnything_HookFrame( moveFrameName ); |
||
683 | MoveAnything_Attach( frame, getglobal( moveFrameName ) ); |
||
684 | if( moveFrame.OnMoveAnythingPostAttach ) then |
||
685 | moveFrame.OnMoveAnythingPostAttach( moveFrame ); |
||
686 | end |
||
687 | if( MAOptions:IsVisible() ) then |
||
688 | MoveAnythingOptions_Update(); |
||
689 | end |
||
690 | end |
||
691 | end |
||
692 | end |
||
693 | |||
694 | function MA_Mover(dir) |
||
695 | if ( dir > 0 ) then |
||
696 | if ( CurrentMover < 20 ) then |
||
697 | CurrentMover = CurrentMover + 1; |
||
698 | else |
||
699 | return; |
||
700 | end |
||
701 | else |
||
702 | if ( CurrentMover > 1 ) then |
||
703 | CurrentMover = CurrentMover - 1; |
||
704 | else |
||
705 | return; |
||
706 | end |
||
707 | end |
||
708 | MA_NudgerFrameRefresh(); |
||
709 | end |
||
710 | |||
711 | function MA_GetFirstMover() |
||
712 | for i = 1, 20 do |
||
713 | if ( getglobal("MoveAnything"..i):IsVisible() ) then |
||
714 | return i; |
||
715 | end |
||
716 | end |
||
717 | end |
||
718 | |||
719 | function MoveAnythingOptions_OnHide() |
||
720 | MA_MoverOnHide(); |
||
721 | end |
||
722 | |||
723 | function MA_MoverOnShow() |
||
724 | ResizingNudger:Show(); |
||
725 | CurrentMover = tonumber(this:GetID()); |
||
726 | MA_NudgerFrameRefresh(); |
||
727 | end |
||
728 | |||
729 | function MA_MoverOnHide() |
||
730 | if ( MA_GetFirstMover() ) then |
||
731 | CurrentMover = MA_GetFirstMover(); |
||
732 | MA_NudgerFrameRefresh(); |
||
733 | elseif ( MAOptions:IsVisible() ) then |
||
734 | CurrentMover = 1; |
||
735 | MA_NudgerFrameRefresh(1); |
||
736 | else |
||
737 | ResizingNudger:Hide(); |
||
738 | end |
||
739 | end |
||
740 | |||
741 | function MA_NudgerOnShow() |
||
742 | MA_NudgerFrameRefresh(); |
||
743 | end |
||
744 | |||
745 | function MA_NudgerFrameRefresh(reset) |
||
746 | if ( CurrentMover < 20 ) then |
||
747 | ResizingNudger_MoverPlus:Enable(); |
||
748 | else |
||
749 | ResizingNudger_MoverPlus:Disable(); |
||
750 | end |
||
751 | if ( CurrentMover > 1 ) then |
||
752 | ResizingNudger_MoverMinus:Enable(); |
||
753 | else |
||
754 | ResizingNudger_MoverMinus:Disable(); |
||
755 | end |
||
756 | |||
757 | local labelText = "MA "..CurrentMover.."/20"; |
||
758 | if ( not reset and getglobal("MoveAnything"..CurrentMover).tagged ) then |
||
759 | labelText = labelText.."\n"..getglobal("MoveAnything"..CurrentMover).tagged:GetName(); |
||
760 | end |
||
761 | ResizingNudgerTitle:SetText(labelText); |
||
762 | end |
||
763 | |||
764 | function MA_NudgerOnUpdate() |
||
765 | -- This code is ripped from DiscordART :) |
||
766 | local obj = GetMouseFocus(); |
||
767 | local text = "MouseOver: "; |
||
768 | local label = ResizingNudgerMouseOver; |
||
769 | |||
770 | if (obj and obj ~= WorldFrame and obj:GetName()) then |
||
771 | text = text..obj:GetName(); |
||
772 | if (obj:GetParent() and obj:GetParent() ~= WorldFrame and obj:GetParent():GetName() ) then |
||
773 | text = text.."\nParent: "..obj:GetParent():GetName(); |
||
774 | if (obj:GetParent():GetParent() and obj:GetParent():GetParent() ~= WorldFrame and obj:GetParent():GetParent():GetName()) then |
||
775 | text = text.."\nParent's Parent: "..obj:GetParent():GetParent():GetName(); |
||
776 | end |
||
777 | end |
||
778 | end |
||
779 | |||
780 | if ( not string.find(text, "ResizingNudger") ) then |
||
781 | label:SetText(text); |
||
782 | else |
||
783 | label:SetText("MouseOver: "); |
||
784 | end |
||
785 | end |
||
786 | |||
787 | function MoveAnything_MoveFrameUnderCursor() |
||
788 | local obj = GetMouseFocus(); |
||
789 | if (obj and obj ~= WorldFrame and obj ~= UIParent and obj:GetName()) then |
||
790 | MoveAnything_ToggleMove( obj:GetName() ); |
||
791 | end |
||
792 | end |
||
793 | |||
794 | function MA_Center(lock) |
||
795 | local mover = getglobal("MoveAnything"..CurrentMover); |
||
796 | if ( lock == 0 ) then |
||
797 | -- Both |
||
798 | mover:ClearAllPoints(); |
||
799 | mover:SetPoint("CENTER",0,0); |
||
800 | else |
||
801 | local x, y; |
||
802 | x = mover:GetLeft(); |
||
803 | y = mover:GetBottom(); |
||
804 | |||
805 | mover:ClearAllPoints(); |
||
806 | if ( lock == 1 ) then |
||
807 | --Horizontal |
||
808 | mover:SetPoint("CENTER",0,0); |
||
809 | x = mover:GetLeft(); |
||
810 | mover:ClearAllPoints(); |
||
811 | mover:SetPoint("BOTTOMLEFT",x,y); |
||
812 | elseif ( lock == 2 ) then |
||
813 | -- Vertical |
||
814 | mover:SetPoint("CENTER",0,0); |
||
815 | y = mover:GetBottom(); |
||
816 | mover:ClearAllPoints(); |
||
817 | mover:SetPoint("BOTTOMLEFT",x,y); |
||
818 | end |
||
819 | end |
||
820 | |||
821 | MoveAnything_UpdatePosition(mover); |
||
822 | end |
||
823 | |||
824 | function MA_Nudge(dir, button) |
||
825 | local x, y, offsetX, offsetY, parent, mover, offsetAmount; |
||
826 | mover = getglobal("MoveAnything"..CurrentMover); |
||
827 | |||
828 | if ( not mover:IsVisible() ) then |
||
829 | return; |
||
830 | end |
||
831 | |||
832 | x = mover:GetLeft(); |
||
833 | y = mover:GetBottom(); |
||
834 | |||
835 | if ( button == "RightButton" ) then |
||
836 | if ( IsShiftKeyDown() ) then |
||
837 | offsetAmount = 250; |
||
838 | else |
||
839 | offsetAmount = 50; |
||
840 | end |
||
841 | else |
||
842 | if ( IsShiftKeyDown() ) then |
||
843 | offsetAmount = 10; |
||
844 | else |
||
845 | offsetAmount = 1; |
||
846 | end |
||
847 | end |
||
848 | |||
849 | if ( dir == 1 ) then |
||
850 | offsetX = 0; |
||
851 | offsetY = offsetAmount; |
||
852 | elseif ( dir == 2 ) then |
||
853 | offsetX = 0; |
||
854 | offsetY = -offsetAmount; |
||
855 | elseif ( dir == 3 ) then |
||
856 | offsetX = -offsetAmount; |
||
857 | offsetY = 0; |
||
858 | elseif ( dir == 4 ) then |
||
859 | offsetX = offsetAmount; |
||
860 | offsetY = 0; |
||
861 | end |
||
862 | |||
863 | mover:ClearAllPoints(); |
||
864 | mover:SetPoint("BOTTOMLEFT","UIParent","BOTTOMLEFT",x + offsetX, y + offsetY); |
||
865 | MoveAnything_UpdatePosition(mover); |
||
866 | end |
||
867 | |||
868 | function MoveAnything_UpdatePosition( moveFrame ) |
||
869 | local x, y, parent; |
||
870 | x = nil; |
||
871 | y = nil; |
||
872 | parent = nil; |
||
873 | if( moveFrame.tagged ) then |
||
874 | if( MoveAnything_DetachFromParent[ moveFrame.tagged:GetName() ] ) then |
||
875 | x = moveFrame.tagged:GetLeft(); |
||
876 | y = moveFrame.tagged:GetBottom(); |
||
877 | parent = UIParent; |
||
878 | else |
||
879 | x, y = MoveAnything_GetRelativeBottomLeft( moveFrame.tagged ); |
||
880 | parent = MAGetParent( moveFrame.tagged ); |
||
881 | end |
||
882 | local opt = MoveAnything_FindFrameOptions( moveFrame.tagged:GetName(), "UpdatePosition" ); |
||
883 | opt.x = x; |
||
884 | opt.y = y; |
||
885 | end |
||
886 | return x, y, parent; |
||
887 | end |
||
888 | |||
889 | function MoveAnything_StopMoving( moveFrameName ) |
||
890 | local frame = MoveAnything_FindMAFrame( moveFrameName ); |
||
891 | if( frame ) then |
||
892 | MoveAnything_Detach( frame ); |
||
893 | if( MAOptions:IsVisible() ) then |
||
894 | MoveAnythingOptions_Update(); |
||
895 | end |
||
896 | end |
||
897 | end |
||
898 | |||
899 | function MoveAnything_ToggleMove( moveFrameName ) |
||
900 | if( MoveAnything_FindMAFrame( moveFrameName ) ) then |
||
901 | MoveAnything_StopMoving( moveFrameName ); |
||
902 | else |
||
903 | MoveAnything_Move( moveFrameName ); |
||
904 | end |
||
905 | end |
||
906 | |||
907 | function MoveAnything_FindMAFrame( moveFrameName ) |
||
908 | local frame; |
||
909 | for i = 1, MOVEANYTHING_MOVEATONETIME, 1 do |
||
910 | frame = getglobal( "MoveAnything"..i ); |
||
911 | if( type(frame) ~= "nil" and frame:IsVisible() and frame.tagged == getglobal( moveFrameName ) ) then |
||
912 | return frame; |
||
913 | end |
||
914 | end |
||
915 | return nil; |
||
916 | end |
||
917 | |||
918 | function MoveAnything_FindAvailableFrame() |
||
919 | local frame; |
||
920 | for i = 1, MOVEANYTHING_MOVEATONETIME, 1 do |
||
921 | frame = getglobal( "MoveAnything"..i ); |
||
922 | if( not( frame:IsVisible() ) ) then |
||
923 | return frame; |
||
924 | end |
||
925 | end |
||
926 | return nil; |
||
927 | end |
||
928 | |||
929 | function MoveAnything_OnSizeChanged( this ) |
||
930 | if( this.tagged ) then |
||
931 | local s, w, h, opt; |
||
932 | |||
933 | opt = MoveAnything_FindFrameOptions( this.tagged:GetName(), "OnSizeChanged" ); |
||
934 | |||
935 | if( MoveAnything_ScaleWH[ this.tagged:GetName() ] ) then |
||
936 | this.tagged:SetHeight( this:GetHeight() ); |
||
937 | this.tagged:SetWidth( this:GetWidth() ); |
||
938 | -- if this ever needs to apply to a frame with attached children, |
||
939 | -- we're going to have to figure out what to do, since setting |
||
940 | -- the W and H directly is definitely incorrect |
||
941 | |||
942 | if( opt ) then |
||
943 | opt.width = this:GetHeight(); |
||
944 | opt.height = this:GetHeight(); |
||
945 | end |
||
946 | else |
||
947 | if( this.MASizingAnchor == "LEFT" or this.MASizingAnchor == "RIGHT" ) then |
||
948 | w = this:GetWidth(); |
||
949 | h = w * (this.tagged:GetHeight() / this.tagged:GetWidth()); |
||
950 | if( h < 16 ) then |
||
951 | h = 16; |
||
952 | w = h * (this.tagged:GetWidth() / this.tagged:GetHeight()); |
||
953 | end |
||
954 | else |
||
955 | h = this:GetHeight(); |
||
956 | w = h * (this.tagged:GetWidth() / this.tagged:GetHeight()); |
||
957 | if( w < 16 ) then |
||
958 | w = 16; |
||
959 | h = w * (this.tagged:GetHeight() / this.tagged:GetWidth()); |
||
960 | end |
||
961 | end |
||
962 | s = this:GetWidth() / this.tagged:GetWidth(); |
||
963 | s = s / MAGetScale( this.tagged:GetParent(), 1 ) * UIParent:GetScale(); |
||
964 | |||
965 | if( MoveAnything_ScaleAllowed( this.tagged:GetName() ) ) then |
||
966 | if( opt ) then |
||
967 | opt.scale = s; |
||
968 | end |
||
969 | |||
970 | this.tagged:HiddenSetScale( s ); |
||
971 | if( this.tagged.attachedChildren ) then |
||
972 | for i, v in this.tagged.attachedChildren do |
||
973 | v:HiddenSetScale( s ); |
||
974 | end |
||
975 | end |
||
976 | end |
||
977 | this:SetWidth( w ); |
||
978 | this:SetHeight( h ); |
||
979 | end |
||
980 | end |
||
981 | end |
||
982 | |||
983 | function MoveAnything_GetParentScaleRatio( frame ) |
||
984 | return MAGetScale( frame, 1 ); |
||
985 | end |
||
986 | |||
987 | --[[ |
||
988 | function MoveAnything_GetRelativeBottomLeft( tagFrame ) |
||
989 | x = tagFrame:GetLeft(); |
||
990 | if( x ) then |
||
991 | x = x - MAGetParent( tagFrame ):GetLeft() * MAGetScale( tagFrame ); |
||
992 | end |
||
993 | y = tagFrame:GetBottom(); |
||
994 | if( y ) then |
||
995 | y = y - MAGetParent( tagFrame ):GetBottom() * MAGetScale( tagFrame ); |
||
996 | end |
||
997 | return x,y; |
||
998 | end |
||
999 | ]] |
||
1000 | |||
1001 | function MoveAnything_GetRelativeBottomLeft( tagFrame ) |
||
1002 | x = tagFrame:GetLeft(); |
||
1003 | if( x ) then |
||
1004 | x = x - MAGetParent( tagFrame ):GetLeft() * MAGetScale( MAGetParent( tagFrame ) ) / MAGetScale( tagFrame ); |
||
1005 | end |
||
1006 | y = tagFrame:GetBottom(); |
||
1007 | if( y ) then |
||
1008 | y = y - MAGetParent( tagFrame ):GetBottom() * MAGetScale( MAGetParent( tagFrame ) ) / MAGetScale( tagFrame ); |
||
1009 | end |
||
1010 | return x,y; |
||
1011 | end |
||
1012 | |||
1013 | function MoveAnything_Attach( moveFrame, tagFrame ) |
||
1014 | if( moveFrame.tagged ) then |
||
1015 | MoveAnything_Detach( moveFrame ); |
||
1016 | end |
||
1017 | |||
1018 | local listOptions = MoveAnything_FindFrame( tagFrame:GetName() ); |
||
1019 | local frameOptions = MoveAnything_FindFrameOptions( tagFrame:GetName(), "Attach" ); |
||
1020 | frameOptions.movable = true; |
||
1021 | moveFrame.helpfulName = listOptions.helpfulName; |
||
1022 | |||
1023 | if( tagFrame.OnBeginMove ) then |
||
1024 | if( not tagFrame:OnBeginMove() ) then |
||
1025 | MoveAnything_Detach( moveFrame ); |
||
1026 | return; |
||
1027 | end |
||
1028 | end |
||
1029 | |||
1030 | local x, y; |
||
1031 | if( tagFrame:GetLeft() == nil ) then tagFrame:Show(); tagFrame:Hide(); end |
||
1032 | x = tagFrame:GetLeft() * MAGetScale( tagFrame, 1 ) / UIParent:GetScale(); |
||
1033 | x = x - MAGetParent( tagFrame ):GetLeft() * MAGetScale( MAGetParent( tagFrame ), 1 ) / UIParent:GetScale(); |
||
1034 | |||
1035 | y = tagFrame:GetBottom() * MAGetScale( tagFrame, 1 ) / UIParent:GetScale(); |
||
1036 | y = y - MAGetParent( tagFrame ):GetBottom() * MAGetScale( MAGetParent( tagFrame ), 1 ) / UIParent:GetScale(); |
||
1037 | |||
1038 | moveFrame:ClearAllPoints(); |
||
1039 | moveFrame:SetPoint( "BOTTOMLEFT", MAGetParent( tagFrame ):GetName(), "BOTTOMLEFT", x, y ); |
||
1040 | moveFrame:SetWidth( tagFrame:GetWidth() * MAGetScale( tagFrame , 1 ) / UIParent:GetScale() ); |
||
1041 | moveFrame:SetHeight( tagFrame:GetHeight() * MAGetScale( tagFrame, 1 ) / UIParent:GetScale() ); moveFrame:SetFrameLevel( tagFrame:GetFrameLevel() + 1 ); |
||
1042 | tagFrame:HiddenClearAllPoints(); |
||
1043 | tagFrame:HiddenSetPoint( "BOTTOMLEFT", moveFrame:GetName(), "BOTTOMLEFT", 0, 0 ); |
||
1044 | |||
1045 | moveFrame.tagged = tagFrame; |
||
1046 | |||
1047 | moveFrame:Show(); |
||
1048 | end |
||
1049 | |||
1050 | function MoveAnything_Detach( moveFrame ) |
||
1051 | if( moveFrame.tagged ) then |
||
1052 | local x, y, parent = MoveAnything_UpdatePosition( moveFrame ); |
||
1053 | moveFrame.tagged:HiddenClearAllPoints(); |
||
1054 | moveFrame.tagged:HiddenSetPoint( "BOTTOMLEFT", parent:GetName(), "BOTTOMLEFT", x, y ); |
||
1055 | end |
||
1056 | moveFrame:Hide(); |
||
1057 | moveFrame.tagged = nil; |
||
1058 | end |
||
1059 | |||
1060 | function MoveAnything_ResetFrameOptions( frameName ) |
||
1061 | MoveAnything_StopMoving( frameName ); |
||
1062 | local frame = getglobal( frameName ); |
||
1063 | if ( not frame ) then return; end |
||
1064 | |||
1065 | if( frame.OnMoveAnythingPreReset ) then |
||
1066 | frame.OnMoveAnythingPreReset( frame ); |
||
1067 | end |
||
1068 | |||
1069 | MoveAnything_AllowExternalMovement( frame ); |
||
1070 | local opt = MoveAnything_FindFrameOptions( frameName, "Reset Frame Options" ); |
||
1071 | local left = nil; |
||
1072 | local bottom = nil; |
||
1073 | local hidden = false; |
||
1074 | local width = nil; |
||
1075 | local height = nil; |
||
1076 | if( opt ) then |
||
1077 | left = opt.originalLeft; |
||
1078 | bottom = opt.originalBottom; |
||
1079 | width = opt.originalWidth; |
||
1080 | height = opt.originalHeight; |
||
1081 | if( opt.hidden ) then |
||
1082 | opt.hidden = false; |
||
1083 | MoveAnything_ShowFrame( frame ); |
||
1084 | end |
||
1085 | end |
||
1086 | frame:ClearAllPoints(); |
||
1087 | frame:SetPoint( "BOTTOMLEFT", MAGetParent( frame ):GetName(), "BOTTOMLEFT", left, bottom ); |
||
1088 | if( MoveAnything_ScaleAllowed( frame:GetName() ) ) then |
||
1089 | frame:SetScale( opt.originalScale ); |
||
1090 | end |
||
1091 | if( width ) then frame:SetWidth( width ); end |
||
1092 | if( height ) then frame:SetHeight( height ); end |
||
1093 | if( frame.attachedChildren ) then |
||
1094 | for i, v in frame.attachedChildren do |
||
1095 | if( MoveAnything_ScaleAllowed( frame:GetName() ) ) then |
||
1096 | v:SetScale( opt.originalScale ); |
||
1097 | end |
||
1098 | end |
||
1099 | end |
||
1100 | |||
1101 | if( frame.OnMoveAnythingPostReset ) then |
||
1102 | frame.OnMoveAnythingPostReset( frame ); |
||
1103 | end |
||
1104 | |||
1105 | frame.attachedChildren = nil; |
||
1106 | if( opt and opt.UIPanelWindows ) then |
||
1107 | UIPanelWindows[frameName] = opt.UIPanelWindows; |
||
1108 | if( frame:IsVisible() ) then |
||
1109 | frame:Hide(); |
||
1110 | ShowUIPanel( frame ); |
||
1111 | end |
||
1112 | end |
||
1113 | MoveAnything_ClearFrameOptions( frameName ); |
||
1114 | if( MAOptions:IsVisible() ) then |
||
1115 | MoveAnythingOptions_Update(); |
||
1116 | end |
||
1117 | end |
||
1118 | |||
1119 | function MoveAnything_ToggleOptionsMenu() |
||
1120 | if( MAOptions:IsVisible() ) then |
||
1121 | MAOptions:Hide(); |
||
1122 | else |
||
1123 | MAOptions:Show(); |
||
1124 | end |
||
1125 | end |
||
1126 | |||
1127 | function MoveAnythingOptions_OnShow() |
||
1128 | ResizingNudger:Show(); |
||
1129 | MoveAnythingOptions_Update(); |
||
1130 | end |
||
1131 | |||
1132 | function MoveAnything_GetIndex( frame ) |
||
1133 | local index = tonumber( string.sub( frame:GetName(), string.len( "MAMove" ) + 1, -1 ) ); |
||
1134 | return index + FauxScrollFrame_GetOffset( MAScrollFrame ); |
||
1135 | end |
||
1136 | |||
1137 | function MoveAnything_GetMovableFrame( optionsListFrame ) |
||
1138 | local index = MoveAnything_GetIndex( optionsListFrame ); |
||
1139 | return getglobal( MoveAnything_Frames[index].name ); |
||
1140 | end |
||
1141 | |||
1142 | function MoveAnything_OnMoveCheck( button ) |
||
1143 | local frame = MoveAnything_GetMovableFrame( MAGetParent( button ) ); |
||
1144 | if ( not frame ) then return; end |
||
1145 | if( button:GetChecked() ) then |
||
1146 | MoveAnything_Move( frame:GetName() ); |
||
1147 | else |
||
1148 | MoveAnything_StopMoving( frame:GetName() ); |
||
1149 | end |
||
1150 | if( MAOptions:IsVisible() ) then |
||
1151 | MoveAnythingOptions_Update(); |
||
1152 | end |
||
1153 | end |
||
1154 | |||
1155 | function MoveAnything_HiddenShow( this ) |
||
1156 | this.MAWantsToBeVisible = true; |
||
1157 | end |
||
1158 | |||
1159 | function MoveAnything_HiddenHide( this ) |
||
1160 | this.MAWantsToBeVisible = false; |
||
1161 | end |
||
1162 | |||
1163 | function MoveAnything_HiddenIsVisible( this ) |
||
1164 | return this.MAWantsToBeVisible; |
||
1165 | end |
||
1166 | |||
1167 | function MoveAnything_HideFrame( frame ) |
||
1168 | if ( not frame ) then return; end |
||
1169 | if ( not MoveAnything_IsFrameHooked( frame:GetName() ) ) then |
||
1170 | MoveAnything_HookFrame( frame:GetName() ); |
||
1171 | end |
||
1172 | local opt = MoveAnything_FindFrameOptions( frame:GetName(), "HideFrame" ); |
||
1173 | opt.hidden = true; |
||
1174 | frame.MAWantsToBeVisible = frame:IsVisible(); |
||
1175 | if( MoveAnything_HideList[ frame:GetName() ] ) then |
||
1176 | for hIndex, hideEntry in MoveAnything_HideList[ frame:GetName() ] do |
||
1177 | local val = getglobal( hideEntry[1] ); |
||
1178 | local hideType; |
||
1179 | for i = 2, table.getn( hideEntry ) do |
||
1180 | hideType = hideEntry[i]; |
||
1181 | if( type( hideType ) == "function" ) then |
||
1182 | hideType( false ); |
||
1183 | elseif( hideType == "DISABLEMOUSE" ) then |
||
1184 | val:EnableMouse( false ); |
||
1185 | elseif( hideType == "FRAME" ) then |
||
1186 | MoveAnything_PreventExternalVisibility( val ); |
||
1187 | elseif( hideType == "WH" ) then |
||
1188 | MoveAnything_StopMoving( frame:GetName() ); |
||
1189 | val:SetWidth( 1 ); |
||
1190 | val:SetHeight( 1 ); |
||
1191 | else |
||
1192 | val:DisableDrawLayer( hideType ); |
||
1193 | end |
||
1194 | end |
||
1195 | end |
||
1196 | elseif( MoveAnything_HideUsingWH[ frame:GetName() ] ) then |
||
1197 | MoveAnything_StopMoving( frame:GetName() ); |
||
1198 | frame:SetWidth( 1 ); |
||
1199 | frame:SetHeight( 1 ); |
||
1200 | else |
||
1201 | MoveAnything_PreventExternalVisibility( frame ); |
||
1202 | end |
||
1203 | end |
||
1204 | |||
1205 | function MoveAnything_ShowFrame( frame ) |
||
1206 | -- if being hidden is the only thing we're controlling with this frame |
||
1207 | -- do a full reset instead of a simple show |
||
1208 | if ( not frame ) then return; end |
||
1209 | local opt = MoveAnything_FindFrameOptions( frame:GetName(), "ShowFrame" ); |
||
1210 | if( opt and opt.hidden ) then |
||
1211 | if( not opt.movable ) then |
||
1212 | MoveAnything_ResetFrameOptions( frame:GetName() ); |
||
1213 | return; |
||
1214 | end |
||
1215 | end |
||
1216 | |||
1217 | if( opt ) then |
||
1218 | opt.hidden = false; |
||
1219 | end |
||
1220 | if( MoveAnything_HideList[ frame:GetName() ] ) then |
||
1221 | for hIndex, hideEntry in MoveAnything_HideList[ frame:GetName() ] do |
||
1222 | local val = getglobal( hideEntry[1] ); |
||
1223 | local hideType; |
||
1224 | for i = 2, table.getn( hideEntry ) do |
||
1225 | hideType = hideEntry[i]; |
||
1226 | if( type( hideType ) == "function" ) then |
||
1227 | hideType( true ); |
||
1228 | elseif( hideType == "DISABLEMOUSE" ) then |
||
1229 | val:EnableMouse( true ); |
||
1230 | elseif( hideType == "FRAME" ) then |
||
1231 | MoveAnything_AllowExternalVisibility( val ); |
||
1232 | elseif( hideType == "WH" ) then |
||
1233 | val:SetWidth( opt.originalWidth ); |
||
1234 | val:SetHeight( opt.originalHeight ); |
||
1235 | else |
||
1236 | val:EnableDrawLayer( hideType ); |
||
1237 | end |
||
1238 | end |
||
1239 | end |
||
1240 | elseif( MoveAnything_HideUsingWH[ frame:GetName() ] ) then |
||
1241 | frame:SetWidth( opt.originalWidth ); |
||
1242 | frame:SetHeight( opt.originalHeight ); |
||
1243 | else |
||
1244 | MoveAnything_AllowExternalVisibility( frame ); |
||
1245 | end |
||
1246 | end |
||
1247 | |||
1248 | function MoveAnything_OnHideCheck( button ) |
||
1249 | local frame = MoveAnything_GetMovableFrame( MAGetParent( button ) ); |
||
1250 | if ( not frame ) then return; end |
||
1251 | if( button:GetChecked() ) then |
||
1252 | MoveAnything_HideFrame( frame ); |
||
1253 | else |
||
1254 | MoveAnything_ShowFrame( frame ); |
||
1255 | end |
||
1256 | MoveAnythingOptions_Update(); |
||
1257 | end |
||
1258 | |||
1259 | function MoveAnything_OnResetCheck( button ) |
||
1260 | local frame = MoveAnything_GetMovableFrame( MAGetParent( button ) ); |
||
1261 | if ( not frame ) then return; end |
||
1262 | MoveAnything_ResetFrameOptions( frame:GetName() ); |
||
1263 | end |
||
1264 | |||
1265 | function MoveAnything_OnCheckCharacterSpecific( button ) |
||
1266 | local oldName = MoveAnything_CurrentSettingsName(); |
||
1267 | if( button:GetChecked() ) then |
||
1268 | MoveAnything_UseCharacterSettings = true; |
||
1269 | MoveAnything_CopySettings( oldName, MoveAnything_CurrentSettingsName() ); |
||
1270 | else |
||
1271 | MoveAnything_UseCharacterSettings = false; |
||
1272 | MoveAnything_CopySettings( oldName, MoveAnything_CurrentSettingsName() ); |
||
1273 | end |
||
1274 | MoveAnythingOptions_Update(); |
||
1275 | end |
||
1276 | |||
1277 | function MoveAnythingOptions_Update() |
||
1278 | FauxScrollFrame_Update(MAScrollFrame, MoveAnything_GetFrameCount(), 10, MOVEANYTHING_SCROLL_HEIGHT ); |
||
1279 | |||
1280 | for i=1, 10, 1 do |
||
1281 | local index = FauxScrollFrame_GetOffset(MAScrollFrame) + i; |
||
1282 | if( index <= MoveAnything_GetFrameCount() ) then |
||
1283 | local f = getglobal( "MAMove"..i.."FrameNameText" ); |
||
1284 | f:SetText( MoveAnything_Frames[index].helpfulName ); |
||
1285 | if( MoveAnything_Frames[index] ) then |
||
1286 | getglobal( "MAMove"..i ):Show(); |
||
1287 | end |
||
1288 | |||
1289 | local opt = MoveAnything_FindFrameOptions( MoveAnything_Frames[index].name, "MAOptions Update" ); |
||
1290 | if( MoveAnything_Frames[index].name ) then |
||
1291 | getglobal( "MAMove"..i.."Backdrop" ):Show(); |
||
1292 | getglobal( "MAMove"..i.."Move" ):Show(); |
||
1293 | else |
||
1294 | getglobal( "MAMove"..i.."Backdrop" ):Hide(); |
||
1295 | getglobal( "MAMove"..i.."Move" ):Hide(); |
||
1296 | end |
||
1297 | |||
1298 | if( MoveAnything_FindMAFrame( MoveAnything_Frames[index].name ) ) then |
||
1299 | getglobal( "MAMove"..i.."Move" ):SetChecked( 1 ); |
||
1300 | else |
||
1301 | getglobal( "MAMove"..i.."Move" ):SetChecked( nil ); |
||
1302 | end |
||
1303 | if( opt and opt.hidden ) then |
||
1304 | getglobal( "MAMove"..i.."Hide" ):SetChecked( 1 ); |
||
1305 | else |
||
1306 | getglobal( "MAMove"..i.."Hide" ):SetChecked( nil ); |
||
1307 | end |
||
1308 | |||
1309 | -- disallow hiding? |
||
1310 | if( not MoveAnything_Frames[index].name or |
||
1311 | MoveAnything_NoHide[ MoveAnything_Frames[index].name ] ) then |
||
1312 | getglobal( "MAMove"..i.."Hide" ):Hide(); |
||
1313 | else |
||
1314 | getglobal( "MAMove"..i.."Hide" ):Show(); |
||
1315 | end |
||
1316 | |||
1317 | -- add a reset button if it's movable |
||
1318 | if( MoveAnything_IsFrameHooked( MoveAnything_Frames[index].name ) ) then |
||
1319 | getglobal( "MAMove"..i.."Reset" ):Show(); |
||
1320 | else |
||
1321 | getglobal( "MAMove"..i.."Reset" ):Hide(); |
||
1322 | end |
||
1323 | else |
||
1324 | getglobal( "MAMove"..i ):Hide(); |
||
1325 | end |
||
1326 | |||
1327 | end |
||
1328 | |||
1329 | if( MoveAnything_UseCharacterSettings ) then |
||
1330 | MAOptionsCharacterSpecific:SetChecked( 1 ); |
||
1331 | else |
||
1332 | MAOptionsCharacterSpecific:SetChecked( nil ); |
||
1333 | end |
||
1334 | end |
||
1335 | |||
1336 | function FuckMe() |
||
1337 | MoveAnything_FrameOptions = {}; |
||
1338 | end |
||
1339 | |||
1340 | function MoveAnythingOptions_ResetAll() |
||
1341 | for i,v in MoveAnything_FrameOptions do |
||
1342 | MoveAnything_ResetFrameOptions( v.name ); |
||
1343 | end |
||
1344 | MoveAnything_FrameOptions = {}; |
||
1345 | end |
||
1346 | |||
1347 | function MoveAnything_FindContainerFrame( id ) |
||
1348 | local i = 1; |
||
1349 | local container; |
||
1350 | while( 1 ) do |
||
1351 | container = getglobal( "ContainerFrame"..i ); |
||
1352 | if( not container ) then break; end |
||
1353 | if( container:IsVisible() and container:GetID() == id ) then |
||
1354 | return container; |
||
1355 | end |
||
1356 | i = i + 1; |
||
1357 | end |
||
1358 | return nil; |
||
1359 | end |
||
1360 | |||
1361 | function MoveAnything_GrabContainerFrame( container, movableBag ) |
||
1362 | if( movableBag and MoveAnything_IsFrameHooked( movableBag:GetName() ) ) then |
||
1363 | MoveAnything_PreventExternalMovement( container ); |
||
1364 | container.MAContainerOriginalScale = MAGetScale( container ); |
||
1365 | movableBag:Show(); |
||
1366 | container:HiddenClearAllPoints(); |
||
1367 | container:HiddenSetScale( MAGetScale( movableBag ) ); |
||
1368 | --container:HiddenSetPoint( "BOTTOMLEFT", "UIParent", "BOTTOMLEFT", movableBag:GetLeft(), movableBag:GetBottom() ); |
||
1369 | container:HiddenSetPoint( "BOTTOMLEFT", movableBag:GetName(), "BOTTOMLEFT", 0, 0 ); |
||
1370 | movableBag.attachedChildren = {}; |
||
1371 | table.insert( movableBag.attachedChildren, container ); |
||
1372 | end |
||
1373 | end |
||
1374 | |||
1375 | function MoveAnything_RemoveContainerFromList( container ) |
||
1376 | -- Remove this bag from the list and collapse the rest of the entries |
||
1377 | local index = 1; |
||
1378 | local tempIndex; |
||
1379 | while ContainerFrame1.bags[index] do |
||
1380 | if ( ContainerFrame1.bags[index] == container:GetName() ) then |
||
1381 | ContainerFrame1.bagsShown = ContainerFrame1.bagsShown - 1; |
||
1382 | local tempIndex = index; |
||
1383 | while ContainerFrame1.bags[tempIndex] do |
||
1384 | if ( ContainerFrame1.bags[tempIndex + 1] ) then |
||
1385 | ContainerFrame1.bags[tempIndex] = ContainerFrame1.bags[tempIndex + 1]; |
||
1386 | else |
||
1387 | ContainerFrame1.bags[tempIndex] = nil; |
||
1388 | end |
||
1389 | tempIndex = tempIndex + 1; |
||
1390 | end |
||
1391 | end |
||
1392 | index = index + 1; |
||
1393 | end |
||
1394 | updateContainerFrameAnchors(); |
||
1395 | end |
||
1396 | |||
1397 | -- TOOLTIP HOOKS |
||
1398 | MoveAnything_OriginalSetDefaultAnchor = GameTooltip_SetDefaultAnchor; |
||
1399 | function GameTooltip_SetDefaultAnchor(tooltip, parent) |
||
1400 | if( MoveAnything_IsFrameHooked( "TooltipMover" ) and tooltip == GameTooltip ) then |
||
1401 | -- anchor the tooltip to the side of the mover that is closest to the edge |
||
1402 | local l, r, t, b, a, anchor; |
||
1403 | l = TooltipMover:GetLeft() - UIParent:GetLeft(); |
||
1404 | r = UIParent:GetRight() - TooltipMover:GetRight(); |
||
1405 | t = UIParent:GetTop() - TooltipMover:GetTop(); |
||
1406 | b = TooltipMover:GetBottom() - UIParent:GetBottom(); |
||
1407 | a = t; |
||
1408 | anchor = "TOP"; |
||
1409 | if( l < a ) then a = l; anchor = "LEFT"; end |
||
1410 | if( r < a ) then a = r; anchor = "RIGHT"; end |
||
1411 | if( b < a ) then a = b; anchor = "BOTTOM"; end |
||
1412 | |||
1413 | tooltip:ClearAllPoints(); |
||
1414 | tooltip:SetOwner(parent, "ANCHOR_NONE"); |
||
1415 | tooltip:SetPoint( anchor, "TooltipMover", anchor, 0, 0 ); |
||
1416 | tooltip.default = 1; |
||
1417 | else |
||
1418 | tooltip:ClearAllPoints(); |
||
1419 | MoveAnything_OriginalSetDefaultAnchor( tooltip, parent ); |
||
1420 | end |
||
1421 | end |
||
1422 | MoveAnything_OriginalGameTooltip_OnHide = GameTooltip_OnHide; |
||
1423 | function GameTooltip_OnHide() |
||
1424 | MoveAnything_AllowExternalMovement( this ); |
||
1425 | MoveAnything_OriginalGameTooltip_OnHide(); |
||
1426 | end |
||
1427 | |||
1428 | -- BAG FRAME HOOKS |
||
1429 | MoveAnything_BagFrames = {}; |
||
1430 | MoveAnything_OriginalGenerateFrame = ContainerFrame_GenerateFrame; |
||
1431 | function ContainerFrame_GenerateFrame(frame, size, id) |
||
1432 | local bag = MoveAnything_BagFrames[id] |
||
1433 | MoveAnything_OriginalGenerateFrame( frame, size, id ); |
||
1434 | MoveAnything_GrabContainerFrame( frame, bag ); |
||
1435 | end |
||
1436 | MoveAnything_OriginalOnHide = ContainerFrame_OnHide; |
||
1437 | function ContainerFrame_OnHide() |
||
1438 | local bag = MoveAnything_BagFrames[this:GetID()]; |
||
1439 | if( bag and MoveAnything_IsFrameHooked( bag:GetName() ) ) then |
||
1440 | MoveAnything_AllowExternalMovement( this ); |
||
1441 | if( this.MAContainerOriginalScale ) then |
||
1442 | this:SetScale( this.MAContainerOriginalScale ); |
||
1443 | this.MAContainerOriginalScale = nil; |
||
1444 | end |
||
1445 | this:ClearAllPoints(); |
||
1446 | -- we removed the container from the list before, but now we have to add |
||
1447 | -- it back, since the container code is going to try to remove it, and doesn't |
||
1448 | -- particularly care if it's already gone |
||
1449 | ContainerFrame1.bagsShown = ContainerFrame1.bagsShown + 1; |
||
1450 | ContainerFrame1.bags[ContainerFrame1.bagsShown] = this:GetName(); |
||
1451 | end |
||
1452 | MoveAnything_OriginalOnHide(); |
||
1453 | end |
||
1454 | MoveAnything_OriginalOnShow = ContainerFrame_OnShow; |
||
1455 | function ContainerFrame_OnShow() |
||
1456 | MoveAnything_OriginalOnShow(); |
||
1457 | local bag = MoveAnything_BagFrames[this:GetID()]; |
||
1458 | if( bag and MoveAnything_IsFrameHooked( bag:GetName() ) ) then |
||
1459 | MoveAnything_RemoveContainerFromList( this ); |
||
1460 | end |
||
1461 | end |
||
1462 | |||
1463 | -- TALENT BUTTON HOOK |
||
1464 | MoveAnything_OriginalUpdateTalentButton = UpdateTalentButton; |
||
1465 | function UpdateTalentButton() |
||
1466 | if( MoveAnything_IsFrameHooked( "MicroButtonsVerticalMover" ) ) then |
||
1467 | if ( UnitLevel("player") < 10 ) then |
||
1468 | TalentMicroButton:Hide(); |
||
1469 | QuestLogMicroButton:SetPoint("TOPLEFT", "TalentMicroButton", "TOPLEFT", 0, 0); |
||
1470 | else |
||
1471 | TalentMicroButton:Show(); |
||
1472 | QuestLogMicroButton:SetPoint("TOPLEFT", "TalentMicroButton", "BOTTOMLEFT", 0, 24); |
||
1473 | end |
||
1474 | else |
||
1475 | MoveAnything_OriginalUpdateTalentButton(); |
||
1476 | end |
||
1477 | end |
||
1478 | |||
1479 | --- UI PANEL HOOKS |
||
1480 | function MoveAnything_SetLeftFrameLocation() |
||
1481 | local left = GetLeftFrame(); |
||
1482 | if( left ) then |
||
1483 | if( MoveAnything_IsFrameHooked( "UIPanelMover1" ) ) then |
||
1484 | left:ClearAllPoints(); |
||
1485 | left:SetPoint( "TOPLEFT", "UIPanelMover1", "TOPLEFT" ); |
||
1486 | left:SetScale( MAGetScale( UIPanelMover1 ), 1 ); |
||
1487 | else |
||
1488 | left:SetScale( 1 ); |
||
1489 | end |
||
1490 | end |
||
1491 | end |
||
1492 | |||
1493 | function MoveAnything_SetCenterFrameLocation() |
||
1494 | -- don't mess with the normal center panels, just the ones |
||
1495 | -- that are pushed over from the left |
||
1496 | if( GetLeftFrame() ) then |
||
1497 | local center = GetCenterFrame(); |
||
1498 | if( center ) then |
||
1499 | if( MoveAnything_IsFrameHooked( "UIPanelMover2" ) ) then |
||
1500 | center:ClearAllPoints(); |
||
1501 | center:SetPoint( "TOPLEFT", "UIPanelMover2", "TOPLEFT" ); |
||
1502 | center:SetScale( MAGetScale( UIPanelMover2 ), 1 ); |
||
1503 | else |
||
1504 | center:SetScale( 1 ); |
||
1505 | end |
||
1506 | end |
||
1507 | end |
||
1508 | end |
||
1509 | |||
1510 | MoveAnything_OriginalShowUIPanel = ShowUIPanel; |
||
1511 | function ShowUIPanel(frame) |
||
1512 | MoveAnything_OriginalShowUIPanel(frame); |
||
1513 | MoveAnything_SetLeftFrameLocation(); |
||
1514 | MoveAnything_SetCenterFrameLocation(); |
||
1515 | end |
||
1516 | MoveAnything_OriginalMovePanelToLeft = MovePanelToLeft; |
||
1517 | function MovePanelToLeft() |
||
1518 | MoveAnything_OriginalMovePanelToLeft(); |
||
1519 | MoveAnything_SetLeftFrameLocation(); |
||
1520 | end |
||
1521 | MoveAnything_OriginalMovePanelToCenter = MovePanelToCenter; |
||
1522 | function MovePanelToCenter() |
||
1523 | MoveAnything_OriginalMovePanelToCenter(); |
||
1524 | MoveAnything_SetCenterFrameLocation(); |
||
1525 | end |
||
1526 | MoveAnything_OriginalCloseAllWindows = CloseAllWindows; |
||
1527 | function CloseAllWindows(ignoreCenter) |
||
1528 | local closed = nil, oclosed; |
||
1529 | for i, v in MoveAnything_Frames do |
||
1530 | if( MoveAnything_IsFrameHooked( v.name ) ) then |
||
1531 | local opt = MoveAnything_FindFrameOptions( v.name, "CloseAllWindows" ); |
||
1532 | if( opt and opt.UIPanelWindows ) then |
||
1533 | if ( type(getglobal(v.name)) ~= "nil" ) then |
||
1534 | if( getglobal( v.name ):IsVisible() ) then |
||
1535 | getglobal( v.name ):Hide(); |
||
1536 | closed = true; |
||
1537 | end |
||
1538 | end |
||
1539 | end |
||
1540 | end |
||
1541 | end |
||
1542 | oclosed = MoveAnything_OriginalCloseAllWindows( ignoreCenter ); |
||
1543 | if( oclosed or closed ) then |
||
1544 | return true; |
||
1545 | end |
||
1546 | return nil; |
||
1547 | end |
||
1548 | |||
1549 | --- ACTION BUTTON HOOKS |
||
1550 | MoveAnything_OriginalShowBonusActionBar = ShowBonusActionBar; |
||
1551 | function ShowBonusActionBar() |
||
1552 | if( MoveAnything_IsFrameHooked( "BasicActionButtonsMover" ) or |
||
1553 | MoveAnything_IsFrameHooked( "BasicActionButtonsVerticalMover" ) or |
||
1554 | MoveAnything_IsFrameHidden( "MainMenuBar" ) ) then |
||
1555 | for i = 1, 12, 1 do |
||
1556 | getglobal( "ActionButton"..i ):Hide(); |
||
1557 | MoveAnything_PreventExternalVisibility( getglobal( "ActionButton"..i ) ); |
||
1558 | end |
||
1559 | end |
||
1560 | MoveAnything_OriginalShowBonusActionBar(); |
||
1561 | end |
||
1562 | |||
1563 | MoveAnything_OriginalHideBonusActionBar = HideBonusActionBar; |
||
1564 | function HideBonusActionBar() |
||
1565 | local hooked = nil; |
||
1566 | local opt = nil; |
||
1567 | if( MoveAnything_IsFrameHooked( "BasicActionButtonsMover" ) ) then |
||
1568 | hooked = "BasicActionButtonsMover"; |
||
1569 | elseif( MoveAnything_IsFrameHooked( "BasicActionButtonsVerticalMover" ) ) then |
||
1570 | hooked = "BasicActionButtonsVerticalMover"; |
||
1571 | end |
||
1572 | if( hooked ) then |
||
1573 | opt = MoveAnything_FindFrameOptions( hooked, "HideBonusActionBar" ); |
||
1574 | end |
||
1575 | if( hooked or MoveAnything_IsFrameHidden( "MainMenuBar" ) ) then |
||
1576 | for i = 1, 12, 1 do |
||
1577 | getglobal( "ActionButton"..i ):Show(); |
||
1578 | if( (not opt) or (not opt.hidden) ) then |
||
1579 | MoveAnything_AllowExternalVisibility( getglobal( "ActionButton"..i ) ); |
||
1580 | end |
||
1581 | end |
||
1582 | end |
||
1583 | MoveAnything_OriginalHideBonusActionBar(); |
||
1584 | end |
||
1585 | |||
1586 | SLASH_MOVEANYTHING1 = "/move" |
||
1587 | SlashCmdList["MOVEANYTHING"] = function( msg ) |
||
1588 | if( msg == nil or string.len( msg ) == 0 ) then |
||
1589 | MoveAnything_ToggleOptionsMenu(); |
||
1590 | else |
||
1591 | MoveAnything_ToggleMove( msg ); |
||
1592 | end |
||
1593 | end |
||
1594 | |||
1595 | SLASH_UNMOVEANYTHING1 = "/unmove" |
||
1596 | SlashCmdList["UNMOVEANYTHING"] = function( msg ) |
||
1597 | if( msg ) then |
||
1598 | MoveAnything_StopMoving( msg ); |
||
1599 | local frame = getglobal( msg ); |
||
1600 | MoveAnything_AllowExternalMovement( frame ); |
||
1601 | frame:ClearAllPoints(); |
||
1602 | frame:SetPoint( "CENTER", MAGetParent( frame ):GetName(), "CENTER", 0, 0 ); |
||
1603 | end |
||
1604 | end |
||
1605 | |||
1606 | SLASH_MOVEANYTHINGCOPYSETTINGS1 = "/movecopy" |
||
1607 | SlashCmdList["MOVEANYTHINGCOPYSETTINGS"] = function( msg ) |
||
1608 | if( msg == nil or string.len( msg ) == 0 ) then |
||
1609 | Error( "Syntax: /movecopy ServerName PlayerName" ); |
||
1610 | Error( "Use /movelist to see a current list of valid settings" ); |
||
1611 | return; |
||
1612 | end |
||
1613 | |||
1614 | if( MoveAnything_CharacterSettings[msg] == nil ) then |
||
1615 | Error( "No settings for server/character "..msg ); |
||
1616 | Error( "Use /movelist to see a current list of valid settings" ); |
||
1617 | return; |
||
1618 | end |
||
1619 | |||
1620 | MoveAnything_CopySettings( msg, MoveAnything_CurrentSettingsName() ); |
||
1621 | end |
||
1622 | |||
1623 | SLASH_MOVEANYTHINGLISTSETTINGS1 = "/movelist" |
||
1624 | SlashCmdList["MOVEANYTHINGLISTSETTINGS"] = function( msg ) |
||
1625 | Print( "Server/Character Settings List:", 1.0, 1.0, 0.2 ); |
||
1626 | Print( "-------------------------------", 1.0, 1.0, 0.2 ); |
||
1627 | for i, val in MoveAnything_CharacterSettings do |
||
1628 | local str = i; |
||
1629 | if( val == MoveAnything_FrameOptions ) then |
||
1630 | str = str.." (Current)"; |
||
1631 | end |
||
1632 | Print( str, 1.0, 1.0, 0.2 ); |
||
1633 | end |
||
1634 | end |
||
1635 | |||
1636 | SLASH_MOVEANYTHINGDELETESETTINGS1 = "/movedelete" |
||
1637 | SLASH_MOVEANYTHINGDELETESETTINGS2 = "/movedel" |
||
1638 | SlashCmdList["MOVEANYTHINGDELETESETTINGS"] = function( msg ) |
||
1639 | if( msg == nil or string.len( msg ) == 0 ) then |
||
1640 | Error( "Syntax: /movedelete ServerName PlayerName" ); |
||
1641 | Error( "Use /movelist to see a current list of valid settings" ); |
||
1642 | return; |
||
1643 | end |
||
1644 | |||
1645 | if( MoveAnything_CharacterSettings[msg] == nil ) then |
||
1646 | Error( "No settings for server/character "..msg ); |
||
1647 | Error( "Use /movelist to see a current list of valid settings" ); |
||
1648 | return; |
||
1649 | end |
||
1650 | |||
1651 | if( msg == MoveAnything_CurrentSettingsName() ) then |
||
1652 | MoveAnythingOptions_ResetAll(); |
||
1653 | else |
||
1654 | MoveAnything_CharacterSettings[msg] = nil; |
||
1655 | end |
||
1656 | MoveAnything_FrameOptions = MoveAnything_CharacterSettings[MoveAnything_CurrentSettingsName()]; |
||
1657 | MoveAnything_RefreshPositions(); |
||
1658 | end |
||
1659 | |||
1660 | function GameMenu_AddButton( button ) |
||
1661 | if( GameMenu_InsertAfter == nil ) then |
||
1662 | GameMenu_InsertAfter = GameMenuButtonMacros; |
||
1663 | end |
||
1664 | if( GameMenu_InsertBefore == nil ) then |
||
1665 | GameMenu_InsertBefore = GameMenuButtonLogout; |
||
1666 | end |
||
1667 | |||
1668 | button:ClearAllPoints(); |
||
1669 | button:SetPoint( "TOP", GameMenu_InsertAfter:GetName(), "BOTTOM", 0, -1 ); |
||
1670 | GameMenu_InsertBefore:SetPoint( "TOP", button:GetName(), "BOTTOM", 0, -1 ); |
||
1671 | GameMenu_InsertAfter = button; |
||
1672 | GameMenuFrame:SetHeight( GameMenuFrame:GetHeight() + button:GetHeight() + 2 ); |
||
1673 | end |
||
1674 | |||
1675 | if ( GameMenuButtonAddOns ) then |
||
1676 | GameMenu_AddButton(GameMenuButtonAddOns); |
||
1677 | end |
||
1678 | |||
1679 | --TODO: |
||
1680 | --ChatFrameEditBox move |