Your SlideShare is downloading. ×
  • Like
Desenvolvendo GUI com GTK+ - Frederico Schardong
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Desenvolvendo GUI com GTK+ - Frederico Schardong

  • 1,707 views
Published

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. …

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
1,707
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
60
Comments
1
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Desenvolvendo GUI com GTK+
  • 2. História
    • GIMP (GNU Image Manipulator Program) criado em 1995.
    • 3. GTK (GIMP Toolkit) foi lançado em 1998
      • Criado para substituir o Motif
    • GTK+ 2 foi lançado em 2002
      • Multithread
      • 4. Novos componentes
      • 5. Incompatível com GTK 1
  • 6. Casos de sucesso
    • GIMP
  • 7. Casos de sucesso
    • GNOME
  • 8. Casos de sucesso
    • MAEMO
  • 9. Casos de sucesso
    • Firefox
  • 10. Características do GTK+
  • 16. Multiplataforma
    • GDK (GIMP Drawing Kit) e Cairo para desenhos básicos
    • 17. Pango para renderizar e formatar textos
    • 18. GLib para o baixo nível
      • Multithread
  • 19. Look and feel
  • 20. Conceitos básicos
    • Widget (window gadget)
      • Componente básico de uma GUI
      • 21. Segue conceito da POO
    • Sinais
      • Eventos disparados por widgets
      • 22. Interação homem-máquina
    • Callback
      • Funções chamadas para tratar os sinais
      • 23. Laço principal do GTK+ espera o retorno da função
  • 24. Binds
  • 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 "clicked" do botão. def onClick(self, widget, data=None): print "Hello World" #Cria o botão com label button = gtk.Button("Hello World") #Altera o tamanho do botão button.set_size_request(200, 70) #Conecta o sinal "clicked" do botão ao callback "onClick" button.connect("clicked", onClick, None) #Cria a janela window = gtk.Window(gtk.WINDOW_TOPLEVEL) #Seta o título window.set_title("Tchelinux"); #Conecta o sinal de destruir ao método de encerrar o GTK+ window.connect("destroy", 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. 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. 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. Qual bind escolher?
    • O melhor para sua necessidade
  • 29. Glade
  • 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. GTK+ e openGL = GtkGLExt
  • 32. Obrigado
    • Contato:
      • [email_address]
    • Listas
      • [email_address]
      • 33. [email_address]
      • 34. [email_address]