insets = { left = 3, right = 3, top = 6, bottom = 6 } |
} |
|
function lib:New( parent, name, desc, lowvalue, highvalue, valuestep, percent, noEditBox ) |
assert( type( parent ) == "table" and parent.CreateFontString, "PhanxConfig-Slider: Parent is not a valid frame!" ) |
if type( name ) ~= "string" then name = nil end |
if type( desc ) ~= "string" then desc = nil end |
if type( lowvalue ) ~= "number" then lowvalue = 0 end |
if type( highvalue ) ~= "number" then highvalue = 100 end |
if type( valuestep ) ~= "number" then valuestep = 1 end |
function lib:New(parent, name, desc, lowvalue, highvalue, valuestep, percent, noEditBox) |
assert(type(parent) == "table" and parent.CreateFontString, "PhanxConfig-Slider: Parent is not a valid frame!") |
if type(name) ~= "string" then name = nil end |
if type(desc) ~= "string" then desc = nil end |
if type(lowvalue) ~= "number" then lowvalue = 0 end |
if type(highvalue) ~= "number" then highvalue = 100 end |
if type(valuestep) ~= "number" then valuestep = 1 end |
|
local frame = CreateFrame( "Frame", nil, parent ) |
frame:SetWidth( 186 ) |
frame:SetHeight( 42 ) |
local frame = CreateFrame("Frame", nil, parent) |
frame:SetWidth(186) |
frame:SetHeight(42) |
|
frame.desc = desc |
|
frame.bg = frame:CreateTexture( nil, "BACKGROUND" ) |
frame.bg:SetAllPoints( true ) |
frame.bg:SetTexture( 0, 0, 0, 0 ) |
frame.bg = frame:CreateTexture(nil, "BACKGROUND") |
frame.bg:SetAllPoints(true) |
frame.bg:SetTexture(0, 0, 0, 0) |
|
local slider = CreateFrame( "Slider", nil, frame ) |
slider:SetPoint( "BOTTOMLEFT", 3, 10 ) |
slider:SetPoint( "BOTTOMRIGHT", -3, 10 ) |
slider:SetHeight( 17 ) |
slider:SetHitRectInsets( 0, 0, -10, -10 ) |
slider:SetOrientation( "HORIZONTAL" ) |
slider:SetThumbTexture( "Interface\\Buttons\\UI-SliderBar-Button-Horizontal" ) |
slider:SetBackdrop( sliderBG ) |
local slider = CreateFrame("Slider", nil, frame) |
slider:SetPoint("BOTTOMLEFT", 3, 10) |
slider:SetPoint("BOTTOMRIGHT", -3, 10) |
slider:SetHeight(17) |
slider:SetHitRectInsets(0, 0, -10, -10) |
slider:SetOrientation("HORIZONTAL") |
slider:SetThumbTexture("Interface\\Buttons\\UI-SliderBar-Button-Horizontal") |
slider:SetBackdrop(sliderBG) |
|
local label = slider:CreateFontString( nil, "ARTWORK", "GameFontNormal" ) |
label:SetPoint( "TOPLEFT", frame, 5, 0 ) |
label:SetPoint( "TOPRIGHT", frame, -5, 0 ) |
label:SetJustifyH( "LEFT" ) |
label:SetText( name ) |
local label = slider:CreateFontString(nil, "ARTWORK", "GameFontNormal") |
label:SetPoint("TOPLEFT", frame, 5, 0) |
label:SetPoint("TOPRIGHT", frame, -5, 0) |
label:SetJustifyH("LEFT") |
label:SetText(name) |
|
local low = slider:CreateFontString( nil, "ARTWORK", "GameFontNormalSmall" ) |
low:SetPoint( "TOPLEFT", slider, "BOTTOMLEFT", 0, 3 ) |
local low = slider:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall") |
low:SetPoint("TOPLEFT", slider, "BOTTOMLEFT", 0, 3) |
if percent then |
low:SetFormattedText( "%.0f%%", lowvalue * 100 ) |
low:SetFormattedText("%.0f%%", lowvalue * 100) |
else |
low:SetText( lowvalue ) |
low:SetText(lowvalue) |
end |
|
local high = slider:CreateFontString( nil, "ARTWORK", "GameFontNormalSmall" ) |
high:SetPoint( "TOPRIGHT", slider, "BOTTOMRIGHT", 0, 3 ) |
local high = slider:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall") |
high:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", 0, 3) |
if percent then |
high:SetFormattedText( "%.0f%%", highvalue * 100 ) |
high:SetFormattedText("%.0f%%", highvalue * 100) |
else |
high:SetText( highvalue ) |
high:SetText(highvalue) |
end |
|
local value |
if not noEditBox and LibStub( "PhanxConfig-EditBox", true ) then |
value = LibStub( "PhanxConfig-EditBox" ).CreateEditBox( frame, nil, desc, 5 ) |
value:SetPoint( "TOP", slider, "BOTTOM", 0, 13 ) |
value:SetWidth( 100 ) |
value.editbox:SetScript( "OnEnter", OnEnter ) |
value.editbox:SetScript( "OnLeave", OnLeave ) |
value.editbox:SetScript( "OnEnterPressed", EditBox_OnEnterPressed ) |
value.editbox:SetScript( "OnTabPressed", EditBox_OnEnterPressed ) |
value.editbox:SetFontObject( GameFontHighlightSmall ) |
value.editbox:SetJustifyH( "CENTER" ) |
if not noEditBox and LibStub("PhanxConfig-EditBox", true) then |
value = LibStub("PhanxConfig-EditBox"):New(frame, nil, desc, 5) |
value:SetPoint("TOP", slider, "BOTTOM", 0, 13) |
value:SetWidth(100) |
value.editbox:SetScript("OnEnter", scripts.OnEnter) |
value.editbox:SetScript("OnLeave", scripts.OnLeave) |
value.editbox:SetScript("OnEnterPressed", EditBox_OnEnterPressed) |
value.editbox:SetScript("OnTabPressed", EditBox_OnEnterPressed) |
value.editbox:SetFontObject(GameFontHighlightSmall) |
value.editbox:SetJustifyH("CENTER") |
value.SetFormattedText = EditBoxContainer_SetFormattedText |
else |
value = slider:CreateFontString( nil, "ARTWORK", "GameFontHighlightSmall" ) |
value:SetPoint( "TOP", slider, "BOTTOM", 0, 3 ) |
value = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") |
value:SetPoint("TOP", slider, "BOTTOM", 0, 3) |
end |
|
local factor = 10 ^ max( strlen( tostring( valuestep ):match( "%.( %d+ )" ) or "" ), |
strlen( tostring( minvalue ):match( "%.( %d+ )" ) or "" ), |
strlen( tostring( maxvalue ):match( "%.( %d+ )" ) or "" ) ) |
local factor = 10 ^ max(strlen(tostring(valuestep):match("%.(%d+)") or ""), |
strlen(tostring(minvalue):match("%.(%d+)") or ""), |
strlen(tostring(maxvalue):match("%.(%d+)") or "")) |
if factor > 1 then |
slider.valueFactor = factor |
slider:SetMinMaxValues( lowvalue * factor, highvalue * factor ) |
slider:SetValueStep( valuestep * factor ) |
slider:SetMinMaxValues(lowvalue * factor, highvalue * factor) |
slider.minValue, slider.maxValue = lowvalue * factor, highvalue * factor |
slider:SetValueStep(valuestep * factor) |
slider.valueStep = valuestep * factor |
else |
slider:SetMinMaxValues( lowvalue, highvalue ) |
slider:SetValueStep( valuestep ) |
slider:SetMinMaxValues(lowvalue, highvalue) |
slider.minValue, slider.maxValue = lowvalue, highvalue |
slider:SetValueStep(valuestep) |
slider.valueStep = valuestep |
end |
|
slider:EnableMouseWheel( true ) |
slider:SetScript( "OnEnter", OnEnter ) |
slider:SetScript( "OnLeave", OnLeave ) |
slider:SetScript( "OnMouseWheel", OnMouseWheel ) |
slider:SetScript( "OnValueChanged", OnValueChanged ) |
slider:EnableMouseWheel(true) |
slider:SetScript("OnEnter", scripts.OnEnter) |
slider:SetScript("OnLeave", scripts.OnLeave) |
slider:SetScript("OnMouseWheel", scripts.OnMouseWheel) |
slider:SetScript("OnValueChanged", scripts.OnValueChanged) |
|
slider.valueStep = slider:GetValueStep( ) |
slider.minValue, slider.maxValue = slider:GetMinMaxValues( ) |
|
frame.slider = slider |
frame.labelText = label |
frame.lowText = low |