0
Desenvolvendo GUI com GTK+
História <ul><li>GIMP (GNU Image Manipulator Program) criado em 1995.
GTK (GIMP Toolkit) foi lançado em 1998 </li><ul><li>Criado para substituir o Motif </li></ul><li>GTK+ 2 foi lançado em 200...
Novos componentes
Incompatível com GTK 1 </li></ul></ul>
Casos de sucesso <ul><li>GIMP </li></ul>
Casos de sucesso <ul><li>GNOME </li></ul>
Casos de sucesso <ul><li>MAEMO </li></ul>
Casos de sucesso <ul><li>Firefox </li></ul>
Características do GTK+ <ul><li>Multiplataforma
Multithread
Orientado a eventos
Orientado a objeto
Escrito em C
Bem documentado </li></ul>
Multiplataforma <ul><li>GDK (GIMP Drawing Kit) e Cairo para desenhos básicos
Pango para renderizar e formatar textos
GLib para o baixo nível </li><ul><li>Multithread </li></ul></ul>
Look and feel
Upcoming SlideShare
Loading in...5
×

Desenvolvendo GUI com GTK+ - Frederico Schardong

1,766

Published on

Resumo: Será abordado nesta palestra rapidamente a história do GTK+, casos de sucesso, como o GTK é multiplataforma, como funciona a programação dirigida a eventos, widgets.
Será mostrado trechos de código de GTK na sua linguagem "original", que é o C, também será abordado seus binds, como PHP-GTK e PyGTK.
A ferramenta glade que torna o desenvolvimento de interfaces gráficas rápido e simples será abordada também.

Sobre o palestrante: Técnico em redes de computadores e estudante de engenharia da computação na UNIVATES (Lajeado - RS), trabalha com desenvolvimento de software livre a 1 ano e meio na SOLIS cooperativa de soluções livres. Usuário de Linux desde os 15 anos e amante da cultura livre, com participação em inúmeros eventos sobre software livre. Atualmente estou escrevendo um livro sobre programação com GTK+ em C para a Packt Publish.

