Compare with Previous | Blame | View Log
local _G = _G local TL, TC, TR = 'TOPLEFT', 'TOP', 'TOPRIGHT' local ML, MC, MR = 'LEFT', 'CENTER', 'RIGHT' local BL, BC, BR = 'BOTTOMLEFT', 'BOTTOM', 'BOTTOMRIGHT' local eventframe = CreateFrame('Frame') local BUTTON_BINDINGS = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 'SHIFT-1', 'SHIFT-2', 'SHIFT-3', 'SHIFT-4', 'SHIFT-5', 'SHIFT-6', 'SHIFT-7', 'SHIFT-8', 'SHIFT-9', 'SHIFT-0', 'SHIFT--', 'SHIFT-=', 'CTRL-1', 'CTRL-2', 'CTRL-3', 'CTRL-4', 'CTRL-5', 'CTRL-6', 'CTRL-7', 'CTRL-8', 'CTRL-9', 'CTRL-0', 'CTRL--', 'CTRL-=', 'ALT-1', 'ALT-2', 'ALT-3', 'ALT-4', 'ALT-5', 'ALT-6', 'ALT-7', 'ALT-8', 'ALT-9', 'ALT-0', 'ALT--', 'ALT-=', } local BUTTON_NAME = 'idActionbarButton' local BUTTON_PADDING = 1 local BAR_NAME = 'idActionbarBar' local bars = {} _G.IDACTIONBAR_BARS = bars local enable local onevent local set_button_look_zoomed local create_button local create_bar local buttons function set_button_look_zoomed (button) local name = button:GetName() local icon = _G[name..'Icon'] local texture = _G[name..'NormalTexture2'] or _G[name..'NormalTexture'] _G[name..'Name']:Hide() _G[name..'HotKey']:Hide() icon:SetTexCoord(0.08,0.92,0.08,0.92) texture:SetTexCoord(0,0,0,0) end function create_button (id) local button = CreateFrame('CheckButton', BUTTON_NAME .. id, UIParent, 'ActionBarButtonTemplate') button:SetAttribute('type', 'action') button:SetAttribute('action', id) return button end function create_bar (barname, buttons, cols) local bar = CreateFrame('Frame', barname, UIParent) local rows = math.ceil(#buttons / cols) bar.buttons = buttons for i, button in ipairs(buttons) do button:SetParent(bar) set_button_look_zoomed(button) button:ClearAllPoints() if i == 1 then button:SetPoint(BL, bar, BL) else if i % cols == 1 then button:SetPoint(BC, buttons[i - cols], TC, 0, BUTTON_PADDING) else button:SetPoint(ML, buttons[i - 1], MR, BUTTON_PADDING, 0) end end end bar:SetWidth(buttons[1]:GetWidth() * cols + BUTTON_PADDING * (cols - 1)) bar:SetHeight(buttons[1]:GetHeight() * rows + BUTTON_PADDING * (rows - 1)) return bar end function enable () buttons = {} for i = 1,48 do buttons[i] = create_button(i) end bars.bar1 = create_bar(BAR_NAME .. 1, buttons, 12) buttons = {} for i = 1,10 do buttons[i] = _G['PetActionButton' .. i] end bars.bar2 = create_bar(BAR_NAME .. 'Pet', buttons, 10) bars.bar1:SetPoint(BC, UIParent, BC, 0, BUTTON_PADDING) bars.bar2:SetPoint(BC, bars.bar1, TC, 0, BUTTON_PADDING) MainMenuBar:Hide() MainMenuBar:SetScript('OnShow', MainMenuBar.Hide) for i = 1, 48 do SetBindingClick(BUTTON_BINDINGS[i], BUTTON_NAME .. i) end end function onevent (frame, event, ...) if event == 'PLAYER_LOGIN' then enable() end end eventframe:SetScript('OnEvent', onevent) eventframe:RegisterEvent('PLAYER_LOGIN')