WoWInterface SVN ChaosFrameModifier

[/] [trunk/] [CFM_GUI.lua] - Rev 3

Compare with Previous | Blame | View Log

------------------
-- CONFIG FRAME --
------------------
function CFM_GUI()
        if CFM_Config then
                CFM_Config:Show()
        else
        local f, fs
        f = CreateFrame("Frame", "CFM_Config", UIParent)
                f:SetWidth(385)
                f:SetHeight(154)
                f:SetPoint("CENTER")
                f:SetFrameStrata("DIALOG")
                f:SetBackdrop({
                        bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
                        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
                        tile = "true",
                        tileSize = 32,
                        edgeSize = 10,
                        insets = {left = 3, right = 3, top = 3, bottom = 3}
                })
                f:SetBackdropColor(.25,.1,.25)
                f:SetBackdropBorderColor(0,.5,0)
                f:EnableMouse(true)
                f:SetMovable(true)
                f:SetClampedToScreen(true)
                f:RegisterForDrag("LeftButton")
                f:SetScript("OnDragStart", f.StartMoving)
                f:SetScript("OnDragStop", f.StopMovingOrSizing)
                f:SetScript("OnUpdate", function()
                        if GetMouseFocus() == nil then return end
                        local name = GetMouseFocus():GetName()
                        if name == nil then
                                CFM_MouseOverActive:SetText("Not Defined")
                                CFM_MouseOverActiveParent:SetText("Unavailable")
                                return
                        else
                                CFM_MouseOverActive:SetText(name)
                        end
                        local _, parent = _G[name]:GetPoint()
                        if parent == nil or parent == " " then
                                CFM_MouseOverActiveParent:SetText("Not Defined")
                        else
                                CFM_MouseOverActiveParent:SetText(parent:GetName())
                        end
                        end)
                f:Show()
                tinsert(UISpecialFrames,f:GetName())
                
        --[[ MOUSEOVER INFO ]]
        f = CreateFrame("FRAME", "CFM_MouseInfoFrame", CFM_Config)
                f:SetHeight(32)
                f:SetWidth(300)
                f:SetPoint("TOPLEFT", CFM_Config, "BOTTOMLEFT")
                f:SetPoint("TOPRIGHT", CFM_Config, "BOTTOMRIGHT")
                f:SetBackdrop({
                        bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
                        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
                        tile = "true",
                        tileSize = 32,
                        edgeSize = 10,
                        insets = {left = 3, right = 3, top = 3, bottom = 3}
                })
                f:SetBackdropColor(.25,.1,.25)
                f:SetBackdropBorderColor(0,.5,0)
                
        fs = f:CreateFontString("CFM_MouseOverText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("LEFT")
                fs:SetWidth(66)
                fs:SetText("Mouseover:")
                fs:SetPoint("TOPLEFT", CFM_MouseInfoFrame, "TOPLEFT", 5,-5)
        
        fs = f:CreateFontString("CFM_MouseOverParent")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("LEFT")
                fs:SetWidth(66)
                fs:SetText("Parent:")
                fs:SetPoint("TOPLEFT", CFM_MouseOverText, "BOTTOMLEFT", 0,-2)
        
        fs = f:CreateFontString("CFM_MouseOverActive")
                fs:SetFontObject("GameFontNormalSmall")
                fs:SetJustifyH("LEFT")
                fs:SetWidth(200)
                fs:SetText("")
                fs:SetPoint("LEFT", CFM_MouseOverText, "RIGHT")

        fs = f:CreateFontString("CFM_MouseOverActiveParent")
                fs:SetFontObject("GameFontNormalSmall")
                fs:SetJustifyH("LEFT")
                fs:SetWidth(200)
                fs:SetText("")
                fs:SetPoint("LEFT", CFM_MouseOverParent, "RIGHT")

        local b = CreateFrame("Button", "CFM_SelectPanel1", CFM_Config, "OptionsButtonTemplate")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetText("Properties")
                b:SetPoint("TOPLEFT", CFM_Config, "TOP", -52,-4)
                b:SetHeight(18)
                b:SetWidth(70)
                b:SetScript("OnClick", function()
                        CFM_Panel1:Show()
                        CFM_Panel2:Hide()
                        CFM_Panel3:Hide()
                        end)
        local b = CreateFrame("Button", "CFM_SelectPanel2", CFM_Config, "OptionsButtonTemplate")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetText("Anchor")
                b:SetPoint("LEFT", CFM_SelectPanel1, "RIGHT", 0,0)
                b:SetHeight(18)
                b:SetWidth(50)
                b:SetScript("OnClick", function()
                        CFM_Panel1:Hide()
                        CFM_Panel2:Show()
                        CFM_Panel3:Hide()
                        end)
        
        local b = CreateFrame("Button", "CFM_SelectPanel3", CFM_Config, "OptionsButtonTemplate")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetText("Add Frame")
                b:SetPoint("LEFT", CFM_SelectPanel2, "RIGHT", 0,0)
                b:SetHeight(18)
                b:SetWidth(70)
                b:SetScript("OnClick", function()
                        CFM_Panel1:Hide()
                        CFM_Panel2:Hide()
                        CFM_Panel3:Show()
                        end)
        
        -- SHOW/HIDE/UNLOCK BUTTONS
        b = CreateFrame("Button", "CFM_UnlockButton", CFM_Config, "OptionsButtonTemplate")
                b:SetWidth(48)
                b:SetPoint("BOTTOMRIGHT", CFM_Config, "BOTTOMRIGHT", -4,4)
                b:RegisterForClicks("LeftButtonUp")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetText("Unlock")
                b:SetScript("OnClick", function(self)
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        frame = _G[selFrame]
                        if activeProfile[selFrame].lock then
                                activeProfile[selFrame].lock = false
                                frame:SetClampedToScreen(activeProfile[selFrame].clamp)
                                print(selFrame.. " is unlocked.")
                                self:SetText("Lock")
                                -- color overlay
                                frame.t = frame:CreateTexture()
                                frame.t:SetAllPoints(frame)
                                frame.t:SetTexture(0,1,0,.2)
                                frame:SetMovable(true)
                                frame:RegisterForDrag("LeftButton")
                                frame:SetScript("OnDragStart", function()
                                        if frame:IsMovable() then 
                                                frame.isMoving = true
                                                frame:StartMoving()
                                        else return end end)
                                frame:SetScript("OnDragStop", function() CFM_StopMoving(frame,selFrame) end)
                        else
                                self:SetText("Unlock")
                                frame:SetMovable(false)
                                if frame.t ~= nil then frame.t:Hide() frame.t = nil end
                                activeProfile[selFrame].lock = true
                                print(selFrame.. " is locked.")
                        end end)
                        
        b = CreateFrame("Button", "CFM_HideButton", CFM_Config, "OptionsButtonTemplate")
                        b:SetWidth(48)
                        b:SetPoint("RIGHT", CFM_UnlockButton, "LEFT", 0,0)
                        b:RegisterForClicks("LeftButtonUp")
                        b:SetNormalFontObject("GameFontNormalSmall")
                        b:SetHighlightFontObject("GameFontWhiteSmall")
                        b:SetText("Hide")
                        b:SetScript("OnClick", function() 
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        _G[selFrame]:Hide() end)        
                        
        b = CreateFrame("Button", "CFM_ShowButton", CFM_Config, "OptionsButtonTemplate")
                b:SetWidth(48)
                b:SetPoint("Right", CFM_HideButton, "LEFT", 0,0)
                b:RegisterForClicks("LeftButtonUp")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetText("Show")
                b:SetScript("OnClick", function() 
                if selFrame == nil or selFrame == "" then
                        print("Please select a frame first.")
                        return
                        end
                _G[selFrame]:Show() end)

        --[[ FORCE HIDE ]]
        fs = f:CreateFontString("CFM_HideText", CFM_Config)
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetWidth(70)
                fs:SetText("Force Hide")
                fs:SetPoint("BOTTOMLEFT", CFM_Config, "BOTTOM", -54,10)
        
        cb = CreateFrame("CHECKBUTTON", "CFM_ForceButton", CFM_Config, "OptionsCheckButtonTemplate")
                cb:SetPoint("LEFT", CFM_HideText, "RIGHT", 6, -2)
                cb:SetScale(.75)
                cb:SetScript("OnClick", function(self)
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        elseif self:GetChecked() == 1 then
                                activeProfile[selFrame].forceHide = true
                                activeProfile[selFrame].hidden = {}
                                local point, parent, relativePoint, offsetX, offsetY = _G[selFrame]:GetPoint()
                                activeProfile[selFrame].hidden.point = point
                                activeProfile[selFrame].hidden.parent = parent
                                activeProfile[selFrame].hidden.relativePoint = relativePoint
                                activeProfile[selFrame].hidden.offsetX = offsetX
                                activeProfile[selFrame].hidden.offsetY = offsetY                
                        else
                                activeProfile[selFrame].forceHide = false
                                _G[selFrame]:ClearAllPoints()
                                _G[selFrame]:SetPoint(activeProfile[selFrame].hidden.point,activeProfile[selFrame].hidden.parent, activeProfile[selFrame].hidden.relativePoint, activeProfile[selFrame].hidden.offsetX, activeProfile[selFrame].hidden.offsetY)
                                _G[selFrame]:Show()
                                activeProfile[selFrame].hidden = nil
                        end
                        CFM_ApplySettings(selFrame)
                        end)
                        
        CFM_CreateScroll()
        CFM_CreatePanel1()
        CFM_CreatePanel2()
        CFM_CreatePanel3()

        end
end

------------------
-- SCROLL FRAME --
------------------
function CFM_CreateScroll()
        local sf, b
        sf = CreateFrame("ScrollFrame", "CFM_ScrollFrame", CFM_Config, "FauxScrollFrameTemplate")
                sf:SetWidth(118)
                sf:SetHeight(144)
                sf:SetPoint("TOPLEFT", CFM_Config, 5, -5)
                sf:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=0, right=0, top=0, bottom=0}
                })
                sf:SetBackdropBorderColor(0,.5,0,1)
                _G[sf:GetName().."ScrollBar"]:SetWidth(5)
                sf:SetScript("OnVerticalScroll", function(self, offset) FauxScrollFrame_OnVerticalScroll(sf, offset, 7, CFM_ScrollUpdate) end)
                sf:SetScript("OnShow", CFM_ScrollUpdate)
                sf:SetScript("OnHide", function()
                        for k,_ in pairs(activeProfile) do
                                CFM_SaveFrame(k)
                        end
                        end)
        CFM_CreateButtons()
