Mantendo a Sanidade com o Glade
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Mantendo a Sanidade com o Glade

on

  • 6,384 views

Dicas de como usar o glade para criar interfaces com o usuário de forma mais fácil.

Dicas de como usar o glade para criar interfaces com o usuário de forma mais fácil.

Statistics

Views

Total Views
6,384
Views on SlideShare
6,361
Embed Views
23

Actions

Likes
1
Downloads
128
Comments
2

2 Embeds 23

http://www.slideee.com 13
http://www.slideshare.net 10

Accessibility

Categories

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…
  • java++ é melhor que python e o glade não funciona no windows 98. eu tenho testei nao funfou pelo contrario deu erro no pc todo tive que formatar e instalar o kurumin 3.1, mas depois eu consegui instalar o ubuntu 10.9 mas ficou lento, pois meu pc é de 1995 e ficou uma droga de usar, então instalei o windows 95 e está leve mas nada roda...
    Are you sure you want to
    Your message goes here
    Processing…
  • python é dificil, mais dificil que beos
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mantendo a Sanidade com o Glade Presentation Transcript

  • 1. Mantendo a Sanidade Com o Glade Marcelo Lira dos Santos INdT Recife
  • 2. "horrores que o homem não deveria saber que existem"
  • 3. "horrores que o homem não deveria saber que existem"
    • Processo de criação de uma aplicação gráfica:
      • Criar a interface com alguma aplicação visual
      • Gerar código
      • Alterar código gerado
      • Precisar alterar a interface
      • Gerar mais código
      • Re-inserir alterações no novo código gerado
      • Voltar indefinidamente ao passo 4
      • Perder o juízo
  • 4. "horrores que o homem não deveria saber que existem"
  • 5. Preliminares
  • 6. GTK+
    • Toolkit gráfico multiplataforma
      • Linux, Windows, MacOS X
    • Escrito em C
    • Usado por
      • GNOME
      • XFCE
      • Maemo
      • OLPC
      • OpenMoko
  • 7. Widgets
    • Elemento da interface com o qual o usuário interage
    • Widget: Window Gadget
    • Propriedades importantes de um widget:
      • Identificação (nome)
      • Estímulos aos quais ele responde
      • Instruções para disposição (layout)
  • 8. GTK+ GTK+ GDK GLib (all your) Widgets (are belong to us) Abstração das funções primitivas de desenho da plataforma Orientação a Objetos para C (uau!)
  • 9. Bindings
    • Zilhões de bindings
    • Vantagem: use sua linguagem preferida
    C++ (gtkmm) Python (PyGTK) Java (Java-GNOME) C# (GTK#/Mono) Vala PHP (PHP-GTK) Perl (gtk2-perl) Haskell (Gtk2Hs) Ruby (Ruby-GNOME2) Lua (lua-gtk) D (DUI) Ada (GtkAda) GTK+
  • 10. Dissecando a Estrutura
    • Uma aplicação simples num simples ambiente gráfico
  • 11. Dissecando a Estrutura
    • Servidor X
    • Gerenciador de Janelas
    • Janela GDK
    • Widget da Janela
    • Demais widgets
  • 12. Descrevendo a Estrutura
    • XML
      • Boa para descrever estrutura <janela> <caixadetexto/> <botao/> </janela>
  • 13. Analisando o Comportamento
    • Conceitos
      • Eventos
      • Main Loop
      • Sinais
      • Callbacks
  • 14. Camadas Dizem que é uma boa prática de programação!
  • 15. Codando
  • 16. Codando Interfaces (em C)
    • #include <gtk/gtk.h> void on_button_clicked(GtkWidget *button) { g_print(&quot;Botao clicado. &quot;); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkWidget *label; GtkWidget *button; gtk_init(&argc, &argv); g_set_application_name(&quot;Perdendo a sanidade...&quot;); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); vbox = gtk_vbox_new(FALSE, 2); label = gtk_label_new(&quot;Sou um label!&quot;); gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0); button = gtk_button_new_with_label(&quot;Me clique!&quot;); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); g_signal_connect(G_OBJECT(button), &quot;clicked&quot;, G_CALLBACK(on_button_clicked), G_OBJECT(label)); gtk_container_add(GTK_CONTAINER(window), vbox); g_signal_connect(G_OBJECT(window), &quot;delete_event&quot;, G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main(); return 0; }
  • 17. Codando Interfaces (em Vala)
    • using GLib; using Gtk; public class Hello : Window { [Widget] protected VBox vbox; [Widget] protected Label label; [Widget] protected Button button; void on_button_clicked(Button button) { stdout.printf(&quot;Botao clicado. &quot;); } construct { label = new Label(&quot;Sou um label!&quot;); button = new Button.with_label(&quot;Me clique!&quot;); button.clicked += on_button_clicked; vbox = new VBox(false, 2); vbox.pack_start(label, true, true, 0); vbox.pack_start(button, false, true, 0); add(vbox); delete_event += Gtk.main_quit; } static int main (string[] args) { Gtk.init(out args); Environment.set_application_name(&quot;Perdendo a sanidade...&quot;); Hello hello = new Hello(); hello.show_all(); Gtk.main(); return 0; } }
  • 18. Codando Interfaces (em Python)
      • setanta@poe:~/mantendoasanidade$ python
      • >>> import gtk
      • >>> window = gtk.Window()
      • >>> vbox = gtk.VBox()
      • >>> label = gtk.Label(&quot;Sou um label!&quot;)
      • >>> button = gtk.Button(&quot;Me clique!&quot;)
      • >>> vbox.pack_start(label)
      • >>> vbox.pack_start(button)
      • >>> window.add(vbox)
      • >>> def on_button_clicked(button):
      • ... print button
      • ...
      • >>> button.connect(&quot;clicked&quot;, on_button_clicked)
      • 7L
      • >>> window.show_all()
      • >>> gtk.main()
  • 19. DevHelp (pra não ter de lembrar de tudo e esquecer seu nome)
  • 20. Usando o Glade (a aplicacão)
  • 21. Arquivo Glade
  • 22. Usando a LibGlade
    • Constrói a interface a partir do XML contido:
      • num arquivo
      • numa string
    • Conectando sinais e eventos
      • conexão individual
      • autoconnect
      • diferencas de uso nas várias linguagens
  • 23. Usando a LibGlade (em C)
    • // file: hello_glade.c #include <gtk/gtk.h> #include <glade/glade.h> void on_button_clicked(GtkWidget *button) { g_print(&quot;Botao clicado. &quot;); } int main(int argc, char *argv[]) { GladeXML *widget_tree; GtkWidget *window; gtk_init(&argc, &argv); g_set_application_name(&quot;Perdendo a sanidade...&quot;); widget_tree = glade_xml_new(&quot;simple.glade&quot;, NULL, NULL); window = glade_xml_get_widget(widget_tree, &quot;window1&quot;); glade_xml_signal_autoconnect(widget_tree); gtk_widget_show_all(window); gtk_main(); return 0; } ----- para compilar: gcc -rdynamic `pkg-config --libs --cflags gtk+-2.0 libglade-2.0` hello_glade.c -o hello_glade
  • 24. Codando Interfaces (em Python)
      • setanta@poe:~/mantendoasanidade$ python
      • >>> import gtk >>> import gtk.glade
      • >>> class Sample:
      • ... def __init__(self):
      • ... self.widget_tree = gtk.glade.XML(&quot;sample.glade&quot;)
      • ... self.window = self.widget_tree.get_widget(&quot;window1&quot;)
      • ... self.widget_tree.signal_autoconnect(self)
      • ... self.window.show_all()
      • ... gtk.main()
      • ... def on_apply_button_clicked(self, button):
      • ... print &quot;Botao clicado.&quot;
      • ...
      • >>> sample = Sample()
  • 25. Possibilidades
  • 26. GtkBuilder
    • A partir de GTK+ 2.12, pode-se usar GtkBuilder para construir interfaces a partir de descrições em XML
    • Ainda está um tanto incompleta em relação à libglade
  • 27. E se...?
    • O XML de uma interface criada no Glade poderia ser convertido para HTML+CSS+JavaScript
  • 28. Referências
    • http://www.gtk.org
    • GTK+ em Win32 http://gladewin32.sourceforge.net/modules/news/
    • http://www.pygtk.org/
    • Mantendo a Sanidade com o Glade http://www.cin.ufpe.br/~cinlug/wiki/index.php/Mantendo_A_Sanidade_Com_O_Glade
  • 29. Notas (para mim mesmo) -- APAGUE
    • escolha um ponto para mencionar o DevHelp e os pacotes -doc
    • mencione os pacotes -dev quando comecar a programar
  • 30.
    • Atribuição-Compartilhamento pela mesma licença 2.5 ( http://creativecommons.org/licenses/by-sa/2.5/deed.pt )
    • Você pode:
      • copiar, distribuir, exibir e executar a obra
      • criar obras derivadas
      • fazer uso comercial da obra
    • Sob as seguintes condições:
    • Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.
    • Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.
      • Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra.
      • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor.
    • Qualquer direito de uso legítimo (ou &quot;fair use&quot;) concedido por lei, ou qualquer outro direito protegido pela legislação local, não são em hipótese alguma afetados pelo disposto acima.
    • Este é um sumário para leigos da Licença Jurídica (na íntegra: http://creativecommons.org/licenses/by-sa/2.5/br/legalcode ). Termo de exoneração de responsabilidade: http://creativecommons.org/licenses/disclaimer-popup?lang=pt