1 <!-- ##### SECTION Title ##### -->
4 <!-- ##### SECTION Short_Description ##### -->
7 <!-- ##### SECTION Long_Description ##### -->
13 <!-- hildon-tests/wt/hildon-widgets-combo/testgrid.c -->
14 ##include <hildon-widgets/hildon-app.h>
15 ##include <hildon-widgets/hildon-appview.h>
16 ##include <hildon-widgets/hildon-grid.h>
17 ##include <hildon-widgets/hildon-grid-item.h>
18 ##include <gtk/gtk.h>
19 ##include <pango/pango.h>
20 ##include <libintl.h>
21 ##include <locale.h>
22 ##include <string.h>
23 ##include <gtk/gtktoolbar.h>
24 ##include <gtk/gtkwidget.h>
27 ##include <config.h>
30 ##include <stdio.h>
31 ##include <stdlib.h>
33 ##define _(String) gettext (String)
35 ##define ICONFILE "Help"
43 static int action = ACTIVATE;
46 static GtkWidget *w_add_one = NULL;
47 static GtkWidget *w_add_eight = NULL;
48 static GtkWidget *w_disable_next = NULL;
49 static GtkWidget *w_emblem_next = NULL;
51 static GtkWidget *menu_small_icons;
52 static GtkWidget *menu_big_icons;
54 static GtkWidget *standard_icons;
55 static GtkWidget *alt_empty_label;
56 static GtkWidget *dim_selected;
57 static GtkWidget *undim_all;
60 GtkWidget *create_layout(void);
61 static void activate (HildonGrid *grid, HildonGridItem *item, gpointer data);
62 static void generate_name (char *target, size_t len);
63 static void update_dim (HildonGrid *grid);
65 static void add_one (HildonGrid *grid);
66 static void add_eight (HildonGrid *grid);
67 static void disable_this (GtkWidget *widget);
68 static void emblem_this (GtkWidget *widget);
70 static void create_basic_icons (HildonGrid *grid);
71 static void remove_all_icons (HildonGrid *grid);
72 static void show_standard_icons_signal (GtkMenuItem *widget, gpointer data);
73 static void set_empty_label_signal (GtkMenuItem *widget, gpointer data);
74 static void dim_selected_signal (GtkMenuItem *widget, gpointer data);
75 static void undim_all_signal (GtkMenuItem *widget, gpointer data);
76 static void set_icon_size (GtkMenuItem *item, gpointer data);
78 void _testGrid(GtkWidget *parent, gchar **help);
81 _testGrid(GtkWidget *parent, gchar **help)
84 GtkIconTheme *icon_theme;
90 icon_theme = gtk_icon_theme_get_default ();
92 grid = create_layout ();
93 gtk_container_add (GTK_CONTAINER (parent), grid);
95 g_signal_connect (grid, "activate-child", G_CALLBACK (activate), NULL);
97 /* Create context menu. */
98 popup = gtk_menu_new ();
99 menu_small_icons = gtk_radio_menu_item_new_with_label (group,
101 menu_big_icons = gtk_radio_menu_item_new_with_label (
102 gtk_radio_menu_item_get_group (
103 GTK_RADIO_MENU_ITEM (menu_small_icons)),
105 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_big_icons),
108 gtk_widget_show (menu_small_icons);
109 gtk_widget_show (menu_big_icons);
110 gtk_menu_shell_append (GTK_MENU_SHELL (popup), menu_small_icons);
111 gtk_menu_shell_append (GTK_MENU_SHELL (popup), menu_big_icons);
112 gtk_widget_tap_and_hold_setup (grid, popup, NULL, TRUE);
114 g_signal_connect (G_OBJECT (menu_small_icons), "activate",
115 G_CALLBACK (set_icon_size), HILDON_GRID (grid));
116 g_signal_connect (G_OBJECT (menu_big_icons), "activate",
117 G_CALLBACK (set_icon_size), HILDON_GRID (grid));
119 /* Add menuitem for showing/hiding standard icons. */
120 menu = hildon_appview_get_menu (HILDON_APPVIEW (
121 gtk_widget_get_ancestor (parent, HILDON_TYPE_APPVIEW)));
122 standard_icons = gtk_check_menu_item_new_with_label (
123 _("Show standard icons"));
124 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (standard_icons), TRUE);
125 alt_empty_label = gtk_check_menu_item_new_with_label (
126 _("Alternative empty label"));
127 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (alt_empty_label),
130 dim_selected = gtk_menu_item_new_with_label (_("Dim current"));
131 undim_all = gtk_menu_item_new_with_label (_("Undim all"));
134 gtk_menu_shell_append (GTK_MENU_SHELL (menu), standard_icons);
135 gtk_widget_show (standard_icons);
136 gtk_menu_shell_append (GTK_MENU_SHELL (menu), alt_empty_label);
137 gtk_widget_show (alt_empty_label);
138 gtk_menu_shell_append (GTK_MENU_SHELL (menu), dim_selected);
139 gtk_widget_show (dim_selected);
140 gtk_menu_shell_append (GTK_MENU_SHELL (menu), undim_all);
141 gtk_widget_show (undim_all);
143 g_signal_connect (G_OBJECT (standard_icons), "toggled",
144 G_CALLBACK (show_standard_icons_signal),
146 g_signal_connect (G_OBJECT (alt_empty_label), "toggled",
147 G_CALLBACK (set_empty_label_signal),
149 g_signal_connect (G_OBJECT (dim_selected), "activate",
150 G_CALLBACK (dim_selected_signal),
152 g_signal_connect (G_OBJECT (undim_all), "activate",
153 G_CALLBACK (undim_all_signal),
156 create_basic_icons (HILDON_GRID (grid));
157 update_dim (HILDON_GRID (grid));
159 hildon_grid_set_style (HILDON_GRID (grid), "bigicons");
160 gtk_widget_show (GTK_WIDGET (grid));
165 show_standard_icons_signal (GtkMenuItem *widget,
169 grid = HILDON_GRID (data);
171 if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
172 create_basic_icons (grid);
174 remove_all_icons (grid);
180 set_empty_label_signal (GtkMenuItem *widget,
185 grid = HILDON_GRID (data);
187 g_value_init (&val, G_TYPE_STRING);
189 if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
190 g_value_set_string (&val, _("Alternative empty label here"));
192 g_value_set_string (&val, _("No icons"));
194 g_object_set_property (G_OBJECT (grid), "empty_label", &val);
198 create_basic_icons (HildonGrid *grid)
200 w_add_one = hildon_grid_item_new_with_label (
201 "Calendar", _("Add one"));
202 w_add_eight = hildon_grid_item_new_with_label (
203 "Clock", _("Add eight"));
204 w_disable_next = hildon_grid_item_new_with_label (
205 "Calculator", _("Disable next"));
206 w_emblem_next = hildon_grid_item_new_with_label (
207 "Paint", _("Set emblem"));
208 emblem_this (w_emblem_next);
210 gtk_container_add (GTK_CONTAINER (grid), w_add_one);
211 gtk_container_add (GTK_CONTAINER (grid), w_add_eight);
212 gtk_container_add (GTK_CONTAINER (grid), w_disable_next);
213 gtk_container_add (GTK_CONTAINER (grid), w_emblem_next);
217 remove_all_icons (HildonGrid *grid)
219 gtk_container_remove (GTK_CONTAINER (grid), w_add_one);
220 gtk_container_remove (GTK_CONTAINER (grid), w_add_eight);
221 gtk_container_remove (GTK_CONTAINER (grid), w_disable_next);
222 gtk_container_remove (GTK_CONTAINER (grid), w_emblem_next);
226 generate_name (gchar *target, size_t len)
230 for (i = 0; i < len; i++)
231 target[i] = (rand() & 0x0f) + 'a';
239 grid = hildon_grid_new ();
240 return GTK_WIDGET (grid);
244 activate (HildonGrid *grid, HildonGridItem *item, gpointer data)
247 widget = GTK_WIDGET (item);
252 if (widget == w_add_one)
254 else if (widget == w_add_eight)
256 else if (widget == w_disable_next)
257 action = DISABLE_NEXT;
258 else if (widget == w_emblem_next)
259 action = EMBLEM_NEXT;
262 gtk_container_remove (GTK_CONTAINER (grid), widget);
268 disable_this (widget);
273 emblem_this (widget);
280 add_one (HildonGrid *grid)
282 #define LABEL_WIDTH 64
283 static gchar foo[LABEL_WIDTH];
285 generate_name (foo, rand () % (LABEL_WIDTH - 1) + 1);
286 t = hildon_grid_item_new_with_label (ICONFILE, foo);
287 gtk_container_add (GTK_CONTAINER (grid), t);
294 add_eight (HildonGrid *grid)
297 for (i = 0; i < 8; i++)
302 emblem_this (GtkWidget *widget)
305 emblem = hildon_grid_item_get_emblem_type (HILDON_GRID_ITEM (widget));
307 hildon_grid_item_set_emblem_type (HILDON_GRID_ITEM (widget),
308 emblem == NULL ? "gnome-mime-image-png" : NULL);
312 disable_this (GtkWidget *widget)
314 gtk_widget_set_sensitive (widget, FALSE);
318 dim_selected_signal (GtkMenuItem *widget,
323 selected = GTK_CONTAINER (data)->focus_child;
324 gtk_widget_set_sensitive (selected, FALSE);
328 undim_all_signal (GtkMenuItem *widget,
331 gtk_container_foreach (GTK_CONTAINER (data),
332 (GtkCallback) gtk_widget_set_sensitive,
337 update_dim (HildonGrid *grid)
340 selected = GTK_CONTAINER (grid)->focus_child;
341 gtk_widget_set_sensitive (dim_selected, selected != NULL);
345 set_icon_size (GtkMenuItem *item, gpointer data)
348 grid = HILDON_GRID (data);
350 if (GTK_WIDGET (item) == menu_small_icons)
351 hildon_grid_set_style (grid, "smallicons");
352 else if (GTK_WIDGET (item) == menu_big_icons)
353 hildon_grid_set_style (grid, "bigicons");
359 <!-- ##### SECTION See_Also ##### -->
364 <!-- ##### SECTION Stability_Level ##### -->
367 <!-- ##### FUNCTION hildon_grid_new ##### -->
375 <!-- ##### FUNCTION hildon_grid_set_style ##### -->
384 <!-- ##### FUNCTION hildon_grid_get_style ##### -->
393 <!-- ##### FUNCTION hildon_grid_set_scrollbar_pos ##### -->
402 <!-- ##### FUNCTION hildon_grid_get_scrollbar_pos ##### -->
411 <!-- ##### FUNCTION hildon_grid_activate_child ##### -->