====== Introduzione alla libreria Vte ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//24/03/2016 - 11:11//** \\ \\
{{:programmazione:vte:vte0.png?400|}}
La libreria Vte permette di creare un widget terminale nelle nostre applicazioni Gtk. Di seguito un codice di esempio in C.
**main.c**
#include
#include
int main( int argc, char *argv[] )
{
//Widget che servono
GtkWidget *window_main;
GtkWidget *vbox;
GtkWidget *vte;
GtkWidget *notebook;
GtkWidget *scrolled_window;
GtkWidget *label;
gtk_init (&argc, &argv);
//Finestra principale
window_main = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window_main), "Vte example");
//Contenitore principale ( un box verticale)
vbox = gtk_vbox_new(FALSE,0);
gtk_container_add (GTK_CONTAINER (window_main), vbox);
//Creiamo il contenitore a schede (notebook) e lo agganciamo al vbox
notebook = gtk_notebook_new ();
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_BOTTOM);
gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
//Creiamo una scrolled window e la agganciamo al contenitore a schede
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
label = gtk_label_new ("terminale 1");
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolled_window, label);
//Creiamo il terminale e settiamo qualche proprieta'
vte = vte_terminal_new();
vte_terminal_set_background_transparent(VTE_TERMINAL(vte), FALSE);
vte_terminal_set_size(VTE_TERMINAL(vte), 80, 45);
vte_terminal_set_scrollback_lines(VTE_TERMINAL (vte), -1); // infinite righe di scorrimento
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL (vte), TRUE);
//vte_terminal_fork_command(VTE_TERMINAL(vte), NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE); //lancia il terminale (deprecato)
gchar **cmd = 0;
g_shell_parse_argv("/bin/bash", 0, &cmd, 0);
vte_terminal_fork_command_full(VTE_TERMINAL(vte), 0, 0, cmd, 0, 0, 0, 0, 0, 0);
//Aggancio il terminale alla scrolled_window e setto le dimensioni desiderate
gtk_container_add (GTK_CONTAINER(scrolled_window),vte);
gtk_widget_set_size_request(vte, 500, 200);
//Alcune callbaks per la chiusura della finestra
g_signal_connect(G_OBJECT(window_main),"destroy",G_CALLBACK(gtk_main_quit),NULL);
//Mostro tutto
gtk_widget_show_all(window_main);
gtk_main ();
return 0;
}
**makefile**
CPP = gcc
OPTS = `pkg-config --cflags --libs gtk+-2.0 vte`
all:
$(CPP) main.c -o main $(OPTS)
clean:
rm main