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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mantendo a Sanidade com o Glade

4,114

Published on

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.

Published in: Technology
2 Comments
1 Like
Statistics
Notes
  • 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...
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • python é dificil, mais dificil que beos
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
4,114
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
134
Comments
2
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. 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

    ×