function SuperMacroFrame_InsertText(text) if ( SM_VARS.tabShown=="regular" ) then SuperMacroFrameText:Insert(text); elseif ( SM_VARS.tabShown=="super") then SuperMacroFrameSuperText:Insert(text); end end function SuperMacroFrame_InsertItemText(link) if ( not link ) then return end; if ( IsAltKeyDown() ) then SuperMacroFrame_InsertText(link); return 1; end if ( IsShiftKeyDown() ) then local item=ItemLinkToName(link); if ( IsControlKeyDown() ) then SuperMacroFrame_InsertText('"'..item..'"'); else SuperMacroFrame_InsertText(item); end return 1; end end -- Alt = [link] -- Shift = item name -- Ctrl-shift ="item name" local oldContainerFrameItemButton_OnClick = ContainerFrameItemButton_OnClick; function ContainerFrameItemButton_OnClick(button, ignoreShift) if ( button=="LeftButton" and not ignoreShift and SuperMacroFrame:IsVisible() ) then local link = GetContainerItemLink(this:GetParent():GetID(), this:GetID()); if ( not SuperMacroFrame_InsertItemText(link) ) then oldContainerFrameItemButton_OnClick(button, ignoreShift); end return; end oldContainerFrameItemButton_OnClick(button, ignoreShift); end local oldPaperDollItemSlotButton_OnClick = PaperDollItemSlotButton_OnClick; function PaperDollItemSlotButton_OnClick(button, ignoreShift) if ( button=="LeftButton" and not ignoreShift and SuperMacroFrame:IsVisible() ) then local link = GetInventoryItemLink("player", this:GetID()); if ( not SuperMacroFrame_InsertItemText(link) ) then oldPaperDollItemSlotButton_OnClick(button, ignoreShift); end return; end oldPaperDollItemSlotButton_OnClick(button, ignoreShift); end local oldBagSlotButton_OnClick = BagSlotButton_OnClick; function BagSlotButton_OnClick() if ( arg1=="LeftButton" and SuperMacroFrame:IsVisible() ) then this:SetChecked(not this:GetChecked()); local link = GetInventoryItemLink("player", this:GetID()); if ( not SuperMacroFrame_InsertItemText(link) ) then oldBagSlotButton_OnClick(); end return; end oldBagSlotButton_OnClick(); end local oldBagSlotButton_OnShiftClick = BagSlotButton_OnShiftClick; function BagSlotButton_OnShiftClick() if ( SuperMacroFrame:IsVisible() ) then this:SetChecked(not this:GetChecked()); local link = GetInventoryItemLink("player", this:GetID()); if ( not SuperMacroFrame_InsertItemText(link) ) then oldBagSlotButton_OnShiftClick(); end return; end oldBagSlotButton_OnShiftClick(); end --Trade skill and craft frames -- Alt = [link] -- Ctrl-Alt = all reagent links -- Shift = item name -- Ctrl-shift ="item name" function SM_TradeSkillSkillButton_OnClick(button) old_SM_TradeSkillSkillButton_OnClick(button); local index = TradeSkillFrame.selectedSkill; local link = GetTradeSkillItemLink(index); if ( link ) then if ( SuperMacroFrame:IsVisible() and IsAltKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetTradeSkillNumReagents(index) do local link = GetTradeSkillReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetTradeSkillReagentInfo( index, i); SuperMacroFrame_InsertText(" "..reagentCount.."x"..link); end else SuperMacroFrame_InsertText(link); end return; end if ( SuperMacroFrame:IsVisible() and IsShiftKeyDown() ) then SuperMacroFrame_InsertItemText(link); end if ( ChatFrameEditBox:IsVisible() and IsShiftKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetTradeSkillNumReagents(index) do local link = GetTradeSkillReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetTradeSkillReagentInfo( index, i); ChatFrameEditBox:Insert(" "..reagentCount.."x"..link); end else ChatFrameEditBox:Insert(link); end return; end end end function SM_CraftButton_OnClick(button) old_SM_CraftButton_OnClick(button); local index = GetCraftSelectionIndex(); local link = GetCraftItemLink(index); --[[ if ( not link ) then link = GetCraftInfo(index); end --]] if ( link ) then if ( SuperMacroFrame:IsVisible() and IsAltKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetCraftNumReagents(index) do local link = GetCraftReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetCraftReagentInfo( index, i); SuperMacroFrame_InsertText(" "..reagentCount.."x"..link); end else SuperMacroFrame_InsertText(link); end return; end if ( SuperMacroFrame:IsVisible() and IsShiftKeyDown() ) then SuperMacroFrame_InsertItemText(link); end if ( ChatFrameEditBox:IsVisible() and IsShiftKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetCraftNumReagents(index) do local link = GetCraftReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetCraftReagentInfo( index, i); ChatFrameEditBox:Insert(" "..reagentCount.."x"..link); end else ChatFrameEditBox:Insert(link); end return; end end end function SM_TradeSkillItem_OnClick() local old_SM_TradeSkillReagent_OnClick = TradeSkillReagent1:GetScript("OnClick"); for i=1, 8 do local item = getglobal("TradeSkillReagent"..i); item:SetScript("OnClick", function() if ( SuperMacroFrame:IsVisible()) then local link = GetTradeSkillReagentItemLink( TradeSkillFrame.selectedSkill, this:GetID()); if ( link ) then SuperMacroFrame_InsertItemText(link); return; end end if ( old_SM_TradeSkillReagent_OnClick ) then old_SM_TradeSkillReagent_OnClick(); end end); end local old_SM_TradeSkillSkillIcon_OnClick = TradeSkillSkillIcon:GetScript("OnClick"); TradeSkillSkillIcon:SetScript("OnClick", function() local index = TradeSkillFrame.selectedSkill; local link = GetTradeSkillItemLink(index); if ( link ) then if ( SuperMacroFrame:IsVisible() and IsAltKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetTradeSkillNumReagents(index) do local link = GetTradeSkillReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetTradeSkillReagentInfo( index, i); SuperMacroFrame_InsertText(" "..reagentCount.."x"..link); end else SuperMacroFrame_InsertText(link); end return; end local inserted; if ( SuperMacroFrame:IsVisible() and IsShiftKeyDown() ) then inserted=SuperMacroFrame_InsertItemText(link); end if ( ChatFrameEditBox:IsVisible() and IsShiftKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetTradeSkillNumReagents(index) do local link = GetTradeSkillReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetTradeSkillReagentInfo( index, i); ChatFrameEditBox:Insert(" "..reagentCount.."x"..link); end else ChatFrameEditBox:Insert(link); end return; end if ( inserted ) then return end; end if ( old_SM_TradeSkillSkillIcon_OnClick )then old_SM_TradeSkillSkillIcon_OnClick(); end end); end function SM_CraftItem_OnClick() local old_SM_CraftReagent_OnClick = CraftReagent1:GetScript("OnClick"); for i=1, 8 do local item = getglobal("CraftReagent"..i); item:SetScript("OnClick", function() if ( SuperMacroFrame:IsVisible() ) then local link = GetCraftReagentItemLink(GetCraftSelectionIndex(), this:GetID()); if ( link ) then SuperMacroFrame_InsertItemText(link); return; end end if ( old_SM_CraftReagent_OnClick ) then old_SM_CraftReagent_OnClick(); end end); end local old_SM_CraftIcon_OnClick = CraftIcon:GetScript("OnClick"); CraftIcon:SetScript("OnClick", function() local index = GetCraftSelectionIndex(); local link = GetCraftItemLink(index); --[[ if ( not link ) then link = GetCraftInfo(index); end --]] if ( link ) then if ( SuperMacroFrame:IsVisible() and IsAltKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetCraftNumReagents(index) do local link = GetCraftReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetCraftReagentInfo( index, i); SuperMacroFrame_InsertText(" "..reagentCount.."x"..link); end else SuperMacroFrame_InsertText(link); end return; end local inserted; if ( SuperMacroFrame:IsVisible() and IsShiftKeyDown() ) then inserted=SuperMacroFrame_InsertItemText(link); end if ( ChatFrameEditBox:IsVisible() and IsShiftKeyDown() ) then if ( IsControlKeyDown() ) then for i=1, GetCraftNumReagents(index) do local link = GetCraftReagentItemLink(index, i); local reagentName, reagentTexture, reagentCount = GetCraftReagentInfo( index, i); ChatFrameEditBox:Insert(" "..reagentCount.."x"..link); end else ChatFrameEditBox:Insert(link); end return; end if ( inserted ) then return end; end if ( old_SM_CraftIcon_OnClick ) then old_SM_CraftIcon_OnClick(); end end); end local oldSpellButton_OnClick = SpellButton_OnClick; function SpellButton_OnClick(drag) local id = SpellBook_GetSpellID(this:GetID()); if ( id > MAX_SPELLS ) then return; end if ( IsShiftKeyDown() and SuperMacroFrame:IsVisible() ) then local spellName, subSpellName = GetSpellName(id, SpellBookFrame.bookType); if ( spellName and not IsSpellPassive(id, SpellBookFrame.bookType) ) then if ( subSpellName and (strlen(subSpellName) > 0) ) then spellName=spellName.."("..subSpellName..")"; end if ( IsControlKeyDown() ) then SuperMacroFrame_InsertText('"'..spellName..'"'); elseif ( IsAltKeyDown() ) then SuperMacroFrame_InsertText(spellName); else SuperMacroFrame_InsertText("\n"..TEXT(SLASH_CAST1).." "..spellName); end end this:SetChecked(not this:GetChecked()); return; end oldSpellButton_OnClick(drag); end