vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
        --The Options Page functions

------------------------------
--Copy values from table that are nil in another. 
--Taken from AceDB. Using till AceDB support character to character
local function inheritDefaults(t, defaults)
        for k,v in pairs(defaults) do
                if type(v) == "table" then
                        if type(t[k]) ~= "table" then
                                t[k] = {}
                        end
                        inheritDefaults(t[k], v)
                elseif t[k] == nil then
                        t[k] = v
                end
        end
        return t
end

------------------------------
--Copy table to table
--Taken from AceDB. Using till AceDB support character to character
local function copyTable(to, from)
        setmetatable(to, nil)
        for k,v in pairs(from) do
                if type(k) == "table" then
                        k = copyTable({}, k)
                end
                if type(v) == "table" then
                        v = copyTable({}, v)
                end
                to[k] = v
        end
        table.setn(to, table.getn(from))
        setmetatable(to, from)
        return to
end

----------------------
--Called when option page loads
function SCT:OptionsFrame_OnShow()
        local option1, option2, option3, option4, option5, string, getvalue;
        --Misc Options
        for key, value in SCT.OPTIONS.FrameMisc do
                string = getglobal("SCTOptionsFrame_Misc"..value.index);
                if (string) then
                        string:SetText(key);
                        if (value.tooltipText) then
                                string.tooltipText = value.tooltipText;
                        end
                end
        end
        
        local frame, swatch, sColor;
        -- Set Options values
        for key, value in SCT.OPTIONS.FrameEventFrames do
                option1 = getglobal("SCTOptionsFrame"..value.index.."_CheckButton");
                option2 = getglobal("SCTOptionsFrame"..value.index.."_CritCheckButton");
                option3 = getglobal("SCTOptionsFrame"..value.index.."_RadioMsgButton");
                option4 = getglobal("SCTOptionsFrame"..value.index.."_RadioFrame1Button");
                option5 = getglobal("SCTOptionsFrame"..value.index.."_RadioFrame2Button");
                string = getglobal("SCTOptionsFrame"..value.index.."_CheckButtonText");
                
                --main check
                option1.SCTVar = value.SCTVar;
                option1:SetChecked(self.db.profile[value.SCTVar]);
                option1.tooltipText = value.tooltipText;
                string:SetText(key);
                
                --crit check
                option2.SCTVar = value.SCTVar;
                option2:SetChecked(self.db.profile[self.CRITS_TABLE][value.SCTVar]);
                option2.tooltipText = SCT.LOCALS.Option_Crit_Tip;
                
                --radios
                option3.tooltipText = SCT.LOCALS.Option_Msg_Tip;
                option4.tooltipText = SCT.LOCALS.Frame1_Tip;
                option5.tooltipText = SCT.LOCALS.Frame2_Tip;
                self:OptionsRadioButtonOnClick(self.db.profile[self.FRAMES_TABLE][value.SCTVar],"SCTOptionsFrame"..value.index)
                --set vars after setting up radios, so no redundant saving.
                option3.SCTVar = value.SCTVar;
                option4.SCTVar = value.SCTVar;
                option5.SCTVar = value.SCTVar;
                
                --Color Swatch          
                frame = getglobal("SCTOptionsFrame"..value.index);
                swatch = getglobal("SCTOptionsFrame"..value.index.."_ColorSwatchNormalTexture");
                sColor = self.db.profile[self.COLORS_TABLE][value.SCTVar];
                frame.r = sColor.r;
                frame.g = sColor.g;
                frame.b = sColor.b;
                local index = value.index;
                local key = value.SCTVar;
                frame.swatchFunc = function() self:OptionsFrame_SetColor(index, key) end;
                frame.cancelFunc = function(x) self:OptionsFrame_CancelColor(index, key, x) end;
                swatch:SetVertexColor(sColor.r,sColor.g,sColor.b);
        end
        
        -- Set CheckButton states
        for key, value in SCT.OPTIONS.FrameCheckButtons do
                option1 = getglobal("SCTOptionsFrame_CheckButton"..value.index);
                string = getglobal("SCTOptionsFrame_CheckButton"..value.index.."Text");
                option1.SCTVar = value.SCTVar;
                option1.SCTTable = value.SCTTable;
                if (option1.SCTTable) then
                        option1:SetChecked(self.db.profile[SCT.FRAMES_DATA_TABLE][option1.SCTTable][value.SCTVar]);
                else
                        option1:SetChecked(self.db.profile[value.SCTVar]);
                end
                option1.tooltipText = value.tooltipText;
                string:SetText(key);
        end
        
        --Set Sliders
        for key, value in SCT.OPTIONS.FrameSliders do
                option1 = getglobal("SCTOptionsFrame_Slider"..value.index.."Slider");
                string = getglobal("SCTOptionsFrame_Slider"..value.index.."SliderText");
                option2 = getglobal("SCTOptionsFrame_Slider"..value.index.."SliderLow");
                option3 = getglobal("SCTOptionsFrame_Slider"..value.index.."SliderHigh");
                option4 = getglobal("SCTOptionsFrame_Slider"..value.index.."EditBox");
                option1.SCTVar = value.SCTVar;
                option1.SCTTable = value.SCTTable;
                if (option1.SCTTable) then
                        getvalue = self.db.profile[SCT.FRAMES_DATA_TABLE][option1.SCTTable][value.SCTVar];
                else
                        getvalue = self.db.profile[value.SCTVar];
                end
                option1.SCTLabel = key;
                option1:SetMinMaxValues(value.minValue, value.maxValue);
                option1:SetValueStep(value.valueStep);
                option1.tooltipText = value.tooltipText;
                option1:SetValue(getvalue);
                string:SetText(key);
                option4:SetText(getvalue)
                option2:SetText(value.minText);
                option3:SetText(value.maxText);
        end
                
        --Dropdowns
        for key, value in SCT.OPTIONS.FrameSelections do
                option1 = getglobal("SCTOptionsFrame_Selection"..value.index);
                option2 = getglobal("SCTOptionsFrame_Selection"..value.index.."Label");
                option1.SCTVar = value.SCTVar;
                option1.SCTTable = value.SCTTable;
                --lookup table cause of WoW's crappy dropdown UI.
                option1.lookup = value.table;
                if (option1.SCTTable) then
                        getvalue = self.db.profile[SCT.FRAMES_DATA_TABLE][option1.SCTTable][value.SCTVar];
                else
                        getvalue = self.db.profile[value.SCTVar];
                end
                UIDropDownMenu_SetSelectedID(option1, getvalue);
                --not sure why I have to do this, but only way to make it show correctly cause of WoW's crappy dropdown UI.
                UIDropDownMenu_SetText(value.table[getvalue], option1);
                option1.tooltipText = value.tooltipText;
                option2:SetText(key);
        end
        
        --simulate click on tab1, so its always correct
        PanelTemplates_SelectTab(SCTOptionsFrame_Misc14);
        PanelTemplates_DeselectTab(SCTOptionsFrame_Misc15);
        PanelTemplates_DeselectTab(SCTOptionsFrame_Misc20);
        SCTOptions_MessageFrame:Hide();
        SCTOptions_TextFrame:Show();
        self:ChangeFrameTab(1)
        --set light mode
        self:ChangeLightMode(SCT.db.profile["LIGHTMODE"]);
        --set sticky mode
        self:ChangeStickyMode(SCT.db.profile["STICKYCRIT"]);
        --Update Profiles       
        self:ScrollBar_Update();        
