Skip to content

Commit 8f5dc9c

Browse files
committed
Update BlizzConfigDialog-1.0.lua
Add more types
1 parent d633101 commit 8f5dc9c

File tree

1 file changed

+39
-6
lines changed

1 file changed

+39
-6
lines changed

BlizzConfigDialog-1.0.lua

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
local LibStub = LibStub
66
local reg = LibStub("AceConfigRegistry-3.0")
77

8-
local MAJOR, MINOR = "BlizzConfigDialog-1.0", 1
8+
local MAJOR, MINOR = "BlizzConfigDialog-1.0", 2
99
local BlizzConfigDialog = LibStub:NewLibrary(MAJOR, MINOR)
1010

1111
if not BlizzConfigDialog then return end
@@ -76,6 +76,7 @@ local isInherited = {
7676
local stringIsLiteral = {
7777
name = true,
7878
desc = true,
79+
action = true,
7980
icon = true,
8081
usage = true,
8182
width = true,
@@ -258,6 +259,15 @@ local function CheckOptionHidden(option, options, path, appName)
258259
return GetOptionsMemberValue("hidden", option, options, path, appName)
259260
end
260261

262+
---@param minValue number
263+
---@param maxValue number
264+
---@return number|function
265+
local function GetFormatter1to10(minValue, maxValue)
266+
return function(value)
267+
return RoundToSignificantDigits(((value-minValue)/(maxValue-minValue) * 9) + 1, 1)
268+
end
269+
end
270+
261271
--- Feed the given options to the Blizzard settings panel
262272
--
263273
-- @param appName The application name as given to `:RegisterOptionsTable()`
@@ -316,12 +326,15 @@ local function FeedOptions(appName, options, path, group, category, layout, isRo
316326
end
317327
else
318328
local function OnSettingChanged(_, setting, val)
319-
local variable = setting:GetVariable()
320329
v.set(setting, val);
321330
end
322331

323332
if v.type == "execute" then
324-
-- TODO
333+
local buttonName = GetOptionsMemberValue("buttonName", v, options, path, appName)
334+
local desc = GetOptionsMemberValue("desc", v, options, path, appName)
335+
local addSearchTags = true;
336+
local initializer = CreateSettingsButtonInitializer(name, buttonName or name, v.func, desc, addSearchTags);
337+
layout:AddInitializer(initializer);
325338

326339
elseif v.type == "input" then
327340
-- TODO
@@ -337,7 +350,19 @@ local function FeedOptions(appName, options, path, group, category, layout, isRo
337350
setting:SetValue(value)
338351

339352
elseif v.type == "range" then
340-
-- TODO
353+
local defaultValue = tonumber(GetOptionsMemberValue("defaultValue", v, options, path, appName))
354+
local setting = Settings.RegisterProxySetting(category, "PROXY_" .. k, Settings.DefaultVarLocation,
355+
Settings.VarType.Number, name, defaultValue, v.get, v.set);
356+
357+
local minValue = GetOptionsMemberValue("min", v, options, path, appName)
358+
local maxValue = GetOptionsMemberValue("max", v, options, path, appName)
359+
local step = GetOptionsMemberValue("step", v, options, path, appName)
360+
local desc = GetOptionsMemberValue("desc", v, options, path, appName)
361+
362+
local sliderOptions = Settings.CreateSliderOptions(minValue, maxValue, step);
363+
364+
sliderOptions:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right);
365+
Settings.CreateSlider(category, setting, sliderOptions, desc);
341366

342367
elseif v.type == "select" then
343368
local value = GetOptionsMemberValue("get", v, options, path, appName)
@@ -352,7 +377,7 @@ local function FeedOptions(appName, options, path, group, category, layout, isRo
352377
end
353378
return container:GetData()
354379
end
355-
380+
356381
local setting = Settings.RegisterAddOnSetting(category, name, k, type(defaultValue), defaultValue)
357382
Settings.CreateDropDown(category, setting, GetOptions, desc)
358383
Settings.SetOnValueChangedCallback(k, OnSettingChanged)
@@ -365,7 +390,15 @@ local function FeedOptions(appName, options, path, group, category, layout, isRo
365390
-- TODO
366391

367392
elseif v.type == "keybinding" then
368-
-- TODO
393+
local action = GetOptionsMemberValue("action", v, options, path, appName);
394+
assert(action ~= "" and action ~= nil)
395+
396+
local bindingIndex = C_KeyBindings.GetBindingIndex(action);
397+
assert(bindingIndex ~= nil)
398+
399+
local initializer = CreateKeybindingEntryInitializer(bindingIndex, true);
400+
initializer:AddSearchTags(GetBindingName(action));
401+
layout:AddInitializer(initializer);
369402

370403
elseif v.type == "header" then
371404
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer(name));

0 commit comments

Comments
 (0)