]> Pileus Git - ~andy/gtk/blob - gtk/gtkaccelgroup.h
fixed an assertment.
[~andy/gtk] / gtk / gtkaccelgroup.h
1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * GtkAccelGroup: Accelerator manager for GtkObjects.
5  * Copyright (C) 1998 Tim Janik
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
9  * License as published by the Free Software Foundation; either
10  * version 2 of the 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, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22 #ifndef __GTK_ACCEL_GROUP_H__
23 #define __GTK_ACCEL_GROUP_H__
24
25
26 #include <gdk/gdk.h>
27 #include <gtk/gtkobject.h>
28 #include <gtk/gtkenums.h>
29
30
31 #ifdef __cplusplus
32 extern "C" {
33 #pragma }
34 #endif /* __cplusplus */
35
36
37 typedef struct _GtkAccelGroup   GtkAccelGroup;
38 typedef struct _GtkAccelEntry   GtkAccelEntry;
39
40 /* enum GtkAccelFlags:
41  *
42  * GTK_ACCEL_VISIBLE            - should the accelerator appear in
43  *                                the widget's display?
44  * GTK_ACCEL_SIGNAL_VISIBLE     - should the signal associated
45  *                                with this accelerator be also visible?
46  * GTK_ACCEL_LOCKED             - may the accelerator be removed again?
47  */
48
49 struct _GtkAccelGroup
50 {
51   guint   ref_count;
52   guint   lock_count;
53   guint   modifier_mask;
54   GSList *attach_objects;
55 };
56
57 struct _GtkAccelEntry
58 {
59   /* key portion
60    */
61   GtkAccelGroup         *accel_group;
62   guint                  accelerator_key;
63   guint                  accelerator_mods;
64   
65   GtkAccelFlags          accel_flags;
66   GtkObject             *object;
67   guint                  signal_id;
68 };
69
70
71 /* Accelerator Groups
72  */
73 GtkAccelGroup*  gtk_accel_group_new             (void);
74 GtkAccelGroup*  gtk_accel_group_get_default     (void);
75 GtkAccelGroup*  gtk_accel_group_ref             (GtkAccelGroup  *accel_group);
76 void            gtk_accel_group_unref           (GtkAccelGroup  *accel_group);
77 gboolean        gtk_accel_group_activate        (GtkAccelGroup  *accel_group,
78                                                  guint           accel_key,
79                                                  guint           accel_mods);
80 gboolean        gtk_accel_groups_activate       (GtkObject      *object,
81                                                  guint           accel_key,
82                                                  guint           accel_mods);
83 void            gtk_accel_group_attach          (GtkAccelGroup  *accel_group,
84                                                  GtkObject      *object);
85 void            gtk_accel_group_detach          (GtkAccelGroup  *accel_group,
86                                                  GtkObject      *object);
87 void            gtk_accel_group_lock            (GtkAccelGroup  *accel_group);
88 void            gtk_accel_group_unlock          (GtkAccelGroup  *accel_group);
89
90 /* Accelerator Group Entries
91  */
92 GtkAccelEntry*  gtk_accel_group_get_entry       (GtkAccelGroup  *accel_group,
93                                                  guint           accel_key,
94                                                  guint           accel_mods);
95 void            gtk_accel_group_lock_entry      (GtkAccelGroup  *accel_group,
96                                                  guint           accel_key,
97                                                  guint           accel_mods);
98 void            gtk_accel_group_unlock_entry    (GtkAccelGroup  *accel_group,
99                                                  guint           accel_key,
100                                                  guint           accel_mods);
101 void            gtk_accel_group_add             (GtkAccelGroup  *accel_group,
102                                                  guint           accel_key,
103                                                  guint           accel_mods,
104                                                  GtkAccelFlags   accel_flags,
105                                                  GtkObject      *object,
106                                                  const gchar    *accel_signal);
107 void            gtk_accel_group_remove          (GtkAccelGroup  *accel_group,
108                                                  guint           accel_key,
109                                                  guint           accel_mods,
110                                                  GtkObject      *object);
111
112 /* Accelerator Signals
113  */
114 void            gtk_accel_group_handle_add      (GtkObject      *object,
115                                                  guint           accel_signal_id,
116                                                  GtkAccelGroup  *accel_group,
117                                                  guint           accel_key,
118                                                  guint           accel_mods,
119                                                  GtkAccelFlags   accel_flags);
120 void            gtk_accel_group_handle_remove   (GtkObject      *object,
121                                                  GtkAccelGroup  *accel_group,
122                                                  guint           accel_key,
123                                                  guint           accel_mods);
124 guint           gtk_accel_group_create_add      (GtkType         class_type,
125                                                  GtkSignalRunType run_type,
126                                                  guint           handler_offset);
127 guint           gtk_accel_group_create_remove   (GtkType         class_type,
128                                                  GtkSignalRunType run_type,
129                                                  guint           handler_offset);
130 void            gtk_accel_group_marshal_add     (GtkObject      *object,
131                                                  GtkSignalFunc   func,
132                                                  gpointer        func_data,
133                                                  GtkArg         *args);
134 void            gtk_accel_group_marshal_remove  (GtkObject      *object,
135                                                  GtkSignalFunc   func,
136                                                  gpointer        func_data,
137                                                  GtkArg         *args);
138
139 /* Miscellaneous
140  */
141 GSList* gtk_accel_groups_from_object            (GtkObject      *object);
142 GSList* gtk_accel_group_entries_from_object     (GtkObject      *object);
143
144
145 /* Accelerators
146  */
147 gboolean gtk_accelerator_valid                  (guint        keyval,
148                                                  guint        modifiers);
149 void     gtk_accelerator_parse                  (const gchar *accelerator,
150                                                  guint       *accelerator_key,
151                                                  guint       *accelerator_mods);
152 gchar*   gtk_accelerator_name                   (guint        accelerator_key,
153                                                  guint        accelerator_mods);
154 void     gtk_accelerator_set_default_mod_mask   (guint        default_mod_mask);
155 guint    gtk_accelerator_get_default_mod_mask   (void);
156
157
158
159 #ifdef __cplusplus
160 }
161 #endif /* __cplusplus */
162
163
164 #endif /* __GTK_ACCEL_GROUP_H__ */