1/* Text View/Tabs
2 *
3 * GtkTextView can position text at fixed positions, using tabs.
4 * Tabs can specify alignment, and also allow aligning numbers
5 * on the decimal point.
6 *
7 * The example here has three tabs, with left, numeric and right
8 * alignment.
9 */
10
11#include <gtk/gtk.h>
12#include <gdk/gdkkeysyms.h>
13
14GtkWidget *
15do_tabs (GtkWidget *do_widget)
16{
17 static GtkWidget *window = NULL;
18
19 if (!window)
20 {
21 GtkWidget *view;
22 GtkWidget *sw;
23 GtkTextBuffer *buffer;
24 PangoTabArray *tabs;
25
26 window = gtk_window_new ();
27 gtk_window_set_title (GTK_WINDOW (window), title: "Tabs");
28 gtk_window_set_display (GTK_WINDOW (window),
29 display: gtk_widget_get_display (widget: do_widget));
30 gtk_window_set_default_size (GTK_WINDOW (window), width: 330, height: 130);
31 gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
32 g_object_add_weak_pointer (G_OBJECT (window), weak_pointer_location: (gpointer *)&window);
33
34 view = gtk_text_view_new ();
35 gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), wrap_mode: GTK_WRAP_WORD);
36 gtk_text_view_set_top_margin (GTK_TEXT_VIEW (view), top_margin: 20);
37 gtk_text_view_set_bottom_margin (GTK_TEXT_VIEW (view), bottom_margin: 20);
38 gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), left_margin: 20);
39 gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), right_margin: 20);
40
41 tabs = pango_tab_array_new (initial_size: 3, TRUE);
42 pango_tab_array_set_tab (tab_array: tabs, tab_index: 0, alignment: PANGO_TAB_LEFT, location: 0);
43 pango_tab_array_set_tab (tab_array: tabs, tab_index: 1, alignment: PANGO_TAB_DECIMAL, location: 150);
44 pango_tab_array_set_decimal_point (tab_array: tabs, tab_index: 1, decimal_point: '.');
45 pango_tab_array_set_tab (tab_array: tabs, tab_index: 2, alignment: PANGO_TAB_RIGHT, location: 290);
46 gtk_text_view_set_tabs (GTK_TEXT_VIEW (view), tabs);
47 pango_tab_array_free (tab_array: tabs);
48
49 buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
50 gtk_text_buffer_set_text (buffer, text: "one\t2.0\tthree\nfour\t5.555\tsix\nseven\t88.88\tnine", len: -1);
51
52 sw = gtk_scrolled_window_new ();
53 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
54 hscrollbar_policy: GTK_POLICY_NEVER,
55 vscrollbar_policy: GTK_POLICY_AUTOMATIC);
56 gtk_window_set_child (GTK_WINDOW (window), child: sw);
57 gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child: view);
58 }
59
60 if (!gtk_widget_get_visible (widget: window))
61 gtk_widget_show (widget: window);
62 else
63 gtk_window_destroy (GTK_WINDOW (window));
64
65 return window;
66}
67

source code of gtk/demos/gtk-demo/tabs.c