end

----------------------
--Sets the colors of the config from a color swatch
function SCT:OptionsFrame_SetColor(index,key)
        local r,g,b = ColorPickerFrame:GetColorRGB();
        local color={};
        local swatch = getglobal("SCTOptionsFrame"..index.."_ColorSwatchNormalTexture");
        local frame = getglobal("SCTOptionsFrame"..index);
        swatch:SetVertexColor(r,g,b);
        frame.r, frame.g, frame.b = r,g,b;
        color.r, color.g, color.b = r,g,b;
        --update back to config
        self.db.profile[SCT.COLORS_TABLE][key] = color;
end

----------------------
-- Cancels the color selection
function SCT:OptionsFrame_CancelColor(index, key, prev)
        local r,g,b = prev.r, prev.g, prev.b;
        local color={};
        local swatch = getglobal("SCTOptionsFrame"..index.."_ColorSwatchNormalTexture");
        local frame = getglobal("SCTOptionsFrame"..index);
        swatch:SetVertexColor(r, g, b);
        frame.r, frame.g, frame.b = r,g,b;
        color.r, color.g, color.b = r,g,b;
        -- Update back to config
        self.db.profile[SCT.COLORS_TABLE][key] = color;
end

----------------------
--Sets the silder values in the config
function SCT:OptionsSliderOnValueChanged()
        local string, editbox;
        string = getglobal(this:GetName().."Text");
        editbox = getglobal(this:GetParent():GetName().."EditBox");
        string:SetText(this.SCTLabel);
        editbox:SetText(this:GetValue())
        if (this.SCTTable) then
                self.db.profile[SCT.FRAMES_DATA_TABLE][this.SCTTable][this.SCTVar] = this:GetValue();
        else
                self.db.profile[this.SCTVar] = this:GetValue();
        end
        --update Example
        self:ShowExample();
