1 /*
2  * Copyright © 2011 Canonical Limited
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the licence, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  *
17  * Author: Ryan Lortie <desrt@desrt.ca>
18  */
19 
20 #ifndef __GTK_ACTION_MUXER_H__
21 #define __GTK_ACTION_MUXER_H__
22 
23 #include <gio/gio.h>
24 
25 G_BEGIN_DECLS
26 
27 #define GTK_TYPE_ACTION_MUXER                               (gtk_action_muxer_get_type ())
28 #define GTK_ACTION_MUXER(inst)                              (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
29                                                              GTK_TYPE_ACTION_MUXER, GtkActionMuxer))
30 #define GTK_IS_ACTION_MUXER(inst)                           (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
31                                                              GTK_TYPE_ACTION_MUXER))
32 
33 typedef struct _GtkActionMuxer                              GtkActionMuxer;
34 
35 GType                   gtk_action_muxer_get_type                       (void);
36 GtkActionMuxer *        gtk_action_muxer_new                            (void);
37 
38 void                    gtk_action_muxer_insert                         (GtkActionMuxer *muxer,
39                                                                          const gchar    *prefix,
40                                                                          GActionGroup   *action_group);
41 
42 void                    gtk_action_muxer_remove                         (GtkActionMuxer *muxer,
43                                                                          const gchar    *prefix);
44 const gchar **          gtk_action_muxer_list_prefixes                  (GtkActionMuxer *muxer);
45 GActionGroup *          gtk_action_muxer_lookup                         (GtkActionMuxer *muxer,
46                                                                          const gchar    *prefix);
47 GtkActionMuxer *        gtk_action_muxer_get_parent                     (GtkActionMuxer *muxer);
48 
49 void                    gtk_action_muxer_set_parent                     (GtkActionMuxer *muxer,
50                                                                          GtkActionMuxer *parent);
51 
52 void                    gtk_action_muxer_set_primary_accel              (GtkActionMuxer *muxer,
53                                                                          const gchar    *action_and_target,
54                                                                          const gchar    *primary_accel);
55 
56 const gchar *           gtk_action_muxer_get_primary_accel              (GtkActionMuxer *muxer,
57                                                                          const gchar    *action_and_target);
58 
59 /* No better place for these... */
60 gchar *                 gtk_print_action_and_target                     (const gchar    *action_namespace,
61                                                                          const gchar    *action_name,
62                                                                          GVariant       *target);
63 
64 gchar *                 gtk_normalise_detailed_action_name              (const gchar *detailed_action_name);
65 
66 G_END_DECLS
67 
68 #endif /* __GTK_ACTION_MUXER_H__ */
69