vanilla-wow-addons – Rev 1
?pathlinks?
-- Buttonhole Advanced: Swallows Minimap Buttons
-- Copyright (C) 2006 Aaron Griffith
-- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public License
-- as published by the Free Software Foundation; either version 2
-- of the License, or (at your option) any later version.
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ButtonholeAd_Version = "0.1"; -- Buttonhole Advanced Version. Change at Release
ButtonholeAd_Branch = ""; -- Buttonhole Advanced Branch. Change this all you AddOn ripoff posers! <3
ButtonholeAd_Author = "|cffff0000Swatch|r of Stormrage"; -- Change this too ^^
-- This next block is the text for the help window.
ButtonholeAd_windowtext = [[Welcome to Buttonhole Advanced ]] .. ButtonholeAd_Version .. ButtonholeAd_Branch .. [[
(by ]] .. ButtonholeAd_Author .. [[)
When the original Buttonhole was killed, alot of
people were sent steaming into unknown depths
of anger. Seeing an oppurtunity, I pounced on it.
Hence, Buttonhole Advanced.
Completely rewritten and with more features to
use, it's the ultimate Buttonhole.
Classic Mode: |cffff8888(SemiWorking)|r
In classic mode, Buttonhole Advanced behaves
just like it's predicessor. It hides all the
buttons in one, allowing you to scroll through
them with the scrollwheel.
Menu Mode: |cffff0000(Not Working)|r
In menu mode, all of the buttons hidden in
the buttonhole are accessable through a menu,
shown when you left click the button.
Expander Mode:
In expander mode, all of the buttons only
become visible when you toggle the button-
hole.
Off Mode:
This is obvious. This mode disables button-
holing.]];
ButtonholeAdDetails = {
name = "Buttonhole Advanced",
version = ButtonholeAd_Version,
releaseDate = "June 25, 2006",
author = ButtonholeAd_Author,
email = "aargri@gmail.com",
--website = "fixme",
category = MYADDONS_CATEGORY_OTHERS,
optionsframe = "ButtonholeAdFrame" };
ButtonholeAd_Debug = 0;
ButtonholeAd_Method = 0;
ButtonholeAd_Pos = 97;
ButtonholeAd_SwallowButtons = {};
function BHA_Debug(msg)
if (ButtonholeAd_Debug == 1) then
DEFAULT_CHAT_FRAME:AddMessage("Buttonhole Advanced : Debug : " .. msg, 0.2, 0.8, 0.8);
end
end
-- This is the /bh command
function ButtonholeAd_Command(cmd)
if (cmd == "debug") then -- Handle a debug call real quick-like
if (ButtonholeAd_Debug == 1) then
ButtonholeAd_Debug=0;
DEFAULT_CHAT_FRAME:AddMessage("Buttonhole Advanced : Debug Off", 0.2, 0.8, 0.8);
else
ButtonholeAd_Debug=1;
DEFAULT_CHAT_FRAME:AddMessage("Buttonhole Advanced : Debug On", 0.2, 0.8, 0.8);
end
return nil;
end
if (cmd == "") then -- If there is no string, open help
BHA_Debug("Showing config frame");
ButtonholeAdFrame:Show();
return nil;
end
end
function ButtonholeAd_UpdateMethodUI()
ButtonholeAdFrameCheckButtonClassic:SetChecked(0);
ButtonholeAdFrameCheckButtonMenu:SetChecked(0);
ButtonholeAdFrameCheckButtonExpander:SetChecked(0);
ButtonholeAdFrameCheckButtonOff:SetChecked(0);
if (ButtonholeAd_Method == 0) then
BHA_Debug("Method set to Classic");
ButtonholeAdFrameCheckButtonClassic:SetChecked(1);
ButtonholeAd_Off_Init();
ButtonholeAd_Classic_Init();
return nil;
end
if (ButtonholeAd_Method == 1) then
BHA_Debug("Method set to Menu");
ButtonholeAdFrameCheckButtonMenu:SetChecked(1);
ButtonholeAd_Off_Init();
ButtonholeAd_Menu_Init();
return nil;
end
if (ButtonholeAd_Method == 2) then
BHA_Debug("Method set to Expander");
ButtonholeAdFrameCheckButtonExpander:SetChecked(1);
ButtonholeAd_Off_Init();
ButtonholeAd_Expander_Init();
return nil;
end
if (ButtonholeAd_Method == 3) then
BHA_Debug("Method set to Off");
ButtonholeAdFrameCheckButtonOff:SetChecked(1);
ButtonholeAd_Off_Init();
return nil;
end
end
function ButtonholeAd_UpdatePosUI()
ButtonholeAdFramePosSlider:SetValue(ButtonholeAd_Pos);
x = cos(ButtonholeAd_Pos);
y = sin(ButtonholeAd_Pos);
x = -x;
y = -y;
x = x * 81;
y = y * 81;
x = x + 53;
y = y - 54;
ButtonholeAd_Minimap:SetPoint("TOPLEFT", x, y);
-- BHA_Debug("Setting button position to " .. ButtonholeAd_Pos);
end
function ButtonholeAd_Minimap_OnClick(arg1)
if (arg1 == "RightButton") then
if (ButtonholeAdFrame:IsShown()) then
BHA_Debug("Hiding config frame");
ButtonholeAdFrame:Hide();
return nil;
end
BHA_Debug("Showing config frame");
ButtonholeAdFrame:Show();
return nil;
end
ButtonholeAd_Menu_Click();
ButtonholeAd_Expander_Click();
end
-- Does this on load (duh)
function ButtonholeAd_OnLoad()
this:RegisterEvent("VARIABLES_LOADED"); -- Registers for Loaded Variables (standard)
this:RegisterEvent("PLAYER_LOGIN");
this:RegisterEvent("ADDON_LOADED");
SLASH_BUTTONHOLEAD1 = "/buttonhole"; -- Long Command
SLASH_BUTTONHOLEAD2 = "/bh"; -- Short Command
SLASH_BUTTONHOLEAD3 = "/buttonholead"; -- Semi-Long Command
SLASH_BUTTONHOLEAD4 = "/buttonholeadvanced"; -- Really Long Command
SLASH_BUTTONHOLEAD5 = "/bha"; -- Semi-Short Command
SlashCmdList["BUTTONHOLEAD"] = ButtonholeAd_Command;
ButtonholeAdFrameText:SetText(ButtonholeAd_windowtext); -- Sets the Help Text
end
---------------------------------------------------------------------------
function ButtonholeAd_WheelWrapper()
ButtonholeAd_Classic_Wheel(arg1);
end
function ButtonholeAd_OnEvent()
if ( event == "VARIABLES_LOADED" ) then
-- ButtonholeAd_UpdateMethodUI();
-- ButtonholeAd_UpdatePosUI();
DEFAULT_CHAT_FRAME:AddMessage("Buttonhole Advanced : Ready for Work!", 0.2, 0.8, 0.8); -- Something need doing?
end
if (event == "ADDON_LOADED") and (myAddOnsFrame_Register) then
myAddOnsFrame_Register(ButtonholeAdDetails);
end
if (event == "PLAYER_LOGIN") then
local kids = { Minimap:GetChildren() };
for _,child in ipairs(kids) do
if (child:GetName() == nil) then
-- skip, unamed freaks!
else
local name = child:GetName();
local first = string.find(strlower(name), "minimap");
local second = string.find(strlower(name), "gathernote");
if (second == 1) then
-- Gatherer Wierdness
elseif (first == 1) then
-- skip, original frames
else
if not (name == "ButtonholeAd_Minimap") then -- Skip ourselves...
local tmp = {
ModName = name,
ModFrame = child,
ModOriginalX = child:GetLeft(),
ModOriginalY = child:GetBottom(),
ModOriginalS = child:GetScale();
ModOriginalSetPoint = child.SetPoint };
if (name == "CT_OptionBarFrame") then tmp.ModOriginalX = nil; end
if (name == "GathererUI_IconFrame") then
if (Chronos) then
Chronos.schedule(1, child.Hide, child); -- Hides teh
end -- Annoying Icon!
end
child:EnableMouseWheel(1);
child:SetScript("OnMouseWheel", ButtonholeAd_WheelWrapper);
tinsert(ButtonholeAd_SwallowButtons, tmp);
-- DEFAULT_CHAT_FRAME:AddMessage("The new is " .. name);
end
end
end
end
for _, v in ipairs(ButtonholeAd_SwallowButtons) do
-- v.ModFrame.RegisterForClicks = function() end;
end
ButtonholeAd_UpdateMethodUI();
ButtonholeAd_UpdatePosUI();
end
end
--------------------------------------------------------------------------
ButtonholeAd_Classic_Num = 0;
function ButtonholeAd_Classic_Init()
if not (ButtonholeAd_Method == 0) then
return nil;
end
ButtonholeAd_Classic_Num = 0;
for i,v in ipairs(ButtonholeAd_SwallowButtons) do
if (v.ModOriginalX == nil) or (v.ModOriginalY == nil) then
v.ModFrame:Hide();
if (i == ButtonholeAd_Classic_Num) then v.ModFrame:Show(); end
else
BHA_Debug("Classic : Jiggering frame " .. v.ModName);
v.ModFrame.SetPoint = function() end;
v.ModFrame:ClearAllPoints();
-- BHA_Debug("Off : X: " .. v.ModOriginalX .. " Y: " .. v.ModOriginalY);
v.ModFrame:SetParent(ButtonholeAd_Minimap);
v.ModOriginalSetPoint(v.ModFrame, "TOPLEFT", 0, 0);
v.ModFrame:SetParent(Minimap);
v.ModFrame:Hide();
if (i == ButtonholeAd_Classic_Num) then v.ModFrame:Show(); ButtonholeAd_Minimap:Hide(); end
end
end
end
function ButtonholeAd_Classic_Wheel(arg1)
if not (ButtonholeAd_Method == 0) then
return nil;
end
ButtonholeAd_Classic_Num = ButtonholeAd_Classic_Num + arg1;
if (ButtonholeAd_Classic_Num == -1) then ButtonholeAd_Classic_Num = table.getn(ButtonholeAd_SwallowButtons); end
if (ButtonholeAd_Classic_Num == table.getn(ButtonholeAd_SwallowButtons)+1) then ButtonholeAd_Classic_Num = 0; end
if (ButtonholeAd_Classic_Num == 0) then
BHA_Debug("Classic : Setting frame to Buttonhole");
else
BHA_Debug("Classic : Setting frame to " .. ButtonholeAd_SwallowButtons[ButtonholeAd_Classic_Num].ModFrame:GetName() );
end
for i,v in ipairs(ButtonholeAd_SwallowButtons) do
v.ModFrame:Hide();
if (i == ButtonholeAd_Classic_Num) then v.ModFrame:Show(); end
end
if (ButtonholeAd_Classic_Num == 0) then
ButtonholeAd_Minimap:Show();
else
local tmp = ButtonholeAd_SwallowButtons[ButtonholeAd_Classic_Num];
if (tmp.ModOriginalX == nil) or (tmp.ModOriginalY == nil) then
ButtonholeAd_Minimap:Show();
else
ButtonholeAd_Minimap:Hide();
end
end
end
--------------------------------------------------------------------------
function ButtonholeAd_Menu_Init()
if not (ButtonholeAd_Method == 1) then
return nil;
end
end
function ButtonholeAd_Menu_Click()
if not (ButtonholeAd_Method == 1) then
return nil;
end
BHA_Debug("Menu : Clicked");
end
--------------------------------------------------------------------------
ButtonholeAd_Expander_State = 0;
function ButtonholeAd_Expander_Init()
if not (ButtonholeAd_Method == 2) then
return nil;
end
ButtonholeAd_Expander_State = 0;
for i,v in ipairs(ButtonholeAd_SwallowButtons) do
BHA_Debug("Expander : Hiding frame " .. v.ModName);
v.ModFrame:Hide();
end
end
function ButtonholeAd_Expander_Click()
if not (ButtonholeAd_Method == 2) then
return nil;
end
if (ButtonholeAd_Expander_State == 0) then
for i,v in ipairs(ButtonholeAd_SwallowButtons) do
BHA_Debug("Expander : Showing frame " .. v.ModName);
v.ModFrame:Show();
end
ButtonholeAd_Expander_State = 1;
else
for i,v in ipairs(ButtonholeAd_SwallowButtons) do
BHA_Debug("Expander : Hiding frame " .. v.ModName);
v.ModFrame:Hide();
end
ButtonholeAd_Expander_State = 0;
end
BHA_Debug("Expander : Toggled");
end
--------------------------------------------------------------------------
function ButtonholeAd_Off_Init()
-- if not (ButtonholeAd_Method == 3) then
-- return nil;
-- end
ButtonholeAd_Minimap:Show();
for i,v in ipairs(ButtonholeAd_SwallowButtons) do
BHA_Debug("Off : Reshowing frame " .. v.ModName);
v.ModFrame.SetPoint = v.ModOriginalSetPoint;
if (v.ModOriginalX == nil) or (v.ModOriginalY == nil) then
v.ModFrame:Show();
else
BHA_Debug("Off : X: " .. v.ModOriginalX .. " Y: " .. v.ModOriginalY .. " S: " .. v.ModOriginalS);
v.ModFrame:ClearAllPoints();
v.ModFrame:SetParent(UIParent);
v.ModFrame:SetPoint("BOTTOMLEFT", "UIParent", v.ModOriginalX, v.ModOriginalY);
v.ModFrame:SetParent(Minimap);
v.ModFrame:Show();
end
end
end
Generated by GNU Enscript 1.6.5.90.