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.
1335 lines
34 KiB
1335 lines
34 KiB
local _;
|
|
VUHDO_RESET_SIZES = false;
|
|
|
|
local _G = _G;
|
|
local strfind = strfind;
|
|
local floor = floor;
|
|
local type = type;
|
|
local tonumber = tonumber;
|
|
local pairs = pairs;
|
|
local ipairs = ipairs;
|
|
|
|
|
|
|
|
local VUHDO_ACTIVE_LABEL_COLOR = {
|
|
["TR"] = 0.6, ["TG"] = 0.6, ["TB"] = 1, ["TO"] = 1,
|
|
};
|
|
|
|
|
|
local VUHDO_NORMAL_LABEL_COLOR = {
|
|
["TR"] = 0.4, ["TG"] = 0.4, ["TB"] = 1, ["TO"] = 1,
|
|
};
|
|
|
|
|
|
|
|
local VUHDO_ACTIVE_LABEL_COLOR_DISA = {
|
|
["TR"] = 0.3, ["TG"] = 0.3, ["TB"] = 0.7, ["TO"] = 1,
|
|
};
|
|
|
|
|
|
|
|
local VUHDO_NORMAL_LABEL_COLOR_DISA = {
|
|
["TR"] = 0.2, ["TG"] = 0.2, ["TB"] = 0.6, ["TO"] = 1,
|
|
};
|
|
|
|
|
|
|
|
-- Backdrops
|
|
BACKDROP_VUHDO_H_SLIDER_8_8_1111 = {
|
|
bgFile = "Interface\\AddOns\\VuhDoOptions\\Images\\blue_lt_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_3",
|
|
tile = true,
|
|
tileSize = 8,
|
|
edgeSize = 8,
|
|
insets = { left = 1, right = 1, top = 1, bottom = 1 },
|
|
};
|
|
|
|
BACKDROP_VUHDO_FRAME_16_16_1111 = {
|
|
bgFile = "Interface\\AddOns\\VuhDoOptions\\Images\\blue_lt_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_2",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
insets = { left = 1, right = 1, top = 1, bottom = 1 },
|
|
};
|
|
|
|
BACKDROP_VUHDO_PANEL_16_16_3333 = {
|
|
bgFile = "Interface\\AddOns\\VuhDo\\Images\\white_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_1",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
insets = { left = 3, right = 3, top = 3, bottom = 3 },
|
|
};
|
|
|
|
BACKDROP_VUHDO_WHITE_PANEL_16_16_3333 = {
|
|
bgFile = "Interface\\AddOns\\VuhDo\\Images\\white_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_2",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
insets = { left = 3, right = 3, top = 3, bottom = 3 },
|
|
};
|
|
|
|
BACKDROP_VUHDO_WHITE_SQUARE_16_16_0000 = {
|
|
bgFile = "Interface\\AddOns\\VuhDo\\Images\\white_square_16_16",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
};
|
|
|
|
BACKDROP_VUHDO_PANEL_SCROLL_BAR_8_8_1111 = {
|
|
bgFile = "Interface\\AddOns\\VuhDoOptions\\Images\\blue_dk_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_3",
|
|
tile = true,
|
|
tileSize = 8,
|
|
edgeSize = 8,
|
|
insets = { left = 1, right = 1, top = 1, bottom = 1 },
|
|
};
|
|
|
|
BACKDROP_VUHDO_SCROLL_PANEL_16_16_0000 = {
|
|
bgFile = "Interface\\AddOns\\VuhDo\\Images\\white_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_4",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
};
|
|
|
|
BACKDROP_VUHDO_SCROLL_PANEL_2_16_16_0000 = {
|
|
bgFile = "Interface\\AddOns\\VuhDo\\Images\\white_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_1",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
};
|
|
|
|
BACKDROP_VUHDO_PANEL_APPEND_BOTTOM_16_16_1111 = {
|
|
bgFile = "Interface\\AddOns\\VuhDoOptions\\Images\\blue_lt_square_16_16",
|
|
edgeFile = "Interface\\AddOns\\VuhDoOptions\\Images\\panel_edges_2_append_bottom",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
insets = { left = 1, right = 1, top = 1, bottom = 1 },
|
|
};
|
|
|
|
local tIsInCustomFunction = false;
|
|
|
|
--
|
|
function VUHDO_lnfCheckButtonOnLoad(aCheckButton)
|
|
if aCheckButton:GetText() then
|
|
local tTexts = VUHDO_splitString(aCheckButton:GetText(), "\n");
|
|
_G[aCheckButton:GetName() .. "Label"]:SetText(tTexts[1]);
|
|
|
|
if tTexts[2] and _G[aCheckButton:GetName() .. "Label2"] then
|
|
_G[aCheckButton:GetName() .. "Label2"]:SetText(tTexts[2]);
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTabCheckButtonOnLoad(aCheckButton)
|
|
if aCheckButton:GetText() then
|
|
_G[aCheckButton:GetName() .. "TextureCheckMarkLabel"]:SetText(aCheckButton:GetText());
|
|
_G[aCheckButton:GetName() .. "Label"]:SetText(aCheckButton:GetText());
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfCheckButtonClicked(aCheckButton)
|
|
_G[aCheckButton:GetName() .. "TextureCheckMark"]:SetShown(aCheckButton:GetChecked());
|
|
end
|
|
local VUHDO_lnfCheckButtonClicked = VUHDO_lnfCheckButtonClicked;
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfRadioButtonClicked(aCheckButton)
|
|
local tButton;
|
|
|
|
for tCnt = 1, select("#", aCheckButton:GetParent():GetChildren()) do
|
|
tButton = select(tCnt, aCheckButton:GetParent():GetChildren());
|
|
if tButton:IsObjectType("CheckButton") and strfind(tButton:GetName(), "Radio", 1, true) then
|
|
tButton:SetChecked(aCheckButton == tButton);
|
|
VUHDO_lnfCheckButtonClicked(tButton);
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTabRadioButtonClicked(aCheckButton)
|
|
local tButton;
|
|
VUHDO_lnfRadioButtonClicked(aCheckButton);
|
|
|
|
-- Achtung: Zuerst verstecken dann erst anzeigen, damit OnShow/OnHide in der richtigen Reihenfolge kommt
|
|
for tCnt = 1, select("#", aCheckButton:GetParent():GetChildren()) do
|
|
tButton = select(tCnt, aCheckButton:GetParent():GetChildren());
|
|
|
|
if tButton:IsObjectType("CheckButton")
|
|
and strfind(tButton:GetName(), "Radio", 1, true)
|
|
and tButton["tabPanel"] ~= nil
|
|
and tButton["tabPanel"] ~= aCheckButton["tabPanel"] then
|
|
_G[tButton["tabPanel"]]:Hide();
|
|
end
|
|
end
|
|
|
|
_G[aCheckButton["tabPanel"]]:Show();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTabCheckButtonClicked(aCheckButton)
|
|
local tButton;
|
|
for tCnt = 1, select("#", aCheckButton:GetParent():GetChildren()) do
|
|
tButton = select(tCnt, aCheckButton:GetParent():GetChildren());
|
|
if tButton:IsObjectType("CheckButton") and strfind(tButton:GetName(), "Radio", 1, true) then
|
|
if aCheckButton == tButton then
|
|
tButton:SetChecked(true);
|
|
VUHDO_lnfTabCheckButtonOnEnter(tButton);
|
|
else
|
|
tButton:SetChecked(false);
|
|
VUHDO_lnfTabCheckButtonOnLeave(tButton);
|
|
end
|
|
|
|
VUHDO_lnfCheckButtonClicked(tButton);
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfCheckButtonOnEnter(aCheckButton)
|
|
local tName = aCheckButton:GetName();
|
|
_G[tName .. "TextureActiveSwatch"]:Show();
|
|
|
|
if _G[tName .. "Label"] then
|
|
_G[tName .. "Label"]:SetTextColor(VUHDO_textColor(VUHDO_ACTIVE_LABEL_COLOR));
|
|
end
|
|
|
|
if _G[tName .. "Label2"] then
|
|
_G[tName .. "Label2"]:SetTextColor(VUHDO_textColor(VUHDO_ACTIVE_LABEL_COLOR));
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfCheckButtonOnLeave(aCheckButton)
|
|
local tName = aCheckButton:GetName();
|
|
_G[tName .. "TextureActiveSwatch"]:Hide();
|
|
|
|
if _G[tName .. "Label"] then
|
|
_G[tName .. "Label"]:SetTextColor(VUHDO_textColor(VUHDO_NORMAL_LABEL_COLOR));
|
|
end
|
|
|
|
if _G[tName .. "Label2"] then
|
|
_G[tName .. "Label2"]:SetTextColor(VUHDO_textColor(VUHDO_NORMAL_LABEL_COLOR));
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfRadioBoxOnEnter(aCheckButton)
|
|
_G[aCheckButton:GetName() .. "TextureActiveSwatch"]:Show();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfRadioBoxOnLeave(aCheckButton)
|
|
_G[aCheckButton:GetName() .. "TextureActiveSwatch"]:Hide();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTabCheckButtonOnEnter(aCheckButton)
|
|
local tName = aCheckButton:GetName();
|
|
_G[tName .. "TextureActiveSwatch"]:Show();
|
|
|
|
if aCheckButton:GetChecked() then
|
|
_G[tName .. "TextureCheckMarkLabel"]:SetTextColor(VUHDO_textColor(VUHDO_ACTIVE_LABEL_COLOR));
|
|
else
|
|
_G[tName .. "Label"]:SetTextColor(VUHDO_textColor(VUHDO_ACTIVE_LABEL_COLOR_DISA));
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTabCheckButtonOnLeave(aCheckButton)
|
|
local tName = aCheckButton:GetName();
|
|
_G[tName .. "TextureActiveSwatch"]:Hide();
|
|
|
|
if aCheckButton:GetChecked() then
|
|
_G[aCheckButton:GetName() .. "TextureCheckMarkLabel"]:SetTextColor(VUHDO_textColor(VUHDO_NORMAL_LABEL_COLOR));
|
|
else
|
|
_G[aCheckButton:GetName() .. "Label"]:SetTextColor(VUHDO_textColor(VUHDO_NORMAL_LABEL_COLOR_DISA));
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tText;
|
|
local tUnit;
|
|
function VUHDO_lnfSliderOnValueChanged(aSlider)
|
|
if _G[aSlider:GetName() .. "SliderValue"] then
|
|
tText = "" .. floor((_G[aSlider:GetName() .. "Slider"]:GetValue() + 0.005) * 100) * 0.01;
|
|
tUnit = aSlider:GetAttribute("unit");
|
|
|
|
if not VUHDO_strempty(tUnit) then tText = tText .. tUnit; end
|
|
|
|
_G[aSlider:GetName() .. "SliderValue"]:SetText(tText);
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
function VUHDO_lnfSliderOnLoad(aSlider, aText, aMinValue, aMaxValue, aUnitName, aValueStep)
|
|
_G[aSlider:GetName() .. "SliderTitle"]:SetText(aText);
|
|
aSlider:SetAttribute("unit", aUnitName);
|
|
_G[aSlider:GetName() .. "Slider"]:SetMinMaxValues(aMinValue, aMaxValue);
|
|
_G[aSlider:GetName() .. "Slider"]:SetValueStep(aValueStep or 1);
|
|
VUHDO_lnfSliderOnValueChanged(aSlider);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local sLastComboItem = nil;
|
|
|
|
function VUHDO_lnfSetLastComboItem(anItem)
|
|
sLastComboItem = anItem:GetName();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfIsLastComboIten()
|
|
local tFocus = GetMouseFocus();
|
|
return tFocus ~= nil and tFocus:GetName() == sLastComboItem;
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfRadioButtonOnShow(aRadioButton)
|
|
if aRadioButton:GetChecked() then
|
|
VUHDO_lnfRadioButtonClicked(aRadioButton);
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfComboItemOnEnter(aComboItem)
|
|
local tComboBox = aComboItem.parentCombo;
|
|
if IsMouseButtonDown() and not tComboBox["isMulti"] then
|
|
VUHDO_lnfComboSetSelectedValue(tComboBox, aComboItem:GetAttribute("value"));
|
|
end
|
|
aComboItem:SetBackdropColor(0.8, 0.8, 1, 1);
|
|
|
|
if not tComboBox["isMulti"] then
|
|
_G[aComboItem:GetName() .. "Icon"]:SetScale(2);
|
|
_G[aComboItem:GetName() .. "Icon"]:SetPoint("RIGHT", aComboItem:GetName(), "RIGHT", -10, 0);
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfComboItemOnLeave(aComboItem)
|
|
if aComboItem.parentCombo["isScrollable"] then aComboItem:SetBackdropColor(0, 0, 0, 0);
|
|
else aComboItem:SetBackdropColor(1, 1, 1, 1); end
|
|
|
|
local tComboBox = aComboItem.parentCombo;
|
|
if not tComboBox["isMulti"] then
|
|
_G[aComboItem:GetName() .. "Icon"]:SetScale(1);
|
|
_G[aComboItem:GetName() .. "Icon"]:SetPoint("RIGHT", aComboItem:GetName(), "RIGHT", -6, 0);
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local function VUHDO_hideAllComponentExtensions(aComponent)
|
|
local tRootPane = aComponent:GetParent():GetParent();
|
|
local tSubPanel, tComponent, tSelectPanel;
|
|
|
|
for tCnt = 1, select("#", tRootPane:GetChildren()) do
|
|
tSubPanel = select(tCnt, tRootPane:GetChildren());
|
|
for tCnt2 = 1, select("#", tSubPanel:GetChildren()) do
|
|
tComponent = select(tCnt2, tSubPanel:GetChildren());
|
|
if aComponent ~= tComponent then
|
|
-- 1. Combo-Flyouts
|
|
if tComponent and strfind(tComponent:GetName() or "", "Combo") then
|
|
tSelectPanel = _G[tComponent:GetName() .. "ScrollPanel"] or _G[tComponent:GetName() .. "SelectPanel"];
|
|
if tSelectPanel then
|
|
tSelectPanel:Hide();
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfComboButtonClicked(aButton)
|
|
local tComboBox = aButton:GetParent();
|
|
local tSelectPanel = _G[tComboBox:GetName() .. "ScrollPanel"] or _G[tComboBox:GetName() .. "SelectPanel"];
|
|
|
|
if tSelectPanel:IsShown() then
|
|
tSelectPanel:Hide();
|
|
else
|
|
if not tComboBox["prohibitCloseExtensions"] then
|
|
VUHDO_hideAllComponentExtensions(tComboBox);
|
|
end
|
|
tSelectPanel:Show();
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
function VUHDO_lnfComboSelectHide(aComboBox)
|
|
if aComboBox["isScrollable"] then _G[aComboBox:GetName() .. "ScrollPanel"]:Hide();
|
|
else _G[aComboBox:GetName() .. "SelectPanel"]:Hide(); end
|
|
end
|
|
|
|
|
|
--
|
|
--
|
|
--
|
|
-- Model changing
|
|
--
|
|
--
|
|
--
|
|
|
|
|
|
|
|
--
|
|
local VUHDO_NUM_TEMPLATE = "#PNUM#";
|
|
local VUHDO_VAL_TEMPLATE = "##";
|
|
|
|
function VUHDO_lnfSetModel(aComponent, aModel)
|
|
aComponent:SetAttribute("model", aModel);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfSetRadioModel(aComponent, aModel, aValue)
|
|
aComponent:SetAttribute("model", aModel);
|
|
aComponent:SetAttribute("radio_value", aValue);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_setComboModel(aComponent, aModel, anEntryTable, aTitle)
|
|
aComponent:SetAttribute("model", aModel);
|
|
aComponent:SetAttribute("combo_table", anEntryTable);
|
|
aComponent:SetAttribute("title", aTitle);
|
|
|
|
if _G[aComponent:GetName() .. "EditBox"] then
|
|
VUHDO_lnfSetModel(_G[aComponent:GetName() .. "EditBox"], aModel);
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tPanelNum;
|
|
local tTableIndices;
|
|
local tGlobal;
|
|
local tLastField;
|
|
local tIndex;
|
|
local tLastIndex;
|
|
local tEnd;
|
|
function VUHDO_lnfUpdateVar(aModel, aValue, aPanelNum)
|
|
tPanelNum = nil;
|
|
|
|
if not aPanelNum then aPanelNum = DESIGN_MISC_PANEL_NUM; end
|
|
|
|
if VUHDO_isVariablesLoaded() and aModel then
|
|
|
|
tTableIndices = VUHDO_splitString(aModel, ".");
|
|
tGlobal = _G[tTableIndices[1]];
|
|
tLastField = tGlobal;
|
|
tEnd = #tTableIndices - 1;
|
|
|
|
for tCnt = 2, tEnd do
|
|
tIndex = tTableIndices[tCnt];
|
|
if VUHDO_NUM_TEMPLATE == tIndex then
|
|
tIndex = aPanelNum;
|
|
tPanelNum = aPanelNum;
|
|
elseif strfind(tIndex, VUHDO_VAL_TEMPLATE, 1, true) then
|
|
tIndex = VUHDO_getNumbersFromString(tIndex, 1)[1];
|
|
end
|
|
|
|
tLastField = tLastField[tIndex];
|
|
end
|
|
tLastIndex = tTableIndices[#tTableIndices];
|
|
if VUHDO_NUM_TEMPLATE == tLastIndex then
|
|
tLastIndex = aPanelNum;
|
|
tPanelNum = aPanelNum;
|
|
elseif strfind(tLastIndex, VUHDO_VAL_TEMPLATE, 1, true) then
|
|
tLastIndex = VUHDO_getNumbersFromString(tLastIndex, 1)[1];
|
|
end
|
|
|
|
if "table" == type(tLastField) then
|
|
tLastField[tLastIndex] = aValue;
|
|
else
|
|
_G[tTableIndices[1]] = aValue;
|
|
end
|
|
|
|
if not InCombatLockdown() then
|
|
if VUHDO_RESET_SIZES then resetSizeCalcCaches(); end
|
|
|
|
if strfind(aModel, "VUHDO_OPTIONS_SETTINGS.", 1, true)
|
|
or strfind(aModel, "INTERNAL_MODEL_", 1, true) then
|
|
|
|
elseif tPanelNum then
|
|
if (strfind(aModel, "TOOLTIP", 1, true) ~= nil) then
|
|
VUHDO_demoTooltip(tPanelNum);
|
|
else
|
|
VUHDO_initDynamicPanelModels();
|
|
VUHDO_timeRedrawPanel(tPanelNum, 0.3);
|
|
end
|
|
|
|
elseif strfind(aModel, "_BUFF_", 1, true) then
|
|
VUHDO_reloadBuffPanel();
|
|
|
|
elseif strfind(aModel, "BLIZZ_UI", 1, true) then
|
|
VUHDO_initBlizzFrames();
|
|
|
|
else
|
|
if strfind(aModel, "VUHDO_CONFIG.", 1, true) then
|
|
VUHDO_demoSetupResetUsers();
|
|
end
|
|
|
|
VUHDO_initDebuffs();
|
|
VUHDO_customHealthInitLocalOverrides(); -- For life left colors
|
|
VUHDO_timeReloadUI(0.3, true);
|
|
end
|
|
end
|
|
VUHDO_toolboxInitLocalOverrides();
|
|
end
|
|
end
|
|
end
|
|
local VUHDO_lnfUpdateVar = VUHDO_lnfUpdateVar;
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local VUHDO_lnfOnUpdate = false;
|
|
local function VUHDO_lnfUpdateAllModelControls(aComponent, aValue)
|
|
local tModel;
|
|
local tComp;
|
|
local tCurrModel = aComponent:GetAttribute("model");
|
|
|
|
if VUHDO_lnfOnUpdate or not tCurrModel then return; end
|
|
|
|
local tPanel = aComponent:GetParent();
|
|
if not tPanel then return; end
|
|
|
|
VUHDO_lnfOnUpdate = true;
|
|
|
|
for tCnt = 1, select("#", tPanel:GetChildren()) do
|
|
tComp = select(tCnt, tPanel:GetChildren());
|
|
|
|
tModel = tComp:GetAttribute("model");
|
|
if tModel and strfind(tCurrModel, tModel , 1, true) and aComponent ~= tComp then
|
|
if tComp:IsShown() then
|
|
tComp:Hide();
|
|
tComp:Show();
|
|
end
|
|
end
|
|
end
|
|
|
|
VUHDO_lnfOnUpdate = false;
|
|
end
|
|
|
|
local tModel, tFunction;
|
|
function VUHDO_lnfUpdateVarFromModel(aComponent, aValue, aPanelNum)
|
|
tModel = aComponent:GetAttribute("model");
|
|
if not tModel then return; end
|
|
|
|
VUHDO_lnfUpdateVar(tModel, aValue, aPanelNum);
|
|
VUHDO_lnfUpdateAllModelControls(aComponent, aValue);
|
|
VUHDO_lnfUpdateComponentsByConstraints(aComponent);
|
|
|
|
tFunction = aComponent:GetAttribute("custom_function_post");
|
|
if tFunction then
|
|
tIsInCustomFunction = true;
|
|
tFunction(aComponent:GetParent(), aValue);
|
|
tIsInCustomFunction = false;
|
|
end
|
|
end
|
|
end
|
|
local VUHDO_lnfUpdateVarFromModel = VUHDO_lnfUpdateVarFromModel;
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tTableIndices;
|
|
local tGlobal;
|
|
local tLastField;
|
|
local tIndex;
|
|
local tLastIndex;
|
|
function VUHDO_lnfGetValueFrom(aModel)
|
|
if VUHDO_isVariablesLoaded() and aModel then
|
|
tTableIndices = VUHDO_splitString(aModel, ".");
|
|
tGlobal = _G[tTableIndices[1]];
|
|
tLastField = tGlobal;
|
|
|
|
for tCnt = 2, #tTableIndices - 1 do
|
|
tIndex = tTableIndices[tCnt];
|
|
|
|
if VUHDO_NUM_TEMPLATE == tIndex then
|
|
tIndex = DESIGN_MISC_PANEL_NUM;
|
|
|
|
elseif strfind(tIndex, VUHDO_VAL_TEMPLATE, 1, true) then
|
|
tIndex = VUHDO_getNumbersFromString(tIndex, 1)[1];
|
|
end
|
|
|
|
tLastField = tLastField[tIndex];
|
|
end
|
|
|
|
tLastIndex = tTableIndices[#tTableIndices];
|
|
if VUHDO_NUM_TEMPLATE == tLastIndex then
|
|
tLastIndex = DESIGN_MISC_PANEL_NUM;
|
|
|
|
elseif strfind(tLastIndex, VUHDO_VAL_TEMPLATE, 1, true) then
|
|
tLastIndex = VUHDO_getNumbersFromString(tLastIndex, 1)[1];
|
|
end
|
|
|
|
if type(tLastField) == "table" then
|
|
return tLastField[tLastIndex];
|
|
else
|
|
return tLastField;
|
|
end
|
|
else
|
|
return nil;
|
|
end
|
|
end
|
|
end
|
|
local VUHDO_lnfGetValueFrom = VUHDO_lnfGetValueFrom;
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfGetValueFromModel(aComponent)
|
|
VUHDO_lnfUpdateComponentsByConstraints(aComponent);
|
|
return VUHDO_lnfGetValueFrom(aComponent:GetAttribute("model"));
|
|
end
|
|
local VUHDO_lnfGetValueFromModel = VUHDO_lnfGetValueFromModel;
|
|
|
|
|
|
|
|
-- Slider
|
|
--
|
|
do
|
|
local tValue;
|
|
local tModel;
|
|
function VUHDO_lnfSliderUpdateModel(aSlider)
|
|
tValue = tonumber(aSlider:GetValue());
|
|
tModel = aSlider:GetParent():GetAttribute("model");
|
|
if tModel and strfind(tModel, "barTexture", 1, true) then
|
|
if VUHDO_STATUS_BARS[tValue] then
|
|
tValue = VUHDO_STATUS_BARS[tValue][1];
|
|
end
|
|
end
|
|
|
|
|
|
--[[if tModel and strfind(tModel, "SOUND", 1, true) and VUHDO_SOUNDS[tValue] then
|
|
tValue = VUHDO_SOUNDS[tValue][1];
|
|
if tValue then VUHDO_playSoundFile(tValue); end
|
|
end]]
|
|
|
|
VUHDO_lnfUpdateVarFromModel(aSlider:GetParent(), tValue);
|
|
end
|
|
end
|
|
|
|
--
|
|
do
|
|
local tValue;
|
|
local tModel;
|
|
function VUHDO_lnfSliderInitFromModel(aSlider)
|
|
tValue = VUHDO_lnfGetValueFromModel(aSlider:GetParent());
|
|
tModel = aSlider:GetParent():GetAttribute("model");
|
|
|
|
if tModel and strfind(tModel, "barTexture", 1, true) then
|
|
local tIndex, tInfo;
|
|
for tIndex, tInfo in pairs(VUHDO_STATUS_BARS) do
|
|
if tInfo[1] == tValue then
|
|
tValue = tIndex;
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
|
|
if tModel and strfind(tModel, "SOUND", 1, true) then
|
|
for tIndex, tInfo in pairs(VUHDO_SOUNDS) do
|
|
if tInfo[1] == tValue then
|
|
tValue = tIndex;
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
|
|
if tValue and tonumber(tValue) then
|
|
aSlider:SetValue(tonumber(tValue));
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- Check Button
|
|
--
|
|
function VUHDO_lnfCheckButtonUpdateModel(aCheckButton)
|
|
local tIsChecked = aCheckButton:GetChecked();
|
|
|
|
if tIsChecked == nil or tIsChecked == 0 then
|
|
tIsChecked = false;
|
|
|
|
elseif tIsChecked == 1 then
|
|
tIsChecked = true;
|
|
end
|
|
|
|
VUHDO_lnfUpdateVarFromModel(aCheckButton, tIsChecked);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfInverseCheckButtonUpdateModel(aCheckButton)
|
|
local tIsChecked = aCheckButton:GetChecked();
|
|
|
|
if tIsChecked == nil or tIsChecked == 0 then
|
|
tIsChecked = false;
|
|
|
|
elseif tIsChecked == 1 then
|
|
tIsChecked = true;
|
|
end
|
|
VUHDO_lnfUpdateVarFromModel(aCheckButton, not tIsChecked);
|
|
end
|
|
|
|
|
|
--
|
|
function VUHDO_lnfCheckButtonInitFromModel(aCheckButton)
|
|
aCheckButton:SetChecked(VUHDO_lnfGetValueFromModel(aCheckButton));
|
|
VUHDO_lnfCheckButtonClicked(aCheckButton);
|
|
VUHDO_lnfCheckButtonOnLoad(aCheckButton);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfInverseCheckButtonInitFromModel(aCheckButton)
|
|
aCheckButton:SetChecked(not VUHDO_lnfGetValueFromModel(aCheckButton));
|
|
VUHDO_lnfCheckButtonClicked(aCheckButton);
|
|
VUHDO_lnfCheckButtonOnLoad(aCheckButton);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local function VUHDO_triStateSetSelected(aCheckButton)
|
|
local tValue = VUHDO_lnfGetValueFromModel(aCheckButton);
|
|
local tTexture = _G[aCheckButton:GetName() .. "TextureCheckMark"];
|
|
local tLabel = _G[aCheckButton:GetName() .. "Label2"];
|
|
|
|
tTexture:ClearAllPoints();
|
|
|
|
if 3 == tValue then
|
|
tTexture:SetPoint("BOTTOMLEFT", aCheckButton:GetName(), "BOTTOMLEFT", 5, 0);
|
|
_G[tTexture:GetName() .. "Texture"]:SetVertexColor(1, 0.4, 0.4, 1);
|
|
tLabel:SetTextColor(0.6, 0, 0, 1);
|
|
|
|
elseif 2 == tValue then
|
|
tTexture:SetPoint("LEFT", aCheckButton:GetName(), "LEFT", 5, 0);
|
|
_G[tTexture:GetName() .. "Texture"]:SetVertexColor(1, 1, 0.4, 1);
|
|
tLabel:SetTextColor(0, 0, 0.6, 1);
|
|
|
|
else
|
|
tTexture:SetPoint("TOPLEFT", aCheckButton:GetName(), "TOPLEFT", 5, 0);
|
|
_G[tTexture:GetName() .. "Texture"]:SetVertexColor(0.4, 1, 0.4, 1);
|
|
tLabel:SetTextColor(0, 0.6, 0, 1);
|
|
end
|
|
|
|
tLabel:SetText(aCheckButton:GetAttribute("radio_value")[tValue]);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTriStateCheckButtonUpdateModel(aCheckButton)
|
|
local tValue = VUHDO_lnfGetValueFromModel(aCheckButton);
|
|
tValue = (tValue % 3) + 1;
|
|
VUHDO_lnfUpdateVarFromModel(aCheckButton, tValue);
|
|
VUHDO_triStateSetSelected(aCheckButton);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfTriStateCheckButtonInitFromModel(aCheckButton)
|
|
VUHDO_lnfCheckButtonOnLoad(aCheckButton);
|
|
VUHDO_triStateSetSelected(aCheckButton);
|
|
end
|
|
|
|
|
|
|
|
-- Radio Button
|
|
--
|
|
function VUHDO_lnfRadioButtonUpdateModel(aRadioButton)
|
|
VUHDO_lnfUpdateVarFromModel(aRadioButton, aRadioButton:GetAttribute("radio_value"));
|
|
end
|
|
|
|
|
|
|
|
--
|
|
local tRadioValue;
|
|
local tModelValue;
|
|
function VUHDO_lnfRadioButtonInitFromModel(aRadioButton)
|
|
if not aRadioButton:GetAttribute("model") then return; end
|
|
|
|
tRadioValue = aRadioButton:GetAttribute("radio_value");
|
|
tModelValue = VUHDO_lnfGetValueFromModel(aRadioButton);
|
|
|
|
if tModelValue == nil then tModelValue = false; end
|
|
|
|
aRadioButton:SetChecked(tModelValue == tRadioValue);
|
|
VUHDO_lnfRadioButtonOnShow(aRadioButton);
|
|
VUHDO_lnfCheckButtonOnLoad(aRadioButton);
|
|
end
|
|
|
|
|
|
|
|
-- Edit Box
|
|
--
|
|
local tTable;
|
|
local tFunction;
|
|
function VUHDO_lnfEditBoxUpdateModel(anEditBox)
|
|
tTable = anEditBox:GetParent():GetAttribute("combo_table");
|
|
|
|
if tTable then
|
|
for _, tValues in pairs(tTable) do
|
|
if tValues[2] == anEditBox:GetText() then
|
|
VUHDO_lnfUpdateVarFromModel(anEditBox, tValues[1]);
|
|
return;
|
|
end
|
|
end
|
|
end
|
|
|
|
tFunction = anEditBox:GetParent():GetAttribute("custom_function");
|
|
if tFunction and anEditBox:GetParent():GetAttribute("derive_custom") then
|
|
tIsInCustomFunction = true;
|
|
tFunction(anEditBox:GetParent(), anEditBox:GetText());
|
|
tIsInCustomFunction = false;
|
|
end
|
|
|
|
VUHDO_lnfUpdateVarFromModel(anEditBox, anEditBox:GetText());
|
|
|
|
tFunction = anEditBox:GetParent():GetAttribute("custom_function_post");
|
|
if tFunction and anEditBox:GetParent():GetAttribute("derive_custom") then
|
|
tIsInCustomFunction = true;
|
|
tFunction(anEditBox:GetParent(), anEditBox:GetText());
|
|
tIsInCustomFunction = false;
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfEditBoxInitFromModel(anEditBox)
|
|
anEditBox:SetText(VUHDO_lnfGetValueFromModel(anEditBox) or "");
|
|
end
|
|
|
|
|
|
|
|
-- ComboBox
|
|
--
|
|
-- tInfo = { Value, Text/Texture }
|
|
local VUHDO_COMBO_ITEM_WIDTH;
|
|
local VUHDO_COMBO_ITEM_HEIGHT;
|
|
local VUHDO_COMBO_ITEMS_PER_COL;
|
|
|
|
local tTable;
|
|
local tItemName;
|
|
local tCnt;
|
|
local tItemPanel;
|
|
local tDropdownBox, tItemContainer;
|
|
local tXIdx;
|
|
local tYIdx;
|
|
local tMaxY;
|
|
local tHeight;
|
|
local tSpellId;
|
|
function VUHDO_lnfComboInitItems(aComboBox)
|
|
tTable = aComboBox:GetAttribute("combo_table");
|
|
|
|
if not tTable then return; end
|
|
|
|
tXIdx = 0;
|
|
tYIdx = 0;
|
|
tMaxY = 0;
|
|
|
|
if aComboBox["isScrollable"] then
|
|
tDropdownBox = _G[aComboBox:GetName() .. "ScrollPanel"];
|
|
tItemContainer = _G[aComboBox:GetName() .. "ScrollPanelSelectPanel"];
|
|
else
|
|
tDropdownBox = _G[aComboBox:GetName() .. "SelectPanel"];
|
|
tItemContainer = _G[aComboBox:GetName() .. "SelectPanel"];
|
|
end
|
|
|
|
tCnt = 1;
|
|
for tIndex, tInfo in ipairs(tTable) do
|
|
if aComboBox["isScrollable"] then
|
|
tItemName = aComboBox:GetName() .. "ScrollPanelSelectPanelItem" .. tIndex;
|
|
else
|
|
tItemName = aComboBox:GetName() .. "SelectPanelItem" .. tIndex;
|
|
end
|
|
|
|
if not _G[tItemName] then
|
|
tItemPanel = CreateFrame("Frame", tItemName, tItemContainer, "VuhdoComboItemTemplate");
|
|
if aComboBox["isMulti"] then
|
|
_G[tItemName .. "CheckTextureTexture"]:SetTexture("Interface\\AddOns\\VuhDoOptions\\Images\\icon_check");
|
|
else
|
|
_G[tItemName .. "CheckTextureTexture"]:SetTexture("Interface\\AddOns\\VuhDo\\Images\\icon_red");
|
|
end
|
|
|
|
tItemPanel["parentCombo"] = aComboBox;
|
|
tItemPanel["dropwdownBox"] = tDropdownBox;
|
|
else
|
|
tItemPanel = _G[tItemName];
|
|
end
|
|
|
|
tItemPanel:ClearAllPoints();
|
|
if (type(tInfo[2]) == "string") then
|
|
tSpellId = VUHDO_getNumbersFromString(tInfo[2], 1)[1];
|
|
if tSpellId then tSpellId = tostring(tSpellId); end
|
|
|
|
_G[tItemPanel:GetName() .. "IconTexture"]:SetTexture(VUHDO_getGlobalIcon(tSpellId or tInfo[2]));
|
|
_G[tItemPanel:GetName() .. "IconTexture"]:SetTexCoord(0, 1, 0, 1);
|
|
_G[tItemPanel:GetName() .. "LabelLabel"]:SetText(tInfo[2]);
|
|
VUHDO_COMBO_ITEM_HEIGHT = 16;
|
|
VUHDO_COMBO_ITEM_WIDTH = 220;
|
|
VUHDO_COMBO_ITEMS_PER_COL = 25;
|
|
else
|
|
_G[tItemPanel:GetName() .. "IconTexture"]:SetTexture(_G[tInfo[2]:GetName() .. "I"]:GetTexture());
|
|
_G[tItemPanel:GetName() .. "IconTexture"]:SetTexCoord(_G[tInfo[2]:GetName() .. "I"]:GetTexCoord());
|
|
_G[tItemPanel:GetName() .. "Icon"]:SetWidth(30);
|
|
_G[tItemPanel:GetName() .. "Icon"]:SetHeight(30);
|
|
VUHDO_COMBO_ITEM_HEIGHT = 34;
|
|
VUHDO_COMBO_ITEM_WIDTH = 50;
|
|
VUHDO_COMBO_ITEMS_PER_COL = 3;
|
|
end
|
|
|
|
tItemPanel:SetPoint("TOPLEFT", tItemContainer:GetName(), "TOPLEFT", 3 + tXIdx * VUHDO_COMBO_ITEM_WIDTH, - (3 + tYIdx * VUHDO_COMBO_ITEM_HEIGHT));
|
|
tItemPanel:SetWidth(VUHDO_COMBO_ITEM_WIDTH);
|
|
tItemPanel:SetHeight(VUHDO_COMBO_ITEM_HEIGHT);
|
|
tItemPanel:Show();
|
|
tItemPanel:SetAttribute("value", tInfo[1]);
|
|
if (aComboBox.isScrollable) then
|
|
tItemPanel:SetBackdropColor(0, 0, 0, 0);
|
|
end
|
|
|
|
tCnt = tCnt + 1;
|
|
if tCnt > VUHDO_COMBO_MAX_ENTRIES and not aComboBox["isScrollable"] then
|
|
break;
|
|
end
|
|
|
|
tYIdx = tYIdx + 1;
|
|
if tYIdx > tMaxY then tMaxY = tYIdx; end
|
|
|
|
if tYIdx > VUHDO_COMBO_ITEMS_PER_COL and not aComboBox["isScrollable"] then
|
|
tYIdx = 0;
|
|
tXIdx = tXIdx + 1;
|
|
end
|
|
end
|
|
|
|
if (tYIdx == 0 and tXIdx > 0) then
|
|
tXIdx = tXIdx - 1;
|
|
end
|
|
|
|
for tCnt2 = tCnt, VUHDO_COMBO_MAX_ENTRIES do
|
|
if aComboBox["isScrollable"] then
|
|
tItemName = aComboBox:GetName() .. "ScrollPanelSelectPanelItem" .. tCnt2;
|
|
else
|
|
tItemName = aComboBox:GetName() .. "SelectPanelItem" .. tCnt2;
|
|
end
|
|
|
|
if _G[tItemName] then _G[tItemName]:Hide();
|
|
else break; end
|
|
end
|
|
|
|
if tMaxY == 0 then tMaxY = 1; end
|
|
|
|
tDropdownBox:SetWidth((tXIdx + 1) * VUHDO_COMBO_ITEM_WIDTH + 6);
|
|
tItemContainer:SetHeight(tMaxY * VUHDO_COMBO_ITEM_HEIGHT + 6);
|
|
|
|
if aComboBox["isScrollable"] then
|
|
tItemContainer:SetWidth(10); -- Doesn't matter
|
|
|
|
tHeight = tMaxY * VUHDO_COMBO_ITEM_HEIGHT + 6;
|
|
if tHeight > 300 then tHeight = 300; end
|
|
|
|
tDropdownBox:SetHeight(tHeight);
|
|
tItemContainer:SetBackdropColor(0, 0, 0, 0);
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tTexture;
|
|
local tTable;
|
|
local tFunction;
|
|
local tArrayModel;
|
|
function VUHDO_lnfComboSetSelectedValue(aComboBox, aValue, anIsEditBox)
|
|
tTable = aComboBox:GetAttribute("combo_table");
|
|
if not tTable then return; end
|
|
|
|
if aComboBox["isMulti"] then
|
|
tArrayModel = VUHDO_lnfGetValueFromModel(aComboBox);
|
|
|
|
if aValue then
|
|
if tArrayModel[aValue] then tArrayModel[aValue] = nil;
|
|
else tArrayModel[aValue] = true; end
|
|
end
|
|
else
|
|
tArrayModel = nil;
|
|
end
|
|
|
|
if not tArrayModel and _G[aComboBox:GetName() .. "EditBox"] ~= nil and aValue ~= nil and not anIsEditBox then
|
|
_G[aComboBox:GetName() .. "EditBox"]:SetText(aValue);
|
|
end
|
|
|
|
if not _G[aComboBox:GetName() .. "EditBox"] then
|
|
_G[aComboBox:GetName() .. "Text"]:SetText(VUHDO_I18N_SELECT);
|
|
end
|
|
|
|
for tIndex, tInfo in ipairs(tTable) do
|
|
if (aComboBox.isScrollable) then
|
|
tTexture = _G[aComboBox:GetName() .. "ScrollPanelSelectPanelItem" .. tIndex .. "CheckTexture"];
|
|
elseif (tIndex > 500) then
|
|
break;
|
|
else
|
|
tTexture = _G[aComboBox:GetName() .. "SelectPanelItem" .. tIndex .. "CheckTexture"];
|
|
end
|
|
|
|
if tArrayModel then
|
|
if tArrayModel[tInfo[1]] then tTexture:Show();
|
|
else tTexture:Hide(); end
|
|
else
|
|
if aValue == tInfo[1] then
|
|
if _G[aComboBox:GetName() .. "EditBox"] then
|
|
_G[aComboBox:GetName() .. "EditBox"]:SetText(tInfo[2]);
|
|
else
|
|
_G[aComboBox:GetName() .. "Text"]:SetText(tInfo[2]);
|
|
end
|
|
tTexture:Show();
|
|
else
|
|
tTexture:Hide();
|
|
end
|
|
end
|
|
end
|
|
|
|
if tIsInCustomFunction then return; end
|
|
|
|
tFunction = aComboBox:GetAttribute("custom_function");
|
|
if tFunction then
|
|
tIsInCustomFunction = true;
|
|
tFunction(aComboBox, aValue, tArrayModel);
|
|
tIsInCustomFunction = false;
|
|
end
|
|
|
|
if tArrayModel then
|
|
VUHDO_lnfUpdateVarFromModel(aComboBox, tArrayModel, nil);
|
|
else
|
|
VUHDO_lnfUpdateVarFromModel(aComboBox, aValue, nil);
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tValue;
|
|
local tTitle;
|
|
function VUHDO_lnfComboBoxInitFromModel(aComboBox)
|
|
aComboBox.isScrollable = _G[aComboBox:GetName() .. "ScrollPanel"] ~= nil;
|
|
|
|
if not aComboBox:GetAttribute("model") then return; end
|
|
|
|
tValue = VUHDO_lnfGetValueFromModel(aComboBox);
|
|
aComboBox["isMulti"] = "table" == type(tValue);
|
|
VUHDO_lnfComboInitItems(aComboBox);
|
|
|
|
tTitle = aComboBox:GetAttribute("title");
|
|
if tTitle then _G[aComboBox:GetName() .. "Text"]:SetText(tTitle); end
|
|
|
|
|
|
if aComboBox["isMulti"] then
|
|
VUHDO_lnfComboSetSelectedValue(aComboBox, nil);
|
|
else
|
|
VUHDO_lnfComboSetSelectedValue(aComboBox, tValue);
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-- Color Swatch
|
|
--
|
|
do
|
|
local tValue;
|
|
function VUHDO_lnfColorSwatchInitFromModel(aColorSwatch)
|
|
tValue = VUHDO_lnfGetValueFromModel(aColorSwatch);
|
|
|
|
if not tValue then return; end
|
|
|
|
if tValue.R and tValue.useBackground then
|
|
_G[aColorSwatch:GetName() .. "Texture"]:SetVertexColor(tValue["R"], tValue["G"], tValue["B"]);
|
|
else
|
|
_G[aColorSwatch:GetName() .. "Texture"]:SetVertexColor(1, 1, 1);
|
|
end
|
|
|
|
if tValue.O and tValue.useOpacity then
|
|
_G[aColorSwatch:GetName() .. "Texture"]:SetAlpha(tValue["O"]);
|
|
else
|
|
_G[aColorSwatch:GetName() .. "Texture"]:SetAlpha(1);
|
|
end
|
|
|
|
if tValue.TR and tValue.useText then
|
|
_G[aColorSwatch:GetName() .. "TitleString"]:SetTextColor(tValue["TR"], tValue["TG"], tValue["TB"]);
|
|
else
|
|
_G[aColorSwatch:GetName() .. "TitleString"]:SetTextColor(1, 1, 1);
|
|
end
|
|
|
|
if tValue.TO and tValue.useOpacity then
|
|
_G[aColorSwatch:GetName() .. "TitleString"]:SetAlpha(tValue["TO"]);
|
|
else
|
|
_G[aColorSwatch:GetName() .. "TitleString"]:SetAlpha(1);
|
|
end
|
|
|
|
if tValue.textSize and tValue.font then
|
|
local tFont = VUHDO_getFont(tValue["font"]);
|
|
_G[aColorSwatch:GetName() .. "TitleString"]:SetFont(tFont, tValue["textSize"], "");
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tValue;
|
|
local tStatusFile;
|
|
function VUHDO_lnfTextureSwatchInitFromModel(aTexture)
|
|
tValue = VUHDO_lnfGetValueFromModel(aTexture);
|
|
|
|
if tValue then
|
|
tStatusFile = VUHDO_LibSharedMedia:Fetch('statusbar', tValue);
|
|
if tStatusFile then
|
|
_G[aTexture:GetName() .. "Texture"]:SetTexture(tStatusFile);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfInitColorSwatch(aColorSwatch, aText, aDescription, aProhibitColors)
|
|
_G[aColorSwatch:GetName() .. "TitleString"]:SetText(aText);
|
|
aColorSwatch:SetAttribute("description", aDescription);
|
|
aColorSwatch:SetAttribute("prohibit", aProhibitColors);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfColorSwatchShowColorPicker(aColorSwatch, aMouseButton)
|
|
if not aColorSwatch:GetAttribute("model") then return; end
|
|
|
|
VuhDoNewColorPicker:SetAttribute("swatch", aColorSwatch);
|
|
VuhDoNewColorPicker:Show();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfSetTooltip(aComponent, aText)
|
|
aComponent:SetAttribute("tooltip", aText);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tTooltip;
|
|
function VUHDO_lnfShowTooltip(aComponent)
|
|
tTooltip = aComponent:GetAttribute("tooltip");
|
|
if (tTooltip ~= nil) then
|
|
VuhDoOptionsTooltipTextText:SetText(tTooltip);
|
|
VuhDoOptionsTooltip:SetHeight(VuhDoOptionsTooltipTextText:GetHeight() + 10);
|
|
VuhDoOptionsTooltip:ClearAllPoints();
|
|
VuhDoOptionsTooltip:SetPoint("LEFT", aComponent:GetName(), "RIGHT", 3, 0);
|
|
VuhDoOptionsTooltip:Show();
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfHideTooltip(aComponent)
|
|
VuhDoOptionsTooltip:Hide();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfEditboxReceivedDrag(anEditBox)
|
|
local tName = nil;
|
|
local tType, tId, tId2, tId3 = GetCursorInfo();
|
|
|
|
if "item" == tType then
|
|
tName = GetItemInfo(tId) ;
|
|
elseif "spell" == tType then
|
|
tName = GetSpellBookItemName(tId, tId2);
|
|
|
|
if not tName then
|
|
tName = GetSpellInfo(tId3);
|
|
end
|
|
elseif "macro" == tType then
|
|
tName = GetMacroInfo(tId);
|
|
end
|
|
|
|
if tName then anEditBox:SetText(tName); end
|
|
ClearCursor();
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfScrollFrameOnLoad(aFrame)
|
|
local tScrollBar = _G[aFrame:GetName() .. "ScrollBar"];
|
|
_G[tScrollBar:GetName() .. "ScrollUpButton"]:Hide();
|
|
_G[tScrollBar:GetName() .. "ScrollDownButton"]:Hide();
|
|
local tThumbTexture = _G[tScrollBar:GetName() .. "ThumbTexture"];
|
|
tThumbTexture:SetTexture("Interface\\AddOns\\VuhDoOptions\\Images\\slider_thumb_v");
|
|
tThumbTexture:SetWidth(18);
|
|
tThumbTexture:SetHeight(18);
|
|
tThumbTexture:SetTexCoord(0, 1, 0, 1);
|
|
end
|
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
VUHDO_LF_CONSTRAINT_DISABLE = 1;
|
|
|
|
local VUHDO_MODEL_CONSTRAINTS = { };
|
|
local VUHDO_COMPONENT_CONSTRAINTS = { };
|
|
|
|
|
|
--
|
|
function VUHDO_lnfAddConstraint(aComponent, aType, aModel, aTriggerValue)
|
|
if not VUHDO_MODEL_CONSTRAINTS[aModel] then
|
|
VUHDO_MODEL_CONSTRAINTS[aModel] = { };
|
|
end
|
|
tinsert(VUHDO_MODEL_CONSTRAINTS[aModel], { ["COMPONENT"] = aComponent, ["TYPE"] = aType });
|
|
|
|
if not VUHDO_COMPONENT_CONSTRAINTS[aComponent] then
|
|
VUHDO_COMPONENT_CONSTRAINTS[aComponent] = { };
|
|
end
|
|
tinsert(VUHDO_COMPONENT_CONSTRAINTS[aComponent], { ["MODEL"] = aModel, ["TYPE"] = aType, ["TRIGGER"] = aTriggerValue });
|
|
end
|
|
|
|
|
|
|
|
--
|
|
do
|
|
local tConstraints;
|
|
local tIsDisabled;
|
|
local tValue;
|
|
local function VUHDO_lnfIsDisabledByConstraint(aComponent)
|
|
tConstraints = VUHDO_COMPONENT_CONSTRAINTS[aComponent] or {};
|
|
|
|
tIsDisabled = false;
|
|
for _, tConstraint in pairs(tConstraints) do
|
|
|
|
if VUHDO_LF_CONSTRAINT_DISABLE == tConstraint["TYPE"] then
|
|
tValue = VUHDO_lnfGetValueFrom(tConstraint["MODEL"]);
|
|
if tValue == tConstraint["TRIGGER"] then
|
|
tIsDisabled = true;
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
|
|
return tIsDisabled;
|
|
end
|
|
|
|
local tModel;
|
|
local tConstraintsModel;
|
|
function VUHDO_lnfUpdateComponentsByConstraints(aChangedComponent)
|
|
tModel = aChangedComponent:GetAttribute("model");
|
|
VUHDO_lnfGetValueFrom(tModel);
|
|
|
|
tConstraintsModel = VUHDO_MODEL_CONSTRAINTS[tModel] or {};
|
|
|
|
for _, tConstraint in pairs(tConstraintsModel) do
|
|
if VUHDO_LF_CONSTRAINT_DISABLE == tConstraint["TYPE"] then
|
|
|
|
if VUHDO_lnfIsDisabledByConstraint(tConstraint["COMPONENT"]) then
|
|
tConstraint["COMPONENT"]:SetAlpha(0.5);
|
|
else
|
|
tConstraint["COMPONENT"]:SetAlpha(1);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfFontButtonClicked(aButton)
|
|
VUHDO_lnfStandardFontInitFromModel(aButton:GetAttribute("model"), aButton:GetText(), aButton);
|
|
end
|
|
|
|
|
|
|
|
--
|
|
function VUHDO_lnfShareButtonClicked(aButton)
|
|
if VuhDoLnfShareDialog:IsShown() then
|
|
VuhDoLnfShareDialog:Hide();
|
|
else
|
|
VUHDO_lnfSetModel(VuhDoLnfShareDialog, aButton:GetAttribute("model"));
|
|
VuhDoLnfShareDialog:Show();
|
|
end
|
|
end
|
|
|