end

function CFM_CreateButtons()
        -- Create scroll buttons
        for i = 1,8 do
                local b
                if i == 1 then
                        b = CreateFrame("Button", "CFM_ScrollButton"..i, CFM_ScrollFrame)
                        b:SetPoint("TOPLEFT",2,-4)
                        b:SetText("Button 1")
                else
                        b = CreateFrame("Button", "CFM_ScrollButton"..i, _G["CFM_ScrollButton"..(i-1)])
                        b:SetPoint("TOPLEFT", _G["CFM_ScrollButton"..(i-1)], "BOTTOMLEFT", 0, 4)
                        b:SetText("Button "..i)
                end
                b:SetNormalFontObject("GameFontNormalSmall")
                b:RegisterForClicks("LeftButtonUp", "RightButtonUp")
                b:SetWidth(114)
                b:SetHeight(20)
                b:SetBackdrop({
                        bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
                        edgeFile = "",
                        tile = "true",
                        tileSize = 32,
                        edgeSize = 10,
                        insets = {left = 3, right = 3, top = 3, bottom = 3}
                        })
                b:SetBackdropColor(0,0,0,0)
                b:SetScript("OnClick", function(self, click)
                        if self:GetText() == nil then return end -- button has no data
                        if click == "LeftButton" then
                                -- reset previously highlighted buttons
                                if curButton then
                                        _G[curButton]:SetBackdropColor(0,0,0,0)
                                end
                                curButton = self:GetName()
                                self:SetBackdropColor(0,.5,0,1)
                                CFM_SelectFrame(self:GetText())
                        elseif click == "RightButton" then
                                self:SetBackdropColor(0,0,0,0)
                                remFrame = self:GetText()
                                StaticPopup_Show("CFM_PROMPTREMOVE", self:GetText())
                        end
                        end)
        end
        CFM_ScrollUpdate()
