Skip to content

Commit

Permalink
Fix issues with options frames
Browse files Browse the repository at this point in the history
 - Fix broken backdrop.
 - Fix use of deprecated templates on mainline.
 - Use new Settings API when available.

Fixes #285
  • Loading branch information
Sharparam committed Dec 12, 2023
1 parent d50c8ca commit 1f159c6
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 21 deletions.
13 changes: 12 additions & 1 deletion ChocoboCustomSongPanel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -203,4 +203,15 @@ end

frame:SetScript("OnShow", function() CSP:Update() end)

InterfaceOptions_AddCategory(frame)
frame.OnCommit = function() end
frame.OnDefault = function() end
frame.OnRefresh = function() CSP:Update() end

if Settings and SettingsPanel then
local category = Settings.GetCategory(C.Name)
local subcategory = Settings.RegisterCanvasLayoutSubcategory(category, frame, "Custom Songs")
Settings.RegisterAddOnCategory(subcategory)
else
InterfaceOptions_AddCategory(frame, C.Name)
end

32 changes: 24 additions & 8 deletions ChocoboOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ C.Options = {}

local CO = C.Options

local checkButtonTemplate = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE and "OptionsBaseCheckButtonTemplate" or "OptionsCheckButtonTemplate"

local function createList(parent, header, listGetter, addFunc, removeFunc, resetFunc)
local list = CreateFrame("Frame", nil, parent, "ChocoboSongsAndMountsListTemplate")
list.items = {}
Expand Down Expand Up @@ -155,7 +157,7 @@ frame.preventDupeToggle = CreateFrame(
"CheckButton",
"ChocoboOptionsPreventDupeToggle",
frame,
"OptionsCheckButtonTemplate")
checkButtonTemplate)
frame.preventDupeToggle:SetSize(40, 40)
frame.preventDupeToggle:SetPoint("BOTTOMLEFT", 20, 160)
frame.preventDupeToggle:SetScript("OnClick", function()
Expand All @@ -168,7 +170,7 @@ frame.plainstriderToggle = CreateFrame(
"CheckButton",
"ChocoboOptionsPlainstriderToggle",
frame,
"OptionsCheckButtonTemplate")
checkButtonTemplate)
frame.plainstriderToggle:SetSize(40, 40)
frame.plainstriderToggle:SetPoint("BOTTOMLEFT", frame.preventDupeToggle, 0, -40)
frame.plainstriderToggle:SetScript("OnClick", function()
Expand All @@ -177,7 +179,7 @@ frame.plainstriderToggle:SetScript("OnClick", function()
end)
frame.plainstriderToggle.label = _G[frame.plainstriderToggle:GetName() .. "Text"]
frame.plainstriderToggle.label:SetText(L["Options_PlainstriderToggle"])
frame.ravenLordToggle = CreateFrame("CheckButton", "ChocoboOptionsRavenLordToggle", frame, "OptionsCheckButtonTemplate")
frame.ravenLordToggle = CreateFrame("CheckButton", "ChocoboOptionsRavenLordToggle", frame, checkButtonTemplate)
frame.ravenLordToggle:SetSize(40, 40)
frame.ravenLordToggle:SetPoint("BOTTOMLEFT", frame.plainstriderToggle, 0, -40)
frame.ravenLordToggle:SetScript("OnClick", function()
Expand All @@ -190,7 +192,7 @@ frame.flametalonToggle = CreateFrame(
"CheckButton",
"ChocoboOptionsFlametalonToggle",
frame,
"OptionsCheckButtonTemplate")
checkButtonTemplate)
frame.flametalonToggle:SetSize(40, 40)
frame.flametalonToggle:SetPoint("BOTTOMLEFT", frame.ravenLordToggle, 0, -40)
frame.flametalonToggle:SetScript("OnClick", function()
Expand All @@ -203,7 +205,7 @@ frame.ridingCraneToggle = CreateFrame(
"CheckButton",
"ChocoboOptionsRidingCraneToggle",
frame,
"OptionsCheckButtonTemplate")
checkButtonTemplate)
frame.ridingCraneToggle:SetSize(40, 40)
frame.ridingCraneToggle:SetPoint("BOTTOMLEFT", frame.flametalonToggle, 0, -40)
frame.ridingCraneToggle:SetScript("OnClick", function()
Expand All @@ -214,8 +216,12 @@ frame.ridingCraneToggle.label = _G[frame.ridingCraneToggle:GetName() .. "Text"]
frame.ridingCraneToggle.label:SetText(L["Options_RidingCraneToggle"])

function CO:Open()
InterfaceOptionsFrame_OpenToCategory(frame)
InterfaceOptionsFrame_OpenToCategory(frame)
if Settings and SettingsPanel then
Settings.OpenToCategory(frame.name)
else
InterfaceOptionsFrame_OpenToCategory(frame)
InterfaceOptionsFrame_OpenToCategory(frame)
end
end

function CO:Update()
Expand Down Expand Up @@ -254,4 +260,14 @@ end

frame:SetScript("OnShow", function() CO:Update() end)

InterfaceOptions_AddCategory(frame)
frame.OnCommit = function() end
frame.OnDefault = function() end
frame.OnRefresh = function() CO:Update() end

if Settings and SettingsPanel then
local category = Settings.RegisterCanvasLayoutCategory(frame, C.Name)
category.ID = C.Name
Settings.RegisterAddOnCategory(category)
else
InterfaceOptions_AddCategory(frame, C.Name)
end
48 changes: 38 additions & 10 deletions ChocoboSoundControlPanel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ local L = _G["ChocoboLocale"]

Chocobo.SoundControl.Options = {}

local checkButtonTemplate = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE and "OptionsBaseCheckButtonTemplate" or "OptionsCheckButtonTemplate"

local function checkbox(name, parent)
local f = CreateFrame("CheckButton", name, parent, "OptionsCheckButtonTemplate")
local f = CreateFrame("CheckButton", name, parent, checkButtonTemplate)
f:SetSize(40, 40)
f.label = _G[f:GetName() .. "Text"]

Expand Down Expand Up @@ -109,21 +111,33 @@ frame.defaultNote.label:SetPoint("TOPLEFT")
frame.defaultNote.label:SetPoint("BOTTOMRIGHT")
frame.defaultNote.label:SetText(L["SoundControl_DefaultNote"])

local panelTabButtonTemplate = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE and "PanelTabButtonTemplate" or "CharacterFrameTabButtonTemplate"
local bd = {
bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true,
edgeSize = 16,
tileSize = 32,
insets = {
left = 2.5,
right = 2.5,
top = 2.5,
bottom = 2.5
}
}
frame.panelContainer = CreateFrame(
"Frame",
"ChocoboSoundControlOptionsPanelContainer",
frame,
BackdropTemplateMixin and "BackdropTemplate")
frame.panelContainer:SetSize(500, 240)
frame.panelContainer:SetPoint("TOP", 0, -200)
frame.panelContainer:SetBackdrop(_G.BACKDROP_TOOLTIP_16_16_5555)
frame.panelContainer:SetBackdropColor(0.2, 0.2, 0.2, 0.9)
frame.panelContainer:SetBackdropBorderColor(0.3, 0.3, 0.3, 1)
frame.panelContainer:SetBackdrop(bd)
frame.panelContainer.tab1 = CreateFrame(
"Button",
"ChocoboSoundControlOptionsPanelContainerTab1",
frame.panelContainer,
"CharacterFrameTabButtonTemplate")
panelTabButtonTemplate)
frame.panelContainer.tab1:SetPoint("LEFT", frame.panelContainer, "BOTTOMLEFT", 5, -12)
frame.panelContainer.tab1:SetText(L["SoundControl_Music"])
frame.panelContainer.tab1:SetScript("OnClick", function()
Expand All @@ -136,7 +150,7 @@ frame.panelContainer.tab2 = CreateFrame(
"Button",
"ChocoboSoundControlOptionsPanelContainerTab2",
frame.panelContainer,
"CharacterFrameTabButtonTemplate")
panelTabButtonTemplate)
frame.panelContainer.tab2:SetPoint("LEFT", frame.panelContainer.tab1, "RIGHT", -10, 0)
frame.panelContainer.tab2:SetText(L["SoundControl_SFX"])
frame.panelContainer.tab2:SetScript("OnClick", function()
Expand All @@ -149,7 +163,7 @@ frame.panelContainer.tab3 = CreateFrame(
"Button",
"ChocoboSoundControlOptionsPanelContainerTab3",
frame.panelContainer,
"CharacterFrameTabButtonTemplate")
panelTabButtonTemplate)
frame.panelContainer.tab3:SetPoint("LEFT", frame.panelContainer.tab2, "RIGHT", -10, 0)
frame.panelContainer.tab3:SetText(L["SoundControl_Ambience"])
frame.panelContainer.tab3:SetScript("OnClick", function()
Expand Down Expand Up @@ -352,8 +366,12 @@ frame.panelContainer.page3.volumeSlider:SetScript("OnMouseWheel", function(self,
end)

function CSCO:Open()
InterfaceOptionsFrame_OpenToCategory(frame)
InterfaceOptionsFrame_OpenToCategory(frame)
if Settings and SettingsPanel then
Settings.OpenToCategory(Chocobo.Name)
else
InterfaceOptionsFrame_OpenToCategory(frame)
InterfaceOptionsFrame_OpenToCategory(frame)
end
end

function CSCO:Update()
Expand Down Expand Up @@ -512,7 +530,17 @@ end

frame:SetScript("OnShow", function() CSCO:Update() end)

frame.OnCommit = function() end
frame.OnDefault = function() end
frame.OnRefresh = function() CSCO:Update() end

PanelTemplates_SetNumTabs(frame.panelContainer, 3)
PanelTemplates_SetTab(frame.panelContainer, 1)

InterfaceOptions_AddCategory(frame)
if Settings and SettingsPanel then
local category = Settings.GetCategory(Chocobo.Name)
local subcategory = Settings.RegisterCanvasLayoutSubcategory(category, frame, "Sound Control")
Settings.RegisterAddOnCategory(subcategory)
else
InterfaceOptions_AddCategory(frame, Chocobo.Name)
end
4 changes: 2 additions & 2 deletions SongsAndMountsPanel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,14 @@
<Anchor point="LEFT" x="5" y="0" />
</Anchors>
</EditBox>
<Button parentKey="AddButton" inherits="OptionsButtonTemplate">
<Button parentKey="AddButton" inherits="UIPanelButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeKey="$parent.EditBox" relativePoint="TOPRIGHT" />
<Anchor point="BOTTOMLEFT" relativeKey="$parent.EditBox" relativePoint="BOTTOMRIGHT" />
<Anchor point="RIGHT" x="20" y="0" />
</Anchors>
</Button>
<Button parentKey="ResetButton" inherits="OptionsButtonTemplate">
<Button parentKey="ResetButton" inherits="UIPanelButtonTemplate">
<Size y="30" />
<Anchors>
<Anchor point="BOTTOMLEFT" />
Expand Down

0 comments on commit 1f159c6

Please sign in to comment.