]> Pileus Git - ~andy/gtk/blob - gtk/gtkaccelgroup.h
search last visible column instead of using clist->columns.
[~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 #endif /* __cplusplus */
34
35
36 typedef struct _GtkAccelGroup   GtkAccelGroup;
37 typedef struct _GtkAccelEntry   GtkAccelEntry;
38
39 typedef enum
40 {
41   /* should the accelerator appear in
42    * the widget's display?
43    */
44   GTK_ACCEL_VISIBLE        = 1 << 0,
45   /* should the signal associated with
46    * this accelerator be also visible?
47    */
48   GTK_ACCEL_SIGNAL_VISIBLE = 1 << 1,
49   /* may the accelerator be removed
50    * again?
51    */
52   GTK_ACCEL_LOCKED         = 1 << 2,
53   GTK_ACCEL_MASK           = 0x07
54 } GtkAccelFlags;
55
56 struct _GtkAccelGroup
57 {
58   guint           ref_count;
59   guint           lock_count;
60   GdkModifierType modifier_mask;
61   GSList         *attach_objects;
62 };
63
64 struct _GtkAccelEntry
65 {
66   /* key portion
67    */
68   GtkAccelGroup         *accel_group;
69   guint                  accelerator_key;
70   GdkModifierType        accelerator_mods;
71   
72   GtkAccelFlags          accel_flags;
73   GtkObject             *object;
74   guint                  signal_id;
75 };
76
77
78 /* Accelerator Groups
79  */
80 GtkAccelGroup*  gtk_accel_group_new             (void);
81 GtkAccelGroup*  gtk_accel_group_get_default     (void);
82 GtkAccelGroup*  gtk_accel_group_ref             (GtkAccelGroup  *accel_group);
83 void            gtk_accel_group_unref           (GtkAccelGroup  *accel_group);
84 gboolean        gtk_accel_group_activate        (GtkAccelGroup  *accel_group,
85                                                  guint           accel_key,
86                                                  GdkModifierType accel_mods);
87 gboolean        gtk_accel_groups_activate       (GtkObject      *object,
88                                                  guint           accel_key,
89                                                  GdkModifierType accel_mods);
90 void            gtk_accel_group_attach          (GtkAccelGroup  *accel_group,
91                                                  GtkObject      *object);
92 void            gtk_accel_group_detach          (GtkAccelGroup  *accel_group,
93                                                  GtkObject      *object);
94 void            gtk_accel_group_lock            (GtkAccelGroup  *accel_group);
95 void            gtk_accel_group_unlock          (GtkAccelGroup  *accel_group);
96
97 /* Accelerator Group Entries
98  */
99 GtkAccelEntry*  gtk_accel_group_get_entry       (GtkAccelGroup  *accel_group,
100                                                  guint           accel_key,
101                                                  GdkModifierType accel_mods);
102 void            gtk_accel_group_lock_entry      (GtkAccelGroup  *accel_group,
103                                                  guint           accel_key,
104                                                  GdkModifierType accel_mods);
105 void            gtk_accel_group_unlock_entry    (GtkAccelGroup  *accel_group,
106                                                  guint           accel_key,
107                                                  GdkModifierType accel_mods);
108 void            gtk_accel_group_add             (GtkAccelGroup  *accel_group,
109                                                  guint           accel_key,
110                                                  GdkModifierType accel_mods,
111                                                  GtkAccelFlags   accel_flags,
112                                                  GtkObject      *object,
113                                                  const gchar    *accel_signal);
114 void            gtk_accel_group_remove          (GtkAccelGroup  *accel_group,
115                                                  guint           accel_key,
116                                                  GdkModifierType accel_mods,
117                                                  GtkObject      *object);
118
119 /* Accelerator Signals
120  */
121 void            gtk_accel_group_handle_add      (GtkObject      *object,
122                                                  guint           accel_signal_id,
123                                                  GtkAccelGroup  *accel_group,
124                                                  guint           accel_key,
125                                                  GdkModifierType accel_mods,
126                                                  GtkAccelFlags   accel_flags);
127 void            gtk_accel_group_handle_remove   (GtkObject      *object,
128                                                  GtkAccelGroup  *accel_group,
129                                                  guint           accel_key,
130                                                  GdkModifierType accel_mods);
131 guint           gtk_accel_group_create_add      (GtkType         class_type,
132                                                  GtkSignalRunType signal_flags,
133                                                  guint           handler_offset);
134 guint           gtk_accel_group_create_remove   (GtkType         class_type,
135                                                  GtkSignalRunType signal_flags,
136                                                  guint           handler_offset);
137 void            gtk_accel_group_marshal_add     (GtkObject      *object,
138                                                  GtkSignalFunc   func,
139                                                  gpointer        func_data,
140                                                  GtkArg         *args);
141 void            gtk_accel_group_marshal_remove  (GtkObject      *object,
142                                                  GtkSignalFunc   func,
143                                                  gpointer        func_data,
144                                                  GtkArg         *args);
145
146 /* Miscellaneous
147  */
148 GSList* gtk_accel_groups_from_object            (GtkObject      *object);
149 GSList* gtk_accel_group_entries_from_object     (GtkObject      *object);
150
151
152 /* Accelerators
153  */
154 gboolean gtk_accelerator_valid                (guint            keyval,
155                                                GdkModifierType  modifiers);
156 void     gtk_accelerator_parse                (const gchar     *accelerator,
157                                                guint           *accelerator_key,
158                                                GdkModifierType *accelerator_mods);
159 gchar*   gtk_accelerator_name                 (guint            accelerator_key,
160                                                GdkModifierType  accelerator_mods);
161 void     gtk_accelerator_set_default_mod_mask (GdkModifierType  default_mod_mask);
162 guint    gtk_accelerator_get_default_mod_mask (void);
163
164
165
166 #ifdef __cplusplus
167 }
168 #endif /* __cplusplus */
169
170
171 #endif /* __GTK_ACCEL_GROUP_H__ */