/trunk
-- <= == == == == == == == == == == == == => |
-- => Option Registration |
-- <= == == == == == == == == == == == == => |
local Portfolio = LibStub and LibStub("Portfolio") |
if not Portfolio then return end |
local optionTable = { |
id="UIPanelOptions", |
options = { |
{ |
id="DownwardsRollWindowStacking", |
type=CONTROLTYPE_CHECKBOX, |
text=UIPANEL_OPTIONS_DOWN_ROLLSTACK, |
tooltipText=UIPANEL_OPTIONS_DOWN_ROLLSTACK_INFO, |
callback=UIPanelOptions.SetDownwardRollWindowStack, |
defaultValue = "0", |
}, |
--[[ |
{ |
id = "Slider1"; |
text = "Slider #1"; |
tooltipText = "Slider tooltip goodness on hover."; |
minText = "Min"; |
maxText = "Max"; |
minValue = 0; |
maxValue = 10; |
valueStep = 1; |
type = CONTROLTYPE_SLIDER; |
defaultValue = "0"; |
callback = function(value) Portfolio.Print("Slider1 value: "..value) end; |
}; |
]]-- |
{ |
id="LeftPanelOffsetEnabled", |
type=CONTROLTYPE_CHECKBOX, |
text="", |
defaultValue = "0", |
dependentOptions={"LeftPanelOffset"}, |
point = {nil, nil, nil, nil, -12}; |
}, |
{ |
id="LeftPanelOffset", |
type=CONTROLTYPE_SLIDER, |
text=UIPANEL_OPTIONS_PANEL_LEFT_OFFSET, |
tooltipText=UIPANEL_OPTIONS_PANEL_LEFT_OFFSET_INFO, |
callback=UIPanelOptions.SetLeftPanelOffset, |
defaultValue = 0, |
minValue = 0, |
maxValue = 200, |
valueStep = 5, |
point = {"LEFT", nil, "RIGHT", 10, 0}; |
}, |
{ |
id="RightPanelOffsetEnabled", |
type=CONTROLTYPE_CHECKBOX, |
text="", |
defaultValue = "0", |
dependentOptions={"RightPanelOffset"}, |
point = {nil, "LeftPanelOffsetEnabled", nil, nil, -16}; |
}, |
{ |
id="RightPanelOffset", |
type=CONTROLTYPE_SLIDER, |
text=UIPANEL_OPTIONS_PANEL_RIGHT_OFFSET, |
tooltipText=UIPANEL_OPTIONS_PANEL_RIGHT_OFFSET_INFO, |
callback=UIPanelOptions.SetRightPanelOffset, |
defaultValue = -80, |
minValue = -200, |
maxValue = 0, |
valueStep = 5, |
point = {"LEFT", nil, "RIGHT", 10, 0}; |
}, |
{ |
id="TopPanelOffsetEnabled", |
type=CONTROLTYPE_CHECKBOX, |
text="", |
defaultValue = "0", |
dependentOptions={"TopPanelOffset"}, |
point = {nil, "RightPanelOffsetEnabled", nil, nil, -16}; |
}, |
{ |
id="TopPanelOffset", |
type=CONTROLTYPE_SLIDER, |
text=UIPANEL_OPTIONS_PANEL_TOP_OFFSET, |
tooltipText=UIPANEL_OPTIONS_PANEL_TOP_OFFSET_INFO, |
callback=UIPanelOptions.SetTopPanelOffset, |
defaultValue = -104, |
minValue = -200, |
maxValue = 0, |
valueStep = 5, |
point = {"LEFT", nil, "RIGHT", 10, 0}; |
}, |
{ |
id="RightBagsOffsetEnabled", |
type=CONTROLTYPE_CHECKBOX, |
text="", |
defaultValue = "0", |
dependentOptions={"RightBagsOffset"}, |
point = {nil, "TopPanelOffsetEnabled", nil, nil, -16}; |
}, |
{ |
id="RightBagsOffset", |
type= CONTROLTYPE_SLIDER, |
text=UIPANEL_OPTIONS_BAGS_RIGHT_OFFSET, |
tooltipText=UIPANEL_OPTIONS_BAGS_RIGHT_OFFSET_INFO, |
callback=UIPanelOptions.SetRightBagsOffset, |
defaultValue = 0, |
minValue = -200, |
maxValue = 0, |
valueStep = 5, |
point = {"LEFT", nil, "RIGHT", 10, 0}; |
}, |
{ |
id="BottomBagsOffset Enabled", |
type=CONTROLTYPE_CHECKBOX, |
text="", |
defaultValue = "0", |
dependentOptions={"BottomBagsOffset"}, |
point = {nil, "RightBagsOffsetEnabled", nil, nil, -16}; |
}, |
{ |
id="BottomBagsOffset", |
type= CONTROLTYPE_SLIDER, |
text=UIPANEL_OPTIONS_BAGS_BOTTOM_OFFSET, |
tooltipText=UIPANEL_OPTIONS_BAGS_BOTTOM_OFFSET_INFO, |
callback=UIPanelOptions.SetBottomBagsOffset, |
defaultValue = 0, |
minValue = 0, |
maxValue = 200, |
valueStep = 5, |
point = {"LEFT", nil, "RIGHT", 10, 0}; |
}, |
}; |
savedVarTable = "UIPanelOptions_SavedVars"; |
} |
UIPanelOptions.optionsFrame = Portfolio.RegisterOptionSet(optionTable) |
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ |
..\FrameXML\UI.xsd"> |
<Script file="localization.en.lua"/> |
<Script file="UIPanelOptions.lua"/> |
<Script file="PortfolioRegistration.lua"/> |
<Frame name="UIPanelHOffsetsMarker" parent="UIParent" movable="true" toplevel="true" hidden="true"> |
<Size> |
<AbsDimension x="32" y="600"/> |
</Size> |
<Anchors> |
<Anchor point="LEFT" relativePoint="LEFT"> |
<Offset> |
<AbsDimension x="0" y="0"/> |
</Offset> |
</Anchor> |
</Anchors> |
<Layers> |
<Layer level="ARTWORK"> |
<Texture name="$parentTexture" file="Interface\CastingBar\UI-CastingBar-Spark" setAllPoints="true" alphaMode="ADD" /> |
</Layer> |
</Layers> |
<Scripts> |
<OnUpdate> |
UIPanelOptions.Marker_OnUpdate(self) |
</OnUpdate> |
</Scripts> |
</Frame> |
<Frame name="UIPanelVOffsetsMarker" parent="UIParent" movable="true" toplevel="true" hidden="true"> |
<Size> |
<AbsDimension x="600" y="32"/> |
</Size> |
<Anchors> |
<Anchor point="LEFT" relativePoint="LEFT"> |
<Offset> |
<AbsDimension x="0" y="0"/> |
</Offset> |
</Anchor> |
</Anchors> |
<Layers> |
<Layer level="ARTWORK"> |
<Texture name="$parentTexture" file="Interface\CastingBar\UI-CastingBar-Spark" setAllPoints="true" alphaMode="ADD" /> |
</Layer> |
</Layers> |
<Scripts> |
<OnLoad> |
UIPanelVOffsetsMarkerTexture:SetTexCoord(1,1,0,1,1,0,0,0) |
</OnLoad> |
<OnUpdate> |
UIPanelOptions.Marker_OnUpdate(self) |
</OnUpdate> |
</Scripts> |
</Frame> |
</Ui> |
-------------------------------------------------------------------------- |
-- UIPanelOptions.lua |
-------------------------------------------------------------------------- |
--[[ |
UIPanel Options |
By: AnduinLothar <KarlKFI@cosmosui.org> |
$Id: UIPanelOptions.lua 4821 2007-03-19 08:12:06Z karlkfi $ |
$Rev: 4821 $ |
$LastChangedBy: karlkfi $ |
$Date: 2007-03-19 08:12:06Z $ |
]]-- |
-- Only work for wow 2.1 or greater |
--[[ |
local wowvers = select(3, strfind(GetBuildInfo(), "%d+%.(%d+)%.")) |
if (wowvers and tonumber(wowvers) < 1) then |
return |
end |
]]-- |
UIPanelOptions = {} |
-- <= == == == == == == == == == == == == => |
-- => GroupLootFrame Stacking |
-- <= == == == == == == == == == == == == => |
function UIPanelOptions.ToggleRollStack() |
if (MobileFrames_RollStackDown) then |
MobileFrames_RollStackDown = nil |
UIPanelOptions.SetDownwardRollWindowStack("0") |
else |
MobileFrames_RollStackDown = true |
UIPanelOptions.SetDownwardRollWindowStack("1") |
end |
end |
function UIPanelOptions.SetDownwardRollWindowStack(toggle) |
if (toggle == "1") then |
GroupLootFrame2:ClearAllPoints() |
GroupLootFrame2:SetPoint("TOP", "GroupLootFrame1", "BOTTOM", 0, -3) |
GroupLootFrame3:ClearAllPoints() |
GroupLootFrame3:SetPoint("TOP", "GroupLootFrame2", "BOTTOM", 0, -3) |
GroupLootFrame4:ClearAllPoints() |
GroupLootFrame4:SetPoint("TOP", "GroupLootFrame3", "BOTTOM", 0, -3) |
else |
GroupLootFrame2:ClearAllPoints() |
GroupLootFrame2:SetPoint("BOTTOM", "GroupLootFrame1", "TOP", 0, 3) |
GroupLootFrame3:ClearAllPoints() |
GroupLootFrame3:SetPoint("BOTTOM", "GroupLootFrame2", "TOP", 0, 3) |
GroupLootFrame4:ClearAllPoints() |
GroupLootFrame4:SetPoint("BOTTOM", "GroupLootFrame3", "TOP", 0, 3) |
end |
end |
-- <= == == == == == == == == == == == == => |
-- => Offset Marker |
-- <= == == == == == == == == == == == == => |
function UIPanelOptions.Marker_ShowLeft(offset) |
if (type(offset) == "number") then |
local marker = UIPanelHOffsetsMarker |
marker:ClearAllPoints() |
marker:SetPoint("CENTER", "UIParent", "LEFT", offset, 0) |
marker:Show() |
UIPanelOptions.Marker_HFade() |
end |
end |
function UIPanelOptions.Marker_ShowRight(offset) |
if (type(offset) == "number") then |
local marker = UIPanelHOffsetsMarker |
marker:ClearAllPoints() |
marker:SetPoint("CENTER", "UIParent", "RIGHT", offset, 0) |
marker:Show() |
UIPanelOptions.Marker_HFade() |
end |
end |
function UIPanelOptions.Marker_ShowTop(offset) |
if (type(offset) == "number") then |
local marker = UIPanelVOffsetsMarker |
marker:ClearAllPoints() |
marker:SetPoint("CENTER", "UIParent", "TOP", 0, offset) |
marker:Show() |
UIPanelOptions.Marker_VFade() |
end |
end |
function UIPanelOptions.Marker_ShowBottom(offset) |
-- Offset currently specific for bags |
if (type(offset) == "number") then |
local marker = UIPanelVOffsetsMarker |
marker:ClearAllPoints() |
marker:SetPoint("BOTTOMRIGHT", "UIParent", "BOTTOMRIGHT", 40, offset-16) |
marker:Show() |
UIPanelOptions.Marker_VFade() |
end |
end |
function UIPanelOptions.Marker_HFade() |
local marker = UIPanelHOffsetsMarker |
if (marker:IsVisible()) then |
marker:SetAlpha(1) |
marker.counter = 80 -- ~ 2 sec timer |
marker.fadeCount = 40 -- fade when ~ 1 sec left |
marker.isFading = true |
end |
end |
function UIPanelOptions.Marker_VFade() |
local marker = UIPanelVOffsetsMarker |
if (marker:IsVisible()) then |
marker:SetAlpha(1) |
marker.counter = 80 -- ~ 2 sec timer |
marker.fadeCount = 40 -- fade when ~ 1 sec left |
marker.isFading = true |
end |
end |
function UIPanelOptions.Marker_HHide() |
local marker = UIPanelHOffsetsMarker |
marker.isFading = false |
marker.counter = nil |
marker.fadeCount = nil |
marker:Hide() |
end |
function UIPanelOptions.Marker_VHide() |
local marker = UIPanelVOffsetsMarker |
marker.isFading = false |
marker.counter = nil |
marker.fadeCount = nil |
marker:Hide() |
end |
function UIPanelOptions.Marker_OnUpdate(self) |
if (not self) then |
self = this |
end |
if (self.isFading) then |
if (type(self.counter) == "number") then |
if (self.counter > 0) then |
self.counter = self.counter - 1 |
if (type(self.fadeCount) == "number") then |
if (self.counter < self.fadeCount) then |
self:SetAlpha(self.counter/self.fadeCount) |
end |
end |
else |
self.counter = nil |
self.fadeCount = nil |
end |
else |
self.isFading = false |
self:Hide() |
self:SetAlpha(1) |
end |
end |
end |
-- <= == == == == == == == == == == == == => |
-- => UIPanel Offset |
-- <= == == == == == == == == == == == == => |
function UIPanelOptions.SetLeftPanelOffset(value, isUpdate) |
if (type(value) == "number") then |
if (value >= 0) then |
UIParent:SetAttribute("LEFT_OFFSET", value) |
if (not isUpdate) then |
UIPanelOptions.Marker_ShowLeft(value) |
end |
end |
end |
end |
function UIPanelOptions.SetRightPanelOffset(value, isUpdate) |
if (type(value) == "number") then |
if (value <= 0) then |
UIParent:SetAttribute("RIGHT_OFFSET_BUFFER", -value) |
if (not isUpdate) then |
UIPanelOptions.Marker_ShowRight(value) |
end |
end |
end |
end |
function UIPanelOptions.SetTopPanelOffset(value, isUpdate) |
if (type(value) == "number") then |
if (value <= 0) then |
UIParent:SetAttribute("TOP_OFFSET", value) |
if (not isUpdate) then |
UIPanelOptions.Marker_ShowTop(value) |
end |
end |
end |
end |
-- <= == == == == == == == == == == == == => |
-- => Bags Offset |
-- <= == == == == == == == == == == == == => |
function UIPanelOptions.GetRightBagsOffset() |
return UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_X.baseX |
end |
function UIPanelOptions.SetRightBagsOffset(value, isUpdate) |
if (type(value) == "number") then |
if (value <= 0) then |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_X.baseX = -value |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_X.rightLeft = 0 |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_X.rightRight = 0 |
if (not isUpdate) then |
UIPanelOptions.Marker_ShowRight(value) |
end |
UIParent_ManageFramePositions() |
end |
end |
end |
function UIPanelOptions.SetBottomBagsOffset(value, isUpdate) |
if (type(value) == "number") then |
if (value >= 0) then |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_Y.baseY = value |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_Y.bottomEither = 0 |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_Y.reputation = 0 |
UIPARENT_MANAGED_FRAME_POSITIONS.CONTAINER_OFFSET_Y.pet = 0 |
if (not isUpdate) then |
UIPanelOptions.Marker_ShowBottom(value) |
end |
UIParent_ManageFramePositions() |
end |
end |
end |
-------------------------------------------------------------------------- |
-- localization.lua |
-------------------------------------------------------------------------- |
UIPANEL_OPTIONS_DOWN_ROLLSTACK = "Stack Roll Windows Downwards."; |
UIPANEL_OPTIONS_DOWN_ROLLSTACK_INFO = "Make GroupLootFrames 2-4 stack downwards instead of upwards."; |
UIPANEL_OPTIONS_BAGS_RIGHT_OFFSET = "Bags Right Offset (%s)"; |
UIPANEL_OPTIONS_BAGS_RIGHT_OFFSET_INFO = ""; |
UIPANEL_OPTIONS_BAGS_BOTTOM_OFFSET = "Bags Bottom Offset (%s)"; |
UIPANEL_OPTIONS_BAGS_BOTTOM_OFFSET_INFO = ""; |
UIPANEL_OPTIONS_PANEL_LEFT_OFFSET = "UI Panel Left Offset (%s)"; |
UIPANEL_OPTIONS_PANEL_LEFT_OFFSET_INFO = ""; |
UIPANEL_OPTIONS_PANEL_RIGHT_OFFSET = "UI Panel Right Offset (%s)"; |
UIPANEL_OPTIONS_PANEL_RIGHT_OFFSET_INFO = "UIPanels will stack left to right up to this buffer zone."; |
UIPANEL_OPTIONS_PANEL_TOP_OFFSET = "UI Panel Top Offset (%s)"; |
UIPANEL_OPTIONS_PANEL_TOP_OFFSET_INFO = ""; |
UIPANEL_OPTIONS_ROLLSTACK_FEEDBACK_ENABLED = "GroupLootFrames 2-4 will now stack downwards instead of upwards."; |
UIPANEL_OPTIONS_ROLLSTACK_FEEDBACK_DISABLED = "GroupLootFrames 2-4 will now stack upwards (default)."; |
UIPANEL_OPTIONS_BAGS_RIGHT_OFFSET_FEEDBACK_ENABLED = "Will right offset your bags by %s pixels."; |
UIPANEL_OPTIONS_BAGS_RIGHT_OFFSET_FEEDBACK_DISABLED = "Will not right offset your bags."; |
UIPANEL_OPTIONS_BAGS_BOTTOM_OFFSET_FEEDBACK_ENABLED = "Will bottom offset your bags by %s pixels."; |
UIPANEL_OPTIONS_BAGS_BOTTOM_OFFSET_FEEDBACK_DISABLED = "Will not bottom offset your bags."; |
UIPANEL_OPTIONS_PANEL_LEFT_OFFSET_FEEDBACK_ENABLED = "Will left offset the UI Panels by %s pixels."; |
UIPANEL_OPTIONS_PANEL_LEFT_OFFSET_FEEDBACK_DISABLED = "Will not left offset UI Panels."; |
UIPANEL_OPTIONS_PANEL_RIGHT_OFFSET_FEEDBACK_ENABLED = "Will right offset your UI Panels by %s pixels."; |
UIPANEL_OPTIONS_PANEL_RIGHT_OFFSET_FEEDBACK_DISABLED = "Right UIPanel offset is reset to the default %s pixels."; |
UIPANEL_OPTIONS_PANEL_TOP_OFFSET_FEEDBACK_ENABLED = "Will top offset the UI Panels by %s pixels."; |
UIPANEL_OPTIONS_PANEL_TOP_OFFSET_FEEDBACK_DISABLED = "Will not top offset UI Panels."; |
UIPANEL_OFFSET = "Offset"; |
## Interface: 30000 |
## Title: UIPanel Options |
## Notes: UIPanel & bag offset sliders and roll frame stacking |
## Author: AnduinLothar |
## RequiredDeps: Portfolio |
## SavedVariables: UIPanelOptions_SavedVars |
## X-Website: http://www.cosmosui.org |
UIPanelOptions.xml |