gtkbindings.h 3.71 KB
Newer Older
Tim Janik's avatar
Tim Janik committed
1 2 3 4 5 6 7
/* GTK - The GIMP Toolkit
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * GtkBindingSet: Keybinding manager for GtkObjects.
 * Copyright (C) 1998 Tim Janik
 *
 * This library is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
Tim Janik's avatar
Tim Janik committed
9 10 11 12 13 14
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * 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
15
 * Lesser General Public License for more details.
Tim Janik's avatar
Tim Janik committed
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
Tim Janik's avatar
Tim Janik committed
18 19 20 21
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
22 23

/*
24
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
25 26 27 28 29
 * 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/. 
 */

Tim Janik's avatar
Tim Janik committed
30 31 32 33 34 35 36 37 38 39 40 41 42 43
#ifndef __GTK_BINDINGS_H__
#define __GTK_BINDINGS_H__


#include <gdk/gdk.h>
#include <gtk/gtkobject.h>
#include <gtk/gtkenums.h>


#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


44 45 46
/* Binding sets
 */

Tim Janik's avatar
Tim Janik committed
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
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;
};

struct _GtkBindingEntry
{
  /* key portion
   */
  guint			 keyval;
68
  GdkModifierType	 modifiers;
Tim Janik's avatar
Tim Janik committed
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
  
  GtkBindingSet		*binding_set;
  guint			destroyed : 1;
  guint			in_emission : 1;
  GtkBindingEntry	*set_next;
  GtkBindingEntry	*hash_next;
  GtkBindingSignal	*signals;
};

struct _GtkBindingSignal
{
  GtkBindingSignal	*next;
  gchar			*signal_name;
  guint			 n_args;
  GtkBindingArg		*args;
};

struct _GtkBindingArg
{
  GtkType	arg_type;
  union {
    glong	 long_data;
    gdouble	 double_data;
    gchar	*string_data;
  } d;
};

96 97 98

/* Application-level methods */

Tim Janik's avatar
Tim Janik committed
99 100 101 102 103
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,
104
					 GdkModifierType modifiers);
Tim Janik's avatar
Tim Janik committed
105 106
gboolean gtk_binding_set_activate	(GtkBindingSet	*binding_set,
					 guint		 keyval,
107
					 GdkModifierType modifiers,
Tim Janik's avatar
Tim Janik committed
108 109 110 111
					 GtkObject	*object);
#define	 gtk_binding_entry_add		gtk_binding_entry_clear
void	 gtk_binding_entry_clear	(GtkBindingSet	*binding_set,
					 guint		 keyval,
112
					 GdkModifierType modifiers);
Tim Janik's avatar
Tim Janik committed
113 114
void	 gtk_binding_entry_add_signal	(GtkBindingSet	*binding_set,
					 guint		 keyval,
115
					 GdkModifierType modifiers,
Tim Janik's avatar
Tim Janik committed
116 117 118 119 120 121 122 123 124
					 const gchar	*signal_name,
					 guint		 n_args,
					 ...);
void	 gtk_binding_set_add_path	(GtkBindingSet	*binding_set,
					 GtkPathType	 path_type,
					 const gchar	*path_pattern,
					 GtkPathPriorityType priority);


125 126 127 128
/* Non-public methods */

void	 gtk_binding_entry_remove	(GtkBindingSet	*binding_set,
					 guint		 keyval,
129
					 GdkModifierType modifiers);
130 131
void	 gtk_binding_entry_add_signall	(GtkBindingSet	*binding_set,
					 guint		 keyval,
132
					 GdkModifierType modifiers,
133 134
					 const gchar	*signal_name,
					 GSList		*binding_args);
135
guint	 gtk_binding_parse_binding	(GScanner	*scanner);
136

Tim Janik's avatar
Tim Janik committed
137 138 139 140 141 142 143 144 145



#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif /* __GTK_BINDINGS_H__ */