vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
local SUBFRAMES = {
        ["FishingLocationsFrame"] = {
           ["name"] = FishingBuddy.LOCATIONS_TAB,
           ["tooltip"] = FishingBuddy.LOCATIONS_INFO,
           ["toggle"] = "_LOC",
           ["id"] = "1",
        },
        ["FishingOutfitFrame"] = {
           ["name"] = FishingBuddy.OUTFITS_TAB,
           ["tooltip"] = FishingBuddy.OUTFITS_INFO,
           ["toggle"] = "_OUT",
           ["id"] = "2",
        },
        ["FishingTrackingFrame"] = {
           ["name"] = FishingBuddy.TRACKING_TAB,
           ["tooltip"] = FishingBuddy.TRACKING_INFO,
           ["toggle"] = "_TRK",
           ["id"] = "3",
        },
        ["FishingOptionsFrame"] = {
           ["name"] = FishingBuddy.OPTIONS_TAB,
           ["tooltip"] = FishingBuddy.OPTIONS_INFO,
           ["toggle"] = "_OPT",
           ["id"] = "4",
        }
};

local function DisableSubFrame(frameName)
   for value,info in SUBFRAMES do 
      if ( value == frameName ) then
         local id = info.id;
         local hideframe = string.format("FishingBuddyFrameTab%d", id);
         local f = getglobal(hideframe);
         if ( f ) then
            f:Hide();
         end
         id = id + 1;
         f = getglobal("FishingBuddyFrameTab"..id);
         if ( f ) then
            f:SetPoint("LEFT", hideframe, "LEFT", 0, 0)
         end
      end
   end
end
FishingBuddy.DisableSubFrame = DisableSubFrame;

local function ShowSubFrame(frameName)
   for value,_ in SUBFRAMES do 
      local frame = getglobal(value);
      if ( frame ) then
         if ( value == frameName ) then
            frame:Show()
         else
            frame:Hide();       
         end
      end
   end
end

function ToggleFishingBuddyFrame(tab)
   if ( tab == "FishingOutfitFrame" and not OutfitDisplayFrame_OnLoad and not FishingOutfitFrame:IsVisible() ) then
      return;
   end
   local subFrame = getglobal(tab);
   if ( subFrame ) then
      local id = subFrame:GetID();
      PanelTemplates_SetTab(FishingBuddyFrame, id);
      if ( FishingBuddyFrame:IsVisible() ) then
         if ( subFrame:IsVisible() ) then
            HideUIPanel(FishingBuddyFrame);     
         else
            ShowSubFrame(tab);
         end
      else
         ShowUIPanel(FishingBuddyFrame);
         ShowSubFrame(tab);
      end
   end
end

local TABFRAMES = {};
function FishingBuddyFrameTab_OnClick()
   ToggleFishingBuddyFrame(TABFRAMES[this:GetName()]);
   PlaySound("igCharacterInfoTab");
end

function FishingBuddyFrame_OnLoad()
   -- Act like Blizzard windows
   UIPanelWindows["FishingBuddyFrame"] = { area = "left", pushable = 999 }; 
   -- Close with escape key
   tinsert(UISpecialFrames, "FishingBuddyFrame"); 

   -- Tab Handling code
   PanelTemplates_SetNumTabs(this, 4);
   PanelTemplates_SetTab(this, 1);

   this:RegisterEvent("VARIABLES_LOADED");
end

function FishingBuddyFrame_OnEvent(event)
   if ( event == "VARIABLES_LOADED" ) then
      -- set up mappings
      for frame,info in SUBFRAMES do
         local f = getglobal(frame);
         if ( f ) then
            f:SetID(info.id);

            local tabname = "FishingBuddyFrameTab"..info.id;
            TABFRAMES[tabname] = frame;
            local tab = getglobal(tabname);
            tab:SetText(info.name);
            tab.tooltip = info.tooltip;
            tab.toggle = "TOGGLEFISHINGBUDDY"..info.toggle;
         else
            DisableSubFrame(frame);
         end
      end
      ToggleFishingBuddyFrame("FishingLocationsFrame");
   end
end

function FishingBuddyFrame_OnShow()
        FishingBuddyFramePortrait:SetTexture("Interface\\LootFrame\\FishingLoot-Icon");
        FishingBuddyNameText:SetText(FishingBuddy.WINDOW_TITLE);
        UpdateMicroButtons();
end

function FishingBuddyFrame_OnHide()
        UpdateMicroButtons();
end