--[[ Menu.lua Functions for the Bagnon right click options menu --]] --show the menu function BagnonMenu_Show(frame) BagnonMenu.frame = frame; BagnonMenu.onShow = 1; BagnonMenuText:SetText(frame:GetName() .. " Settings"); --Set values BagnonMenuLocked:SetChecked(BagnonSets[frame:GetName()].locked); BagnonMenuStayOnScreen:SetChecked(BagnonSets[frame:GetName()].stayOnScreen); local bgSets = BagnonSets[frame:GetName()].bg; BagnonMenuBGSettingsNormalTexture:SetVertexColor(bgSets.r, bgSets.g, bgSets.b, bgSets.a); BagnonMenuReverse:SetChecked(BagnonSets[frame:GetName()].reverse); BagnonMenuColumns:SetValue(frame.cols); BagnonMenuSpacing:SetValue(frame.space); BagnonMenuScale:SetValue(frame:GetScale() * 100); BagnonMenuOpacity:SetValue(frame:GetAlpha() * 100); if(BagnonSets[frame:GetName()].strata) then BagnonMenuStrata:SetValue(BagnonSets[frame:GetName()].strata); else BagnonMenuStrata:SetValue(3); end --a nifty thing I saw in meta map adapted for my usage --places the options menu at the cursor's position local x, y = GetCursorPosition(); x = x / UIParent:GetScale(); y = y / UIParent:GetScale(); BagnonMenu:ClearAllPoints(); BagnonMenu:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", x - 32, y + 48); BagnonMenu:Show(); BagnonMenu.onShow = nil; end --change 's transparency function BagnonMenu_SetAlpha(frame, alpha) if(alpha ~= 1) then BagnonSets[frame:GetName()].alpha = alpha; else BagnonSets[frame:GetName()].alpha = nil end frame:SetAlpha(alpha); end --Set and scale function BagnonMenu_SetScale(frame, scale) BagnonSets[frame:GetName()].scale = scale; Infield.Scale(frame, scale); BagnonFrame_SavePosition(frame); end --set the background of the frame between opaque/transparent function BagnonMenuBG_OnClick(frame) if(ColorPickerFrame:IsShown()) then ColorPickerFrame:Hide(); else local bgSets = BagnonSets[frame:GetName()].bg; ColorPickerFrame.frame = frame; ColorPickerFrame.func = BagnonMenuBG_ColorChange; ColorPickerFrame.hasOpacity = 1; ColorPickerFrame.opacityFunc = BagnonMenuBG_AlphaChange; ColorPickerFrame.cancelFunc = BagnonMenuBG_CancelChanges; BagnonMenuBGSettingsNormalTexture:SetVertexColor(bgSets.r, bgSets.g, bgSets.b, bgSets.a); ColorPickerFrame:SetColorRGB(bgSets.r, bgSets.g, bgSets.b); ColorPickerFrame.opacity = 1 - bgSets.a; ColorPickerFrame.previousValues = {r = bgSets.r, g = bgSets.g, b = bgSets.b, opacity = bgSets.a}; ShowUIPanel(ColorPickerFrame); end end function BagnonMenuBG_ColorChange() local r, g, b = ColorPickerFrame:GetColorRGB(); local frame = ColorPickerFrame.frame; local a = BagnonSets[frame:GetName()].bg.a; frame:SetBackdropColor(r, g, b, a); frame:SetBackdropBorderColor(1, 1, 1, a); BagnonMenuBGSettingsNormalTexture:SetVertexColor(r, g, b, a); BagnonSets[frame:GetName()].bg.r = r; BagnonSets[frame:GetName()].bg.g = g; BagnonSets[frame:GetName()].bg.b = b; end function BagnonMenuBG_AlphaChange() local frame = ColorPickerFrame.frame; local bgSets = BagnonSets[frame:GetName()].bg; local alpha = 1 - OpacitySliderFrame:GetValue(); frame:SetBackdropColor(bgSets.r, bgSets.g, bgSets.b, alpha); frame:SetBackdropBorderColor(1, 1, 1, alpha); BagnonMenuBGSettingsNormalTexture:SetVertexColor(bgSets.r, bgSets.g, bgSets.b, alpha); BagnonSets[frame:GetName()].bg.a = alpha; end function BagnonMenuBG_CancelChanges() local prevValues = ColorPickerFrame.previousValues; local frame = ColorPickerFrame.frame; frame:SetBackdropColor(prevValues.r, prevValues.g, prevValues.b, prevValues.opacity); frame:SetBackdropBorderColor(1, 1, 1, prevValues.opacity); BagnonMenuBGSettingsNormalTexture:SetVertexColor(prevValues.r, prevValues.g, prevValues.b, prevValues.opacity); BagnonSets[frame:GetName()].bg.r = prevValues.r; BagnonSets[frame:GetName()].bg.g = prevValues.g; BagnonSets[frame:GetName()].bg.b = prevValues.b; BagnonSets[frame:GetName()].bg.a = prevValues.opacity; end --set the inventory slots to be organized in either a reversed or normal order function BagnonMenu_ToggleOrder(frame, checked) if( checked ) then BagnonSets[frame:GetName()].reverse = 1; else BagnonSets[frame:GetName()].reverse = nil; end BagnonFrame_OrderBags(frame, checked); BagnonFrame_Generate(frame); end function BagnonMenu_ToggleLock(frame, checked) local frameName = frame:GetName(); if(checked) then BagnonSets[frameName].locked = 1; else BagnonSets[frameName].locked = nil; end end function BagnonMenu_ToggleStayOnScreen(frame, checked) local frameName = frame:GetName(); if(checked) then BagnonSets[frameName].stayOnScreen = 1; frame:SetClampedToScreen(true); else BagnonSets[frameName].stayOnScreen = nil; frame:SetClampedToScreen(false); end end