Files
Vanilla_MikScrollingBattleText/MikScrollingBattleTextOptions/MSBTOptions.lua
T
Athene a613ef0a3a 4.2 - lightweight
cleaned unnecessary stuff
2015-10-17 21:56:14 +02:00

298 lines
98 KiB
Lua

local OPTIONS_FRAME_NAME="MSBTFrameOptions";local FONT_SETTINGS_FRAME_NAME="MSBTFontSettingsFrame";local SCROLL_AREA_MOVER_FRAME_NAME="MSBTScrollAreaMoverFrame";local SCROLL_AREA_MOVER_CONTROL_FRAME_NAME="MSBTScrollAreaMoverControlFrame";local SCROLL_AREA_MOVER_INCOMING_FRAME_NAME="MSBTScrollAreaMoverIncomingFrame";local SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME="MSBTScrollAreaMoverOutgoingFrame";local SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME="MSBTScrollAreaMoverNotificationFrame";local TRIGGER_CONFIGURATION_FRAME_NAME="MSBTTriggerConfigFrame";local MIN_FONT_SIZE=12;local MAX_FONT_SIZE=32;local MIN_ANIMATION_STEP=1;local MAX_ANIMATION_STEP=5;local MIN_SCROLL_HEIGHT=100;local MAX_SCROLL_HEIGHT=600;local EVENT_ITEM_HEIGHT=25;local EVENT_ITEMS_PER_PAGE=10;local TRIGGER_ITEM_HEIGHT=25;local TRIGGER_ITEMS_PER_PAGE=11;local TRIGGER_EVENT_ITEM_HEIGHT=25;local TRIGGER_EVENT_ITEMS_PER_PAGE=4;local SUPPRESSION_ITEM_HEIGHT=25;local SUPPRESSION_ITEMS_PER_PAGE=11;local TAB_INDEX_GENERAL=1;local TAB_INDEX_INCOMING=2;local TAB_INDEX_OUTGOING=3;local TAB_INDEX_NOTIFICATION=4;local TAB_INDEX_TRIGGERS=5;local TAB_INDEX_SUPPRESSIONS=6;local availableFontsInherit;local availableOutlinesInherit;local availableTriggerEvents={};function MikSBTOpt.OnLoad()this:RegisterEvent("ADDON_LOADED");end
function MikSBTOpt.OnEvent()if(event=="ADDON_LOADED")then
if(arg1==string.gsub(MikSBT.MOD_NAME.."Options","%s",""))then
this:UnregisterEvent("ADDON_LOADED");MikSBTOpt.Init();end end end
function MikSBTOpt.Init()getglobal(OPTIONS_FRAME_NAME.."TitleText"):SetText(MikSBT.WINDOW_TITLE);getglobal(FONT_SETTINGS_FRAME_NAME.."NormalPreviewText"):SetText(MikSBTOpt.MSG_NORMAL_PREVIEW_TEXT);getglobal(FONT_SETTINGS_FRAME_NAME.."CritPreviewText"):SetText(MikSBTOpt.MSG_CRIT_PREVIEW_TEXT);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerClassesText"):SetText(MikSBTOpt.MSG_TRIGGER_APPLICABLE_CLASSES_LABEL);MikSBTOpt.InitDropdowns();MikSBTOpt.InitCheckboxes();MikSBTOpt.InitSliders();MikSBTOpt.InitButtons();MikSBTOpt.InitEditboxes();MikSBTOpt.InitEvents();MikSBTOpt.PopulateTabs();MikSBTOpt.TabOnClick(1);MikSBTOpt.EnableDisableProfileButtons();getglobal(OPTIONS_FRAME_NAME.."Tab1FrameCurrentProfileLabel"):SetText(MikSBTOpt.MSG_CURRENT_PROFILE_TEXT..": "..MikSBT_Save.CurrentProfile);MikSBTOpt.SetupAvailableTriggerEvents();MikSBTOpt.PopulateProfileOptions();table.insert(UISpecialFrames,OPTIONS_FRAME_NAME);end
function MikSBTOpt.OnShow()local doPlaySound=true;local frame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);if(frame and frame:IsShown())then
doPlaySound=false;end
if(doPlaySound)then
PlaySound("igCharacterInfoOpen");end end
function MikSBTOpt.OnHide()local doPlaySound=true;local frame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);if(frame and frame:IsShown())then
doPlaySound=false;end
if(doPlaySound)then
PlaySound("igCharacterInfoClose");end
getglobal(FONT_SETTINGS_FRAME_NAME):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();end
function MikSBTOpt.OnVerticalScroll()if(this:GetName()==OPTIONS_FRAME_NAME.."Tab2FrameEventsScrollFrame")then FauxScrollFrame_OnVerticalScroll(EVENT_ITEM_HEIGHT,MikSBTOpt.PopulateIncomingEventSettings);elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab3FrameEventsScrollFrame")then FauxScrollFrame_OnVerticalScroll(EVENT_ITEM_HEIGHT,MikSBTOpt.PopulateOutgoingEventSettings);elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab4FrameEventsScrollFrame")then FauxScrollFrame_OnVerticalScroll(EVENT_ITEM_HEIGHT,MikSBTOpt.PopulateNotificationEventSettings);elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab5FrameTriggersScrollFrame")then FauxScrollFrame_OnVerticalScroll(TRIGGER_ITEM_HEIGHT,MikSBTOpt.PopulateTriggerEventSettings);elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab6FrameSuppressionsScrollFrame")then FauxScrollFrame_OnVerticalScroll(SUPPRESSION_ITEM_HEIGHT,MikSBTOpt.PopulateSuppressionSettings);elseif(this:GetName()==TRIGGER_CONFIGURATION_FRAME_NAME.."EventsScrollFrame")then FauxScrollFrame_OnVerticalScroll(TRIGGER_EVENT_ITEM_HEIGHT,MikSBTOpt.PopulateAvailableTriggerEvents);end end
function MikSBTOpt.PopulateTabs()PanelTemplates_SetNumTabs(getglobal(OPTIONS_FRAME_NAME),table.getn(MikSBTOpt.TABS));for tabNumber,tabData in MikSBTOpt.TABS do
local tabFrame=getglobal(OPTIONS_FRAME_NAME.."Tab"..tabNumber);if(tabFrame)then
tabFrame.tooltipText=tabData.Tooltip;tabFrame:SetText(tabData.Label);PanelTemplates_TabResize(1,tabFrame);end end end
function MikSBTOpt.TabOnClick(tab)if(not tab)then tab=this:GetID();end
PanelTemplates_SetTab(getglobal(OPTIONS_FRAME_NAME),tab);for tabNumber,tabData in MikSBTOpt.TABS do local associatedTabFrame=getglobal(OPTIONS_FRAME_NAME.."Tab"..tabNumber.."Frame");if(associatedTabFrame)then associatedTabFrame:Hide();end end
local associatedTabFrame=getglobal(OPTIONS_FRAME_NAME.."Tab"..tab.."Frame");if(associatedTabFrame)then associatedTabFrame:Show();end
getglobal(FONT_SETTINGS_FRAME_NAME):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();end
function MikSBTOpt.InitDropdowns()availableFontsInherit=MikSBT.CopyTable(MikSBT.AVAILABLE_FONTS);table.insert(availableFontsInherit,1,{Name=MikSBTOpt.MSG_INHERIT_TEXT});for key,data in availableFontsInherit do data.Value=key-1;end
availableOutlinesInherit=MikSBT.CopyTable(MikSBT.AVAILABLE_OUTLINES);table.insert(availableOutlinesInherit,1,{Name=MikSBTOpt.MSG_INHERIT_TEXT});for key,data in availableOutlinesInherit do data.Value=key-1;end
local availableProfiles={};for profileName,_ in MikSBT_Save.Profiles do availableProfiles[profileName]={Name=profileName};end
local availableScrollAreas={};availableScrollAreas["Incoming"]={Name=MikSBTOpt.TABS[TAB_INDEX_INCOMING].Label};availableScrollAreas["Outgoing"]={Name=MikSBTOpt.TABS[TAB_INDEX_OUTGOING].Label};availableScrollAreas["Notification"]={Name=MikSBTOpt.TABS[TAB_INDEX_NOTIFICATION].Label};local key="Tab1FrameProfileDropdown";MikSBTOpt.SetupDropdown(OPTIONS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.DROPDOWNS[key].Tooltip,MikSBTOpt.ProfileDropdownOnClick,availableProfiles,nil);MikSBTOpt.PopulateDropdown(OPTIONS_FRAME_NAME..key,MikSBT_Save.CurrentProfile);key="ScrollAreaDropdown";MikSBTOpt.SetupDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.DROPDOWNS[key].Tooltip,MikSBTOpt.ScrollAreaDropdownOnClick,availableScrollAreas,nil);key="TextAlignDropdown";MikSBTOpt.SetupDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.DROPDOWNS[key].Tooltip,MikSBTOpt.DropdownOnClick,MikSBT.AVAILABLE_TEXT_ALIGNS,nil);key="AnimationStyleDropdown";MikSBTOpt.SetupDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.DROPDOWNS[key].Tooltip,MikSBTOpt.DropdownOnClick,MikSBT.AVAILABLE_ANIMATION_STYLES,nil);key="ScrollDirectionDropdown";MikSBTOpt.SetupDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.DROPDOWNS[key].Tooltip,MikSBTOpt.DropdownOnClick,MikSBT.AVAILABLE_SCROLL_DIRECTIONS,nil);key="TriggerTypeDropdown";MikSBTOpt.SetupDropdown(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.DROPDOWNS[key].Tooltip,MikSBTOpt.TriggerTypeDropdownOnClick,MikSBT.AVAILABLE_TRIGGER_TYPES,nil);UIDropDownMenu_SetWidth(150,getglobal(TRIGGER_CONFIGURATION_FRAME_NAME..key));end
function MikSBTOpt.SetupDropdown(frameName,label,tooltip,clickFunc,options,varPath)local associatedFrame=getglobal(frameName);if(associatedFrame)then associatedFrame.tooltipText=tooltip;associatedFrame.clickFunction=clickFunc;associatedFrame.menuOptions=options;associatedFrame.associatedVarPath=varPath;getglobal(frameName.."Label"):SetText(label);UIDropDownMenu_Initialize(associatedFrame,MikSBTOpt.DropdownInit);end end
function MikSBTOpt.PopulateDropdown(frameName,selectValue)local associatedFrame=getglobal(frameName);if(associatedFrame)then local tempValue=selectValue;if(tempValue==nil)then
if(associatedFrame.associatedVarPath)then
tempValue=MikSBT.GetOptionFromVarPath(associatedFrame.associatedVarPath);end end
if(tempValue~=nil)then
UIDropDownMenu_SetSelectedValue(associatedFrame,tempValue);for key,optionData in associatedFrame.menuOptions do
local optionValue=optionData.Value;if(optionValue==nil)then optionValue=key;end local selectedValue=associatedFrame.selectedValue;if(optionValue==selectedValue)then UIDropDownMenu_SetText(optionData.Name,associatedFrame);end end end end end
function MikSBTOpt.DropdownInit()local info={};local dropdownFrame=this;if(dropdownFrame:GetName()==OPTIONS_FRAME_NAME)then return;end
if(not dropdownFrame.menuOptions)then dropdownFrame=this:GetParent();end
if(dropdownFrame.menuOptions)then
for key,optionData in dropdownFrame.menuOptions do
local tempValue=optionData.Value;if(tempValue==nil)then tempValue=key;end
info={};info.text=optionData.Name;info.value=tempValue;info.func=dropdownFrame.clickFunction;info.arg1=dropdownFrame:GetName();UIDropDownMenu_AddButton(info);end end end
function MikSBTOpt.DropdownOnClick(frameName)UIDropDownMenu_SetSelectedValue(getglobal(frameName),this.value);local associatedVarPath=getglobal(frameName).associatedVarPath;if(associatedVarPath)then
MikSBT.SetOptionFromVarPath(associatedVarPath,this.value);end end
function MikSBTOpt.FontSettingsDropdownOnClick(frameName)MikSBTOpt.DropdownOnClick(frameName);MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.ProfileDropdownOnClick(frameName)MikSBTOpt.DropdownOnClick(frameName);MikSBTOpt.EnableDisableProfileButtons();end
function MikSBTOpt.ScrollAreaDropdownOnClick(frameName)MikSBTOpt.SaveScrollAreaControlsToCurrentSettings();MikSBTOpt.DropdownOnClick(frameName);scrollArea=UIDropDownMenu_GetSelectedValue(getglobal(frameName));if(scrollArea~=nil)then
MikSBTOpt.PopulateScrollAreaControls(scrollArea);end end
function MikSBTOpt.TriggerTypeDropdownOnClick(frameName)UIDropDownMenu_SetSelectedValue(getglobal(frameName),this.value);MikSBTOpt.SetupVariableTriggerControls(getglobal(frameName):GetParent().TriggerKey,this.value==MikCEH.TRIGGERTYPE_SEARCH_PATTERN);end
function MikSBTOpt.RefreshProfilesDropdown()local availableProfiles={};for profileName,_ in MikSBT_Save.Profiles do availableProfiles[profileName]={Name=profileName};end
getglobal(OPTIONS_FRAME_NAME.."Tab1FrameProfileDropdown").menuOptions=availableProfiles;end
function MikSBTOpt.InitCheckboxes()local key="Tab1FrameDisableCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,nil);MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME..key,MikSBT_Save.UserDisabled);key="Tab1FrameShowPartialEffectsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"ShowPartialEffects");key="Tab1FrameUseStickyCritsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"UseStickyCrits");key="Tab1FrameShowOverhealsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"ShowOverheals");key="Tab1FrameShowGameDamageCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"ShowGameDamage");key="Tab1FrameShowAllManaGainsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"ShowAllManaGains");key="Tab1FrameLowHealthSoundCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"LowHealthSound");key="Tab1FrameLowManaSoundCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"LowManaSound");key="Tab2FrameShowEventsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"DisplaySettings.Incoming.Show");key="Tab3FrameShowEventsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"DisplaySettings.Outgoing.Show");key="Tab4FrameShowEventsCheckbox";MikSBTOpt.SetupCheckbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.CHECKBOXES[key].Tooltip,"DisplaySettings.Notification.Show");MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."AllClassesCheckbox",ALL,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."DruidCheckbox",MikSBTOpt.MSG_CLASS_NAME_DRUID,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."HunterCheckbox",MikSBTOpt.MSG_CLASS_NAME_HUNTER,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."MageCheckbox",MikSBTOpt.MSG_CLASS_NAME_MAGE,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."PaladinCheckbox",MikSBTOpt.MSG_CLASS_NAME_PALADIN,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."PriestCheckbox",MikSBTOpt.MSG_CLASS_NAME_PRIEST,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."RogueCheckbox",MikSBTOpt.MSG_CLASS_NAME_ROGUE,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."ShamanCheckbox",MikSBTOpt.MSG_CLASS_NAME_SHAMAN,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."WarlockCheckbox",MikSBTOpt.MSG_CLASS_NAME_WARLOCK,nil,nil);MikSBTOpt.SetupCheckbox(TRIGGER_CONFIGURATION_FRAME_NAME.."WarriorCheckbox",MikSBTOpt.MSG_CLASS_NAME_WARRIOR,nil,nil);end
function MikSBTOpt.SetupCheckbox(frameName,label,tooltip,varPath)local associatedFrame=getglobal(frameName);if(associatedFrame)then associatedFrame.associatedVarPath=varPath;associatedFrame.tooltipText=tooltip;if(label)then getglobal(frameName.."Text"):SetText(label);end end end
function MikSBTOpt.PopulateCheckbox(frameName,isChecked)local associatedFrame=getglobal(frameName);if(associatedFrame)then local tempValue=isChecked;if(tempValue==nil)then
if(associatedFrame.associatedVarPath)then
tempValue=MikSBT.GetOptionFromVarPath(associatedFrame.associatedVarPath);end end
if(tempValue~=nil)then
if(tempValue==true)then associatedFrame:SetChecked(1);else associatedFrame:SetChecked(0);end end end end
function MikSBTOpt.CheckboxOnClick()if(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameDisableCheckbox")then
if(this:GetChecked()==1)then MikSBT.SetOptionUserDisabled(true);else MikSBT.SetOptionUserDisabled(false);end
return;elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameShowGameDamageCheckbox")then
if(this:GetChecked()==1)then MikSBT.SetOptionShowGameDamage(true);else MikSBT.SetOptionShowGameDamage(false);end
return;elseif(this:GetName()==FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"or this:GetName()==FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox")then
MikSBTOpt.FontSettingsCheckboxOnClick();return;elseif(this:GetName()==TRIGGER_CONFIGURATION_FRAME_NAME.."AllClassesCheckbox")then
if(this:GetChecked()==1)then MikSBTOpt.HideTriggerClassCheckboxes();else MikSBTOpt.ShowTriggerClassCheckboxes();end
elseif(string.find(this:GetName(),TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent"))then
if(this.TriggerEvent)then local triggerFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME);if(this:GetChecked())then triggerFrame.SelectedTriggerEvents[this.TriggerEvent]=true;else triggerFrame.SelectedTriggerEvents[this.TriggerEvent]=nil;end end end
if(this.associatedVarPath)then if(this:GetChecked()==1)then
MikSBT.SetOptionFromVarPath(this.associatedVarPath,true);else
MikSBT.SetOptionFromVarPath(this.associatedVarPath,false);end end end
function MikSBTOpt.EnableTriggerCheckboxOnClick()if(this.associatedVarPath)then if(this:GetChecked()==1)then
MikSBT.SetOptionFromVarPath(this.associatedVarPath,true);else
MikSBT.SetOptionFromVarPath(this.associatedVarPath,false);end end
MikSBT.RegisterTriggers();end
function MikSBTOpt.FontSettingsCheckboxOnClick()local associatedSlider;local inheritedValue;local sliderKey;if(this:GetName()==FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox")then sliderKey="FontSizeSlider";associatedSlider=getglobal(FONT_SETTINGS_FRAME_NAME..sliderKey);inheritedValue=this:GetParent().InheritedFontSize;elseif(this:GetName()==FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox")then sliderKey="FontSizeCritSlider";associatedSlider=getglobal(FONT_SETTINGS_FRAME_NAME..sliderKey);inheritedValue=this:GetParent().InheritedFontSizeCrit;end
if(this.associatedVarPath)then if(this:GetChecked()==1)then
MikSBT.SetOptionFromVarPath(this.associatedVarPath,0);associatedSlider:Hide();else
MikSBT.SetOptionFromVarPath(this.associatedVarPath,inheritedValue);associatedSlider:Show();MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME..sliderKey);end end
MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.InitSliders()local key="Tab1FrameAnimationStepSlider";MikSBTOpt.SetupSlider(OPTIONS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.SLIDERS[key].Tooltip,MIN_ANIMATION_STEP,MAX_ANIMATION_STEP,0.5,"AnimationStep");key="ScrollHeightSlider";MikSBTOpt.SetupSlider(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.SLIDERS[key].Tooltip,MIN_SCROLL_HEIGHT,MAX_SCROLL_HEIGHT,2,nil);key="ThresholdSlider";MikSBTOpt.SetupSlider(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.SLIDERS[key].Tooltip,1,100,1,nil);end
function MikSBTOpt.SetupSlider(frameName,label,tooltip,minValue,maxValue,step,varPath)local associatedSliderFrame=getglobal(frameName);if(associatedSliderFrame)then associatedSliderFrame.savedLabel=label;associatedSliderFrame.tooltipText=tooltip;associatedSliderFrame.associatedVarPath=varPath;getglobal(frameName.."Text"):SetText(label);associatedSliderFrame:SetMinMaxValues(minValue,maxValue);associatedSliderFrame:SetValueStep(step);end end
function MikSBTOpt.PopulateSlider(frameName,sliderValue)local associatedSliderFrame=getglobal(frameName);if(associatedSliderFrame)then local tempValue=sliderValue;if(tempValue==nil)then
if(associatedSliderFrame.associatedVarPath)then
tempValue=MikSBT.GetOptionFromVarPath(associatedSliderFrame.associatedVarPath);end end
if(tempValue~=nil)then
associatedSliderFrame:SetValue(tempValue);getglobal(frameName.."Text"):SetText(associatedSliderFrame.savedLabel..": "..associatedSliderFrame:GetValue());end end end
function MikSBTOpt.SliderOnValueChanged()getglobal(this:GetName().."Text"):SetText(this.savedLabel..": "..this:GetValue());if(this.associatedVarPath)then
MikSBT.SetOptionFromVarPath(this.associatedVarPath,this:GetValue());end end
function MikSBTOpt.FontSettingsSliderOnValueChanged()MikSBTOpt.SliderOnValueChanged();MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.ScrollAreaMoverControlSliderOnValueChanged()MikSBTOpt.SliderOnValueChanged();local scrollArea=UIDropDownMenu_GetSelectedValue(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollAreaDropdown"));local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);controlFrame.MSBTCurrentSettings[scrollArea.."ScrollHeight"]=this:GetValue();MikSBTOpt.RepositionScrollAreaMoverFrames();end
function MikSBTOpt.InitButtons()local key="Tab1FrameEditFontSettingsButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab2FrameEditFontSettingsButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab3FrameEditFontSettingsButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab4FrameEditFontSettingsButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab1FrameLoadProfileButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab1FrameDeleteProfileButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab1FrameResetProfileButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab1FrameCreateProfileButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab2FrameConfigureScrollAreaButton";local commonLabel=MikSBTOpt.BUTTONS[key].Label;local commonTooltip=MikSBTOpt.BUTTONS[key].Tooltip;MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,commonLabel,commonTooltip);key="Tab3FrameConfigureScrollAreaButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,commonLabel,commonTooltip);key="Tab4FrameConfigureScrollAreaButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,commonLabel,commonTooltip);key="PreviewButton";MikSBTOpt.SetupButton(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="SaveButton";MikSBTOpt.SetupButton(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="CancelButton";MikSBTOpt.SetupButton(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab5FrameAddTriggerButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="SaveTriggerButton";MikSBTOpt.SetupButton(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="CancelTriggerButton";MikSBTOpt.SetupButton(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);key="Tab6FrameAddSuppressionButton";MikSBTOpt.SetupButton(OPTIONS_FRAME_NAME..key,MikSBTOpt.BUTTONS[key].Label,MikSBTOpt.BUTTONS[key].Tooltip);end
function MikSBTOpt.SetupButton(frameName,label,tooltip)local associatedFrame=getglobal(frameName);if(associatedFrame)then associatedFrame.tooltipText=tooltip;associatedFrame:SetText(label);associatedFrame:SetWidth(associatedFrame:GetTextWidth()+40);end end
function MikSBTOpt.ButtonOnClick()if(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameEditFontSettingsButton")then local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].FontSettingsTitle);MikSBTOpt.ShowMasterFontSettings();elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab2FrameEditFontSettingsButton")then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab2FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(MikSBTOpt.TABS[TAB_INDEX_INCOMING].Label);MikSBTOpt.ShowScrollAreaFontSettings("Incoming");elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab3FrameEditFontSettingsButton")then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab3FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(MikSBTOpt.TABS[TAB_INDEX_OUTGOING].Label);MikSBTOpt.ShowScrollAreaFontSettings("Outgoing");elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab4FrameEditFontSettingsButton")then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab4FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(MikSBTOpt.TABS[TAB_INDEX_NOTIFICATION].Label);MikSBTOpt.ShowScrollAreaFontSettings("Notification");elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameLoadProfileButton")then
MikSBT.SelectProfile(UIDropDownMenu_GetSelectedValue(getglobal(OPTIONS_FRAME_NAME.."Tab1FrameProfileDropdown")));getglobal(OPTIONS_FRAME_NAME.."Tab1FrameCurrentProfileLabel"):SetText(MikSBTOpt.MSG_CURRENT_PROFILE_TEXT..": "..MikSBT_Save.CurrentProfile);MikSBTOpt.EnableDisableProfileButtons();MikSBTOpt.PopulateProfileOptions();elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameDeleteProfileButton")then local profileName=UIDropDownMenu_GetSelectedValue(getglobal(OPTIONS_FRAME_NAME.."Tab1FrameProfileDropdown"));MikSBT.DeleteProfile(profileName);MikSBTOpt.RefreshProfilesDropdown();MikSBTOpt.PopulateDropdown(OPTIONS_FRAME_NAME.."Tab1FrameProfileDropdown",MikSBT_Save.CurrentProfile);getglobal(OPTIONS_FRAME_NAME.."Tab1FrameCurrentProfileLabel"):SetText(MikSBTOpt.MSG_CURRENT_PROFILE_TEXT..": "..MikSBT_Save.CurrentProfile);MikSBTOpt.EnableDisableProfileButtons();MikSBTOpt.PopulateProfileOptions();elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameResetProfileButton")then local profileName=UIDropDownMenu_GetSelectedValue(getglobal(OPTIONS_FRAME_NAME.."Tab1FrameProfileDropdown"));MikSBT.ResetProfile(profileName,true);MikSBTOpt.PopulateProfileOptions();elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameCreateProfileButton")then local profileNameEditbox=getglobal(OPTIONS_FRAME_NAME.."Tab1FrameNewProfileNameEditbox");local profileName=profileNameEditbox:GetText();profileNameEditbox:SetText("");if(profileName~="")then MikSBT.CreateProfile(profileName);MikSBTOpt.RefreshProfilesDropdown();MikSBTOpt.EnableDisableProfileButtons();getglobal(FONT_SETTINGS_FRAME_NAME):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();end
elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab2FrameConfigureScrollAreaButton")then
MikSBTOpt.ShowScrollAreaMoverFrames("Incoming");elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab3FrameConfigureScrollAreaButton")then
MikSBTOpt.ShowScrollAreaMoverFrames("Outgoing");elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab4FrameConfigureScrollAreaButton")then
MikSBTOpt.ShowScrollAreaMoverFrames("Notification");elseif(this:GetName()==SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."PreviewButton")then
MikSBTOpt.ScrollAreaMoverPreviewOnClick();elseif(this:GetName()==SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."SaveButton")then
MikSBTOpt.ScrollAreaMoverSaveOnClick();elseif(this:GetName()==SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."CancelButton")then
MikSBTOpt.ScrollAreaMoverCancelOnClick();elseif(this:GetParent().EventArea=="Incoming")then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab2FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();if(this:GetParent().EventType~=nil)then getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(this:GetParent().FontFrameTitle);MikSBTOpt.ShowEventFontSettings("Incoming",this:GetParent().EventType);end
elseif(this:GetParent().EventArea=="Outgoing")then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab3FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();if(this:GetParent().EventType~=nil)then getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(this:GetParent().FontFrameTitle);MikSBTOpt.ShowEventFontSettings("Outgoing",this:GetParent().EventType);end
elseif(this:GetParent().EventArea=="Notification")then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab4FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();if(this:GetParent().EventType~=nil)then getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(this:GetParent().FontFrameTitle);MikSBTOpt.ShowEventFontSettings("Notification",this:GetParent().EventType);end
elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab5FrameAddTriggerButton")then
getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();MikSBTOpt.AddNewTrigger();elseif(this:GetParent().EventArea=="Trigger"and string.find(this:GetName(),"EditFontSettingsButton"))then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab5FrameMessageEditbox");local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");fontSettingsFrame:Raise();if(this:GetParent().TriggerKey~=nil)then getglobal(FONT_SETTINGS_FRAME_NAME.."Title"):SetText(this:GetParent().FontFrameTitle);MikSBTOpt.ShowTriggerFontSettings(this:GetParent().TriggerKey);end
elseif(this:GetParent().EventArea=="Trigger"and string.find(this:GetName(),"EditTriggerSettingsButton"))then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab5FrameMessageEditbox");local triggerConfigFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME);triggerConfigFrame:SetPoint("TOPLEFT",this,"BOTTOMLEFT");triggerConfigFrame:Raise();if(this:GetParent().TriggerKey~=nil)then MikSBTOpt.ShowTriggerConfig(this:GetParent().TriggerKey);end
elseif(string.find(this:GetName(),"DeleteTriggerButton"))then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab5FrameMessageEditbox");getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();if(this:GetParent().TriggerKey~=nil)then MikSBTOpt.DeleteTrigger(this:GetParent().TriggerKey);end
elseif(this:GetName()==TRIGGER_CONFIGURATION_FRAME_NAME.."SaveTriggerButton")then
MikSBTOpt.SaveTriggerConfig();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();elseif(this:GetName()==TRIGGER_CONFIGURATION_FRAME_NAME.."CancelTriggerButton")then
getglobal(TRIGGER_CONFIGURATION_FRAME_NAME):Hide();elseif(this:GetName()==OPTIONS_FRAME_NAME.."Tab6FrameAddSuppressionButton")then
MikSBTOpt.AddNewSuppression();elseif(string.find(this:GetName(),"DeleteSuppressionButton"))then
MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab6FrameMessageEditbox");local suppressionKey=this:GetParent().SuppressionKey;if(suppressionKey~=nil)then
MikSBT.CurrentProfile.Suppressions[suppressionKey]=nil;MikSBTOpt.PopulateSuppressionSettings();end end end
function MikSBTOpt.EnableDisableProfileButtons()local profileDropdown=getglobal(OPTIONS_FRAME_NAME.."Tab1FrameProfileDropdown");local deleteProfileButton=getglobal(OPTIONS_FRAME_NAME.."Tab1FrameDeleteProfileButton");local loadProfileButton=getglobal(OPTIONS_FRAME_NAME.."Tab1FrameLoadProfileButton");deleteProfileButton:Enable();loadProfileButton:Enable();if(UIDropDownMenu_GetSelectedValue(profileDropdown)==MikSBT.DEFAULT_PROFILE_NAME)then deleteProfileButton:Disable();end
if(UIDropDownMenu_GetSelectedValue(profileDropdown)==MikSBT_Save.CurrentProfile)then loadProfileButton:Disable();end end
function MikSBTOpt.InitEditboxes()local key="Tab1FrameNewProfileNameEditbox";MikSBTOpt.SetupEditbox(OPTIONS_FRAME_NAME..key,MikSBTOpt.EDITBOXES[key].Label,MikSBTOpt.EDITBOXES[key].Tooltip,nil);key="XOffsetEditbox";MikSBTOpt.SetupEditbox(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.EDITBOXES[key].Label,MikSBTOpt.EDITBOXES[key].Tooltip,nil);key="YOffsetEditbox";MikSBTOpt.SetupEditbox(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME..key,MikSBTOpt.EDITBOXES[key].Label,MikSBTOpt.EDITBOXES[key].Tooltip,nil);key="IconNameEditbox";MikSBTOpt.SetupEditbox(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.EDITBOXES[key].Label,MikSBTOpt.EDITBOXES[key].Tooltip,nil);key="SearchPattern1Editbox";MikSBTOpt.SetupEditbox(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.EDITBOXES[key].Label,MikSBTOpt.EDITBOXES[key].Tooltip,nil);key="SearchPattern2Editbox";MikSBTOpt.SetupEditbox(TRIGGER_CONFIGURATION_FRAME_NAME..key,MikSBTOpt.EDITBOXES[key].Label,MikSBTOpt.EDITBOXES[key].Tooltip,nil);end
function MikSBTOpt.SetupEditbox(frameName,label,tooltip,varPath)local associatedFrame=getglobal(frameName);if(associatedFrame)then associatedFrame.tooltipText=tooltip;associatedFrame.associatedVarPath=varPath;getglobal(frameName.."Label"):SetText(label);end end
function MikSBTOpt.PopulateEditbox(frameName,editboxValue)local associatedFrame=getglobal(frameName);if(associatedFrame)then local tempValue=editboxValue;if(tempValue==nil)then
if(associatedFrame.associatedVarPath)then tempValue=MikSBT.GetOptionFromVarPath(associatedFrame.associatedVarPath);end end
if(tempValue)then
associatedFrame:SetText(tempValue);end end end
function MikSBTOpt.EditboxOnTextChanged()if(this:GetName()==OPTIONS_FRAME_NAME.."Tab1FrameNewProfileNameEditbox")then local createProfileButton=getglobal(OPTIONS_FRAME_NAME.."Tab1FrameCreateProfileButton");createProfileButton:Enable();if(this:GetText()=="")then createProfileButton:Disable();elseif(MikSBT.ProfileExists(this:GetText()))then createProfileButton:Disable();end
elseif(this:GetName()==SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."XOffsetEditbox")then
local xOffset=tonumber(this:GetText());if(xOffset~=nil)then MikSBTOpt.SaveScrollAreaControlsToCurrentSettings();MikSBTOpt.RepositionScrollAreaMoverFrames();end
elseif(this:GetName()==SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."YOffsetEditbox")then
local yOffset=tonumber(this:GetText());if(yOffset~=nil)then MikSBTOpt.SaveScrollAreaControlsToCurrentSettings();MikSBTOpt.RepositionScrollAreaMoverFrames();end else
if(this.associatedVarPath)then
MikSBT.SetOptionFromVarPath(this.associatedVarPath,this:GetText());end end end
function MikSBTOpt.SetupColorSwatch(frameName,tooltip,varPath)local associatedFrame=getglobal(frameName);if(associatedFrame)then associatedFrame.tooltipText=tooltip;associatedFrame.associatedVarPath=varPath;end end
function MikSBTOpt.PopulateColorSwatch(frameName,colorR,colorG,colorB)local associatedFrame=getglobal(frameName);if(associatedFrame)then local tempR=colorR;local tempG=colorG;local tempB=colorB;if(tempR==nil)then
if(associatedFrame.associatedVarPath)then tempR=MikSBT.GetOptionFromVarPath(associatedFrame.associatedVarPath..".r");end end
if(tempG==nil)then
if(associatedFrame.associatedVarPath)then tempG=MikSBT.GetOptionFromVarPath(associatedFrame.associatedVarPath..".g");end end
if(tempB==nil)then
if(associatedFrame.associatedVarPath)then tempB=MikSBT.GetOptionFromVarPath(associatedFrame.associatedVarPath..".b");end end
if(tempR~=nil and tempG~=nil and tempB~=nil)then
local objColorSwatchTexture=getglobal(associatedFrame:GetName().."NormalTexture");objColorSwatchTexture:SetVertexColor(tempR,tempG,tempB);end end end
function MikSBTOpt.ColorSwatchOnClick()if(this.associatedVarPath)then
MikSBTOpt.HideMessageEditbox(this:GetParent():GetParent():GetName().."MessageEditbox");this.r=MikSBT.GetOptionFromVarPath(this.associatedVarPath..".r");this.g=MikSBT.GetOptionFromVarPath(this.associatedVarPath..".g");this.b=MikSBT.GetOptionFromVarPath(this.associatedVarPath..".b");this.swatchFunc=MikSBTOpt.ColorSwatchSetColor;this.cancelFunc=MikSBTOpt.ColorSwatchCancel;ColorPickerFrame.associatedVarPath=this.associatedVarPath;ColorPickerFrame.associatedColorSwatch=this;UIDropDownMenuButton_OpenColorPicker(this);end end
function MikSBTOpt.ColorSwatchSetColor()local r,g,b=ColorPickerFrame:GetColorRGB();if(ColorPickerFrame.associatedColorSwatch)then
local objColorSwatchTexture=getglobal(ColorPickerFrame.associatedColorSwatch:GetName().."NormalTexture");if(objColorSwatchTexture)then
objColorSwatchTexture:SetVertexColor(r,g,b);end end
if(ColorPickerFrame.associatedVarPath)then
MikSBT.SetOptionFromVarPath(ColorPickerFrame.associatedVarPath..".r",r);MikSBT.SetOptionFromVarPath(ColorPickerFrame.associatedVarPath..".g",g);MikSBT.SetOptionFromVarPath(ColorPickerFrame.associatedVarPath..".b",b);end end
function MikSBTOpt.ColorSwatchCancel(previousValues)if(ColorPickerFrame.associatedColorSwatch)then
local objColorSwatchTexture=getglobal(ColorPickerFrame.associatedColorSwatch:GetName().."NormalTexture");if(objColorSwatchTexture)then
objColorSwatchTexture:SetVertexColor(previousValues.r,previousValues.g,previousValues.b);end end
if(ColorPickerFrame.associatedVarPath)then
MikSBT.SetOptionFromVarPath(ColorPickerFrame.associatedVarPath..".r",previousValues.r);MikSBT.SetOptionFromVarPath(ColorPickerFrame.associatedVarPath..".g",previousValues.g);MikSBT.SetOptionFromVarPath(ColorPickerFrame.associatedVarPath..".b",previousValues.b);end end
function MikSBTOpt.InitEvents()local index;local evtData;evtData=MikSBTOpt.INCOMING_EVENTS;index=1;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_DAMAGE";index=2;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_MISS";index=3;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_DODGE";index=4;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_PARRY";index=5;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_BLOCK";index=6;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_ABSORB";index=7;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_IMMUNE";index=8;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_DAMAGE";index=9;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_DOT";index=10;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_MISS";index=11;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_DODGE";index=12;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_PARRY";index=13;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_BLOCK";index=14;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_RESIST";index=15;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_ABSORB";index=16;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_IMMUNE";index=17;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_SPELL_REFLECT";index=18;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_HEAL";index=19;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_HOT";index=20;evtData[index].EventType="MSBT_EVENTTYPE_INCOMING_ENVIRONMENTAL";evtData=MikSBTOpt.OUTGOING_EVENTS;index=1;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_DAMAGE";index=2;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_MISS";index=3;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_DODGE";index=4;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PARRY";index=5;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_BLOCK";index=6;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_ABSORB";index=7;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_IMMUNE";index=8;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_EVADE";index=9;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_DAMAGE";index=10;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_DOT";index=11;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_MISS";index=12;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_DODGE";index=13;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_PARRY";index=14;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_BLOCK";index=15;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_RESIST";index=16;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_ABSORB";index=17;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_IMMUNE";index=18;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_REFLECT";index=19;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_SPELL_EVADE";index=20;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_HEAL";index=21;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_HOT";index=22;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_DAMAGE";index=23;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_MISS";index=24;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_DODGE";index=25;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_PARRY";index=26;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_BLOCK";index=27;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_ABSORB";index=28;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_IMMUNE";index=29;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_EVADE";index=30;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_DAMAGE";index=31;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_MISS";index=32;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_DODGE";index=33;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_PARRY";index=34;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_BLOCK";index=35;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_RESIST";index=36;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_ABSORB";index=37;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_IMMUNE";index=38;evtData[index].EventType="MSBT_EVENTTYPE_OUTGOING_PET_SPELL_EVADE";evtData=MikSBTOpt.NOTIFICATION_EVENTS;index=1;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_DEBUFF";index=2;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_BUFF";index=3;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_ITEM_BUFF";index=4;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_BUFF_FADE";index=5;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_COMBAT_ENTER";index=6;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_COMBAT_LEAVE";index=7;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_POWER_GAIN";index=8;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_POWER_LOSS";index=9;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_CP_GAIN";index=10;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_CP_FULL";index=11;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_HONOR_GAIN";index=12;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_REP_GAIN";index=13;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_REP_LOSS";index=14;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_SKILL_GAIN";index=15;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_EXPERIENCE_GAIN";index=16;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_PC_KILLING_BLOW";index=17;evtData[index].EventType="MSBT_EVENTTYPE_NOTIFICATION_NPC_KILLING_BLOW";end
function MikSBTOpt.PopulateIncomingEventSettings()MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab2FrameMessageEditbox");totalItems=table.getn(MikSBTOpt.INCOMING_EVENTS);local objFrame=getglobal(OPTIONS_FRAME_NAME.."Tab2FrameEventsScrollFrame");FauxScrollFrame_Update(objFrame,totalItems,EVENT_ITEMS_PER_PAGE,EVENT_ITEM_HEIGHT);local skipCount=FauxScrollFrame_GetOffset(objFrame);local objEventSettings=nil;for i=1,EVENT_ITEMS_PER_PAGE do objEventSettings=getglobal(OPTIONS_FRAME_NAME.."Tab2FrameEvent"..i);if(objEventSettings)then
if(i>totalItems)then
objEventSettings:Hide();else
local evtData=MikSBTOpt.INCOMING_EVENTS[i+skipCount];if(evtData.EventType~=nil)then objEventSettings.EventType=evtData.EventType;end
objEventSettings.FontFrameTitle=evtData.Label;objEventSettings.EventArea="Incoming";MikSBTOpt.SetupColorSwatch(objEventSettings:GetName().."ColorSwatch",MikSBTOpt.MSG_EVENT_COLOR_SWATCH_TOOLTIP,"EventSettings."..objEventSettings.EventType..".FontSettings.Color");MikSBTOpt.PopulateColorSwatch(objEventSettings:GetName().."ColorSwatch");MikSBTOpt.SetupCheckbox(objEventSettings:GetName().."ShowEventCheckbox",evtData.Label,evtData.Tooltips.ShowCheckbox,"EventSettings."..objEventSettings.EventType..".Show");MikSBTOpt.PopulateCheckbox(objEventSettings:GetName().."ShowEventCheckbox");local objMessageLabel=getglobal(objEventSettings:GetName().."MessageLabel");if(objMessageLabel)then
objMessageLabel:GetParent().tooltipText=MikSBTOpt.MSG_EVENT_MESSAGE_LABEL_TOOLTIP;if(objEventSettings.EventType~=nil)then objMessageLabel:SetText(MikSBT.GetOptionFromVarPath("EventSettings."..objEventSettings.EventType..".Message"));end end objEventSettings.EditboxTooltip=evtData.Tooltips.Editbox;getglobal(objEventSettings:GetName().."StickyEventCheckbox"):Hide();MikSBTOpt.SetupButton(objEventSettings:GetName().."EditFontSettingsButton",MikSBTOpt.MSG_EVENT_EDIT_FONT_SETTINGS_BUTTON_LABEL,MikSBTOpt.MSG_EVENT_EDIT_FONT_SETTINGS_BUTTON_TOOLTIP);objEventSettings:Show();end end end end
function MikSBTOpt.PopulateOutgoingEventSettings()MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab3FrameMessageEditbox");totalItems=table.getn(MikSBTOpt.OUTGOING_EVENTS);local objFrame=getglobal(OPTIONS_FRAME_NAME.."Tab3FrameEventsScrollFrame");FauxScrollFrame_Update(objFrame,totalItems,EVENT_ITEMS_PER_PAGE,EVENT_ITEM_HEIGHT);local skipCount=FauxScrollFrame_GetOffset(objFrame);local objEventSettings=nil;for i=1,EVENT_ITEMS_PER_PAGE do objEventSettings=getglobal(OPTIONS_FRAME_NAME.."Tab3FrameEvent"..i);if(objEventSettings)then
if(i>totalItems)then
objEventSettings:Hide();else
local evtData=MikSBTOpt.OUTGOING_EVENTS[i+skipCount];if(evtData.EventType~=nil)then objEventSettings.EventType=evtData.EventType;end
objEventSettings.FontFrameTitle=evtData.Label;objEventSettings.EventArea="Outgoing";MikSBTOpt.SetupColorSwatch(objEventSettings:GetName().."ColorSwatch",MikSBTOpt.MSG_EVENT_COLOR_SWATCH_TOOLTIP,"EventSettings."..objEventSettings.EventType..".FontSettings.Color");MikSBTOpt.PopulateColorSwatch(objEventSettings:GetName().."ColorSwatch");MikSBTOpt.SetupCheckbox(objEventSettings:GetName().."ShowEventCheckbox",evtData.Label,evtData.Tooltips.ShowCheckbox,"EventSettings."..objEventSettings.EventType..".Show");MikSBTOpt.PopulateCheckbox(objEventSettings:GetName().."ShowEventCheckbox");local objMessageLabel=getglobal(objEventSettings:GetName().."MessageLabel");if(objMessageLabel)then
objMessageLabel:GetParent().tooltipText=MikSBTOpt.MSG_EVENT_MESSAGE_LABEL_TOOLTIP;if(objEventSettings.EventType~=nil)then objMessageLabel:SetText(MikSBT.GetOptionFromVarPath("EventSettings."..objEventSettings.EventType..".Message"));end end objEventSettings.EditboxTooltip=evtData.Tooltips.Editbox;getglobal(objEventSettings:GetName().."StickyEventCheckbox"):Hide();MikSBTOpt.SetupButton(objEventSettings:GetName().."EditFontSettingsButton",MikSBTOpt.MSG_EVENT_EDIT_FONT_SETTINGS_BUTTON_LABEL,MikSBTOpt.MSG_EVENT_EDIT_FONT_SETTINGS_BUTTON_TOOLTIP);objEventSettings:Show();end end end end
function MikSBTOpt.PopulateNotificationEventSettings()MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab4FrameMessageEditbox");totalItems=table.getn(MikSBTOpt.NOTIFICATION_EVENTS);local objFrame=getglobal(OPTIONS_FRAME_NAME.."Tab4FrameEventsScrollFrame");FauxScrollFrame_Update(objFrame,totalItems,EVENT_ITEMS_PER_PAGE,EVENT_ITEM_HEIGHT);local skipCount=FauxScrollFrame_GetOffset(objFrame);local objEventSettings=nil;for i=1,EVENT_ITEMS_PER_PAGE do objEventSettings=getglobal(OPTIONS_FRAME_NAME.."Tab4FrameEvent"..i);if(objEventSettings)then
if(i>totalItems)then
objEventSettings:Hide();else
local evtData=MikSBTOpt.NOTIFICATION_EVENTS[i+skipCount];if(evtData.EventType~=nil)then objEventSettings.EventType=evtData.EventType;end
objEventSettings.FontFrameTitle=evtData.Label;objEventSettings.EventArea="Outgoing";MikSBTOpt.SetupColorSwatch(objEventSettings:GetName().."ColorSwatch",MikSBTOpt.MSG_EVENT_COLOR_SWATCH_TOOLTIP,"EventSettings."..objEventSettings.EventType..".FontSettings.Color");MikSBTOpt.PopulateColorSwatch(objEventSettings:GetName().."ColorSwatch");MikSBTOpt.SetupCheckbox(objEventSettings:GetName().."ShowEventCheckbox",evtData.Label,evtData.Tooltips.ShowCheckbox,"EventSettings."..objEventSettings.EventType..".Show");MikSBTOpt.PopulateCheckbox(objEventSettings:GetName().."ShowEventCheckbox");local objMessageLabel=getglobal(objEventSettings:GetName().."MessageLabel");if(objMessageLabel)then
objMessageLabel:GetParent().tooltipText=MikSBTOpt.MSG_EVENT_MESSAGE_LABEL_TOOLTIP;if(objEventSettings.EventType~=nil)then objMessageLabel:SetText(MikSBT.GetOptionFromVarPath("EventSettings."..objEventSettings.EventType..".Message"));end end objEventSettings.EditboxTooltip=evtData.Tooltips.Editbox;MikSBTOpt.SetupCheckbox(objEventSettings:GetName().."StickyEventCheckbox",nil,MikSBTOpt.MSG_EVENT_STICKY_CHECKBOX_TOOLTIP,"EventSettings."..objEventSettings.EventType..".IsSticky");MikSBTOpt.PopulateCheckbox(objEventSettings:GetName().."StickyEventCheckbox");getglobal(objEventSettings:GetName().."StickyEventCheckbox"):Show();MikSBTOpt.SetupButton(objEventSettings:GetName().."EditFontSettingsButton",MikSBTOpt.MSG_EVENT_EDIT_FONT_SETTINGS_BUTTON_LABEL,MikSBTOpt.MSG_EVENT_EDIT_FONT_SETTINGS_BUTTON_TOOLTIP);objEventSettings:Show();end end end end
function MikSBTOpt.PopulateTriggerEventSettings()MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab5FrameMessageEditbox");totalItems=MikSBTOpt.CountTriggers();local objFrame=getglobal(OPTIONS_FRAME_NAME.."Tab5FrameTriggersScrollFrame");FauxScrollFrame_Update(objFrame,totalItems,TRIGGER_ITEMS_PER_PAGE,TRIGGER_ITEM_HEIGHT);local skipCount=FauxScrollFrame_GetOffset(objFrame);local objTriggerEventSettings=nil;for i=1,TRIGGER_ITEMS_PER_PAGE do objTriggerEventSettings=getglobal(OPTIONS_FRAME_NAME.."Tab5FrameTrigger"..i);if(objTriggerEventSettings)then
if(i>totalItems)then
objTriggerEventSettings:Hide();else
local triggerKey,triggerSettings=MikSBTOpt.GetTriggerSettings(i+skipCount);objTriggerEventSettings.TriggerKey=triggerKey;objTriggerEventSettings.FontFrameTitle=triggerSettings.EventSettings.Message;objTriggerEventSettings.EventArea="Trigger";MikSBTOpt.SetupColorSwatch(objTriggerEventSettings:GetName().."ColorSwatch",MikSBTOpt.MSG_EVENT_COLOR_SWATCH_TOOLTIP,"Triggers."..triggerKey..".EventSettings.FontSettings.Color");MikSBTOpt.PopulateColorSwatch(objTriggerEventSettings:GetName().."ColorSwatch");MikSBTOpt.SetupCheckbox(objTriggerEventSettings:GetName().."EnableTriggerCheckbox",nil,MikSBTOpt.MSG_TRIGGER_ENABLE_TOOLTIP,"Triggers."..triggerKey..".EventSettings.Show");MikSBTOpt.PopulateCheckbox(objTriggerEventSettings:GetName().."EnableTriggerCheckbox");local objMessageLabel=getglobal(objTriggerEventSettings:GetName().."MessageLabel");if(objMessageLabel)then
objMessageLabel:GetParent().tooltipText=MikSBTOpt.MSG_TRIGGER_MESSAGE_LABEL_TOOLTIP;objMessageLabel:SetText(triggerSettings.EventSettings.Message);end objTriggerEventSettings.EditboxTooltip=MikSBTOpt.MSG_TRIGGER_MESSAGE_EDITBOX_TOOLTIP;MikSBTOpt.SetupCheckbox(objTriggerEventSettings:GetName().."StickyEventCheckbox",nil,MikSBTOpt.MSG_TRIGGER_STICKY_CHECKBOX_TOOLTIP,"Triggers."..triggerKey..".EventSettings.IsSticky");MikSBTOpt.PopulateCheckbox(objTriggerEventSettings:GetName().."StickyEventCheckbox");MikSBTOpt.SetupButton(objTriggerEventSettings:GetName().."EditFontSettingsButton",MikSBTOpt.MSG_TRIGGER_EDIT_FONT_SETTINGS_BUTTON_LABEL,MikSBTOpt.MSG_TRIGGER_EDIT_FONT_SETTINGS_BUTTON_TOOLTIP);MikSBTOpt.SetupButton(objTriggerEventSettings:GetName().."EditTriggerSettingsButton",MikSBTOpt.MSG_TRIGGER_EDIT_TRIGGER_SETTINGS_BUTTON_LABEL,MikSBTOpt.MSG_TRIGGER_EDIT_TRIGGER_SETTINGS_BUTTON_TOOLTIP);MikSBTOpt.SetupButton(objTriggerEventSettings:GetName().."DeleteTriggerButton","X",MikSBTOpt.MSG_TRIGGER_DELETE_TRIGGER_BUTTON_TOOLTIP);objTriggerEventSettings:Show();end end end end
function MikSBTOpt.PopulateSuppressionSettings()MikSBTOpt.HideMessageEditbox(OPTIONS_FRAME_NAME.."Tab6FrameMessageEditbox");totalItems=MikSBTOpt.CountSuppressions();local objFrame=getglobal(OPTIONS_FRAME_NAME.."Tab6FrameSuppressionsScrollFrame");FauxScrollFrame_Update(objFrame,totalItems,SUPPRESSION_ITEMS_PER_PAGE,SUPPRESSION_ITEM_HEIGHT);local skipCount=FauxScrollFrame_GetOffset(objFrame);for i=1,SUPPRESSION_ITEMS_PER_PAGE do objSuppressionItemSettings=getglobal(OPTIONS_FRAME_NAME.."Tab6FrameSuppression"..i);if(objSuppressionItemSettings)then
if(i>totalItems)then
objSuppressionItemSettings:Hide();else local suppressionKey,suppressionSettings=MikSBTOpt.GetSuppressionSettings(i+skipCount);objSuppressionItemSettings.SuppressionKey=suppressionKey;MikSBTOpt.SetupCheckbox(objSuppressionItemSettings:GetName().."EnableSuppressionCheckbox",nil,MikSBTOpt.MSG_SUPPRESSION_ENABLE_TOOLTIP,"Suppressions."..suppressionKey..".Enabled");MikSBTOpt.PopulateCheckbox(objSuppressionItemSettings:GetName().."EnableSuppressionCheckbox");local objMessageLabel=getglobal(objSuppressionItemSettings:GetName().."MessageLabel");if(objMessageLabel)then
objMessageLabel:GetParent().tooltipText=MikSBTOpt.MSG_SUPPRESSION_MESSAGE_LABEL_TOOLTIP;objMessageLabel:SetText(suppressionSettings.SearchPattern);end objSuppressionItemSettings.EditboxTooltip=MikSBTOpt.MSG_SUPPRESSION_MESSAGE_EDITBOX_TOOLTIP;MikSBTOpt.SetupButton(objSuppressionItemSettings:GetName().."DeleteSuppressionButton","X",MikSBTOpt.MSG_SUPPRESSION_DELETE_SUPPRESSION_BUTTON_TOOLTIP);objSuppressionItemSettings:Show();end end end end
function MikSBTOpt.CountTriggers()local numTriggers=0;for _,triggerSettings in MikSBT.CurrentProfile.Triggers do numTriggers=numTriggers+1;end
return numTriggers;end
function MikSBTOpt.CountSuppressions()local numSuppressions=0;for _,suppressionSettings in MikSBT.CurrentProfile.Suppressions do numSuppressions=numSuppressions+1;end
return numSuppressions;end
function MikSBTOpt.GetTriggerSettings(triggerNumber)local curTrigger=0;for triggerKey,triggerSettings in MikSBT.CurrentProfile.Triggers do curTrigger=curTrigger+1;if(curTrigger==triggerNumber)then return triggerKey,triggerSettings;end end return nil;end
function MikSBTOpt.GetSuppressionSettings(suppressionNumber)local curSuppression=0;for suppressionKey,suppressionSettings in MikSBT.CurrentProfile.Suppressions do curSuppression=curSuppression+1;if(curSuppression==suppressionNumber)then return suppressionKey,suppressionSettings;end end return nil;end
function MikSBTOpt.EventMessageLabelOnClick()local objEventSettings=this:GetParent();if(objEventSettings.EventType~=nil)then
local labelFrameName=this:GetName().."Label";local objLabel=getglobal(labelFrameName);objLabel:Hide();local editboxFrameName=objEventSettings:GetParent():GetName().."MessageEditbox";local objEditbox=getglobal(editboxFrameName);objEditbox:Hide();objEditbox:Show();objEditbox:ClearAllPoints();objEditbox:SetPoint("TOPLEFT",this,"TOPLEFT");objEditbox.ClickedLabelFrameName=labelFrameName;objEditbox.PreviousText=objLabel:GetText();MikSBTOpt.SetupEditbox(editboxFrameName,nil,MikSBTOpt.MSG_EVENT_MESSAGE_EDITBOX_TOOLTIP_PREFIX..objEventSettings.EditboxTooltip,"EventSettings."..objEventSettings.EventType..".Message");MikSBTOpt.PopulateEditbox(editboxFrameName);objEditbox:SetFocus();end end
function MikSBTOpt.TriggerMessageLabelOnClick()local objTriggerEventSettings=this:GetParent();if(objTriggerEventSettings.TriggerKey~=nil)then
local labelFrameName=this:GetName().."Label";local objLabel=getglobal(labelFrameName);objLabel:Hide();local editboxFrameName=objTriggerEventSettings:GetParent():GetName().."MessageEditbox";local objEditbox=getglobal(editboxFrameName);objEditbox:Hide();objEditbox:Show();objEditbox:ClearAllPoints();objEditbox:SetPoint("TOPLEFT",this,"TOPLEFT");objEditbox.ClickedLabelFrameName=labelFrameName;objEditbox.PreviousText=objLabel:GetText();MikSBTOpt.SetupEditbox(editboxFrameName,nil,objTriggerEventSettings.EditboxTooltip,"Triggers."..objTriggerEventSettings.TriggerKey..".EventSettings.Message");MikSBTOpt.PopulateEditbox(editboxFrameName);objEditbox:SetFocus();end end
function MikSBTOpt.SuppressionMessageLabelOnClick()local objSuppressionSettings=this:GetParent();if(objSuppressionSettings.SuppressionKey~=nil)then
local labelFrameName=this:GetName().."Label";local objLabel=getglobal(labelFrameName);objLabel:Hide();local editboxFrameName=objSuppressionSettings:GetParent():GetName().."MessageEditbox";local objEditbox=getglobal(editboxFrameName);objEditbox:Hide();objEditbox:Show();objEditbox:ClearAllPoints();objEditbox:SetPoint("TOPLEFT",this,"TOPLEFT");objEditbox.ClickedLabelFrameName=labelFrameName;objEditbox.PreviousText=objLabel:GetText();MikSBTOpt.SetupEditbox(editboxFrameName,nil,objSuppressionSettings.EditboxTooltip,"Suppressions."..objSuppressionSettings.SuppressionKey..".SearchPattern");MikSBTOpt.PopulateEditbox(editboxFrameName);objEditbox:SetFocus();end end
function MikSBTOpt.HideMessageEditbox(editboxFrameName)local objEditbox=getglobal(editboxFrameName);if(objEditbox and objEditbox:IsVisible())then objEditbox:Hide();end end
function MikSBTOpt.ShowMasterFontSettings()MikSBTOpt.ShowCritFontControls();local key="FontDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].Font,MikSBTOpt.FontSettingsDropdownOnClick,MikSBT.AVAILABLE_FONTS,"MasterFontSettings.Normal.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].Outline,MikSBTOpt.FontSettingsDropdownOnClick,MikSBT.AVAILABLE_OUTLINES,"MasterFontSettings.Normal.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontCritDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].FontCrit,MikSBTOpt.FontSettingsDropdownOnClick,MikSBT.AVAILABLE_FONTS,"MasterFontSettings.Crit.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineCritDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].OutlineCrit,MikSBTOpt.FontSettingsDropdownOnClick,MikSBT.AVAILABLE_OUTLINES,"MasterFontSettings.Crit.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontSizeSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].FontSize,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"MasterFontSettings.Normal.FontSize");MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME..key);key="FontSizeCritSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Master"].FontSizeCrit,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"MasterFontSettings.Crit.FontSize");MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME..key);getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Show();getglobal(FONT_SETTINGS_FRAME_NAME):Show();MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.ShowScrollAreaFontSettings(scrollArea)local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame.InheritedFontIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.FontIndex");fontSettingsFrame.InheritedOutlineIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.OutlineIndex");fontSettingsFrame.InheritedFontSize=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.FontSize");fontSettingsFrame.InheritedFontCritIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Crit.FontIndex");fontSettingsFrame.InheritedOutlineCritIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Crit.OutlineIndex");fontSettingsFrame.InheritedFontSizeCrit=MikSBT.GetOptionFromVarPath("MasterFontSettings.Crit.FontSize");MikSBTOpt.ShowCritFontControls();local key="FontDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].Font,MikSBTOpt.FontSettingsDropdownOnClick,availableFontsInherit,"DisplaySettings."..scrollArea..".FontSettings.Normal.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].Outline,MikSBTOpt.FontSettingsDropdownOnClick,availableOutlinesInherit,"DisplaySettings."..scrollArea..".FontSettings.Normal.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontCritDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].FontCrit,MikSBTOpt.FontSettingsDropdownOnClick,availableFontsInherit,"DisplaySettings."..scrollArea..".FontSettings.Crit.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineCritDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].OutlineCrit,MikSBTOpt.FontSettingsDropdownOnClick,availableOutlinesInherit,"DisplaySettings."..scrollArea..".FontSettings.Crit.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):Show();key="InheritFontSizeCheckbox";MikSBTOpt.SetupCheckbox(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].InheritFontSize,"DisplaySettings."..scrollArea..".FontSettings.Normal.FontSize");key="InheritFontSizeCritCheckbox";MikSBTOpt.SetupCheckbox(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].InheritFontSizeCrit,"DisplaySettings."..scrollArea..".FontSettings.Crit.FontSize");key="FontSizeSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].FontSize,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"DisplaySettings."..scrollArea..".FontSettings.Normal.FontSize");key="FontSizeCritSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["ScrollArea"].FontSizeCrit,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"DisplaySettings."..scrollArea..".FontSettings.Crit.FontSize");if(MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Normal.FontSize")==0)then
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):SetChecked(true);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Hide();else
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):SetChecked(false);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Show();MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider");end
if(MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Crit.FontSize")==0)then
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):SetChecked(true);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Hide();else
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):SetChecked(false);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Show();MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider");end
fontSettingsFrame:Show();MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.ShowEventFontSettings(scrollArea,eventType)local inheritedFontIndex=MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Normal.FontIndex");if(inheritedFontIndex==0)then inheritedFontIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.FontIndex");end
local inheritedOutlineIndex=MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Normal.OutlineIndex");if(inheritedOutlineIndex==0)then inheritedOutlineIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.OutlineIndex");end
local inheritedFontSize=MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Normal.FontSize");if(inheritedFontSize==0)then
inheritedFontSize=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.FontSize");end
local inheritedFontCritIndex=MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Crit.FontIndex");if(inheritedFontCritIndex==0)then inheritedFontCritIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Crit.FontIndex");end
local inheritedOutlineCritIndex=MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Crit.OutlineIndex");if(inheritedOutlineCritIndex==0)then inheritedOutlineCritIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Crit.OutlineIndex");end
local inheritedFontSizeCrit=MikSBT.GetOptionFromVarPath("DisplaySettings."..scrollArea..".FontSettings.Crit.FontSize");if(inheritedFontSizeCrit==0)then
inheritedFontSizeCrit=MikSBT.GetOptionFromVarPath("MasterFontSettings.Crit.FontSize");end
local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame.InheritedFontIndex=inheritedFontIndex;fontSettingsFrame.InheritedOutlineIndex=inheritedOutlineIndex;fontSettingsFrame.InheritedFontSize=inheritedFontSize;fontSettingsFrame.InheritedFontCritIndex=inheritedFontCritIndex;fontSettingsFrame.InheritedOutlineCritIndex=inheritedOutlineCritIndex;fontSettingsFrame.InheritedFontSizeCrit=inheritedFontSizeCrit;local key="FontDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].Font,MikSBTOpt.FontSettingsDropdownOnClick,availableFontsInherit,"EventSettings."..eventType..".FontSettings.Normal.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].Outline,MikSBTOpt.FontSettingsDropdownOnClick,availableOutlinesInherit,"EventSettings."..eventType..".FontSettings.Normal.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):Show();key="InheritFontSizeCheckbox";MikSBTOpt.SetupCheckbox(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].InheritFontSize,"EventSettings."..eventType..".FontSettings.Normal.FontSize");key="FontSizeSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].FontSize,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"EventSettings."..eventType..".FontSettings.Normal.FontSize");if(MikSBT.GetOptionFromVarPath("EventSettings."..eventType..".FontSettings.Normal.FontSize")==0)then
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):SetChecked(true);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Hide();else
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):SetChecked(false);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Show();MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider");end
if(MikSBT.CurrentProfile.EventSettings[eventType].FontSettings.Crit~=nil)then
MikSBTOpt.ShowCritFontControls();key="FontCritDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].FontCrit,MikSBTOpt.FontSettingsDropdownOnClick,availableFontsInherit,"EventSettings."..eventType..".FontSettings.Crit.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineCritDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].OutlineCrit,MikSBTOpt.FontSettingsDropdownOnClick,availableOutlinesInherit,"EventSettings."..eventType..".FontSettings.Crit.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):Show();key="InheritFontSizeCritCheckbox";MikSBTOpt.SetupCheckbox(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].InheritFontSizeCrit,"EventSettings."..eventType..".FontSettings.Crit.FontSize");key="FontSizeCritSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Event"].FontSizeCrit,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"EventSettings."..eventType..".FontSettings.Crit.FontSize");if(MikSBT.GetOptionFromVarPath("EventSettings."..eventType..".FontSettings.Crit.FontSize")==0)then
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):SetChecked(true);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Hide();else
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):SetChecked(false);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Show();MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider");end
else
MikSBTOpt.HideCritFontControls();end
fontSettingsFrame:Show();MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.ShowTriggerFontSettings(triggerKey)local inheritedFontIndex=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.FontSettings.Normal.FontIndex");if(inheritedFontIndex==0)then inheritedFontIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.FontIndex");end
local inheritedOutlineIndex=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.FontSettings.Normal.OutlineIndex");if(inheritedOutlineIndex==0)then inheritedOutlineIndex=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.OutlineIndex");end
local inheritedFontSize=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.FontSettings.Normal.FontSize");if(inheritedFontSize==0)then
inheritedFontSize=MikSBT.GetOptionFromVarPath("MasterFontSettings.Normal.FontSize");end
local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);fontSettingsFrame.InheritedFontIndex=inheritedFontIndex;fontSettingsFrame.InheritedOutlineIndex=inheritedOutlineIndex;fontSettingsFrame.InheritedFontSize=inheritedFontSize;local key="FontDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Trigger"].Font,MikSBTOpt.FontSettingsDropdownOnClick,availableFontsInherit,"Triggers."..triggerKey..".EventSettings.FontSettings.Normal.FontIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);key="FontOutlineDropdown";MikSBTOpt.SetupDropdown(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.DROPDOWNS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Trigger"].Outline,MikSBTOpt.FontSettingsDropdownOnClick,availableOutlinesInherit,"Triggers."..triggerKey..".EventSettings.FontSettings.Normal.OutlineIndex");MikSBTOpt.PopulateDropdown(FONT_SETTINGS_FRAME_NAME..key);getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):Show();key="InheritFontSizeCheckbox";MikSBTOpt.SetupCheckbox(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.CHECKBOXES[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Trigger"].InheritFontSize,"Triggers."..triggerKey..".EventSettings.FontSettings.Normal.FontSize");key="FontSizeSlider";MikSBTOpt.SetupSlider(FONT_SETTINGS_FRAME_NAME..key,MikSBTOpt.SLIDERS[key].Label,MikSBTOpt.FONT_SETTINGS_TOOLTIPS["Trigger"].FontSize,MIN_FONT_SIZE,MAX_FONT_SIZE,2,"Triggers."..triggerKey..".EventSettings.FontSettings.Normal.FontSize");if(MikSBT.GetOptionFromVarPath("Triggers."..triggerKey..".EventSettings.FontSettings.Normal.FontSize")==0)then
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):SetChecked(true);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Hide();else
getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCheckbox"):SetChecked(false);getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider"):Show();MikSBTOpt.PopulateSlider(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider");end
MikSBTOpt.HideCritFontControls();fontSettingsFrame:Show();MikSBTOpt.UpdateFontPreviews();end
function MikSBTOpt.UpdateFontPreviews()local fontSettingsFrame=getglobal(FONT_SETTINGS_FRAME_NAME);local fontIndex=UIDropDownMenu_GetSelectedValue(getglobal(FONT_SETTINGS_FRAME_NAME.."FontDropdown"));if(fontIndex==0)then fontIndex=fontSettingsFrame.InheritedFontIndex;end
local outlineIndex=UIDropDownMenu_GetSelectedValue(getglobal(FONT_SETTINGS_FRAME_NAME.."FontOutlineDropdown"));if(outlineIndex==0)then outlineIndex=fontSettingsFrame.InheritedOutlineIndex;end
local slider=getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeSlider");local fontSize;if(slider:IsShown())then
fontSize=slider:GetValue();else
fontSize=fontSettingsFrame.InheritedFontSize;end
if(fontIndex~=nil)then local previewText=getglobal(FONT_SETTINGS_FRAME_NAME.."NormalPreviewText");previewText:SetFont(MikSBT.AVAILABLE_FONTS[fontIndex].Path,fontSize,MikSBT.AVAILABLE_OUTLINES[outlineIndex].Style);end
if(getglobal(FONT_SETTINGS_FRAME_NAME.."CritPreview"):IsShown())then
local fontCritIndex=UIDropDownMenu_GetSelectedValue(getglobal(FONT_SETTINGS_FRAME_NAME.."FontCritDropdown"));if(fontCritIndex==0)then fontCritIndex=fontSettingsFrame.InheritedFontCritIndex;end
local outlineCritIndex=UIDropDownMenu_GetSelectedValue(getglobal(FONT_SETTINGS_FRAME_NAME.."FontOutlineCritDropdown"));if(outlineCritIndex==0)then outlineCritIndex=fontSettingsFrame.InheritedOutlineCritIndex;end
local slider=getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider");local fontSizeCrit;if(slider:IsShown())then
fontSizeCrit=slider:GetValue();else
fontSizeCrit=fontSettingsFrame.InheritedFontSizeCrit;end
if(fontCritIndex~=nil)then local previewText=getglobal(FONT_SETTINGS_FRAME_NAME.."CritPreviewText");previewText:SetFont(MikSBT.AVAILABLE_FONTS[fontCritIndex].Path,fontSizeCrit,MikSBT.AVAILABLE_OUTLINES[outlineCritIndex].Style);end end end
function MikSBTOpt.ShowCritFontControls()getglobal(FONT_SETTINGS_FRAME_NAME.."FontCritDropdown"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."FontOutlineCritDropdown"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."CritPreview"):Show();getglobal(FONT_SETTINGS_FRAME_NAME.."FontDropdown"):SetPoint("TOPLEFT",FONT_SETTINGS_FRAME_NAME,"TOPLEFT",0,-60);end
function MikSBTOpt.HideCritFontControls()getglobal(FONT_SETTINGS_FRAME_NAME.."FontCritDropdown"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."FontOutlineCritDropdown"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."InheritFontSizeCritCheckbox"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."FontSizeCritSlider"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."CritPreview"):Hide();getglobal(FONT_SETTINGS_FRAME_NAME.."FontDropdown"):SetPoint("TOPLEFT",FONT_SETTINGS_FRAME_NAME,"TOPLEFT",85,-60);end
function MikSBTOpt.ShowScrollAreaMoverFrames(scrollArea)local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);if(not controlFrame.MSBTOriginalSettings)then controlFrame.MSBTOriginalSettings={};end
controlFrame.MSBTOriginalSettings.IncomingAnimationStyle=MikSBT.GetOptionFromVarPath("DisplaySettings.Incoming.AnimationStyle");controlFrame.MSBTOriginalSettings.IncomingScrollDirection=MikSBT.GetOptionFromVarPath("DisplaySettings.Incoming.ScrollDirection");controlFrame.MSBTOriginalSettings.IncomingTextAlignIndex=MikSBT.GetOptionFromVarPath("DisplaySettings.Incoming.FontSettings.TextAlignIndex");controlFrame.MSBTOriginalSettings.IncomingScrollHeight=MikSBT.GetOptionFromVarPath("DisplaySettings.Incoming.ScrollHeight");controlFrame.MSBTOriginalSettings.IncomingXOffset=MikSBT.GetOptionFromVarPath("DisplaySettings.Incoming.FrameOffsets.x");controlFrame.MSBTOriginalSettings.IncomingYOffset=MikSBT.GetOptionFromVarPath("DisplaySettings.Incoming.FrameOffsets.y");controlFrame.MSBTOriginalSettings.OutgoingAnimationStyle=MikSBT.GetOptionFromVarPath("DisplaySettings.Outgoing.AnimationStyle");controlFrame.MSBTOriginalSettings.OutgoingScrollDirection=MikSBT.GetOptionFromVarPath("DisplaySettings.Outgoing.ScrollDirection");controlFrame.MSBTOriginalSettings.OutgoingTextAlignIndex=MikSBT.GetOptionFromVarPath("DisplaySettings.Outgoing.FontSettings.TextAlignIndex");controlFrame.MSBTOriginalSettings.OutgoingScrollHeight=MikSBT.GetOptionFromVarPath("DisplaySettings.Outgoing.ScrollHeight");controlFrame.MSBTOriginalSettings.OutgoingXOffset=MikSBT.GetOptionFromVarPath("DisplaySettings.Outgoing.FrameOffsets.x");controlFrame.MSBTOriginalSettings.OutgoingYOffset=MikSBT.GetOptionFromVarPath("DisplaySettings.Outgoing.FrameOffsets.y");controlFrame.MSBTOriginalSettings.NotificationAnimationStyle=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.AnimationStyle");controlFrame.MSBTOriginalSettings.NotificationScrollDirection=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.ScrollDirection");controlFrame.MSBTOriginalSettings.NotificationTextAlignIndex=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.FontSettings.TextAlignIndex");controlFrame.MSBTOriginalSettings.NotificationScrollHeight=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.ScrollHeight");controlFrame.MSBTOriginalSettings.NotificationXOffset=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.FrameOffsets.x");controlFrame.MSBTOriginalSettings.NotificationYOffset=MikSBT.GetOptionFromVarPath("DisplaySettings.Notification.FrameOffsets.y");controlFrame.MSBTCurrentSettings=MikSBT.CopyTable(controlFrame.MSBTOriginalSettings);MikSBTOpt.PopulateDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollAreaDropdown",scrollArea);MikSBTOpt.PopulateScrollAreaControls(scrollArea);local incomingFrame=getglobal(SCROLL_AREA_MOVER_INCOMING_FRAME_NAME);local outgoingFrame=getglobal(SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME);local notificationFrame=getglobal(SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME);incomingFrame.tooltipText=MikSBTOpt.FRAMES[SCROLL_AREA_MOVER_INCOMING_FRAME_NAME].Tooltip;outgoingFrame.tooltipText=MikSBTOpt.FRAMES[SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME].Tooltip;notificationFrame.tooltipText=MikSBTOpt.FRAMES[SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME].Tooltip;MikSBTOpt.RepositionScrollAreaMoverFrames();MikSBTOpt.PopulateScrollAreaMoverCoordinates()controlFrame:Show();incomingFrame:Show();outgoingFrame:Show();notificationFrame:Show();getglobal(OPTIONS_FRAME_NAME):Hide();end
function MikSBTOpt.HideScrollAreaMoverFrames()getglobal(OPTIONS_FRAME_NAME):Show();getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME):Hide();getglobal(SCROLL_AREA_MOVER_INCOMING_FRAME_NAME):Hide();getglobal(SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME):Hide();getglobal(SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME):Hide();end
function MikSBTOpt.RepositionScrollAreaMoverFrames()local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);local incomingFrame=getglobal(SCROLL_AREA_MOVER_INCOMING_FRAME_NAME);local outgoingFrame=getglobal(SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME);local notificationFrame=getglobal(SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME);incomingFrame:SetHeight(controlFrame.MSBTCurrentSettings.IncomingScrollHeight);incomingFrame:ClearAllPoints();incomingFrame:SetPoint("BOTTOM",UIParent,"CENTER",controlFrame.MSBTCurrentSettings.IncomingXOffset,controlFrame.MSBTCurrentSettings.IncomingYOffset);outgoingFrame:SetHeight(controlFrame.MSBTCurrentSettings.OutgoingScrollHeight);outgoingFrame:ClearAllPoints();outgoingFrame:SetPoint("BOTTOM",UIParent,"CENTER",controlFrame.MSBTCurrentSettings.OutgoingXOffset,controlFrame.MSBTCurrentSettings.OutgoingYOffset);notificationFrame:SetHeight(controlFrame.MSBTCurrentSettings.NotificationScrollHeight);notificationFrame:ClearAllPoints();notificationFrame:SetPoint("BOTTOM",UIParent,"CENTER",controlFrame.MSBTCurrentSettings.NotificationXOffset,controlFrame.MSBTCurrentSettings.NotificationYOffset);MikSBTOpt.PopulateScrollAreaMoverCoordinates();end
function MikSBTOpt.ColorizeScrollAreaMoverFrames(scrollArea)local incomingFrame=getglobal(SCROLL_AREA_MOVER_INCOMING_FRAME_NAME);local outgoingFrame=getglobal(SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME);local notificationFrame=getglobal(SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME);if(scrollArea=="Incoming")then incomingFrame:SetBackdropColor(0.5,0.05,0.05,1.0);outgoingFrame:SetBackdropColor(0.8,0.8,0.8,1.0);notificationFrame:SetBackdropColor(0.8,0.8,0.8,1.0);elseif(scrollArea=="Outgoing")then incomingFrame:SetBackdropColor(0.8,0.8,0.8,1.0);outgoingFrame:SetBackdropColor(0.5,0.05,0.05,1.0);notificationFrame:SetBackdropColor(0.8,0.8,0.8,1.0);elseif(scrollArea=="Notification")then incomingFrame:SetBackdropColor(0.8,0.8,0.8,1.0);outgoingFrame:SetBackdropColor(0.8,0.8,0.8,1.0);notificationFrame:SetBackdropColor(0.5,0.05,0.05,1.0);end end
function MikSBTOpt.PopulateScrollAreaControls(scrollArea)local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);MikSBTOpt.PopulateDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."AnimationStyleDropdown",controlFrame.MSBTCurrentSettings[scrollArea.."AnimationStyle"]);MikSBTOpt.PopulateDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollDirectionDropdown",controlFrame.MSBTCurrentSettings[scrollArea.."ScrollDirection"]);MikSBTOpt.PopulateDropdown(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."TextAlignDropdown",controlFrame.MSBTCurrentSettings[scrollArea.."TextAlignIndex"]);MikSBTOpt.PopulateSlider(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollHeightSlider",controlFrame.MSBTCurrentSettings[scrollArea.."ScrollHeight"]);MikSBTOpt.PopulateEditbox(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."XOffsetEditbox",controlFrame.MSBTCurrentSettings[scrollArea.."XOffset"]);MikSBTOpt.PopulateEditbox(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."YOffsetEditbox",controlFrame.MSBTCurrentSettings[scrollArea.."YOffset"]);MikSBTOpt.ColorizeScrollAreaMoverFrames(scrollArea)end
function MikSBTOpt.PopulateScrollAreaMoverCoordinates()local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);getglobal(SCROLL_AREA_MOVER_INCOMING_FRAME_NAME.."Title"):SetText(MikSBTOpt.TABS[TAB_INDEX_INCOMING].Label.." ("..controlFrame.MSBTCurrentSettings.IncomingXOffset..", "..controlFrame.MSBTCurrentSettings.IncomingYOffset..")");getglobal(SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME.."Title"):SetText(MikSBTOpt.TABS[TAB_INDEX_OUTGOING].Label.." ("..controlFrame.MSBTCurrentSettings.OutgoingXOffset..", "..controlFrame.MSBTCurrentSettings.OutgoingYOffset..")");getglobal(SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME.."Title"):SetText(MikSBTOpt.TABS[TAB_INDEX_NOTIFICATION].Label.." ("..controlFrame.MSBTCurrentSettings.NotificationXOffset..", "..controlFrame.MSBTCurrentSettings.NotificationYOffset..")");local scrollArea=UIDropDownMenu_GetSelectedValue(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollAreaDropdown"));MikSBTOpt.PopulateEditbox(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."XOffsetEditbox",controlFrame.MSBTCurrentSettings[scrollArea.."XOffset"]);MikSBTOpt.PopulateEditbox(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."YOffsetEditbox",controlFrame.MSBTCurrentSettings[scrollArea.."YOffset"]);end
function MikSBTOpt.SaveScrollAreaMoverCoordinates(frameName)local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);local uiParentX,uiParentY=UIParent:GetCenter();local xOffset=math.floor(this:GetCenter()-uiParentX);local yOffset=math.ceil(this:GetBottom()-uiParentY);if(frameName==SCROLL_AREA_MOVER_INCOMING_FRAME_NAME)then controlFrame.MSBTCurrentSettings.IncomingXOffset=xOffset;controlFrame.MSBTCurrentSettings.IncomingYOffset=yOffset;elseif(frameName==SCROLL_AREA_MOVER_OUTGOING_FRAME_NAME)then controlFrame.MSBTCurrentSettings.OutgoingXOffset=xOffset;controlFrame.MSBTCurrentSettings.OutgoingYOffset=yOffset;elseif(frameName==SCROLL_AREA_MOVER_NOTIFICATION_FRAME_NAME)then controlFrame.MSBTCurrentSettings.NotificationXOffset=xOffset;controlFrame.MSBTCurrentSettings.NotificationYOffset=yOffset;end
MikSBTOpt.PopulateScrollAreaMoverCoordinates();end
function MikSBTOpt.SaveScrollAreaControlsToCurrentSettings()local scrollArea=UIDropDownMenu_GetSelectedValue(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollAreaDropdown"));local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);controlFrame.MSBTCurrentSettings[scrollArea.."AnimationStyle"]=UIDropDownMenu_GetSelectedValue(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."AnimationStyleDropdown"));controlFrame.MSBTCurrentSettings[scrollArea.."ScrollDirection"]=UIDropDownMenu_GetSelectedValue(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollDirectionDropdown"));controlFrame.MSBTCurrentSettings[scrollArea.."TextAlignIndex"]=UIDropDownMenu_GetSelectedValue(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."TextAlignDropdown"));controlFrame.MSBTCurrentSettings[scrollArea.."ScrollHeight"]=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."ScrollHeightSlider"):GetValue();local xOffset=tonumber(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."XOffsetEditbox"):GetText());if(xOffset~=nil)then controlFrame.MSBTCurrentSettings[scrollArea.."XOffset"]=xOffset;end
local yOffset=tonumber(getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME.."YOffsetEditbox"):GetText());if(yOffset~=nil)then controlFrame.MSBTCurrentSettings[scrollArea.."YOffset"]=yOffset;end end
function MikSBTOpt.SaveScrollAreaSettings(settingsType)MikSBTOpt.SaveScrollAreaControlsToCurrentSettings();local controlFrame=getglobal(SCROLL_AREA_MOVER_CONTROL_FRAME_NAME);MikSBT.SetOptionFromVarPath("DisplaySettings.Incoming.AnimationStyle",controlFrame[settingsType].IncomingAnimationStyle);MikSBT.SetOptionFromVarPath("DisplaySettings.Incoming.ScrollDirection",controlFrame[settingsType].IncomingScrollDirection);MikSBT.SetOptionFromVarPath("DisplaySettings.Incoming.FontSettings.TextAlignIndex",controlFrame[settingsType].IncomingTextAlignIndex);MikSBT.SetOptionFromVarPath("DisplaySettings.Incoming.ScrollHeight",controlFrame[settingsType].IncomingScrollHeight);MikSBT.SetOptionFromVarPath("DisplaySettings.Incoming.FrameOffsets.x",controlFrame[settingsType].IncomingXOffset);MikSBT.SetOptionFromVarPath("DisplaySettings.Incoming.FrameOffsets.y",controlFrame[settingsType].IncomingYOffset);MikSBT.SetOptionFromVarPath("DisplaySettings.Outgoing.AnimationStyle",controlFrame[settingsType].OutgoingAnimationStyle);MikSBT.SetOptionFromVarPath("DisplaySettings.Outgoing.ScrollDirection",controlFrame[settingsType].OutgoingScrollDirection);MikSBT.SetOptionFromVarPath("DisplaySettings.Outgoing.FontSettings.TextAlignIndex",controlFrame[settingsType].OutgoingTextAlignIndex);MikSBT.SetOptionFromVarPath("DisplaySettings.Outgoing.ScrollHeight",controlFrame[settingsType].OutgoingScrollHeight);MikSBT.SetOptionFromVarPath("DisplaySettings.Outgoing.FrameOffsets.x",controlFrame[settingsType].OutgoingXOffset);MikSBT.SetOptionFromVarPath("DisplaySettings.Outgoing.FrameOffsets.y",controlFrame[settingsType].OutgoingYOffset);MikSBT.SetOptionFromVarPath("DisplaySettings.Notification.AnimationStyle",controlFrame[settingsType].NotificationAnimationStyle);MikSBT.SetOptionFromVarPath("DisplaySettings.Notification.ScrollDirection",controlFrame[settingsType].NotificationScrollDirection);MikSBT.SetOptionFromVarPath("DisplaySettings.Notification.FontSettings.TextAlignIndex",controlFrame[settingsType].NotificationTextAlignIndex);MikSBT.SetOptionFromVarPath("DisplaySettings.Notification.ScrollHeight",controlFrame[settingsType].NotificationScrollHeight);MikSBT.SetOptionFromVarPath("DisplaySettings.Notification.FrameOffsets.x",controlFrame[settingsType].NotificationXOffset);MikSBT.SetOptionFromVarPath("DisplaySettings.Notification.FrameOffsets.y",controlFrame[settingsType].NotificationYOffset);MikSBT.RepositionAnimationFrames();end
function MikSBTOpt.ScrollAreaMoverPreviewOnClick()MikSBTOpt.SaveScrollAreaSettings("MSBTCurrentSettings");MikSBT.DisplayMessage(MikSBTOpt.MSG_SCROLL_AREA_PREVIEW_TEXT,MikSBT.DISPLAYTYPE_INCOMING,false,255,0,0);MikSBT.DisplayMessage(MikSBTOpt.MSG_SCROLL_AREA_PREVIEW_TEXT,MikSBT.DISPLAYTYPE_NOTIFICATION,false);MikSBT.DisplayMessage(MikSBTOpt.MSG_SCROLL_AREA_PREVIEW_TEXT,MikSBT.DISPLAYTYPE_OUTGOING,false,0,0,255);end
function MikSBTOpt.ScrollAreaMoverSaveOnClick()MikSBTOpt.SaveScrollAreaSettings("MSBTCurrentSettings");MikSBTOpt.HideScrollAreaMoverFrames();end
function MikSBTOpt.ScrollAreaMoverCancelOnClick()MikSBTOpt.SaveScrollAreaSettings("MSBTOriginalSettings");MikSBTOpt.HideScrollAreaMoverFrames();end
function MikSBTOpt.SetupAvailableTriggerEvents()table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_PARTY_HITS");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_PARTY_MISSES");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PARTY_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_SELF_HITS");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_SELF_MISSES");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_SELF_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_SELF_BUFF");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_PET_HITS");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_PET_MISSES");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_PET_DAMAGE");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_ITEM_ENCHANTMENTS");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_AURA_GONE_SELF");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_HONOR_GAIN");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_FACTION_CHANGE");table.insert(availableTriggerEvents,"CHAT_MSG_SKILL");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_XP_GAIN");table.insert(availableTriggerEvents,"CHAT_MSG_COMBAT_HOSTILE_DEATH");table.insert(availableTriggerEvents,"CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");end
function MikSBTOpt.AddNewTrigger()local nextTriggerNum=0;local slotFound=false;while(true)do
nextTriggerNum=nextTriggerNum+1;if(not MikSBT.CurrentProfile.Triggers["MSBT_TRIGGER_CUSTOM"..nextTriggerNum])then break;end end
MikSBT.CurrentProfile.Triggers["MSBT_TRIGGER_CUSTOM"..nextTriggerNum]={EventSettings={Show=true,Message=MikSBTOpt.MSG_TRIGGER_NEW_TRIGGER_DEFAULT_MESSAGE,IsSticky=false,FontSettings={Color={r=1,g=0.502,b=0.502},Normal={FontIndex=0,OutlineIndex=0,FontSize=26},},},TriggerSettings={TriggerType=1,Threshold=40,},}MikSBT.RegisterTriggers();MikSBTOpt.PopulateTriggerEventSettings();end
function MikSBTOpt.DeleteTrigger(triggerKey)MikSBT.CurrentProfile.Triggers[triggerKey]=nil;MikSBT.RegisterTriggers();MikSBTOpt.PopulateTriggerEventSettings();end
function MikSBTOpt.ShowTriggerConfig(triggerKey)local triggerFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME);triggerFrame.TriggerKey=triggerKey;local triggerData=MikSBT.CurrentProfile.Triggers[triggerKey];if(triggerData)then
getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."Title"):SetText(triggerData.EventSettings.Message);if(not triggerData.TriggerSettings.Classes)then
getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."AllClassesCheckbox"):SetChecked(1);MikSBTOpt.HideTriggerClassCheckboxes();else
getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."AllClassesCheckbox"):SetChecked(0);MikSBTOpt.ShowTriggerClassCheckboxes();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."DruidCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.DRUID);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."HunterCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.HUNTER);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."MageCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.MAGE);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PaladinCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.PALADIN);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PriestCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.PRIEST);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."RogueCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.ROGUE);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ShamanCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.SHAMAN);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarlockCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.WARLOCK);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarriorCheckbox"):SetChecked(triggerData.TriggerSettings.Classes.WARRIOR);end
MikSBTOpt.PopulateDropdown(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerTypeDropdown",triggerData.TriggerSettings.TriggerType);local texture="";if(triggerData.Texture)then texture=triggerData.Texture or"";end MikSBTOpt.PopulateEditbox(TRIGGER_CONFIGURATION_FRAME_NAME.."IconNameEditbox",texture);MikSBTOpt.SetupVariableTriggerControls(triggerKey,triggerData.TriggerSettings.TriggerType==MikCEH.TRIGGERTYPE_SEARCH_PATTERN);triggerFrame:Show();end end
function MikSBTOpt.SetupVariableTriggerControls(triggerKey,showSearch)local triggerFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME);local triggerData=MikSBT.CurrentProfile.Triggers[triggerKey];if(triggerData)then
if(showSearch)then
triggerFrame:SetHeight(420);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ThresholdSlider"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."EventsScrollFrame"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent1Checkbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent2Checkbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent3Checkbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent4Checkbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern1Editbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern2Editbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TextureHorizontalBarBottom"):Show();if(not triggerFrame.SelectedTriggerEvents)then triggerFrame.SelectedTriggerEvents={};else MikCEH.EraseTable(triggerFrame.SelectedTriggerEvents);end
for _,triggerEvent in triggerData.TriggerSettings.TriggerEvents do triggerFrame.SelectedTriggerEvents[triggerEvent]=true;end
MikSBTOpt.PopulateAvailableTriggerEvents();local searchPattern1="";local searchPattern2="";if(triggerData.TriggerSettings.SearchPatterns)then searchPattern1=triggerData.TriggerSettings.SearchPatterns[1]or"";searchPattern2=triggerData.TriggerSettings.SearchPatterns[2]or"";end
MikSBTOpt.PopulateEditbox(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern1Editbox",searchPattern1);MikSBTOpt.PopulateEditbox(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern2Editbox",searchPattern2);else
triggerFrame:SetHeight(270);getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ThresholdSlider"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."EventsScrollFrame"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent1Checkbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent2Checkbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent3Checkbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent4Checkbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern1Editbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern2Editbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TextureHorizontalBarBottom"):Hide();MikSBTOpt.PopulateSlider(TRIGGER_CONFIGURATION_FRAME_NAME.."ThresholdSlider",triggerData.TriggerSettings.Threshold or 1);end end end
function MikSBTOpt.HideTriggerClassCheckboxes()getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."DruidCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."HunterCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."MageCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PaladinCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PriestCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."RogueCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ShamanCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarlockCheckbox"):Hide();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarriorCheckbox"):Hide();end
function MikSBTOpt.ShowTriggerClassCheckboxes()getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."DruidCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."HunterCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."MageCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PaladinCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PriestCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."RogueCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ShamanCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarlockCheckbox"):Show();getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarriorCheckbox"):Show();end
function MikSBTOpt.SaveTriggerConfig()local triggerFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME);local triggerData=MikSBT.CurrentProfile.Triggers[triggerFrame.TriggerKey];if(triggerData)then
if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."AllClassesCheckbox"):GetChecked())then
triggerData.TriggerSettings.Classes=nil;else
local selectedClasses={};if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."DruidCheckbox"):GetChecked())then selectedClasses.DRUID=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."HunterCheckbox"):GetChecked())then selectedClasses.HUNTER=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."MageCheckbox"):GetChecked())then selectedClasses.MAGE=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PaladinCheckbox"):GetChecked())then selectedClasses.PALADIN=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."PriestCheckbox"):GetChecked())then selectedClasses.PRIEST=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."RogueCheckbox"):GetChecked())then selectedClasses.ROGUE=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ShamanCheckbox"):GetChecked())then selectedClasses.SHAMAN=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarlockCheckbox"):GetChecked())then selectedClasses.WARLOCK=true;end if(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."WarriorCheckbox"):GetChecked())then selectedClasses.WARRIOR=true;end
triggerData.TriggerSettings.Classes=selectedClasses;end
triggerData.TriggerSettings.TriggerType=UIDropDownMenu_GetSelectedValue(getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerTypeDropdown"));local texture=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."IconNameEditbox"):GetText();if(texture)and(texture~="")then triggerData.Texture=texture;end
if(triggerData.TriggerSettings.TriggerType==MikCEH.TRIGGERTYPE_SEARCH_PATTERN)then
triggerData.TriggerSettings.Threshold=nil;local trigEvents={};for triggerEvent in triggerFrame.SelectedTriggerEvents do table.insert(trigEvents,triggerEvent);end
triggerData.TriggerSettings.TriggerEvents=trigEvents;local searchPatterns={};local searchPattern=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern1Editbox"):GetText();if(searchPattern~="")then table.insert(searchPatterns,searchPattern);end
searchPattern=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."SearchPattern2Editbox"):GetText();if(searchPattern~="")then table.insert(searchPatterns,searchPattern);end
triggerData.TriggerSettings.SearchPatterns=searchPatterns;else
triggerData.TriggerSettings.TriggerEvents=nil;triggerData.TriggerSettings.SearchPatterns=nil;triggerData.TriggerSettings.Threshold=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."ThresholdSlider"):GetValue();end
MikSBT.RegisterTriggers();end end
function MikSBTOpt.PopulateAvailableTriggerEvents()local triggerFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME);local totalItems=table.getn(availableTriggerEvents);local objFrame=getglobal(TRIGGER_CONFIGURATION_FRAME_NAME.."EventsScrollFrame");FauxScrollFrame_Update(objFrame,totalItems,TRIGGER_EVENT_ITEMS_PER_PAGE,TRIGGER_EVENT_ITEM_HEIGHT);local skipCount=FauxScrollFrame_GetOffset(objFrame);for i=1,TRIGGER_EVENT_ITEMS_PER_PAGE do local checkboxName=TRIGGER_CONFIGURATION_FRAME_NAME.."TriggerEvent"..i.."Checkbox";local objCheckbox=getglobal(checkboxName);local triggerEvent=availableTriggerEvents[i+skipCount];MikSBTOpt.SetupCheckbox(checkboxName,triggerEvent,nil,nil);if(objCheckbox)then objCheckbox.TriggerEvent=triggerEvent;end
if(triggerFrame.SelectedTriggerEvents)then MikSBTOpt.PopulateCheckbox(checkboxName,triggerFrame.SelectedTriggerEvents[triggerEvent]~=nil);else MikSBTOpt.PopulateCheckbox(checkboxName,false);end end end
function MikSBTOpt.AddNewSuppression()local nextSuppressionNum=0;local slotFound=false;while(true)do
nextSuppressionNum=nextSuppressionNum+1;if(not MikSBT.CurrentProfile.Suppressions["MSBT_SUPPRESSION_CUSTOM"..nextSuppressionNum])then break;end end
MikSBT.CurrentProfile.Suppressions["MSBT_SUPPRESSION_CUSTOM"..nextSuppressionNum]={Enabled=true,SearchPattern=MikSBTOpt.MSG_SUPPRESSION_NEW_SUPPRESSION_DEFAULT_MESSAGE,};MikSBTOpt.PopulateSuppressionSettings();end
function MikSBTOpt.PopulateProfileOptions()getglobal(FONT_SETTINGS_FRAME_NAME):Hide();MikSBTOpt.PopulateSlider(OPTIONS_FRAME_NAME.."Tab1FrameAnimationStepSlider");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameShowPartialEffectsCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameUseStickyCritsCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameShowOverhealsCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameShowGameDamageCheckbox");MikSBT.SetOptionShowGameDamage(MikSBT.CurrentProfile.ShowGameDamage);MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameShowAllManaGainsCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameLowHealthSoundCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab1FrameLowManaSoundCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab2FrameShowEventsCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab3FrameShowEventsCheckbox");MikSBTOpt.PopulateCheckbox(OPTIONS_FRAME_NAME.."Tab4FrameShowEventsCheckbox");MikSBTOpt.PopulateIncomingEventSettings();MikSBTOpt.PopulateOutgoingEventSettings();MikSBTOpt.PopulateNotificationEventSettings();MikSBTOpt.PopulateTriggerEventSettings();MikSBTOpt.PopulateSuppressionSettings();end