Mantendo a Sanidade com o Glade

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

Post a comment
Embed Video
Edit your comment Cancel

Favorites, Groups & Events

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
    • 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

+ bueromanbueroman, 3 years ago

custom

2467 views, 0 favs, 0 embeds more stats

Dicas de como usar o glade para criar interfaces co more

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 2467
    • 2467 on SlideShare
    • 0 from embeds
  • Comments 1
  • Favorites 0
  • Downloads 54
Most viewed embeds

more

All embeds

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories