# TextView (C)

Monica Kochofar
monicakochofar@gmail.com 2012
Widget, který zobrazuje GtkTextBuffer

# Widget TextView

Když zmáčkneme Enter, dostaneme nový řádek.

Když zmáčkneme Enter vícekrát, než je počet řádků ve výchozí velikosti okna, objeví se svislý posuvník.

Když napíšeme dlouhou větu, text se zalomí mezi slovy.

Když napíšeme dlouhéééééééééééééééééééééééééééééééé (to bylo ale dlouhé) slovo, objeví se vodorovný posuvník.

Zde je příklad Gtk.TextView

#include <gtk/gtk.h>

static void activate (GtkApplication *app, gpointer user_data) { /* Deklarace proměnných */ GtkWidget *window; GtkWidget *text_view; GtkWidget *scrolled_window;

GtkTextBuffer *buffer;

/* Vytvoří okno s názvem a výchozí velikostí */ window = gtk_application_window_new (app); gtk_window_set_title (GTK_WINDOW (window), "TextView Example"); gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);

/* Textová vyrovnávací paměť představující upravovaný text */ buffer = gtk_text_buffer_new (NULL);

/* TextView je widget, ve kterém můžeme zobrazit textovou vyrovnávací paměť. * Zalamování řádků je nastaveno na zalamování mezi slovy. */ text_view = gtk_text_view_new_with_buffer (buffer); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);

/* Vytvoří okno s posuvníky. Obvykle se oběma parametrům předává NULL, takže * se vytvoření svislého/vodorovného posuvníku automaticky přizpůsobí. Nastavení * pravidel pro posuvníky na automatiku umožní posuvníkům zobrazit se, jen když * je to zapotřebí. */ scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); /* Následující funkce se používá k přidání do okna s posuvníky potomků * se schopností posouvání (např. text_view), jinak by se muselo * použít gtk_scrolled_window_add_with_viewport() */ gtk_container_add (GTK_CONTAINER (scrolled_window), text_view); gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);

gtk_container_add (GTK_CONTAINER (window), scrolled_window);

gtk_widget_show_all (window); }

int main (int argc, char **argv) { GtkApplication *app; int status;

app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app);

return status; }

V této ukázce se používá následující:

GtkApplication

GtkWindow

GtkTextBuffer

GtkTextView

GtkScrolledWindow

GtkContainer