/* Zone de texte multiligne http://www.gtk-fr.org/wakka.php?wiki=LesZonesDeTexte gcc `pkg-config --cflags --libs gtk+-2.0` -o 14b 14b.c &&./14b */ #include <stdlib.h> #include <gtk/gtk.h> void OnShow(GtkWidget *pWidget, gpointer *data); int main(int argc, char* argv[]) { GtkWidget* pWindow; GtkWidget* pBox; GtkWidget* pTextView; GtkWidget* pButton; gtk_init(&argc, &argv); pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200); gtk_window_set_title(GTK_WINDOW(pWindow), "GtkTextView"); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); pBox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(pWindow), pBox); pTextView = gtk_text_view_new(); gtk_box_pack_start(GTK_BOX(pBox), pTextView, TRUE, TRUE, 0); pButton=gtk_button_new_with_label("Afficher"); gtk_box_pack_start(GTK_BOX(pBox),pButton,FALSE,FALSE,0); g_signal_connect(G_OBJECT(pButton), "clicked", G_CALLBACK(OnShow), (gpointer) pTextView); gtk_widget_show_all(pWindow); gtk_main(); return EXIT_SUCCESS; } void OnShow(GtkWidget *pWidget, gpointer *data) { GtkWidget *pDialog; GtkWidget *pTextView; GtkTextBuffer* pTextBuffer; GtkTextIter iStart; GtkTextIter iEnd; gchar* sBuffer; pTextView = GTK_WIDGET(data); /* recupere le buffer */ pTextBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView)); /* recupere l'origine du buffer */ gtk_text_buffer_get_start_iter(pTextBuffer, &iStart); /* recupere la fin du buffer */ gtk_text_buffer_get_end_iter(pTextBuffer, &iEnd); /* copie le contenu du buffer dans une variable */ sBuffer = gtk_text_buffer_get_text(pTextBuffer, &iStart, &iEnd, TRUE); /* affiche le texte dans une boite de dialogue. */ pDialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Votre texte :\n%s", sBuffer); gtk_dialog_run(GTK_DIALOG(pDialog)); gtk_widget_destroy(pDialog); /* libere la memoire */ g_free(sBuffer); }