]> Pileus Git - ~andy/gtk/blob - tests/testentryicons.c
Bug 85292 – add an icon to gtkentry
[~andy/gtk] / tests / testentryicons.c
1 #include <gtk/gtk.h>
2 #include <stdio.h>
3
4 int
5 main (int argc, char **argv)
6 {
7   GtkWidget *window;
8   GtkWidget *table;
9   GtkWidget *label;
10   GtkWidget *entry;
11   GIcon *icon;
12
13   gtk_init (&argc, &argv);
14
15   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
16   gtk_window_set_title (GTK_WINDOW (window), "Gtk Entry Icons Test");
17   gtk_container_set_border_width (GTK_CONTAINER (window), 12);
18
19   g_signal_connect (G_OBJECT (window), "destroy",
20                     G_CALLBACK (gtk_main_quit), NULL);
21
22   table = gtk_table_new (2, 4, FALSE);
23   gtk_container_add (GTK_CONTAINER (window), table);
24   gtk_table_set_row_spacings (GTK_TABLE (table), 6);
25   gtk_table_set_col_spacings (GTK_TABLE (table), 6);
26
27   /*
28    * Open File - Sets the icon using a GIcon
29    */
30   label = gtk_label_new ("Open File:");
31   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
32                     GTK_FILL, GTK_FILL, 0, 0);
33   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
34
35   entry = gtk_entry_new ();
36   gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1,
37                     GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
38
39   icon = g_themed_icon_new_with_default_fallbacks ("folder");
40   gtk_entry_set_icon_from_gicon (GTK_ENTRY (entry),
41                                  GTK_ENTRY_ICON_PRIMARY,
42                                  icon);
43   gtk_entry_set_icon_sensitive (GTK_ENTRY (entry),
44                                 GTK_ENTRY_ICON_PRIMARY,
45                                 FALSE);
46
47   gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry),
48                                    GTK_ENTRY_ICON_PRIMARY,
49                                    "Open a file");
50
51   /*
52    * Save File - sets the icon using a stock id.
53    */
54   label = gtk_label_new ("Save File:");
55   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
56                     GTK_FILL, GTK_FILL, 0, 0);
57   gtk_misc_set_alignment (GTK_MISC(label), 0.0, 0.5);
58
59   entry = gtk_entry_new ();
60   gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 1, 2,
61                     GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
62   gtk_entry_set_text (GTK_ENTRY (entry), "‏Right-to-left");
63   gtk_widget_set_direction (entry, GTK_TEXT_DIR_RTL);
64
65   gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
66                                  GTK_ENTRY_ICON_PRIMARY,
67                                  GTK_STOCK_SAVE);
68   gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry),
69                                    GTK_ENTRY_ICON_PRIMARY,
70                                    "Save a file");
71
72   /*
73    * Search - Uses a helper function
74    */
75   label = gtk_label_new ("Search:");
76   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3,
77                     GTK_FILL, GTK_FILL, 0, 0);
78   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
79
80   entry = gtk_entry_new ();
81   gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 2, 3,
82                     GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
83
84   gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
85                                  GTK_ENTRY_ICON_PRIMARY,
86                                  GTK_STOCK_FIND);
87
88   gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
89                                  GTK_ENTRY_ICON_SECONDARY,
90                                  GTK_STOCK_CLEAR);
91
92   /*
93    * Password - Sets the icon using a stock id
94    */
95   label = gtk_label_new ("Password:");
96   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4,
97                     GTK_FILL, GTK_FILL, 0, 0);
98   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
99
100   entry = gtk_entry_new ();
101   gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 3, 4,
102                     GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
103   gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE);
104
105   gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
106                                  GTK_ENTRY_ICON_PRIMARY,
107                                  GTK_STOCK_DIALOG_AUTHENTICATION);
108
109   /* Name - Does not set any icons. */
110   label = gtk_label_new ("Name:");
111   gtk_table_attach (GTK_TABLE (table), label, 0, 1, 4, 5,
112                     GTK_FILL, GTK_FILL, 0, 0);
113   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
114
115   entry = gtk_entry_new ();
116   gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 4, 5,
117                     GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
118
119   gtk_widget_show_all (window);
120
121   gtk_main();
122
123   return 0;
124 }