X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkbindings.h;h=fb911f78bdc48066fe7e90bac527dc55a3f3d1b7;hb=0cc688aa92b8fe5452b63fb49c51204498a2988b;hp=73615adef791f194cf24bb83107ca85761df6f8d;hpb=eff99c282cb6967f4b1df2f2b53f2bbb034ce79a;p=~andy%2Fgtk
diff --git a/gtk/gtkbindings.h b/gtk/gtkbindings.h
index 73615adef..fb911f78b 100644
--- a/gtk/gtkbindings.h
+++ b/gtk/gtkbindings.h
@@ -1,7 +1,7 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
- * GtkBindingSet: Keybinding manager for GtkObjects.
+ * GtkBindingSet: Keybinding manager for GObjects.
* Copyright (C) 1998 Tim Janik
*
* This library is free software; you can redistribute it and/or
@@ -11,164 +11,179 @@
*
* 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
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser 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.
+ * License along with this library. If not, see .
*/
/*
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only can be included directly."
-#endif
-
#ifndef __GTK_BINDINGS_H__
#define __GTK_BINDINGS_H__
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only can be included directly."
+#endif
+
#include
-#include
#include
-
G_BEGIN_DECLS
-
-/* Binding sets
+typedef struct _GtkBindingSet GtkBindingSet;
+typedef struct _GtkBindingEntry GtkBindingEntry;
+typedef struct _GtkBindingSignal GtkBindingSignal;
+typedef struct _GtkBindingArg GtkBindingArg;
+
+/**
+ * GtkBindingSet:
+ * @set_name: unique name of this binding set
+ * @priority: unused
+ * @widget_path_pspecs: unused
+ * @widget_class_pspecs: unused
+ * @class_branch_pspecs: unused
+ * @entries: the key binding entries in this binding set
+ * @current: implementation detail
+ * @parsed: whether this binding set stems from a CSS file and is reset upon theme changes
+ *
+ * A binding set maintains a list of activatable key bindings.
+ * A single binding set can match multiple types of widgets.
+ * Similar to style contexts, can be matched by any information contained
+ * in a widgets #GtkWidgetPath. When a binding within a set is matched upon
+ * activation, an action signal is emitted on the target widget to carry out
+ * the actual activation.
*/
-
-typedef struct _GtkBindingSet GtkBindingSet;
-typedef struct _GtkBindingEntry GtkBindingEntry;
-typedef struct _GtkBindingSignal GtkBindingSignal;
-typedef struct _GtkBindingArg GtkBindingArg;
-
struct _GtkBindingSet
{
- gchar *set_name;
- gint priority;
- GSList *widget_path_pspecs;
- GSList *widget_class_pspecs;
- GSList *class_branch_pspecs;
- GtkBindingEntry *entries;
- GtkBindingEntry *current;
- guint parsed : 1; /* From RC content */
+ gchar *set_name;
+ gint priority;
+ GSList *widget_path_pspecs;
+ GSList *widget_class_pspecs;
+ GSList *class_branch_pspecs;
+ GtkBindingEntry *entries;
+ GtkBindingEntry *current;
+ guint parsed : 1;
};
+/**
+ * GtkBindingEntry:
+ * @keyval: key value to match
+ * @modifiers: key modifiers to match
+ * @binding_set: binding set this entry belongs to
+ * @destroyed: implementation detail
+ * @in_emission: implementation detail
+ * @marks_unbound: implementation detail
+ * @set_next: linked list of entries maintained by binding set
+ * @hash_next: implementation detail
+ * @signals: action signals of this entry
+ *
+ * Each key binding element of a binding sets binding list is
+ * represented by a GtkBindingEntry.
+ */
struct _GtkBindingEntry
{
- /* key portion
- */
- guint keyval;
- GdkModifierType modifiers;
-
- GtkBindingSet *binding_set;
- guint destroyed : 1;
- guint in_emission : 1;
- guint marks_unbound : 1;
- GtkBindingEntry *set_next;
- GtkBindingEntry *hash_next;
- GtkBindingSignal *signals;
+ /* key portion */
+ guint keyval;
+ GdkModifierType modifiers;
+
+ GtkBindingSet *binding_set;
+ guint destroyed : 1;
+ guint in_emission : 1;
+ guint marks_unbound : 1;
+ GtkBindingEntry *set_next;
+ GtkBindingEntry *hash_next;
+ GtkBindingSignal *signals;
};
+/**
+ * GtkBindingArg:
+ * @arg_type: implementation detail
+ *
+ * A #GtkBindingArg holds the data associated with
+ * an argument for a key binding signal emission as
+ * stored in #GtkBindingSignal.
+ */
struct _GtkBindingArg
{
- GType arg_type;
+ GType arg_type;
union {
- glong long_data;
- gdouble double_data;
- gchar *string_data;
+ glong long_data;
+ gdouble double_data;
+ gchar *string_data;
} d;
};
+/**
+ * GtkBindingSignal:
+ * @next: implementation detail
+ * @signal_name: the action signal to be emitted
+ * @n_args: number of arguments specified for the signal
+ * @args: the arguments specified for the signal
+ *
+ *
+ * A GtkBindingSignal stores the necessary information to
+ * activate a widget in response to a key press via a signal
+ * emission.
+ */
struct _GtkBindingSignal
{
- GtkBindingSignal *next;
- gchar *signal_name;
- guint n_args;
- GtkBindingArg *args;
+ GtkBindingSignal *next;
+ gchar *signal_name;
+ guint n_args;
+ GtkBindingArg *args;
};
-/* Application-level methods */
-
-GtkBindingSet* gtk_binding_set_new (const gchar *set_name);
-GtkBindingSet* gtk_binding_set_by_class(gpointer object_class);
-GtkBindingSet* gtk_binding_set_find (const gchar *set_name);
-gboolean gtk_bindings_activate (GtkObject *object,
- guint keyval,
- GdkModifierType modifiers);
-gboolean gtk_bindings_activate_event (GtkObject *object,
- GdkEventKey *event);
-gboolean gtk_binding_set_activate (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers,
- GtkObject *object);
-
-#ifndef GTK_DISABLE_DEPRECATED
-#define gtk_binding_entry_add gtk_binding_entry_clear
-void gtk_binding_entry_clear (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers);
-void gtk_binding_entry_add_signall (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers,
- const gchar *signal_name,
- GSList *binding_args);
-guint gtk_binding_parse_binding (GScanner *scanner);
-#endif /* GTK_DISABLE_DEPRECATED */
-
-void gtk_binding_entry_skip (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers);
-void gtk_binding_entry_add_signal (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers,
- const gchar *signal_name,
- guint n_args,
- ...);
-void gtk_binding_entry_remove (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers);
-
-void gtk_binding_set_add_path (GtkBindingSet *binding_set,
- GtkPathType path_type,
- const gchar *path_pattern,
- GtkPathPriorityType priority);
-
-
-/* Non-public methods */
-
-guint _gtk_binding_parse_binding (GScanner *scanner);
-void _gtk_binding_reset_parsed (void);
-void _gtk_binding_entry_add_signall (GtkBindingSet *binding_set,
- guint keyval,
- GdkModifierType modifiers,
- const gchar *signal_name,
- GSList *binding_args);
-
-/* Creates a signal with a fixed callback instead of a class offset;
- * useful for key binding signals
- */
-guint _gtk_binding_signal_new (const gchar *signal_name,
- GType itype,
- GSignalFlags signal_flags,
- GCallback handler,
- GSignalAccumulator accumulator,
- gpointer accu_data,
- GSignalCMarshaller c_marshaller,
- GType return_type,
- guint n_params,
- ...);
+GtkBindingSet *gtk_binding_set_new (const gchar *set_name);
+GtkBindingSet *gtk_binding_set_by_class (gpointer object_class);
+GtkBindingSet *gtk_binding_set_find (const gchar *set_name);
+
+gboolean gtk_bindings_activate (GObject *object,
+ guint keyval,
+ GdkModifierType modifiers);
+gboolean gtk_bindings_activate_event (GObject *object,
+ GdkEventKey *event);
+gboolean gtk_binding_set_activate (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modifiers,
+ GObject *object);
+
+void gtk_binding_entry_skip (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modifiers);
+void gtk_binding_entry_add_signal (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modifiers,
+ const gchar *signal_name,
+ guint n_args,
+ ...);
+void gtk_binding_entry_add_signall (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modifiers,
+ const gchar *signal_name,
+ GSList *binding_args);
+
+GTokenType gtk_binding_entry_add_signal_from_string
+ (GtkBindingSet *binding_set,
+ const gchar *signal_desc);
+
+void gtk_binding_entry_remove (GtkBindingSet *binding_set,
+ guint keyval,
+ GdkModifierType modifiers);
+
+GDK_DEPRECATED_IN_3_0
+void gtk_binding_set_add_path (GtkBindingSet *binding_set,
+ GtkPathType path_type,
+ const gchar *path_pattern,
+ GtkPathPriorityType priority);
G_END_DECLS
-
#endif /* __GTK_BINDINGS_H__ */