Привет, пытаюсь создать интерфейс настроек для аддона, но не могу никак разобраться с виджетами.
Я создаю mainform, в которой у меня дети: кнопка аддона и mainpanel, а в mainpanel: чекбокс, текст, и текстура backlayer.
local MainPanel = mainForm:GetChildChecked( "MainPanel", false )
local text = MainPanel:GetChildChecked( "Text", false ):GetWidgetDesc()
local desc = mainForm:GetChildChecked( "MainPanel", false ):GetWidgetDesc()
local check = MainPanel:GetChildChecked( "CheckBox", false ):GetWidgetDesc()
local Settings = nil
MainPanel:Show( false )
Вызываю функцию создания окошка из полученных виджетов(подсмотрел как это происходит в currencyinfo):
function CreateSettings()
if not Settings then
Settings = mainForm:CreateWidgetByDesc( desc )
Settings:SetName("Settings")
Settings:SetPriority(200)
Settings:Show(false)
local p = Settings:GetPlacementPlain()
p.alignX = WIDGET_ALIGN_LOW
p.alignY = WIDGET_ALIGN_LOW
p.sizeX = 250
p.sizeY = 100
Settings:SetPlacementPlain(p)
--Создаем чекбокс
local check1 = MainPanel:CreateWidgetByDesc( check )
check1:SetName("SettingsCheck1")
local pos = check1:GetPlacementPlain()
pos.posX = 15
pos.posY = 15
check1:SetPlacementPlain(pos)
check1:Show( true )
Settings:AddChild(check1)
--Текст1
local Text1 = MainPanel:CreateWidgetByDesc( text )
local pos = Text1:GetPlacementPlain()
pos.sizeX = 150
pos.sizeY = 18
pos.posX = 40
pos.posY = 15
Text1:SetPlacementPlain(pos)
Text1:SetFormat( userMods.ToWString('<header alignx="left" fontsize="14" outline="1" shadow="0" color="0xFFFFFFFF"><rs class="class"><r name="value"/></rs></header>') )
Text1:SetVal("value", userMods.ToWString("Значение 1"))
Text1:Show( true )
Settings:AddChild(Text1)
local check2 = MainPanel:CreateWidgetByDesc( check )
check2:SetName("SettingsCheck2")
local pos = check2:GetPlacementPlain()
pos.posX = 15
pos.posY = 40
check2:SetPlacementPlain(pos)
check2:Show( true )
Settings:AddChild(check2)
--Текст2
local Text2 = MainPanel:CreateWidgetByDesc( text )
local pos = Text2:GetPlacementPlain()
pos.sizeX = 150
pos.sizeY = 18
pos.posX = 40
pos.posY = 40
Text2:SetPlacementPlain(pos)
Text2:SetFormat( userMods.ToWString('<header alignx="left" fontsize="14" outline="1" shadow="0" color="0xFFFFFFFF"><rs class="class"><r name="value"/></rs></header>') )
Text2:SetVal("value", userMods.ToWString("Значение 2"))
Text2:Show( true )
Settings:AddChild(Text2)
DnD:Init(186, Settings, Settings, true)
end
end
И вызываю само окошко кнопкой:
function ShowSettingsWindow()
if Settings:IsVisible() then
Settings:Show(false)
else
Settings:Show(true)
end
end
Однако появляется mainpanel без виджетов. Может быть есть какие-то аддоны, где можно понять простую реализацию нескольких кнопок на панельке? Или проще создать несколько вариантов одной кнопки и прописать им разные значения?