Published in: Technology, Art & Photos
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
1,766
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
65
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Desenvolvendo GUI com GTK+ - Frederico Schardong"

  1. 1. Desenvolvendo GUI com GTK+
  2. 2. História <ul><li>GIMP (GNU Image Manipulator Program) criado em 1995.
  3. 3. GTK (GIMP Toolkit) foi lançado em 1998 </li><ul><li>Criado para substituir o Motif </li></ul><li>GTK+ 2 foi lançado em 2002 </li><ul><li>Multithread
  4. 4. Novos componentes
  5. 5. Incompatível com GTK 1 </li></ul></ul>
  6. 6. Casos de sucesso <ul><li>GIMP </li></ul>
  7. 7. Casos de sucesso <ul><li>GNOME </li></ul>
  8. 8. Casos de sucesso <ul><li>MAEMO </li></ul>
  9. 9. Casos de sucesso <ul><li>Firefox </li></ul>
  10. 10. Características do GTK+ <ul><li>Multiplataforma
  11. 11. Multithread
  12. 12. Orientado a eventos
  13. 13. Orientado a objeto
  14. 14. Escrito em C
  15. 15. Bem documentado </li></ul>
  16. 16. Multiplataforma <ul><li>GDK (GIMP Drawing Kit) e Cairo para desenhos básicos
  17. 17. Pango para renderizar e formatar textos
  18. 18. GLib para o baixo nível </li><ul><li>Multithread </li></ul></ul>
  19. 19. Look and feel
  20. 20. Conceitos básicos <ul><li>Widget (window gadget) </li><ul><li>Componente básico de uma GUI
  21. 21. Segue conceito da POO </li></ul><li>Sinais </li><ul><li>Eventos disparados por widgets
  22. 22. Interação homem-máquina </li></ul><li>Callback </li><ul><li>Funções chamadas para tratar os sinais
  23. 23. Laço principal do GTK+ espera o retorno da função </li></ul></ul>
  24. 24. Binds
  25. 25. Hello World pyGTK #!/usr/bin/env python #coding: utf-8 #Importa o GTK+ 2 import pygtk pygtk.require('2.0') import gtk #Cria o callback chamado no evento &quot;clicked&quot; do botão. def onClick(self, widget, data=None): print &quot;Hello World&quot; #Cria o botão com label button = gtk.Button(&quot;Hello World&quot;) #Altera o tamanho do botão button.set_size_request(200, 70) #Conecta o sinal &quot;clicked&quot; do botão ao callback &quot;onClick&quot; button.connect(&quot;clicked&quot;, onClick, None) #Cria a janela window = gtk.Window(gtk.WINDOW_TOPLEVEL) #Seta o título window.set_title(&quot;Tchelinux&quot;); #Conecta o sinal de destruir ao método de encerrar o GTK+ window.connect(&quot;destroy&quot;, gtk.main_quit) #Adiciona o botão a janela window.add(button) #Mostra a janela com o botão window.show_all() #Inicia o GTK+ gtk.main()
  26. 26. Hello World PHP-GTK <? #Cria o callback chamado no evento &quot;clicked&quot; do botão. function onClick() { echo &quot;Hello World &quot;; } #Cria o botão com label $botao = new GtkButton('Hello World'); #Altera o tamanho do botão $botao->set_size_request(200, 70); #Conecta o sinal &quot;clicked&quot; do botão ao callback &quot;hello&quot; $botao->connect('clicked', 'onClick'); #Cria a janela $janela = new GtkWindow(); #Seta o título $janela->set_title('Tchelinux'); #Conecta o sinal de destruir ao método de encerrar o GTK+ $janela->connect('destroy', array('gtk', 'main_quit')); #Adiciona o botão a janela $janela->add($botao); #Mostra a janela com o botão $janela->show_all(); #Inicia o GTK+ Gtk::main(); ?>
  27. 27. Hello World C-GTK //Inclui o GTK+ 2 #include <gtk-2.0/gtk/gtk.h> //Cria o callback chamado no evento &quot;clicked&quot; do botão. void onClick(GtkWidget *w, gpointer p) { g_print(&quot;Hello world &quot;); } void main(int argc, char **argv) //default main function { //Cria os widgets GtkWidget *window, *button; //Incia o GTK+ gtk_init(&argc, &argv); //Cria o botão com label button = gtk_button_new_with_label(&quot;Hello world&quot;); //Altera o tamanho do botão gtk_widget_set_size_request(button, 200, 70); //Conecta o sinal &quot;clicked&quot; do botão ao callback &quot;hello&quot; gtk_signal_connect(GTK_OBJECT(button), &quot;clicked&quot;, onClick, NULL); //Cria a janela window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Seta o título gtk_window_set_title(GTK_WINDOW(window), &quot;Tchelinux&quot;); //Conecta o sinal de destruir ao método de encerrar o GTK+ gtk_signal_connect(GTK_OBJECT(window), &quot;destroy&quot;, gtk_main_quit, NULL); //Adiciona o botão a janela gtk_container_add(GTK_CONTAINER(window), button); //Mostra a janela com o botão gtk_widget_show_all(window); //Inicia o GTK+ gtk_main(); }
  28. 28. Qual bind escolher? <ul><li>O melhor para sua necessidade </li></ul>
  29. 29. Glade
  30. 30. Glade <?php $glade = new GladeXML('teste.glade'); $botao = $glade->get_widget('button'); $label = $glade->get_widget('label'); $botao->connect_simple('clicked', 'hello_world', $label); function hello_world($label) { $label->set_text('Hello World'); } Gtk::Main(); ?>
  31. 31. GTK+ e openGL = GtkGLExt
  32. 32. Obrigado <ul><li>Contato: </li><ul><li>[email_address] </li></ul><li>Listas </li><ul><li>[email_address]
  33. 33. [email_address]
  34. 34. [email_address] </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×