Desenvolvendo GUI com GTK+ - Frederico Schardong
Upcoming SlideShare
Loading in...5
×
 

Desenvolvendo GUI com GTK+ - Frederico Schardong

on

  • 2,078 views

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.

Statistics

Views

Total Views
2,078
Views on SlideShare
2,078
Embed Views
0

Actions

Likes
1
Downloads
58
Comments
1

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Desenvolvendo GUI com GTK+ - Frederico Schardong Desenvolvendo GUI com GTK+ - Frederico Schardong Presentation Transcript

  • Desenvolvendo GUI com GTK+
  • História
    • GIMP (GNU Image Manipulator Program) criado em 1995.
    • GTK (GIMP Toolkit) foi lançado em 1998
      • Criado para substituir o Motif
    • GTK+ 2 foi lançado em 2002
      • Multithread
      • Novos componentes
      • Incompatível com GTK 1
  • Casos de sucesso
    • GIMP
  • Casos de sucesso
    • GNOME
  • Casos de sucesso
    • MAEMO
  • Casos de sucesso
    • Firefox
  • Características do GTK+
    • Multiplataforma
    • Multithread
    • Orientado a eventos
    • Orientado a objeto
    • Escrito em C
    • Bem documentado
  • Multiplataforma
    • GDK (GIMP Drawing Kit) e Cairo para desenhos básicos
    • Pango para renderizar e formatar textos
    • GLib para o baixo nível
      • Multithread
  • Look and feel
  • Conceitos básicos
    • Widget (window gadget)
      • Componente básico de uma GUI
      • Segue conceito da POO
    • Sinais
      • Eventos disparados por widgets
      • Interação homem-máquina
    • Callback
      • Funções chamadas para tratar os sinais
      • Laço principal do GTK+ espera o retorno da função
  • Binds
  • 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()
  • 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(); ?>
  • 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(); }
  • Qual bind escolher?
    • O melhor para sua necessidade
  • Glade
  • 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(); ?>
  • GTK+ e openGL = GtkGLExt
  • Obrigado
    • Contato:
      • [email_address]
    • Listas
      • [email_address]
      • [email_address]
      • [email_address]