end

----------------------
--Sets the silder values in the config
function SCT:OptionsEditBoxOnValueChanged()
        local slider = getglobal(this:GetParent():GetName().."Slider");
        local getvalue = tonumber(this:GetText());
        if (slider.SCTTable) then
                self.db.profile[SCT.FRAMES_DATA_TABLE][slider.SCTTable][slider.SCTVar] = getvalue;
        else
                self.db.profile[this.SCTVar] = getvalue;
        end
        -- disable update change,set slider,setonchance back
        slider:SetScript("OnValueChanged", nil);
        slider:SetValue(getvalue);
        slider:SetScript("OnValueChanged", function() SCT:OptionsSliderOnValueChanged() end);
        --update Example
        self:ShowExample();
end

----------------------
--Sets the checkbox values in the config
function SCT:OptionsCheckButtonOnClick()
        if (string.find(this:GetName(), "_CritCheckButton")) then 
                self.db.profile[self.CRITS_TABLE][this.SCTVar] = this:GetChecked() or false;
        else
                if (this.SCTTable) then
                        self.db.profile[SCT.FRAMES_DATA_TABLE][this.SCTTable][this.SCTVar] = this:GetChecked() or false;
                else
                        self.db.profile[this.SCTVar] = this:GetChecked() or false;
                end
        end
        --update Example
        self:ShowExample();
end

