summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2010-11-24 18:45:42 +0100
committerCosimo Cecchi <cosimoc@gnome.org>2010-11-24 18:45:42 +0100
commit2a95707b4c77606b539c5ddacded4eadaf4de7cb (patch)
treea18f94ce1f6b2d3ee479f017e622a7399fff0fd0 /tests
parent627f9b70a7d9d24c3a206c6866292a141d41b731 (diff)
downloadgtk+-2a95707b4c77606b539c5ddacded4eadaf4de7cb.tar.gz
app-chooser-combobox: add an initial implementation
GtkAppChooserCombobox is an implementation of GtkAppChooser inside a combobox that shows recommended applications for a given content type.
Diffstat (limited to 'tests')
-rw-r--r--tests/testappchoosercombo.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/testappchoosercombo.c b/tests/testappchoosercombo.c
new file mode 100644
index 0000000000..11af64f2ea
--- /dev/null
+++ b/tests/testappchoosercombo.c
@@ -0,0 +1,104 @@
+/* testappchoosercombo.c
+ * Copyright (C) 2010 Red Hat, Inc.
+ * Authors: Cosimo Cecchi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+#include <stdlib.h>
+
+#include <gtk/gtk.h>
+
+static GtkWidget *toplevel, *combobox, *box;
+static GtkWidget *sel_image, *sel_name;
+
+static void
+combo_changed_cb (GtkComboBox *cb,
+ gpointer user_data)
+{
+ GAppInfo *app_info;
+
+ app_info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (cb));
+
+ if (app_info == NULL)
+ return;
+
+ gtk_image_set_from_gicon (GTK_IMAGE (sel_image), g_app_info_get_icon (app_info),
+ GTK_ICON_SIZE_DIALOG);
+ gtk_label_set_text (GTK_LABEL (sel_name), g_app_info_get_display_name (app_info));
+
+ g_object_unref (app_info);
+}
+
+static void
+special_item_activated_cb (GtkAppChooserComboBox *cb,
+ gpointer user_data)
+{
+ gtk_image_set_from_gicon (GTK_IMAGE (sel_image), g_themed_icon_new ("face-smile"),
+ GTK_ICON_SIZE_DIALOG);
+ gtk_label_set_text (GTK_LABEL (sel_name), "Special Item");
+}
+
+int
+main (int argc,
+ char **argv)
+{
+ GtkWidget *w;
+
+ g_type_init ();
+ gtk_init (&argc, &argv);
+
+ toplevel = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_container_set_border_width (GTK_CONTAINER (toplevel), 12);
+
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
+ gtk_container_add (GTK_CONTAINER (toplevel), box);
+
+ combobox = gtk_app_chooser_combo_box_new ("image/jpeg");
+ gtk_box_pack_start (GTK_BOX (box), combobox, TRUE, TRUE, 0);
+
+ g_signal_connect (combobox, "changed",
+ G_CALLBACK (combo_changed_cb), NULL);
+
+ w = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (w), "<b>Selected app info</b>");
+ gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
+
+ w = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
+
+ sel_image = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (w), sel_image, TRUE, TRUE, 0);
+ sel_name = gtk_label_new (NULL);
+ gtk_box_pack_start (GTK_BOX (w), sel_name, TRUE, TRUE, 0);
+
+ gtk_app_chooser_combo_box_append_separator (GTK_APP_CHOOSER_COMBO_BOX (combobox));
+ gtk_app_chooser_combo_box_append_custom_item (GTK_APP_CHOOSER_COMBO_BOX (combobox),
+ "Hey, I'm special!",
+ g_themed_icon_new ("face-smile"),
+ special_item_activated_cb,
+ NULL);
+
+ gtk_widget_show_all (toplevel);
+
+ g_signal_connect (toplevel, "delete-event",
+ G_CALLBACK (gtk_main_quit), NULL);
+
+ gtk_main ();
+
+ return EXIT_SUCCESS;
+}