Encontro DebianDayPT 2008 - Inscreve-te! | Visite também o Planeta DebianPT.org

Uma passagem pelo Debianpt.org e pelo Gtk+

Submetido por gass a Terça, 2006-10-10 23:43.

Hoje resolvi passar e postar (não uma bosta, mas um artigo e uma entrada no blog). Fiquei enraivecido, porque o ruipb ultrapassou-me na pontuação ... (merece, merece).

Por outro lado venho aqui relatar um contacto que tive durante a semana que passou e que continuou durante esta semana.
Para as perguntas que possam estar a surgir ... não, não conheci nenhuma gaja, muito menos boa e loira, de olhos azuis ... pessoalmente até prefiro, DE VERDADE, as morenas, mas pronto.

Iniciei na semana passada o desenvolvimento de uma aplicação que será essncialmente (ou no seu todo) para windows, mas a qual vai estar, enquanto der, com desenvolvimento em windows e linux.
A aplicação é em C, com interface e vai estar optimizada para a melhor performance, sendo por isso desenvolvida em C, com interface em windows.forms em windows e ... gtk+ em linux.
É exactamente de gtk+ que vos quero dar umas dicas ... aquilo é tremendamente acessivel ... desde que considerem C acessivel.
Nunca tinha programado sériamente em gtk+, apenas umas coisas em pygtk aqui à um mesito e realmente devo dizer que embora não tenha a simplicidade de uma linguagem orientada a objectos e flexivel como python, C e gtk+ fazem um bom par (não pah, não é de mamas).

Há quem diga que gtk é complicado e está mal documentado ... a primeira é falsa e a ultima é verdadeira. A documentação escasseia, embora o devhelp tenha lá muito documentação, há ainda muita que falta, especialmente organizada e acessivel a quem é iniciado.

Quanto ao gtk+ propriamente dito, funciona como qualquer outro tipo de interface, ou talvez mais simples.
A base do raciocínio é sinais, eventos e um loop.
Quem estiver a ler até aqui já me começa a chamar maluco, mas é basicamente isto e é isto que deveria ser a primeira frase de qualquer tutorial.

Em gtk começa-se por definir o interface propriamente dito, ao qual dizemos que quando existir um sinal, executa determinada acção (evento). Termina no chamado "gtk loop" que não é mais que um loop à espera que algo aconteça e chame a função que lhe está destinada.
Complicado? perdido?

loop

while (sinal==0)
{
esperamos um sinal
}

chamamos a funçao destinada ao sinal ... goto loop

isto aliado à construção de interfaces no glade ... até se torna bastante mais produtivo com que alguma vez imaginei.

Aquilo que não gosto é que é só criar ponteiros para estruturas de pointeiros para estruturas.

Baralhados??? Então vão mas é aprender C e gestão de memória.

Comentários

Opções de visualização dos comentários

Seleccione a sua forma preferida de visualização de comentários e clique "Gravar configuração" para activar as suas alterações.

so' n percebo o pq d usares

so' n percebo o pq d usares winforms (obrigatoriedade do trabalho?) visto haver cygwin/mingw/gtk+/glade em windows.
o devc++ (ide pra mingw) e' mt bom pra desmamar aficionados d MSVS.
gtk+ e' um belo toolkit e magnifico pra quem ja esta' habituado a C, s bem q ha vezes em q desejo q houvesse algo mais ao estilo dos interfaces graficos do smalltalk pra python.

---
cumps()
:voxvirus

simples!

A formação do pessoal de engenharia é minimo em programação, portanto existe a exigência de fazer aplicações num ambiente que lhes seja familiar ou que lhes permita uma aprendizagem rápida.

Aquilo que estou a fazer é para uma base modular para aplicação em visão artificial para a industria.

A base TEM que ser numa linguagem rápida, de mais baixo nível. Mas os módulos "customizados" não. A ideia é permitir que o pessoal desenvolva em Visual Basic, por exemplo, ferramenta amplamente utilizada, e adicione ao programa.

Por estas razões, não existe grande margem para manobra se quero atingir esta facilidade, pois esta aplicação substitui outras já existentes, mas mais dificeis de configurar e mais caras.

Se complico ...

Eu comecei agora a usar o

Eu comecei agora a usar o glade com pyGTK para fazer uma pequena aplicação para autenticar na e-U (podia ser simples, mas andamos a inventar um pouco para aprender quer python quer a usar o glade) e é bastante fácil de usar e estou a gostar bastante disto. A única diferença de usar pyGTK para C é realmente o problema dos ponteiros e problemas associados.

Este teu post podia ter sido mais em jeito de tutorial simples para adoçar mais a boca aos ouvintes :)

Boa sorte para o teu projecto

Para quem acredita.

gtk+ é muito simples de perceber, depois de entender 2 ou 3 coisas. Não é preciso um grande tutorial, mas sim ter o devhelp aberto e o irc no canal #gtk no irc.gnome.org e o ##C na freenode. os tipos são muito fixes e respondem até quase a problemas existênciais ... o segredo é ser simpatico e ... agradecer.

No entanto, gtk+ tem 2 ou 3 coisas que se precisam entender, algumas das quais ainda não percebi bem.

1 - saber como funciona esquemáticamente uma aplicação com a utilização de gtk. (checked)
2 - Saber quais as widgets que existem e saber manusea-las (checked)
3 - saber o que raio é a Glib, GDK, Pango, gtk e demais merdinhas que circundam o gtk+
4 - Saber saber as entranhas do linux pra programação de aplicação (ouvi dizer que com o dbus se conseguem assim umas features fixes)

um conselho, isso que fazes para a e-U tenta mas é incorporar isso no network-manager ou coisa parecida...

abraço.

Ps: tutoriais ... há muitos ... uma coisa que explique o que é o mundo gtk dos pés à cabeça não eiste ... ou é muito dificil de encontrar.

Sinceramente integrar isto

Sinceramente integrar isto com o network-manager é algo que não me alicia minimamente :), deve ser por eu detestar essa aplicação, nunca me funcionou decentemente.

Glib -> 'objectos' para OOP

Glib -> 'objectos' para OOP em C
GDK -> canvas
Pango -> text rendering
ATK -> acessibilidade

devias passar uns minutitos no http://gtk.org/ ;)

o d-bus e' basicamente para gestao de eventos, passar mensagens ... (apt-cache show dbus dbus-1)

espero ter sido de ajuda

---
cumps()
:voxvirus

Back to top