Skip to content

Instantly share code, notes, and snippets.

@obble
Created September 3, 2019 12:41
Show Gist options
  • Save obble/fe7700e670e5b142395bec0b57fca206 to your computer and use it in GitHub Desktop.
Save obble/fe7700e670e5b142395bec0b57fca206 to your computer and use it in GitHub Desktop.
local _, ns = ...
local i = 1
local j = {}
local k = false
local _, class = UnitClass'player'
local colour = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class]
local menu = CreateFrame('Frame', 'modui_elementsmenu', menu)
menu:SetSize(500, 460)
menu:SetBackdrop(
{
bgFile = [[Interface\Tooltips\UI-Tooltip-Background]],
edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]],
insets = {left = 11, right = 12, top = 12, bottom = 11}
}
)
menu:SetBackdropColor(0, 0, 0, 1)
menu:SetPoint('CENTER', UIParent, 0, 50)
menu:Hide()
tinsert(ns.skinb, menu)
menu.elementcontainer = CreateFrame('Frame', 'modui_elementscontainer', menu)
menu.elementcontainer:SetSize(380, 330)
menu.elementcontainer:SetPoint('TOP', menu, 0, -70)
ns.BD(menu.elementcontainer)
menu.elementscrollframe = CreateFrame('ScrollFrame', 'modui_elementscrollframe', menu.elementcontainer, 'UIPanelScrollFrameTemplate')
menu.elementscrollframe:SetFrameLevel(3)
menu.elementscrollframe:SetPoint('TOPLEFT', menu.elementcontainer, 7, -7)
menu.elementscrollframe:SetPoint('BOTTOMRIGHT', -35, 7)
menu.elementscrollframe:Raise()
menu.elementscrollframe:SetToplevel()
menu.inner = CreateFrame('Frame', nil, menu.elementscrollframe)
menu.inner:SetSize(335, 560)
menu.inner:EnableMouse(true)
menu.inner:EnableMouseWheel(true)
menu.x = CreateFrame('Button', 'modui_elementsCloseButton', menu, 'UIPanelCloseButton')
menu.x:SetPoint('TOPRIGHT', -6, -6)
menu.x:SetScript('OnClick', function() menu:Hide() end)
menu.reload = CreateFrame('Button', 'modui_optionsreload', menu, 'UIPanelButtonTemplate')
menu.reload:SetSize(100, 20)
menu.reload:SetText'Reload UI'
menu.reload:SetPoint('BOTTOMRIGHT', menu, -20, 15)
menu.reload:Hide()
menu.reload:SetScript('OnClick', ReloadUI)
menu.reload.description = menu.reload:CreateFontString(nil, 'OVERLAY', 'GameFontNormalSmall')
menu.reload.description:SetPoint('RIGHT', menu.reload, 'LEFT', -10, -1)
menu.reload.description:SetText'Your new settings require a UI reload to take effect.'
menu.elementscrollframe.content = menu.inner
menu.elementscrollframe:SetScrollChild(menu.inner)
menu.header = menu:CreateTexture(nil, 'ARTWORK')
menu.header:SetSize(256, 64)
menu.header:SetPoint('TOP', menu, 0, 12)
menu.header:SetTexture[[Interface\DialogFrame\UI-DialogBox-Header]]
tinsert(ns.skin, menu.header)
menu.header.t = menu:CreateFontString(nil, 'ARTWORK', 'GameFontNormal')
menu.header.t:SetPoint('TOP', menu.header, 0, -14)
menu.header.t:SetText'modui Elements'
menu.header.f = CreateFrame('Button', 'modui_optionsheader', menu)
menu.header.f:SetAllPoints(menu.header.t)
menu.header.f:SetFrameLevel(menu:GetFrameLevel() + 1)
local ShowReload = function()
menu.reload:Show()
end
local UpdateAllCheckButtons = function(checked)
for _, v in pairs(j) do
if checked then
v:SetChecked(true)
else
v:SetChecked(false)
end
end
end
local AllOnClick = function(self)
if self:GetChecked() then
MODUI_VAR['elements'].all = true
MODUI_VAR['elements']['aura'].enable = true
MODUI_VAR['elements']['unit'].enable = true
UpdateAllCheckButtons(true)
else
MODUI_VAR['elements'].all = false
MODUI_VAR['elements']['aura'].enable = false
MODUI_VAR['elements']['unit'].enable = false
UpdateAllCheckButtons(false)
end
ShowReload()
end
menu.masterswitch = CreateFrame('CheckButton', 'modui_checkbuttonMasterSwitch', menu, 'UICheckButtonTemplate')
menu.masterswitch:SetSize(19, 19)
menu.masterswitch:SetPoint('BOTTOMLEFT', menu.elementcontainer, 'TOPLEFT', 33, 10)
menu.masterswitch:SetChecked(MODUI_VAR['elements']['all'] and true or false)
menu.masterswitch:SetScript('OnClick', AllOnClick)
menu.masterswitch.t = _G[menu.masterswitch:GetName()..'Text']
menu.masterswitch.t:SetJustifyH'LEFT'
menu.masterswitch.t:SetWidth(330)
menu.masterswitch.t:SetPoint('LEFT', menu.masterswitch, 'RIGHT', 4, 0)
menu.masterswitch.t:SetText('Переключить Все |c'..colour.colorStr..'modui|r Элементы. |cffff0000Note: Overrides Selections.|r')
local ToggleChildButton = function(self, table)
if self:GetChecked() then
for _, v in pairs(table) do
v:Enable()
end
else
for _, v in pairs(table) do
visable()
end
end
end
local add = function(name, func, checked, r, g, b, inset, enable)
local bu = CreateFrame('CheckButton', 'modui_checkbutton'..i, menu.inner, 'UICheckButtonTemplate')
bu:SetSize(19, 19)
bu:SetPoint('TOPLEFT',
i == 1 and menu.inner or _G['modui_checkbutton'..(i - 1)],
i == 1 and 'TOPLEFT' or 'BOTTOMLEFT',
i == 1 and 5 or ((k and inset) and 0 or k and -20 or inset and 20 or 0),
i == 1 and -5 or ((k and inset) and 0 or (k or inset) and -5 or 0)
)
bu:SetChecked(checked)
bu:SetScript('OnClick', func)
_G[bu:GetName()..'Text']:SetJustifyH'LEFT'
_G[bu:GetName()..'Text']:SetWidth(270)
_G[bu:GetName()..'Text']:SetPoint('LEFT', bu, 'RIGHT', 4, 0)
_G[bu:GetName()..'Text']:SetText(name)
_G[bu:GetName()..'Text']:SetTextColor(r, g, b)
if enable then
bu:Enable()
else
buisable()
end
i = i + 1
tinsert(j, bu)
k = inset and true or false
--print(name, inset, k)
end
local AddMenu = function()
add(
'Панель Способностей',
function(self)
MODUI_VAR['elements']['mainbar'].enable = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['mainbar'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Каст Заклинаний на Нижней Очереди',
function(self)
MODUI_VAR['elements']['mainbar'].keypress = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['mainbar'].keypress and true or false,
1, .8, 0,
nil,
true
)
add(
'Аура',
function(self)
MODUI_VAR['elements']['aura'].enable = self:GetChecked() and true or false
ShowReload()
ToggleChildButton(
self,
{
_G['modui_checkbutton4'],
_G['modui_checkbutton5']
}
)
end,
MODUI_VAR['elements']['aura'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Полоса на Ауре',
function(self)
MODUI_VAR['elements']['aura'].statusbars = self:GetChecked() and true or false
end,
MODUI_VAR['elements']['aura'].statusbars and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['aura'].enable and true or false
)
add(
'Пользовательский Формат Чисел на Ауре',
function(self)
MODUI_VAR['elements']['aura'].values = self:GetChecked() and true or false
end,
MODUI_VAR['elements']['aura'].values and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['aura'].enable and true or false
)
add(
'Чат',
function(self)
MODUI_VAR['elements']['chat'].enable = self:GetChecked() and true or false
ShowReload()
ToggleChildButton(
self,
{
_G['modui_checkbutton7'],
_G['modui_checkbutton8'],
_G['modui_checkbutton9'],
}
)
end,
MODUI_VAR['elements']['chat'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Пользовательский Текст Чата и События',
function(self)
MODUI_VAR['elements']['chat'].events = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['chat'].events and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['chat'].enable and true or false
)
add(
'Стиль Чата',
function(self)
MODUI_VAR['elements']['chat'].style = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['chat'].style and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['chat'].enable and true or false
)
add(
'URLs',
function(self)
MODUI_VAR['elements']['chat'].url = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['chat'].url and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['chat'].enable and true or false
)
add(
'Инвентарь',
function(self)
MODUI_VAR['elements']['onebag'].enable = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['onebag'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Кнопка для Продажи Серых Предметов у Продавца',
function(self)
MODUI_VAR['elements']['onebag'].greys = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['onebag'].greys and true or false,
1, 1, 1,
true,
true
)
add(
'Вражеская Полоса-каста',
function(self)
MODUI_VAR['elements']['ecastbar'].enable = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['ecastbar'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Табличка',
function(self)
MODUI_VAR['elements']['nameplate'].enable = self:GetChecked() and true or false
ShowReload()
ToggleChildButton(
self,
{
_G['modui_checkbutton14'],
_G['modui_checkbutton15'],
_G['modui_checkbutton16'],
_G['modui_checkbutton17'],
}
)
end,
MODUI_VAR['elements']['nameplate'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Отображать Ауры на Табличке',
function(self)
MODUI_VAR['elements']['nameplate'].aura = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['nameplate'].aura and true or false,
1, 1, 1,
true,
true
)
add(
'Отображать Комбо-Очки на Табличке',
function(self)
MODUI_VAR['elements']['nameplate'].combo = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['nameplate'].combo and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['nameplate'].enable and true or false
)
add(
'Цвета для Классов на Дружественных Табличках',
function(self)
MODUI_VAR['elements']['nameplate'].friendlyclass = self:GetChecked() and true or false
end,
MODUI_VAR['elements']['nameplate'].friendlyclass and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['nameplate'].enable and true or false
)
add(
'Именные Таблички для Тотемов',
function(self)
MODUI_VAR['elements']['nameplate'].totem = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['nameplate'].totem and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['nameplate'].enable and true or false
)
add(
'Квест Трекер(Клик для перехода к журналу квестов)',
function(self)
MODUI_VAR['elements']['tracker'].enable = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['tracker'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Всплывающая подсказка',
function(self)
MODUI_VAR['elements']['tooltip'].enable = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['tooltip'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Фреймы Юнитов',
function(self)
MODUI_VAR['elements']['unit'].enable = self:GetChecked() and true or false
ShowReload()
ToggleChildButton(
self,
{
_G['modui_checkbutton21'],
_G['modui_checkbutton22'],
_G['modui_checkbutton23'],
_G['modui_checkbutton24'],
_G['modui_checkbutton25'],
_G['modui_checkbutton26'],
_G['modui_checkbutton27'],
_G['modui_checkbutton28'],
}
)
end,
MODUI_VAR['elements']['unit'].enable and true or false,
1, .8, 0,
nil,
true
)
add(
'Игрок',
function(self)
MODUI_VAR['elements']['unit'].player = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].player and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Цель',
function(self)
MODUI_VAR['elements']['unit'].target = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].target and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Группа',
function(self)
MODUI_VAR['elements']['unit'].party = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].party and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Цель Цели',
function(self)
MODUI_VAR['elements']['unit'].tot = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].tot and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Питомец',
function(self)
MODUI_VAR['elements']['unit'].pet = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].pet and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Перезарядка на Ауре',
function(self)
MODUI_VAR['elements']['unit'].auras = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].auras and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Значение Цвета на Тексте',
function(self)
MODUI_VAR['elements']['unit'].vcolour = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].vcolour and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
add(
'Элитные/Редкие Драконы в Цветеr(для темной темы UIs)',
function(self)
MODUI_VAR['elements']['unit'].rcolour = self:GetChecked() and true or false
ShowReload()
end,
MODUI_VAR['elements']['unit'].rcolour and true or false,
1, 1, 1,
true,
MODUI_VAR['elements']['unit'].enable and true or false
)
end
local OnEvent = function(self, event, addon)
AddMenu()
end
local e = CreateFrame'Frame'
e:RegisterEvent'VARIABLES_LOADED'
e:SetScript('OnEvent', OnEvent)
--
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment