Ir para conteúdo
Entre para seguir isso  
Mock

Formataçao de texto em IUP (pog)

Recommended Posts

Mock    32
Mock

Como IUP é uma linguagem MUITO simples pra interface em lua (se baseia apenas em tabelas), ela é muito limitada em recursos. Como por exemplo a sua concorrente a WxLua (que por sinal é muito melhor que a IUP porem é mais complexa) nao tem tantos recursos como texto formatado.

Exemplo em java você pode usar HTML nas labels pra deixar um texto vermelho ou verde ou algo assim.

Como IUP nao tem isso, e WxLua até hoje eu nao vi ninguem reproduzir (ao nao ser em UM example) eu decidi faze um pog mto loko de dorgas ;D

 

Em IUP você claro que pode mudar a fonte, tamanho e cor. porem você nao pode faze isso "Oie qqq"

só assim: Oie qqq

Entao fiz uma iup.hbox (horizontal box - Caixa horizontal, ou seja tudo que vc poe nela fica alinhado horizontalmente, exemplo botoes etc.)

E nessa hbox eu puis um label pra cada seção da formatação.

Exemplo, se eu por na funçao 'nao usem dorgas', será um label só, mas se eu por: 'nao [c=255 0 0]usem[/c] dorgas' será 2 labels e aparecerá algo assim:

nao usem dorgas

 

Em fim como ninguem nesse forum sabe usar IUP, o unico que mexe com interface alem de min é o socket entao imagino q ninguem nao esteja nem fodendo pro topico mais mesmo assim postei, vai que alguem se interessa.

function createF(t)
local lua = 'iup.hbox{'
local result = {}
local n = 0
for i,b in (''..t..''):gmatch("(%[f=\".-\"%].+%[/f%])") do
	t = t:gsub("(%[f=\".-\"%].-%[/f%])", function(s)
	local f,tt = s:match('%[f=\"(.-)\"%](.-)%[/f%]')
	n = n+1 result[n] = 'iup.label{FONT = "'..f..'",title=[['..tt..']]},'
	return '€€'..n..'€€' end)
end
for i,b in (''..t..''):gmatch("(%[c=\"%d+ %d+ %d+\" f=\".-\"%].-%[/c%])") do
	t = t:gsub("(%[c=\"%d+ %d+ %d+\" f=\".-\"%].-%[/c%])", function(s)
	local r,g,b,f,tt = s:match("%[c=\"(%d+) (%d+) (%d+)\" f=\"(.-)\"%](.+)%[/c%]")
	n = n+1 result[n] = 'iup.label{FONT = "'..f..'",FGCOLOR=\''..r..' '..g..' '..b..'\',title=[['..tt..']]},'
	return '€€'..n..'€€' end)
end
for i,b,f in pairs(string.explode(t,'€€')) do
	if tonumber( then
		lua = lua..result[tonumber(]
	else
		lua = lua..'iup.label{title=[['..b..']]},\n'
	end
	--print(i,
end
local f = assert(loadstring('return '..lua..'}'))
return f()
end

Aqui eu fiz um rapido exemplo:

require( "iuplua" )


function string.explode(self, sep)--By socket  (só usei pq tava pequena)
   local result = {}
   self:gsub("[^".. sep .."]+", function(s) table.insert(result, s) end)
   return result
end
function createF(t)
local lua = 'iup.hbox{'
local result = {}
local n = 0
for i,b in (''..t..''):gmatch("(%[f=\".-\"%].+%[/f%])") do
	t = t:gsub("(%[f=\".-\"%].-%[/f%])", function(s)
	local f,tt = s:match('%[f=\"(.-)\"%](.-)%[/f%]')
	n = n+1 result[n] = 'iup.label{FONT = "'..f..'",title=[['..tt..']]},'
	return '€€'..n..'€€' end)
end
for i,b in (''..t..''):gmatch("(%[c=\"%d+ %d+ %d+\" f=\".-\"%].-%[/c%])") do
	t = t:gsub("(%[c=\"%d+ %d+ %d+\" f=\".-\"%].-%[/c%])", function(s)
	local r,g,b,f,tt = s:match("%[c=\"(%d+) (%d+) (%d+)\" f=\"(.-)\"%](.+)%[/c%]")
	n = n+1 result[n] = 'iup.label{FONT = "'..f..'",FGCOLOR=\''..r..' '..g..' '..b..'\',title=[['..tt..']]},'
	return '€€'..n..'€€' end)
end
for i,b,f in pairs(string.explode(t,'€€')) do
	if tonumber( then
		lua = lua..result[tonumber(]
	else
		lua = lua..'iup.label{title=[['..b..']]},\n'
	end

end

local f = assert(loadstring('return '..lua..'}'))
return f()
end

dlg = iup.dialog {
iup.frame{
		title="Título da frame",
		size='200x100', --tamanho da frame
		iup.vbox{--Alinha tudo verticalmente
			---Aqui a funçao
			createF('ae essa cor é [c="0 0 255" f="HELVETICA_BOLD_8"]VERDE[/c] e essa é [c="0 255 0" f="HELVETICA_BOLD_8"]VERDE[/c]'),
			--outra linha
			createF('E a cor dessa aki é [c="255 200 255" f="HELVETICA_BOLD_8"]Cor de quem foi ban[/c]'),
			createF('Se deixar c= 0 0 0 fica preto. Se quiserr mude a pra uma fonte'),
			createF('[c="0 0 0" f="HELVETICA_BOLD_14"]mais maior[/c]'),
		}
	},
   title = "Exemplo do mock",
 }

dlg:showxy ( iup.CENTER, iup.CENTER )

if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
 iup.MainLoop()
end

 

E a foto dele rodando:

imagemwca.png

 

:coolface::coolface:

Editado por Mickfern

Compartilhar este post


Link para o post
Compartilhar em outros sites
ADM MaX DE    0
ADM MaX DE

Q bagui complicado hein, pqp rs

E ótimo portuga mock!! (y auhauhauhau'

e realmente é de dorgas isso '-'

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

Repare. Essa cor é verde

dps q eu vi

Compartilhar este post


Link para o post
Compartilhar em outros sites
esau    0
esau

MUito tenso isso, de dorgas realmente², da uma dor no cerebro so de olhar pro codigo...

Repare. Essa cor é verde

dps q eu vi

Pensei que isso era um mindfuck ;d

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×