STK – Small Toolkit

Desde algum tempo, vinha amadurecendo a idéia de escrever uma toolkit de widgets básica baseada em Xlib… janelas, botões, textbox, progressbar, coisas simples assim que às vezes ajudam a criar programas simples para fins específicos. Bom, isso já existe, não há novidade nenhuma, pois para ambientes XWindow, existem inúmeras toolkits para desenhar interfaces gráficas, como GTK+, Qt, wxWidgets, etc. Basicamente já utilizei algumas delas em projetos que trabalhei ou coisas pessoais, mas meu desejo mesmo era escrever a minha. Depois de quase 1 ano pensando esparsamente nesta idéia, um dia, depois de uma viagem de 6 horas entre SP e RJ, cheguei em casa, encontrei meu primo, tomamos umas cervejas belgas e eu disse à mim mesmo: É hoje que eu começo a escrever esse negócio.

Logo após meu primo ir para sua casa, sentei e começei a ver como funcionava a Xlib. Ehhhh coisa estranha. Biblioteca doida demais, mas interessante ao mesmo tempo. Como a Xlib não te oferece widgets, mas somente primitivas geométricas e janelas básicas, tive que começar a ler códigos e códigos alheios para entender seu funcionamento. Depois de ver como eu poderia ter pelo menos um janela básica, era hora de começar a pensar como eu ia escrever o event listener dos widgets, o cara basicamente que trata os eventos que acontecem com os widgets, como click, drag, keyboard, etc. Passei metade da noite escrevendo o event listener, depois uma janela que se registrasse nele e respondesse à eventos. De primeira funcionou! Fiquei muito feliz, pois era o embrião de uma toolkit já!

No dia seguinte resolvi escrever botões, pois são essenciais para que ações sejam tomadas dentro de um programa com UI. Passei  meu dia escrevendo o botão, e no final, tinha um quadradinho que respondia à clicks e chamava callbacks, foi o máximo! No outro dia eu escrevi os efeitos do botão, para que desse a impressão de estar afundando quando pressionado. Depois de mais alguns ajustes no dia seguinte, resolvi que era hora de fazer um textbox, tanto para entrada, quanto para saída de texto. Como sou um belo preguiçoso (afinal sou programador), resolvi ir catar os fontes de alguém para ver se dava pra copiar algo, mas para minha frustração e sorte (explico depois), não achei nenhum código que eu pudesse adaptar facilmente ao meu.

Iria dar mais trabalho copiar e ajustar os códigos que eu achei do que escrever o meu próprio, o que mesmo assim, não me fez escrever o textbox logo em seguida. Conversando com um amigo, Rodolfo Lima, um ótimo programador que também já tinha feito uma toolkit gráfica, perguntei, “Cara, como você fez a entrada de texto da tua toolkit?”, e pra minha surpresa, ele disse, “eu não fiz, ia dar trabalho demais, é complicado e eu não tinha tempo pra escrever”. Ele me encorajou a escrever a minha! Por sorte (a sorte citada anteriormente que não parecia sorte nenhuma) de ter lido tanto código de pessoas que tinham feito isso, consegui pegar o conceito e comecei a escrever a minha, sem medo de fazer besteiras ou simplesmente não conseguir.

Depois de dois dias, voilà, tinha uma textbox que eu conseguia digitar texto, com rolagem vertical e tudo. Claro, era (ainda é) bem básica, tinha alguns problemas, agora resolvidos! Ela quebra um galho pra maioria dos casos. Após essa pequena jornada, comecei e pensar em outros widgets, para realmente ter algo que alguém pudesse usar para criar aplicações básicas. Ontem eu terminei minha progress bar, o resto eu deixo para vocês verem, tanto como código quanto como vídeos que eu tenho gravado em cada etapa do desenvolvimento.

Fontes do projeto:

https://github.com/gabrield/stk

Vídeos:

http://www.youtube.com/playlist?list=PLGB6MLZuwlwryn4u2ttf3EbYDe2D6TDnZ&feature=view_all

Feedbacks, dicas, críticas, entre outros, são bem-vindos!

Abraços!!!

2 comentários sobre “STK – Small Toolkit

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s