function LoadMicroButtonTextures(self, name) self:RegisterForClicks("LeftButtonUp", "RightButtonUp"); self:RegisterEvent("UPDATE_BINDINGS"); local prefix = "Interface\\Buttons\\UI-MicroButton-"; self:SetNormalTexture(prefix..name.."-Up"); self:SetPushedTexture(prefix..name.."-Down"); self:SetDisabledTexture(prefix..name.."-Disabled"); self:SetHighlightTexture("Interface\\Buttons\\UI-MicroButton-Hilight"); end function MicroButtonTooltipText(text, action) if ( GetBindingKey(action) ) then return text.." "..NORMAL_FONT_COLOR_CODE.."("..GetBindingText(GetBindingKey(action), "KEY_")..")"..FONT_COLOR_CODE_CLOSE; else return text; end end function UpdateMicroButtons() local playerLevel = UnitLevel("player"); if ( CharacterFrame:IsShown() ) then CharacterMicroButton:SetButtonState("PUSHED", 1); CharacterMicroButton_SetPushed(); else CharacterMicroButton:SetButtonState("NORMAL"); CharacterMicroButton_SetNormal(); end if ( SpellBookFrame:IsShown() ) then SpellbookMicroButton:SetButtonState("PUSHED", 1); else SpellbookMicroButton:SetButtonState("NORMAL"); end if ( PlayerTalentFrame and PlayerTalentFrame:IsShown() ) then TalentMicroButton:SetButtonState("PUSHED", 1); else if ( playerLevel < TalentMicroButton.minLevel ) then TalentMicroButton:Disable(); else TalentMicroButton:Enable(); TalentMicroButton:SetButtonState("NORMAL"); end end if ( QuestLogFrame:IsShown() ) then QuestLogMicroButton:SetButtonState("PUSHED", 1); else QuestLogMicroButton:SetButtonState("NORMAL"); end if ( ( GameMenuFrame:IsShown() ) or ( InterfaceOptionsFrame:IsShown()) or ( KeyBindingFrame and KeyBindingFrame:IsShown()) or ( MacroFrame and MacroFrame:IsShown()) ) then MainMenuMicroButton:SetButtonState("PUSHED", 1); MainMenuMicroButton_SetPushed(); else MainMenuMicroButton:SetButtonState("NORMAL"); MainMenuMicroButton_SetNormal(); end if ( PVPParentFrame:IsShown() and (not PVPFrame_IsJustBG())) then PVPMicroButton:SetButtonState("PUSHED", 1); PVPMicroButton_SetPushed(); else if ( playerLevel < PVPMicroButton.minLevel ) then PVPMicroButton:Disable(); else PVPMicroButton:Enable(); PVPMicroButton:SetButtonState("NORMAL"); PVPMicroButton_SetNormal(); end end if ( FriendsFrame:IsShown() ) then SocialsMicroButton:SetButtonState("PUSHED", 1); else SocialsMicroButton:SetButtonState("NORMAL"); end if ( LFDParentFrame:IsShown() ) then LFDMicroButton:SetButtonState("PUSHED", 1); else if ( playerLevel < LFDMicroButton.minLevel ) then LFDMicroButton:Disable(); else LFDMicroButton:Enable(); LFDMicroButton:SetButtonState("NORMAL"); end end if ( HelpFrame:IsShown() ) then HelpMicroButton:SetButtonState("PUSHED", 1); else HelpMicroButton:SetButtonState("NORMAL"); end if ( AchievementFrame and AchievementFrame:IsShown() ) then AchievementMicroButton:SetButtonState("PUSHED", 1); else if ( HasCompletedAnyAchievement() and CanShowAchievementUI() ) then AchievementMicroButton:Enable(); AchievementMicroButton:SetButtonState("NORMAL"); else AchievementMicroButton:Disable(); end end -- Keyring microbutton if ( IsBagOpen(KEYRING_CONTAINER) ) then KeyRingButton:SetButtonState("PUSHED", 1); else KeyRingButton:SetButtonState("NORMAL"); end end function AchievementMicroButton_OnEvent(self, event, ...) if ( event == "UPDATE_BINDINGS" ) then AchievementMicroButton.tooltipText = MicroButtonTooltipText(ACHIEVEMENT_BUTTON, "TOGGLEACHIEVEMENT"); else UpdateMicroButtons(); end end function CharacterMicroButton_OnLoad(self) self:SetNormalTexture("Interface\\Buttons\\UI-MicroButtonCharacter-Up"); self:SetPushedTexture("Interface\\Buttons\\UI-MicroButtonCharacter-Down"); self:SetHighlightTexture("Interface\\Buttons\\UI-MicroButton-Hilight"); self:RegisterEvent("UNIT_PORTRAIT_UPDATE"); self:RegisterEvent("UPDATE_BINDINGS"); self:RegisterEvent("PLAYER_ENTERING_WORLD"); self.tooltipText = MicroButtonTooltipText(CHARACTER_BUTTON, "TOGGLECHARACTER0"); self.newbieText = NEWBIE_TOOLTIP_CHARACTER; end function CharacterMicroButton_OnEvent(self, event, ...) if ( event == "UNIT_PORTRAIT_UPDATE" ) then local unit = ...; if ( unit == "player" ) then SetPortraitTexture(MicroButtonPortrait, unit); end return; elseif ( event == "PLAYER_ENTERING_WORLD" ) then SetPortraitTexture(MicroButtonPortrait, "player"); elseif ( event == "UPDATE_BINDINGS" ) then self.tooltipText = MicroButtonTooltipText(CHARACTER_BUTTON, "TOGGLECHARACTER0"); end end function CharacterMicroButton_SetPushed() MicroButtonPortrait:SetTexCoord(0.2666, 0.8666, 0, 0.8333); MicroButtonPortrait:SetAlpha(0.5); end function CharacterMicroButton_SetNormal() MicroButtonPortrait:SetTexCoord(0.2, 0.8, 0.0666, 0.9); MicroButtonPortrait:SetAlpha(1.0); end function MainMenuMicroButton_SetPushed() MainMenuMicroButton:SetButtonState("PUSHED", 1); MainMenuBarPerformanceBar:SetPoint("TOPLEFT", MainMenuMicroButton, "TOPLEFT", 9, -36); end function MainMenuMicroButton_SetNormal() MainMenuMicroButton:SetButtonState("NORMAL"); MainMenuBarPerformanceBar:SetPoint("TOPLEFT", MainMenuMicroButton, "TOPLEFT", 10, -34); end --Talent button specific functions function TalentMicroButton_OnEvent(self, event, ...) if ( event == "PLAYER_LEVEL_UP" ) then local level = ...; UpdateMicroButtons(); if ( not CharacterFrame:IsShown() and level >= SHOW_TALENT_LEVEL) then SetButtonPulse(self, 60, 1); end elseif ( event == "UNIT_LEVEL" or event == "PLAYER_ENTERING_WORLD" ) then UpdateMicroButtons(); elseif ( event == "UPDATE_BINDINGS" ) then self.tooltipText = MicroButtonTooltipText(TALENTS_BUTTON, "TOGGLETALENTS"); end end