Barra laterale

programmazione:vte:introduzione

Introduzione alla libreria Vte

Autore: Fabio Di Matteo
Ultima revisione: 24/03/2016 - 11:11

La libreria Vte permette di creare un widget terminale nelle nostre applicazioni Gtk. Di seguito un codice di esempio in C.

main.c

#include <gtk/gtk.h>
#include <vte/vte.h>
 
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

programmazione/vte/introduzione.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)