Sign in to follow this  
Azuron

GUI и примеры, помогите понять

1 post in this topic

Привет, пытаюсь создать интерфейс настроек для аддона, но не могу никак разобраться с виджетами.

Я создаю 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 без виджетов. Может быть есть какие-то аддоны, где можно понять простую реализацию нескольких кнопок на панельке? Или проще создать несколько вариантов одной кнопки и прописать им разные значения?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this