end

 function CFM_ScrollUpdate()
        CFM_CreateList()
        local line, lineplusoffset
        FauxScrollFrame_Update(CFM_ScrollFrame,#CFM_FrameList,8,20, nil,nil,nil,nil,nil,nil,true)
     -- 50 is max entries, 10 is number of lines, 20 is pixel height of each line
        for line = 1, 8 do
                lineplusoffset = line + FauxScrollFrame_GetOffset(CFM_ScrollFrame)
                if lineplusoffset < 50 then
                        _G["CFM_ScrollButton"..line]:SetText(CFM_FrameList[lineplusoffset])
                        _G["CFM_ScrollButton"..line]:Show()
                else
                        _G["CFM_ScrollButton"..line]:Hide()
                end
        end
 end
 
function CFM_CreateList()
        CFM_FrameList = {}
        local i = 1
        for k,v in pairs(activeProfile) do
                CFM_FrameList[i] = k
                i = i+1
        end
        table.sort(CFM_FrameList) -- sort alphabetically
end

function CFM_CreatePanel1()
        local f = CreateFrame("Frame", "CFM_Panel1", CFM_Config)
                f:SetWidth(240)
                f:SetHeight(108)
                f:SetPoint("TOPRIGHT", -4, -22)
                f:SetFrameStrata("DIALOG")
                f:SetBackdrop({
                        bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
                        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
                        tile = "true",
                        tileSize = 32,
                        edgeSize = 10,
                        insets = {left = 3, right = 3, top = 3, bottom = 3}
                })
                f:SetBackdropColor(.25,.1,.25)
                f:SetBackdropBorderColor(0,.5,0)
                
        --[[ WIDTH DATA ]]
        fs = f:CreateFontString("CFM_WidthText", CFM_Panel1)
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetWidth(40)
                fs:SetText("Width")
                fs:SetPoint("TOPLEFT", CFM_Panel1, "TOPLEFT", 18,-6)

        e = CreateFrame("EditBox", "CFM_WidthBox", CFM_Panel1)
                e:SetWidth(40)
                e:SetHeight(18)
                e:SetPoint("TOP", CFM_WidthText, "Bottom", 5,-2)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(4)
                e:SetText("")
                e:SetScript("OnEnterPressed", function(self)
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].width = tonumber(self:GetText())
                        if activeProfile[selFrame].sameXY then
                                activeProfile[selFrame].height = tonumber(self:GetText())
                                CFM_HeightBox:SetText(activeProfile[selFrame].height)
                        end
                        CFM_ApplySettings(selFrame)
                        self:ClearFocus() 
                        end)
                e:SetScript("OnEscapePressed", e.ClearFocus)
                
        local b = CreateFrame("Button", "CFM_Width_Plus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].width = activeProfile[selFrame].width + 1
                        if activeProfile[selFrame].sameXY then
                                activeProfile[selFrame].height = activeProfile[selFrame].height +1
                                CFM_HeightBox:SetText(activeProfile[selFrame].height)
                        end
                        CFM_WidthBox:SetText(activeProfile[selFrame].width)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPLEFT", CFM_WidthBox, "TOPRIGHT", 0,-2)

        local b = CreateFrame("Button", "CFM_Width_Minus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].width = activeProfile[selFrame].width - 1
                        if activeProfile[selFrame].sameXY then
                                activeProfile[selFrame].height = activeProfile[selFrame].height -1
                                CFM_HeightBox:SetText(activeProfile[selFrame].height)
                        end
                        CFM_WidthBox:SetText(activeProfile[selFrame].width)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPRIGHT", CFM_WidthBox, "TOPLEFT", 0,-2)
        
                
        --[[ HEIGHT DATA ]]
        fs = f:CreateFontString("CFM_HeightText", CFM_Panel1)
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("CENTER")
                fs:SetWidth(40)
                fs:SetText("Height")
                fs:SetPoint("LEFT", CFM_WidthText, "RIGHT", 40,0)
        
        e = CreateFrame("EditBox", "CFM_HeightBox", CFM_Panel1)
                e:SetWidth(40)
                e:SetHeight(18)
                e:SetPoint("TOP", CFM_HeightText, "BOTTOM", 2,-2)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(4)
                e:SetText("")
                e:SetScript("OnEnterPressed",function(self) 
                        activeProfile[selFrame].height = tonumber(self:GetText()) 
                        if activeProfile[selFrame].sameXY then
                                activeProfile[selFrame].width = tonumber(self:GetText())
                                CFM_HeightBox:SetText(activeProfile[selFrame].width)
                        end
                        CFM_ApplySettings(selFrame)
                        self:ClearFocus()
                        end)
                e:SetScript("OnEscapePressed", e.ClearFocus)

        local b = CreateFrame("Button", "CFM_Height_Plus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].height = activeProfile[selFrame].height + 1
                        if activeProfile[selFrame].sameXY then
                                activeProfile[selFrame].width = activeProfile[selFrame].width +1
                                CFM_HeightBox:SetText(activeProfile[selFrame].width)
                        end
                        CFM_HeightBox:SetText(activeProfile[selFrame].height)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPLEFT", CFM_HeightBox, "TOPRIGHT", 0,-2)

        local b = CreateFrame("Button", "CFM_Height_Minus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].height = activeProfile[selFrame].height - 1
                        if activeProfile[selFrame].sameXY then
                                activeProfile[selFrame].width = activeProfile[selFrame].width -1
                                CFM_HeightBox:SetText(activeProfile[selFrame].width)
                        end
                        CFM_HeightBox:SetText(activeProfile[selFrame].height)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPRIGHT", CFM_HeightBox, "TOPLEFT", 0,-2)

        --[[ SCALE DATA ]]
        fs = f:CreateFontString("CFM_ScaleText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("CENTER")
                fs:SetWidth(40)
                fs:SetText("Scale")
                fs:SetPoint("TOP", CFM_WidthBox, "BOTTOM", 0,-6)        

        e = CreateFrame("EditBox", "CFM_ScaleBox", CFM_Panel1)
                e:SetWidth(40)
                e:SetHeight(18)
                e:SetPoint("TOP", CFM_ScaleText, "BOTTOM", 0,-2)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(3)
                e:SetText("")
                e:SetScript("OnEnterPressed",function(self) 
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].scale = tonumber(self:GetText())
                        CFM_ApplySettings(selFrame)
                        self:ClearFocus()
                        end)
                e:SetScript("OnEscapePressed", e.ClearFocus)
        
        local b = CreateFrame("Button", "CFM_Scale_Plus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].scale = activeProfile[selFrame].scale + .1
                        CFM_ScaleBox:SetText(activeProfile[selFrame].scale)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPLEFT", CFM_ScaleBox, "TOPRIGHT", 0,-2)
        
        local b = CreateFrame("Button", "CFM_Scale_Minus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].scale = activeProfile[selFrame].scale - .1
                        CFM_ScaleBox:SetText(activeProfile[selFrame].scale)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPRIGHT", CFM_ScaleBox, "TOPLEFT", 0,-2)
                
        --[[ LEVEL DATA ]]
        fs = f:CreateFontString("CFM_LevelText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetWidth(40)
                fs:SetJustifyH("CENTER")
                fs:SetText("Level")
                fs:SetPoint("TOP", CFM_HeightBox, "BOTTOM", 0,-6)       

        e = CreateFrame("EditBox", "CFM_LevelBox", CFM_Panel1)
                e:SetWidth(40)
                e:SetHeight(18)
                e:SetPoint("TOP", CFM_LevelText, "BOTTOM", 0,-2)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(2)
                e:SetText("")
                e:SetScript("OnEnterPressed",function(self)
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        local num = tonumber(self:GetText())
                        if num <0 then num = 0 self:SetText("0") end
                        activeProfile[selFrame].level = num
                        CFM_ApplySettings(selFrame)
                        self:ClearFocus()
                        end)
                e:SetScript("OnEscapePressed", e.ClearFocus)
                
        local b = CreateFrame("Button", "CFM_Level_Plus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].level = activeProfile[selFrame].level + 1
                        CFM_LevelBox:SetText(activeProfile[selFrame].level)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPLEFT", CFM_LevelBox, "TOPRIGHT", 0,-2)
        
        local b = CreateFrame("Button", "CFM_Level_Minus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        if activeProfile[selFrame].level == 0 then return end
                        activeProfile[selFrame].level = activeProfile[selFrame].level - 1
                        CFM_LevelBox:SetText(activeProfile[selFrame].level)
                        CFM_ApplySettings(selFrame)
                        end)
                b:SetPoint("TOPRIGHT", CFM_LevelBox, "TOPLEFT", 0,-2)   
                
        --[[ ALPHA DATA ]]
        fs = f:CreateFontString("CFM_AlphaText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("CENTER")
                fs:SetWidth(40)
                fs:SetText("Alpha")
                fs:SetPoint("LEFT", CFM_LevelText, "RIGHT", 40,0)       

        e = CreateFrame("EditBox", "CFM_AlphaBox", CFM_Panel1)
                e:SetWidth(40)
                e:SetHeight(18)
                e:SetPoint("TOP", CFM_AlphaText, "BOTTOM", 0,-2)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(3)
                e:SetText("")
                e:SetScript("OnEnterPressed",function(self) 
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].alpha = tonumber(self:GetText())
                        CFM_ApplySettings(selFrame)
                        self:ClearFocus()
                        end)
                e:SetScript("OnEscapePressed", e.ClearFocus)
                
        local b = CreateFrame("Button", "CFM_Alpha_Plus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        if activeProfile[selFrame].alpha >= 1 then activeProfile[selFrame].alpha = 1 return end
                        if activeProfile[selFrame].alpha < 1 then
                                activeProfile[selFrame].alpha = activeProfile[selFrame].alpha + .1
                                CFM_AlphaBox:SetText(activeProfile[selFrame].alpha)
                                CFM_ApplySettings(selFrame)
                        end     end)
                        b:SetPoint("TOPLEFT", CFM_AlphaBox, "TOPRIGHT", 0,-2)
        
        local b = CreateFrame("Button", "CFM_Alpha_Minus", CFM_Panel1)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        if activeProfile[selFrame].alpha <= 0 then activeProfile[selFrame].alpha = 0 return end
                        if activeProfile[selFrame].alpha > 0 then
                                activeProfile[selFrame].alpha = activeProfile[selFrame].alpha - .1
                                if activeProfile[selFrame].alpha < .1 then activeProfile[selFrame].alpha = 0 end
                                CFM_AlphaBox:SetText(activeProfile[selFrame].alpha)
                                CFM_ApplySettings(selFrame)
                        end     end)
                b:SetPoint("TOPRIGHT", CFM_AlphaBox, "TOPLEFT", 0,-2)   
                
        --[[ CONSTRAIN X/Y ]]
        fs = f:CreateFontString("CFM_ConstrainText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetWidth(54)
                fs:SetText("Constrain")
                fs:SetPoint("LEFT", CFM_HeightText, "RIGHT", 24, 0)
                
        local cb = CreateFrame("CHECKBUTTON", "CFM_ConstrainButton", CFM_Panel1, "OptionsCheckButtonTemplate")
                cb:SetPoint("LEFT", CFM_ConstrainText, "RIGHT", 0, -2)
                cb:SetScale(.75)
                cb:SetScript("OnClick", function(self)
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        elseif self:GetChecked() == 1 then
                                activeProfile[selFrame].sameXY = true
                        else
                                activeProfile[selFrame].sameXY = false
                        end
                        end)
                        
        --[[ SCREEN CLAMP ]]
        fs = f:CreateFontString("CFM_ClampText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetWidth(54)
                fs:SetText("S. Clamp")
                fs:SetPoint("TOPRIGHT", CFM_ConstrainText, "BOTTOMRIGHT", 0, -6)
                
        cb = CreateFrame("CHECKBUTTON", "CFM_ClampButton", CFM_Panel1, "OptionsCheckButtonTemplate")
                cb:SetPoint("LEFT", CFM_ClampText, "RIGHT", 0, 0)
                cb:SetScale(.75)
                cb:SetScript("OnClick", function(self)
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        elseif self:GetChecked() == 1 then
                                activeProfile[selFrame].clamp = true
                                _G[selFrame]:SetClampedToScreen(true)
                        else
                                activeProfile[selFrame].clamp = false
                                _G[selFrame]:SetClampedToScreen(false)
                        end
                        end)
end

function CFM_CreatePanel2()
        local f, fs, e
        f = CreateFrame("Frame", "CFM_Panel2", CFM_Config)
                f:SetWidth(240)
                f:SetHeight(108)
                f:SetPoint("TOPRIGHT", -4, -22)
                f:SetFrameStrata("DIALOG")
                f:SetBackdrop({
                        bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
                        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
                        tile = "true",
                        tileSize = 32,
                        edgeSize = 10,
                        insets = {left = 3, right = 3, top = 3, bottom = 3}
                })
                f:SetBackdropColor(.25,.1,.25)
                f:SetBackdropBorderColor(0,.5,0)
                f:Hide()
                
        --[[ PARENT DATA ]]--
        fs = f:CreateFontString("CFM_ChangeParentText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetText("Parent:")
                fs:SetPoint("TOPLEFT", f, "TOPLEFT", 6,-10)
        e = CreateFrame("EditBox", "CFM_ChangeParentBox", CFM_Panel2)
                e:SetWidth(96)
                e:SetHeight(18)
                e:SetPoint("LEFT", CFM_ChangeParentText, "RIGHT", 2,0)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(255)
                e:SetText("")
                e:SetScript("OnEnterPressed", function(self) 
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        CFM_ChangeParent(self:GetText())
                        CFM_ApplySettings(selFrame)
                        self:ClearFocus() end)
                e:SetScript("OnEscapePressed", e.ClearFocus)

        --[[ POINT DATA ]]
        fs = f:CreateFontString("CFM_FromText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetText("From:")
                fs:SetPoint("TOPRIGHT", CFM_ChangeParentText, "BOTTOMRIGHT", 0,-14)     
                
                
        dm = CreateFrame("Frame", "CFM_FromBox", f, "UIDropDownMenuTemplate")
                dm:SetPoint("LEFT", CFM_FromText, "RIGHT", -10, -2)
                dm:SetScale(.75)
                UIDropDownMenu_SetWidth(dm,105)
                UIDropDownMenu_Initialize(dm, CFM_FromDropInit)

        --[[ RELATIVEPOINT DATA ]]
        fs = f:CreateFontString("CFM_ToText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetText("To:")
                fs:SetPoint("TOPRIGHT", CFM_FromText, "BOTTOMRIGHT", 0,-10)     
                                
        dm = CreateFrame("Frame", "CFM_ToBox", f, "UIDropDownMenuTemplate")
                dm:SetPoint("LEFT", CFM_ToText, "RIGHT", -10, -2)
                dm:SetScale(.75)
                UIDropDownMenu_SetWidth(dm,105)
                UIDropDownMenu_Initialize(dm, CFM_ToDropInit)
                
        --[[ STRATA DATA ]]
        fs = f:CreateFontString("CFM_StrataText")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetJustifyH("RIGHT")
                fs:SetText("Strata:")
                fs:SetPoint("TOPRIGHT", CFM_ToText, "BOTTOMRIGHT", 0,-10)
                
        dm = CreateFrame("Frame", "CFM_StrataBox", f, "UIDropDownMenuTemplate")
                dm:SetPoint("LEFT", CFM_StrataText, "RIGHT", -10, -2)
                dm:SetScale(.75)
                UIDropDownMenu_SetWidth(dm,105)
                UIDropDownMenu_Initialize(dm, CFM_StrataDropInit)

        -- X/Y MOVER
        local e = CreateFrame("EditBox", "CFM_XBox", CFM_Panel2)
                e:SetWidth(45)
                e:SetHeight(18)
                e:SetPoint("RIGHT", CFM_Panel2, "RIGHT", -20,0)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(4)
                e:SetText("")
                e:SetScript("OnEnterPressed", function() 
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].offsetX = tonumber(e:GetText())
                        CFM_ApplySettings(selFrame)
                        e:ClearFocus() end)
                e:SetScript("OnEscapePressed", e.ClearFocus)

        local e = CreateFrame("EditBox", "CFM_YBox", CFM_Panel2)
                e:SetWidth(45)
                e:SetHeight(18)
                e:SetPoint("TOPRIGHT", CFM_XBox, "BOTTOMRIGHT", 0,0)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(4)
                e:SetText("")
                e:SetScript("OnEnterPressed", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].offsetY = tonumber(e:GetText())
                        CFM_ApplySettings(selFrame)
                        e:ClearFocus() end)
                e:SetScript("OnEscapePressed", e.ClearFocus)

        local fs = f:CreateFontString("CFM_X")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetText("X:")
                fs:SetPoint("RIGHT", CFM_XBox, "LEFT", -16,0)

        local fs = f:CreateFontString("CFM_Y")
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetText("Y:")
                fs:SetPoint("RIGHT", CFM_YBox, "LEFT", -16,0)

        local b = CreateFrame("Button", "CFM_XPlus", CFM_Panel2)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        CFM_MoveFrame(selFrame, "right")
                        end)
                b:SetPoint("TOPLEFT", CFM_XBox, "TOPRIGHT", 0,-2)

        local b = CreateFrame("Button", "CFM_XMinus", CFM_Panel2)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        else
                                CFM_MoveFrame(selFrame, "left") end end)
                b:SetPoint("TOPRIGHT", CFM_XBox, "TOPLEFT", 0, -2)

        local b = CreateFrame("Button", "CFM_YPlus", CFM_Panel2)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-PlusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-PlusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        else
                                CFM_MoveFrame(selFrame, "up") end end)
                b:SetPoint("TOPLEFT", CFM_YBox, "TOPRIGHT", 0,-2)
        
        local b = CreateFrame("Button", "CFM_YMinus", CFM_Panel2)
                b:SetNormalTexture("Interface\\BUTTONS\\UI-MinusButton-Up")
                b:SetHighlightTexture("Interface\\BUTTONS\\UI-PlusButton-Hilight")
                b:SetPushedTexture("Interface\\BUTTONS\\UI-MinusButton-Down")
                b:SetHeight(14)
                b:SetWidth(14)
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        else
                                CFM_MoveFrame(selFrame, "down") end end)
                b:SetPoint("TOPRIGHT", CFM_YBox, "TOPLEFT", 0, -2)

        local b = CreateFrame("Button", "CFM_Reset", CFM_Panel2, "OptionsButtonTemplate")
                b:SetWidth(45)
                b:SetPoint("TOP", CFM_YBox, "BOTTOM", 0,0)
                b:RegisterForClicks("LeftButtonUp")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetText("0,0")
                b:SetScript("OnClick", function()
                        if selFrame == nil or selFrame == "" then
                                print("Please select a frame first.")
                                return
                        end
                        activeProfile[selFrame].offsetX = 0
                        CFM_XBox:SetText("0")
                        activeProfile[selFrame].offsetY = 0
                        CFM_YBox:SetText("0")
                        CFM_ApplySettings(selFrame)
                        end)
                
end

function CFM_CreatePanel3()
        local f, fs, e
        f = CreateFrame("Frame", "CFM_Panel3", CFM_Config)
                f:SetWidth(240)
                f:SetHeight(108)
                f:SetPoint("TOPRIGHT", -4, -22)
                f:SetFrameStrata("DIALOG")
                f:SetBackdrop({
                        bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
                        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
                        tile = "true",
                        tileSize = 32,
                        edgeSize = 10,
                        insets = {left = 3, right = 3, top = 3, bottom = 3}
                })
                f:SetBackdropColor(.25,.1,.25)
                f:SetBackdropBorderColor(0,.5,0)
                f:Hide()
                
        local fs = f:CreateFontString("CFM_FrameText", CFM_Panel3)
                fs:SetFontObject("GameFontGreenSmall")
                fs:SetWidth(42)
                fs:SetJustifyH("RIGHT")
                fs:SetText("Frame:")
                fs:SetPoint("TOPLEFT", CFM_Panel3, "TOPLEFT", 0,-8)

        e = CreateFrame("EditBox", "CFM_FrameBox", CFM_Panel3)
                e:SetWidth(140)
                e:SetHeight(18)
                e:SetPoint("LEFT", CFM_FrameText, "RIGHT", 2,0)
                e:SetBackdrop({
                        bgFile="",
                        edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
                        tile="true",
                        tileSize= 32,
                        edgeSize=10,
                        insets = {left=5, right=5, top=5, bottom=5}
                })
                e:SetAutoFocus(false)
                e:SetTextInsets(5,0,0,0)
                e:SetFontObject("GameFontNormalSmall")
                e:SetMaxLetters(255)
                e:SetText("")
                e:SetScript("OnEnterPressed", e.ClearFocus)
                e:SetScript("OnEscapePressed", e.ClearFocus)
                e:SetScript("OnTabPressed", function() CFM_ParentBox:SetFocus() end)
                
        local b = CreateFrame("Button", "CFM_AddFrameButton", CFM_Panel3, "OptionsButtonTemplate")
                b:SetWidth(90)
                b:SetPoint("BOTTOMRIGHT", CFM_Panel3, "BOTTOMRIGHT", -5,4)
                b:RegisterForClicks("LeftButtonUp")
                b:SetText("Add Frame")
                b:SetNormalFontObject("GameFontNormalSmall")
                b:SetHighlightFontObject("GameFontWhiteSmall")
                b:SetScript("OnClick", function()
                        CFM_AddFrame(CFM_FrameBox:GetText(), _G[CFM_FrameBox:GetText()]:GetParent():GetName())
                        CFM_FrameBox:SetText("")
                        end)
                
end

function CFM_SelectFrame(frame)
        selFrame = frame
        gframe = _G[frame]
        if frame == "WorldFrame" then CFM_StrataBoxButton:Disable() print("|c00FF00FFCFM:|r Strata changes to WorldFrame are disabled for user safety.") else CFM_StrataBoxButton:Enable() end
        -- add frame.lock to frame's settings
        if activeProfile[frame].lock == nil then activeProfile[frame].lock = true end
        -- add frame.clamp to frame's settings
        if activeProfile[frame].clamp == nil then activeProfile[frame].clamp = gframe:IsClampedToScreen() end
        -- set check boxes
        if activeProfile[frame].forceHide then
                CFM_ForceButton:SetChecked()
        else
                CFM_ForceButton:SetChecked(false)
        end
        if activeProfile[frame].sameXY then
                CFM_ConstrainButton:SetChecked()
        else
                CFM_ConstrainButton:SetChecked(false)
        end
        if activeProfile[frame].clamp then
                CFM_ClampButton:SetChecked()
        else
                CFM_ClampButton:SetChecked(false)
        end
        
        -- fill in rest of frame's info
        CFM_WidthBox:SetText(activeProfile[frame].width)
        CFM_HeightBox:SetText(activeProfile[frame].height)
        CFM_ScaleBox:SetText(activeProfile[frame].scale)
        CFM_LevelBox:SetText(activeProfile[frame].level)
        CFM_AlphaBox:SetText(activeProfile[frame].alpha)
        CFM_ChangeParentBox:SetText(activeProfile[frame].parent)
        CFM_XBox:SetText(activeProfile[frame].offsetX)
        CFM_YBox:SetText(activeProfile[frame].offsetY)
        if activeProfile[selFrame].lock then
                CFM_UnlockButton:SetText("Unlock")
                gframe:SetMovable(false)
        else
                CFM_UnlockButton:SetText("Lock")
                gframe:SetMovable(true)
                gframe:RegisterForDrag("LeftButton")
                gframe:SetScript("OnDragStart", function()
                        if gframe:IsMovable() then 
                                gframe.isMoving = true
                                gframe:StartMoving()
                        else return end end)
                gframe:SetScript("OnDragStop", function() CFM_StopMoving(gframe,selFrame) end)
        end
        
        local point = activeProfile[frame].point
        if  point == "CENTER" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 0)
        elseif point == "TOP" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 1)
        elseif point == "TOPRIGHT" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 2)
        elseif point == "RIGHT" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 3)
        elseif point == "BOTTOMRIGHT" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 4)
        elseif point == "BOTTOM" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 5)
        elseif point == "BOTTOMLEFT" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 6)
        elseif point == "LEFT" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 7)
        elseif point == "TOPLEFT" then
                UIDropDownMenu_SetSelectedValue(CFM_FromBox, 8)
        end
        UIDropDownMenu_SetText(CFM_FromBox, point)
        
        local point = activeProfile[frame].relativePoint
        if  point == "CENTER" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 0)
        elseif point == "TOP" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 1)
        elseif point == "TOPRIGHT" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 2)
        elseif point == "RIGHT" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 3)
        elseif point == "BOTTOMRIGHT" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 4)
        elseif point == "BOTTOM" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 5)
        elseif point == "BOTTOMLEFT" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 6)
        elseif point == "LEFT" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 7)
        elseif point == "TOPLEFT" then
                UIDropDownMenu_SetSelectedValue(CFM_ToBox, 8)
        end
        UIDropDownMenu_SetText(CFM_ToBox, point)
        
        local strata = activeProfile[frame].strata
        if  strata == "BACKGROUND" then
                UIDropDownMenu_SetSelectedValue(CFM_StrataBox, 0)
        elseif strata == "LOW" then
                UIDropDownMenu_SetSelectedValue(CFM_StrataBox, 1)
        elseif strata == "MEDIUM" then
                UIDropDownMenu_SetSelectedValue(CFM_StrataBox, 2)
        elseif strata == "HIGH" then
                UIDropDownMenu_SetSelectedValue(CFM_StrataBox, 3)
        elseif strata == "DIALOG" then
                UIDropDownMenu_SetSelectedValue(CFM_StrataBox, 4)
        elseif strata == "TOOLTIP" then
                UIDropDownMenu_SetSelectedValue(CFM_StrataBox, 5)
        end
        UIDropDownMenu_SetText(CFM_StrataBox, strata)
