1 /*
2  * gtkappchooserwidget.h: an app-chooser widget
3  *
4  * Copyright (C) 2004 Novell, Inc.
5  * Copyright (C) 2007, 2010 Red Hat, Inc.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public License as
9  * published by the Free Software Foundation; either version 2 of the
10  * License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
19  *
20  * Authors: Dave Camp <dave@novell.com>
21  *          Alexander Larsson <alexl@redhat.com>
22  *          Cosimo Cecchi <ccecchi@redhat.com>
23  */
24 
25 #ifndef __GTK_APP_CHOOSER_WIDGET_H__
26 #define __GTK_APP_CHOOSER_WIDGET_H__
27 
28 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
29 #error "Only <gtk/gtk.h> can be included directly."
30 #endif
31 
32 #include <gtk/gtkbox.h>
33 #include <gtk/gtkmenu.h>
34 #include <gio/gio.h>
35 
36 G_BEGIN_DECLS
37 
38 #define GTK_TYPE_APP_CHOOSER_WIDGET            (gtk_app_chooser_widget_get_type ())
39 #define GTK_APP_CHOOSER_WIDGET(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_APP_CHOOSER_WIDGET, GtkAppChooserWidget))
40 #define GTK_APP_CHOOSER_WIDGET_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_APP_CHOOSER_WIDGET, GtkAppChooserWidgetClass))
41 #define GTK_IS_APP_CHOOSER_WIDGET(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_APP_CHOOSER_WIDGET))
42 #define GTK_IS_APP_CHOOSER_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_APP_CHOOSER_WIDGET))
43 #define GTK_APP_CHOOSER_WIDGET_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_APP_CHOOSER_WIDGET, GtkAppChooserWidgetClass))
44 
45 typedef struct _GtkAppChooserWidget        GtkAppChooserWidget;
46 typedef struct _GtkAppChooserWidgetClass   GtkAppChooserWidgetClass;
47 typedef struct _GtkAppChooserWidgetPrivate GtkAppChooserWidgetPrivate;
48 
49 struct _GtkAppChooserWidget {
50   GtkBox parent;
51 
52   /*< private >*/
53   GtkAppChooserWidgetPrivate *priv;
54 };
55 
56 /**
57  * GtkAppChooserWidgetClass:
58  * @parent_class: The parent class.
59  * @application_selected: Signal emitted when an application item is
60  *    selected from the widget’s list.
61  * @application_activated: Signal emitted when an application item is
62  *    activated from the widget’s list.
63  * @populate_popup: Signal emitted when a context menu is about to
64  *    popup over an application item.
65  */
66 struct _GtkAppChooserWidgetClass {
67   GtkBoxClass parent_class;
68 
69   /*< public >*/
70 
71   void (* application_selected)  (GtkAppChooserWidget *self,
72                                   GAppInfo            *app_info);
73 
74   void (* application_activated) (GtkAppChooserWidget *self,
75                                   GAppInfo            *app_info);
76 
77   void (* populate_popup)        (GtkAppChooserWidget *self,
78                                   GtkMenu             *menu,
79                                   GAppInfo            *app_info);
80 
81   /*< private >*/
82 
83   /* padding for future class expansion */
84   gpointer padding[16];
85 };
86 
87 GDK_AVAILABLE_IN_ALL
88 GType         gtk_app_chooser_widget_get_type             (void) G_GNUC_CONST;
89 
90 GDK_AVAILABLE_IN_ALL
91 GtkWidget *   gtk_app_chooser_widget_new                  (const gchar         *content_type);
92 
93 GDK_AVAILABLE_IN_ALL
94 void          gtk_app_chooser_widget_set_show_default     (GtkAppChooserWidget *self,
95                                                            gboolean             setting);
96 GDK_AVAILABLE_IN_ALL
97 gboolean      gtk_app_chooser_widget_get_show_default     (GtkAppChooserWidget *self);
98 
99 GDK_AVAILABLE_IN_ALL
100 void          gtk_app_chooser_widget_set_show_recommended (GtkAppChooserWidget *self,
101                                                            gboolean             setting);
102 GDK_AVAILABLE_IN_ALL
103 gboolean      gtk_app_chooser_widget_get_show_recommended (GtkAppChooserWidget *self);
104 
105 GDK_AVAILABLE_IN_ALL
106 void          gtk_app_chooser_widget_set_show_fallback    (GtkAppChooserWidget *self,
107                                                            gboolean             setting);
108 GDK_AVAILABLE_IN_ALL
109 gboolean      gtk_app_chooser_widget_get_show_fallback    (GtkAppChooserWidget *self);
110 
111 GDK_AVAILABLE_IN_ALL
112 void          gtk_app_chooser_widget_set_show_other       (GtkAppChooserWidget *self,
113                                                            gboolean             setting);
114 GDK_AVAILABLE_IN_ALL
115 gboolean      gtk_app_chooser_widget_get_show_other       (GtkAppChooserWidget *self);
116 
117 GDK_AVAILABLE_IN_ALL
118 void          gtk_app_chooser_widget_set_show_all         (GtkAppChooserWidget *self,
119                                                            gboolean             setting);
120 GDK_AVAILABLE_IN_ALL
121 gboolean      gtk_app_chooser_widget_get_show_all         (GtkAppChooserWidget *self);
122 
123 GDK_AVAILABLE_IN_ALL
124 void          gtk_app_chooser_widget_set_default_text     (GtkAppChooserWidget *self,
125                                                            const gchar         *text);
126 GDK_AVAILABLE_IN_ALL
127 const gchar * gtk_app_chooser_widget_get_default_text     (GtkAppChooserWidget *self);
128 
129 G_END_DECLS
130 
131 #endif /* __GTK_APP_CHOOSER_WIDGET_H__ */
132