O documento discute a história e características do GTK+, um toolkit multiplataforma para construção de interfaces gráficas. O GTK+ foi criado originalmente para o GIMP e depois adotado pelo GNOME. Ele suporta múltiplas linguagens como Python, PHP e C e permite a criação de aplicativos compatíveis entre sistemas Windows, Linux e macOS.
2. 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
10. 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
12. 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()
13. Hello World PHP-GTK
<?
#Cria o callback chamado no evento "clicked" do botão.
function onClick()
{
echo "Hello Worldn";
}
#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 "clicked" do botão ao callback "hello"
$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();
?>
14. Hello World C-GTK
//Inclui o GTK+ 2
#include <gtk-2.0/gtk/gtk.h>
//Cria o callback chamado no evento "clicked" do botão.
void onClick(GtkWidget *w, gpointer p)
{
g_print("Hello worldn");
}
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("Hello world");
//Altera o tamanho do botão
gtk_widget_set_size_request(button, 200, 70);
//Conecta o sinal "clicked" do botão ao callback "hello"
gtk_signal_connect(GTK_OBJECT(button), "clicked", onClick, NULL);
//Cria a janela
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//Seta o título
gtk_window_set_title(GTK_WINDOW(window), "Tchelinux");
//Conecta o sinal de destruir ao método de encerrar o GTK+
gtk_signal_connect(GTK_OBJECT(window), "destroy", 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();
}