end

function CFM_FromDropInit(self)
        local level = level or 1
        local info = UIDropDownMenu_CreateInfo()
        info.text = "CENTER"
        info.value = 0
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "TOP"
        info.value = 1
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "TOPRIGHT"
        info.value = 2
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)

        info.text = "RIGHT"
        info.value = 3
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "BOTTOMRIGHT"
        info.value = 4
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "BOTTOM"
        info.value = 5
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)

        info.text = "BOTTOMLEFT"
        info.value = 6
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "LEFT"
        info.value = 7
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "TOPLEFT"
        info.value = 8
        info.func = CFM_FromBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
end
        
function CFM_ToDropInit(self)
        local level = level or 1
        local info = UIDropDownMenu_CreateInfo()
        
        info.text = "CENTER"
        info.value = 0
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "TOP"
        info.value = 1
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "TOPRIGHT"
        info.value = 2
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)

        info.text = "RIGHT"
        info.value = 3
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "BOTTOMRIGHT"
        info.value = 4
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "BOTTOM"
        info.value = 5
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)

        info.text = "BOTTOMLEFT"
        info.value = 6
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "LEFT"
        info.value = 7
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "TOPLEFT"
        info.value = 8
        info.func = CFM_ToBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
end     
        
function CFM_StrataDropInit(self)
        local level = level or 1
        local info = UIDropDownMenu_CreateInfo()
        info.text = "BACKGROUND"
        info.value = 0
        info.func = CFM_StrataBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "LOW"
        info.value = 1
        info.func = CFM_StrataBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "MEDIUM"
        info.value = 2
        info.func = CFM_StrataBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "HIGH"
        info.value = 3
        info.func = CFM_StrataBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
        
        info.text = "DIALOG"
        info.value = 4
        info.func = CFM_StrataBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
                                
        info.text = "TOOLTIP"
        info.value = 5
        info.func = CFM_StrataBoxClick
        info.owner = self
        info.checked = nil
        info.icon = nil
        UIDropDownMenu_AddButton(info, level)
end

function CFM_FromBoxClick(self)
        UIDropDownMenu_SetSelectedValue(self.owner, self.value)
        if (self.value == 0) then
                activeProfile[selFrame].point = "CENTER"
        elseif (self.value == 1) then
                activeProfile[selFrame].point = "TOP"
        elseif (self.value == 2) then
                activeProfile[selFrame].point = "TOPRIGHT"
        elseif (self.value == 3) then
                activeProfile[selFrame].point = "RIGHT"
        elseif (self.value == 4) then
                activeProfile[selFrame].point = "BOTTOMRIGHT"
        elseif (self.value == 5) then
                activeProfile[selFrame].point = "BOTTOM"
        elseif (self.value == 6) then
                activeProfile[selFrame].point = "BOTTOMLEFT"
        elseif (self.value == 7) then
                activeProfile[selFrame].point = "LEFT"
        elseif (self.value == 8) then
                activeProfile[selFrame].point = "TOPLEFT"                       
        end
        CFM_ApplySettings(selFrame)
end

function CFM_ToBoxClick(self)
        UIDropDownMenu_SetSelectedValue(self.owner, self.value)
        if (self.value == 0) then
                activeProfile[selFrame].relativePoint = "CENTER"
        elseif (self.value == 1) then
                activeProfile[selFrame].relativePoint = "TOP"
        elseif (self.value == 2) then
                activeProfile[selFrame].relativePoint = "TOPRIGHT"
        elseif (self.value == 3) then
                activeProfile[selFrame].relativePoint = "RIGHT"
        elseif (self.value == 4) then
                activeProfile[selFrame].relativePoint = "BOTTOMRIGHT"
        elseif (self.value == 5) then
                activeProfile[selFrame].relativePoint = "BOTTOM"
        elseif (self.value == 6) then
                activeProfile[selFrame].relativePoint = "BOTTOMLEFT"
        elseif (self.value == 7) then
                activeProfile[selFrame].relativePoint = "LEFT"
        elseif (self.value == 8) then
                activeProfile[selFrame].relativePoint = "TOPLEFT"                       
        end
        CFM_ApplySettings(selFrame)
end
        
function CFM_StrataBoxClick(self)
        if selFrame == nil then return end
        UIDropDownMenu_SetSelectedValue(self.owner, self.value)
        if (self.value == 0) then
                activeProfile[selFrame].strata = "BACKGROUND"
        elseif (self.value == 1) then
                activeProfile[selFrame].strata = "LOW"
        elseif (self.value == 2) then
                activeProfile[selFrame].strata = "MEDIUM"
        elseif (self.value == 3) then
                activeProfile[selFrame].strata = "HIGH"
        elseif (self.value == 4) then
                activeProfile[selFrame].strata = "DIALOG"
        elseif (self.value == 5) then
                activeProfile[selFrame].strata = "TOOLTIP"
        end
        CFM_ApplySettings(selFrame)
end

function CFM_ChangeParent(arg)
        if _G[arg] == nil then
                print("|c00FF00FFCFM:|r ".. arg.. " doesn't exist.")
        else
                activeProfile[selFrame].parent = arg
        end
        CFM_ChangeParentBox:SetText(activeProfile[selFrame].parent)
end

Compare with Previous | Blame