You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
3.8 KiB

5 years ago
local Type, Version = "MDTNewPullButton", 1
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
local L = MDT.L
local width,height = 248,32
--Methods
local methods = {
["OnAcquire"] = function(self)
self:SetWidth(width);
self:SetHeight(height);
end,
["Initialize"] = function(self)
self.callbacks = {};
function self.callbacks.OnClickNormal(_, mouseButton)
if not MouseIsOver(MDT.main_frame.sidePanel.pullButtonsScrollFrame.frame) then return end
if(IsControlKeyDown())then
elseif(IsShiftKeyDown()) then
else
if(mouseButton == "RightButton") then
--L_EasyMenu
else
--normal click?
MDT:AddPull()
if MDT.liveSessionActive and MDT:GetCurrentPreset().uid == MDT.livePresetUID then
MDT:LiveSession_SendPulls(MDT:GetPulls())
end
end
end
end
function self.callbacks.OnDragStart()
--
end
function self.callbacks.OnDragStop()
--
end
function self.callbacks.OnKeyDown(self, key)
if (key == "ESCAPE") then
--
end
end
--Set pullNumber
self.pullNumber:SetText(L["+ Add pull"])
self.pullNumber:Show()
self.frame:SetScript("OnClick", self.callbacks.OnClickNormal);
self.frame:SetScript("OnKeyDown", self.callbacks.OnKeyDown);
self.frame:EnableKeyboard(false);
self.frame:SetMovable(true);
self.frame:RegisterForDrag("LeftButton");
self.frame:SetScript("OnDragStart", self.callbacks.OnDragStart);
self.frame:SetScript("OnDragStop", self.callbacks.OnDragStop);
self:Enable();
end,
["SetTitle"] = function(self, title)
self.titletext = title;
self.title:SetText(title);
end,
["Disable"] = function(self)
self.background:Hide();
self.frame:Disable();
end,
["Enable"] = function(self)
self.background:Show();
self.frame:Enable();
end,
["Pick"] = function(self)
self.frame:LockHighlight();
end,
["ClearPick"] = function(self)
self.frame:UnlockHighlight();
end,
["SetIndex"] = function(self, index)
self.index = index
end,
["GetIndex"] = function(self)
return self.index;
end,
}
--Constructor
local function Constructor()
local name = "MDTNewPullButton"..AceGUI:GetNextWidgetNum(Type);
local button = CreateFrame("BUTTON", name, UIParent, "OptionsListButtonTemplate");
button:SetHeight(height);
button:SetWidth(width);
button.dgroup = nil;
button.data = {};
local background = button:CreateTexture(nil, "BACKGROUND");
button.background = background;
background:SetTexture("Interface\\BUTTONS\\UI-Listbox-Highlight2.blp");
background:SetBlendMode("ADD");
background:SetVertexColor(0.5, 0.5, 0.5, 0.25);
background:SetPoint("TOP", button, "TOP");
background:SetPoint("BOTTOM", button, "BOTTOM");
background:SetPoint("LEFT", button, "LEFT");
background:SetPoint("RIGHT", button, "RIGHT");
button.description = {};
button:SetScript("OnEnter", function()
end);
button:SetScript("OnLeave", function()
end);
local pullNumber = button:CreateFontString(nil,"OVERLAY", "GameFontNormal")
pullNumber:SetHeight(18)
pullNumber:SetJustifyH("CENTER");
pullNumber:SetPoint("LEFT", button, "LEFT",5,0);
local widget = {
frame = button,
pullNumber = pullNumber,
background = background,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end
return AceGUI:RegisterAsWidget(widget);
end
AceGUI:RegisterWidgetType(Type, Constructor, Version)