----------------------
--Sets the checkbox values in the config
function SCT:OptionsRadioButtonOnClick(id,parent)
        local frame1 = getglobal(parent.."_RadioFrame1Button");
        local frame2 = getglobal(parent.."_RadioFrame2Button");
        local msg = getglobal(parent.."_RadioMsgButton");
        --set radio button options based on what was clicked.
        if (id==SCT.FRAME1) then
                frame1:SetButtonState("NORMAL", true);
                frame1:SetChecked(true);
                frame2:SetChecked(nil);
                frame2:SetButtonState("NORMAL", false);
                msg:SetChecked(nil);
                msg:SetButtonState("NORMAL", false);
        elseif (id==SCT.FRAME2) then 
                frame2:SetButtonState("NORMAL", true);
                frame2:SetChecked(true);
                frame1:SetChecked(nil);
                frame1:SetButtonState("NORMAL", false);
                msg:SetChecked(nil);
                msg:SetButtonState("NORMAL", false);
        elseif (id==SCT.MSG ) then 
                msg:SetButtonState("NORMAL", true);
                msg:SetChecked(true);
                frame1:SetChecked(nil);
                frame1:SetButtonState("NORMAL", false);
                frame2:SetChecked(nil);
                frame2:SetButtonState("NORMAL", false);
        end
        --if it has a var, save it (some don't)
        if (this.SCTVar) then
                self.db.profile[self.FRAMES_TABLE][this.SCTVar] = id;
        end
        --update Example
        self:ShowExample();
end

---------------------
--Init a Dropdown
function SCT:DropDown_Initialize()
        local info = {};
        for index, value in SCT.OPTIONS.FrameSelections do
                if (this:GetName() == "SCTOptionsFrame_Selection"..value.index.."Button") then
                        for key, name in value.table do
                                info = {};
                                info.text = name;
                                info.func = function(x) self:DropDown_OnClick(x) end;
                                info.arg1 = value.index;
                                UIDropDownMenu_AddButton(info);
                        end
                        break;
                end
        end
end

---------------------
-- Dropdown Onclick
function SCT:DropDown_OnClick(list)
        local ddl = getglobal("SCTOptionsFrame_Selection"..list);
        UIDropDownMenu_SetSelectedID(ddl, this:GetID());
        if (ddl.SCTTable) then
                self.db.profile[SCT.FRAMES_DATA_TABLE][ddl.SCTTable][ddl.SCTVar] = this:GetID();
        else
                self.db.profile[ddl.SCTVar] = this:GetID();
        end
        --update Example
        self:ShowExample();
end

----------------------
--Open the color selector using show/hide
function SCT:SaveList_OnClick()
        local text = getglobal(this:GetName().."_Name"):GetText();
        if (text ~= nil) then
                getglobal("SCTOptionsProfileEditBox"):SetText(text);
                SCTOptions_SaveLoadFrame:Hide();
        end
end

------------------------------
--Copy one profile to another, any type
function SCT:CopyProfile(to, from)
        copyTable(to,inheritDefaults(copyTable({}, from), SCT:GetDefaultConfig()));
        self:HideMenu();
        self:ShowMenu();
end

-----------------------
--Load a profile
function SCT:LoadProfile()
        local editbox = getglobal("SCTOptionsProfileEditBox");
        local profile = editbox:GetText();
        if (profile ~= ""       ) then
                --hack until AceDB gets SetProfile working right on copies.
                --copyTable(self.db.profile,inheritDefaults(copyTable({}, self.db.raw.profiles[profile]), SCT:GetDefaultConfig()));
                self:CopyProfile(self.db.profile, self.db.raw.profiles[profile]);
                editbox:SetText("");
                self:Print(SCT.LOCALS.PROFILE..profile);
        end
end

-----------------------
--Delete a profile
function SCT:DeleteProfile()
        local editbox = getglobal("SCTOptionsProfileEditBox");
        local profile = editbox:GetText();
        
        if (profile ~= "") then
                if (profile == AceLibrary("AceDB-2.0").CHAR_ID) then
                        SCT:Reset();
                else
                        self.db.raw.profiles[profile] = nil;
                        self:Print(SCT.LOCALS.PROFILE_DELETE..profile);
                end
                editbox:SetText("");
                self:ScrollBar_Update()
                self:HideMenu();
                self:ShowMenu();
        end
end

----------------------
--Open the color selector using show/hide
function SCT:OpenColorPicker(button)
        CloseMenus();
        if ( not button ) then
                button = this;
        end
        ColorPickerFrame.func = button.swatchFunc;
        ColorPickerFrame:SetColorRGB(button.r, button.g, button.b);
        ColorPickerFrame.previousValues = {r = button.r, g = button.g, b = button.b, opacity = button.opacity};
        ColorPickerFrame.cancelFunc = button.cancelFunc;
        ColorPickerFrame:Show();
end

----------------------
-- display ddl or chxbox based on type
function SCT:UpdateAnimationOptions()
        --get scroll down checkbox
        local chkbox = getglobal("SCTOptionsFrame_CheckButton4");
        --get anime type dropdown
        local ddl1 = getglobal("SCTOptionsFrame_Selection1");
        --get animside type dropdown
        local ddl2 = getglobal("SCTOptionsFrame_Selection2");
        --get item
        local id = UIDropDownMenu_GetSelectedID(ddl1)
        if (id == 1 or id == 6) then
                chkbox:Show();
                ddl2:Hide();
        else
                chkbox:Hide();
                ddl2:Show();
        end
end

----------------------
-- update scroll bar settings
function SCT:ScrollBar_Update()
        local i, idx, item, key, value
        local offset = FauxScrollFrame_GetOffset(SCTScrollBar)
        --get table size, getn doesn't work cause not an array
        local size = 0;
        local profiles = {}
        for key, value in SCT:PairsByKeys(SCT.db.raw.profiles) do
                tinsert(profiles, key);
        end
        for key in profiles do
                        size = size + 1;
        end
        --get update
        FauxScrollFrame_Update(SCTScrollBar, size, 10, 20)
        --loop thru each display item
        for i=1,10 do
                item = getglobal("SCTList"..i.."_Name")
                idx = offset+i
                if idx<=size then
                        key, value = next(profiles)
                        for j=2,idx do
                                key, value = next(profiles, key)
                        end
                        item:SetText(value);
                        item:Show()
                else
                        item:Hide()
                end
        end  
end

----------------------
--change which frame is being used
function SCT:ChangeFrameTab(frame)
        local tab = self.db.profile[SCT.FRAMES_DATA_TABLE][frame];
        --set label
        if (frame == SCT.FRAME1) then
                SCTOptionsFrame_Misc3:SetText(SCT.LOCALS.OPTION_MISC3["name"]);
        else
                SCTOptionsFrame_Misc3:SetText(SCT.LOCALS.OPTION_MISC21["name"]);
        end;
        --set all tables to selected frame
        SCTOptionsFrame_CheckButton4.SCTTable = frame;
        SCTOptionsFrame_Slider2Slider.SCTTable = frame;
        SCTOptionsFrame_Slider5Slider.SCTTable = frame;
        SCTOptionsFrame_Slider7Slider.SCTTable = frame;
        SCTOptionsFrame_Slider8Slider.SCTTable = frame;
        SCTOptionsFrame_Selection1.SCTTable = frame;
        SCTOptionsFrame_Selection2.SCTTable = frame;
        SCTOptionsFrame_Selection3.SCTTable = frame;
        SCTOptionsFrame_Selection4.SCTTable = frame;
        --update all frame options
        SCTOptionsFrame_CheckButton4:SetChecked(tab[SCTOptionsFrame_CheckButton4.SCTVar]);
        --text slider
        SCTOptionsFrame_Slider2SliderText:SetText(SCTOptionsFrame_Slider2Slider.SCTLabel);
        SCTOptionsFrame_Slider2EditBox:SetText(tab[SCTOptionsFrame_Slider2Slider.SCTVar]);
        SCTOptionsFrame_Slider2Slider:SetValue(tab[SCTOptionsFrame_Slider2Slider.SCTVar]);
        --alpha slider
        SCTOptionsFrame_Slider5SliderText:SetText(SCTOptionsFrame_Slider5Slider.SCTLabel);
        SCTOptionsFrame_Slider5EditBox:SetText(tab[SCTOptionsFrame_Slider5Slider.SCTVar]);
        SCTOptionsFrame_Slider5Slider:SetValue(tab[SCTOptionsFrame_Slider5Slider.SCTVar]);
        --x slider
        SCTOptionsFrame_Slider7SliderText:SetText(SCTOptionsFrame_Slider7Slider.SCTLabel);
        SCTOptionsFrame_Slider7EditBox:SetText(tab[SCTOptionsFrame_Slider7Slider.SCTVar]);
        SCTOptionsFrame_Slider7Slider:SetScript("OnValueChanged", nil);
        SCTOptionsFrame_Slider7Slider:SetValue(tab[SCTOptionsFrame_Slider7Slider.SCTVar]);
        SCTOptionsFrame_Slider7Slider:SetScript("OnValueChanged", function() SCT:OptionsSliderOnValueChanged() end);
        --y slider
        SCTOptionsFrame_Slider8SliderText:SetText(SCTOptionsFrame_Slider8Slider.SCTLabel);
        SCTOptionsFrame_Slider8EditBox:SetText(tab[SCTOptionsFrame_Slider8Slider.SCTVar]);
        SCTOptionsFrame_Slider8Slider:SetScript("OnValueChanged", nil);
        SCTOptionsFrame_Slider8Slider:SetValue(tab[SCTOptionsFrame_Slider8Slider.SCTVar]);
        SCTOptionsFrame_Slider8Slider:SetScript("OnValueChanged", function() SCT:OptionsSliderOnValueChanged() end);
        --Selection
        UIDropDownMenu_SetSelectedID(SCTOptionsFrame_Selection1, tab[SCTOptionsFrame_Selection1.SCTVar]);
        UIDropDownMenu_SetText(SCTOptionsFrame_Selection1.lookup[tab[SCTOptionsFrame_Selection1.SCTVar]], SCTOptionsFrame_Selection1);
        UIDropDownMenu_SetSelectedID(SCTOptionsFrame_Selection2, tab[SCTOptionsFrame_Selection2.SCTVar]);
        UIDropDownMenu_SetText(SCTOptionsFrame_Selection2.lookup[tab[SCTOptionsFrame_Selection2.SCTVar]], SCTOptionsFrame_Selection2);
        UIDropDownMenu_SetSelectedID(SCTOptionsFrame_Selection3, tab[SCTOptionsFrame_Selection3.SCTVar]);
        UIDropDownMenu_SetText(SCTOptionsFrame_Selection3.lookup[tab[SCTOptionsFrame_Selection3.SCTVar]], SCTOptionsFrame_Selection3);
        UIDropDownMenu_SetSelectedID(SCTOptionsFrame_Selection4, tab[SCTOptionsFrame_Selection4.SCTVar]);
        UIDropDownMenu_SetText(SCTOptionsFrame_Selection4.lookup[tab[SCTOptionsFrame_Selection4.SCTVar]], SCTOptionsFrame_Selection4);
        --update what is visible
        self:UpdateAnimationOptions();
end

----------------------
--change Light Mode
function SCT:ChangeLightMode(lightOn, reset)
        if (lightOn) then
                OptionsFrame_DisableCheckBox(SCTOptionsFrame_CheckButton13);
                OptionsFrame_DisableCheckBox(SCTOptionsFrame_CheckButton12);
                OptionsFrame_DisableCheckBox(SCTOptionsFrame_CheckButton6);
        else
                OptionsFrame_EnableCheckBox(SCTOptionsFrame_CheckButton13);
                OptionsFrame_EnableCheckBox(SCTOptionsFrame_CheckButton12);
                OptionsFrame_EnableCheckBox(SCTOptionsFrame_CheckButton6);
        end
        if (reset) then
                SCT:DisableAll();
                SCT:RegisterSelfEvents();
        end
end

----------------------
--change Sticky Mode
function SCT:ChangeStickyMode(stickyOn)
        if (stickyOn) then
                OptionsFrame_EnableCheckBox(SCTOptionsFrame_CheckButton15);
        else
                OptionsFrame_DisableCheckBox(SCTOptionsFrame_CheckButton15);
        end
end

---------------------
--Show SCT Example
function SCT:ShowExample()
        local example;
        SCT:AniInit();
        SCT_EXAMPLETEXT:Show();
        
        --animated example for options that may need it
        local option = this.SCTVar or "SHOWHIT";
        if (string.find(option,"SHOW") == 1) then
                SCT:Display_Event(option, SCT.LOCALS.EXAMPLE);
        end
        
        --show example FRAME1
        --get object
        example = getglobal("SCTaniExampleData1");
        --set text size
        SCT:SetFontSize(example,
                                                                        SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME1]["FONT"],
                                                                        SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME1]["TEXTSIZE"],
                                                                        SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME1]["FONTSHADOW"]);
        --set the color
        example:SetTextColor(1, 1, 1);
        --set alpha
        example:SetAlpha(SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME1]["ALPHA"]/100);
        --Position
        example:SetPoint("CENTER", "UIParent", "CENTER", 
                                                                         SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME1]["XOFFSET"], 
                                                                         SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME1]["YOFFSET"]);
        --Set the text to display
        example:SetText(SCT.LOCALS.EXAMPLE);
        
        
        --show example FRAME2
        --get object
        example = getglobal("SCTaniExampleData2");
        --set text size
        SCT:SetFontSize(example,
                                                                        SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME2]["FONT"],
                                                                        SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME2]["TEXTSIZE"],
                                                                        SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME2]["FONTSHADOW"]);
        --set the color
        example:SetTextColor(1, 1, 1);
        --set alpha
        example:SetAlpha(SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME2]["ALPHA"]/100);
        --Position
        example:SetPoint("CENTER", "UIParent", "CENTER", 
                                                                         SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME2]["XOFFSET"], 
                                                                         SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.FRAME2]["YOFFSET"]);
        --Set the text to display
        example:SetText(SCT.LOCALS.EXAMPLE2);
        
        
        --show msg frame
        SCT_EXAMPLEMSG:Show();
        --get object
        example = getglobal("SCTMsgExample1");
        --set text size
        SCT:SetMsgFont(example);
        --set the color
        example:SetTextColor(1, 1, 1);
        --set alpha
        example:SetAlpha(1);
        --Position
        example:SetPoint("CENTER", "UIParent", "CENTER", 
                         SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.MSG]["MSGXOFFSET"],
                         SCT.db.profile[SCT.FRAMES_DATA_TABLE][SCT.MSG]["MSGYOFFSET"]-30);
        --Set the text to display
        example:SetText(SCT.LOCALS.MSG_EXAMPLE);
        
        --update animation options
        SCT:UpdateAnimationOptions()
end

Generated by GNU Enscript 1.6.5.90.