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 | |
14 | GtkWidget * |
15 | do_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 | |