2 * This file is a part of hildon examples
4 * Copyright (C) 2008 Nokia Corporation, all rights reserved.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public License
9 * as published by the Free Software Foundation; version 2.1 of
10 * the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
26 #include <hildon/hildon.h>
28 static GtkWidget *create_selector ();
29 static GtkWidget *get_visible_content (GtkWidget * window);
31 static GtkWindow *parent_window = NULL;
33 static GtkWidget *label = NULL;
36 value_changed (HildonPickerButton * button,
39 HildonTouchSelector *selector;
40 gchar *aux_string = NULL;
42 selector = hildon_picker_button_get_selector (button);
43 aux_string = hildon_touch_selector_get_current_text (selector);
44 gtk_label_set_text (GTK_LABEL (label), aux_string);
51 GtkWidget *selector = NULL;
52 GSList *icon_list = NULL;
53 GtkListStore *store_icons = NULL;
55 GtkCellRenderer *renderer = NULL;
56 HildonTouchSelectorColumn *column = NULL;
58 selector = hildon_touch_selector_new ();
60 icon_list = gtk_stock_list_ids ();
62 store_icons = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
63 for (item = icon_list; item; item = g_slist_next (item)) {
65 GtkStockItem stock_item;
68 stock_id = (gchar *)item->data;
69 gtk_stock_lookup (stock_id, &stock_item);
70 gtk_list_store_append (store_icons, &iter);
71 gtk_list_store_set (store_icons, &iter, 0, stock_id, 1, stock_item.label, -1);
75 g_slist_free (icon_list);
77 column = hildon_touch_selector_append_column (HILDON_TOUCH_SELECTOR (selector),
78 GTK_TREE_MODEL (store_icons),
80 hildon_touch_selector_column_set_text_column (column, 1);
82 renderer = gtk_cell_renderer_pixbuf_new ();
83 gtk_cell_renderer_set_fixed_size (renderer, 75, 75);
84 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer, FALSE);
85 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (column), renderer,
88 renderer = gtk_cell_renderer_text_new ();
89 g_object_set (renderer, "xalign", 0.5, NULL);
90 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer, TRUE);
91 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (column), renderer,
94 hildon_touch_selector_set_column_selection_mode (HILDON_TOUCH_SELECTOR (selector),
95 HILDON_TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE);
101 get_visible_content (GtkWidget * window)
103 GtkWidget *result = NULL;
104 GtkWidget *button = NULL;
107 label = gtk_label_new ("Here we are going to put the selection");
109 button = hildon_picker_button_new (HILDON_SIZE_AUTO, HILDON_BUTTON_ARRANGEMENT_VERTICAL);
110 hildon_button_set_title (HILDON_BUTTON (button), "Click me..");
111 selector = create_selector ();
112 hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button),
113 HILDON_TOUCH_SELECTOR (selector));
115 g_signal_connect (G_OBJECT (button), "value-changed",
116 G_CALLBACK (value_changed), window);
118 result = gtk_vbox_new (FALSE, 6);
120 gtk_container_add (GTK_CONTAINER (result), button);
121 gtk_container_add (GTK_CONTAINER (result), label);
127 main (int argc, char **argv)
129 HildonProgram *program = NULL;
130 GtkWidget *window = NULL;
132 hildon_gtk_init (&argc, &argv);
134 program = hildon_program_get_instance ();
135 g_set_application_name
136 ("hildon-touch-selector cell renderer example program");
138 window = hildon_stackable_window_new ();
139 parent_window = GTK_WINDOW (window);
140 hildon_program_add_window (program, HILDON_WINDOW (window));
142 gtk_container_set_border_width (GTK_CONTAINER (window), 6);
144 GtkWidget *vbox = get_visible_content (window);
146 gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (vbox));
148 g_signal_connect (G_OBJECT (window), "destroy",
149 G_CALLBACK (gtk_main_quit), NULL);
150 gtk_widget_show_all (GTK_WIDGET (window));