1 /* GTK - The GIMP Toolkit 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 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 License, 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 18 /* 19 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS 20 * file for a list of people on the GTK+ Team. See the ChangeLog 21 * files for a list of changes. These files are distributed with 22 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 23 */ 24 25 #ifndef __GTK_EDITABLE_H__ 26 #define __GTK_EDITABLE_H__ 27 28 29 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 30 #error "Only <gtk/gtk.h> can be included directly." 31 #endif 32 33 #include <gtk/gtkwidget.h> 34 35 36 G_BEGIN_DECLS 37 38 #define GTK_TYPE_EDITABLE (gtk_editable_get_type ()) 39 #define GTK_EDITABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_EDITABLE, GtkEditable)) 40 #define GTK_IS_EDITABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_EDITABLE)) 41 #define GTK_EDITABLE_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_EDITABLE, GtkEditableInterface)) 42 43 typedef struct _GtkEditable GtkEditable; /* Dummy typedef */ 44 typedef struct _GtkEditableInterface GtkEditableInterface; 45 46 struct _GtkEditableInterface 47 { 48 GTypeInterface base_iface; 49 50 /* signals */ 51 void (* insert_text) (GtkEditable *editable, 52 const char *text, 53 int length, 54 int *position); 55 void (* delete_text) (GtkEditable *editable, 56 int start_pos, 57 int end_pos); 58 void (* changed) (GtkEditable *editable); 59 60 /* vtable */ 61 const char * (* get_text) (GtkEditable *editable); 62 void (* do_insert_text) (GtkEditable *editable, 63 const char *text, 64 int length, 65 int *position); 66 void (* do_delete_text) (GtkEditable *editable, 67 int start_pos, 68 int end_pos); 69 70 gboolean (* get_selection_bounds) (GtkEditable *editable, 71 int *start_pos, 72 int *end_pos); 73 void (* set_selection_bounds) (GtkEditable *editable, 74 int start_pos, 75 int end_pos); 76 GtkEditable * (* get_delegate) (GtkEditable *editable); 77 }; 78 79 GDK_AVAILABLE_IN_ALL 80 GType gtk_editable_get_type (void) G_GNUC_CONST; 81 82 GDK_AVAILABLE_IN_ALL 83 const char * gtk_editable_get_text (GtkEditable *editable); 84 GDK_AVAILABLE_IN_ALL 85 void gtk_editable_set_text (GtkEditable *editable, 86 const char *text); 87 GDK_AVAILABLE_IN_ALL 88 char * gtk_editable_get_chars (GtkEditable *editable, 89 int start_pos, 90 int end_pos); 91 GDK_AVAILABLE_IN_ALL 92 void gtk_editable_insert_text (GtkEditable *editable, 93 const char *text, 94 int length, 95 int *position); 96 GDK_AVAILABLE_IN_ALL 97 void gtk_editable_delete_text (GtkEditable *editable, 98 int start_pos, 99 int end_pos); 100 101 GDK_AVAILABLE_IN_ALL 102 gboolean gtk_editable_get_selection_bounds (GtkEditable *editable, 103 int *start_pos, 104 int *end_pos); 105 GDK_AVAILABLE_IN_ALL 106 void gtk_editable_delete_selection (GtkEditable *editable); 107 GDK_AVAILABLE_IN_ALL 108 void gtk_editable_select_region (GtkEditable *editable, 109 int start_pos, 110 int end_pos); 111 112 GDK_AVAILABLE_IN_ALL 113 void gtk_editable_set_position (GtkEditable *editable, 114 int position); 115 GDK_AVAILABLE_IN_ALL 116 int gtk_editable_get_position (GtkEditable *editable); 117 118 GDK_AVAILABLE_IN_ALL 119 gboolean gtk_editable_get_editable (GtkEditable *editable); 120 GDK_AVAILABLE_IN_ALL 121 void gtk_editable_set_editable (GtkEditable *editable, 122 gboolean is_editable); 123 124 GDK_AVAILABLE_IN_ALL 125 float gtk_editable_get_alignment (GtkEditable *editable); 126 GDK_AVAILABLE_IN_ALL 127 void gtk_editable_set_alignment (GtkEditable *editable, 128 float xalign); 129 130 GDK_AVAILABLE_IN_ALL 131 int gtk_editable_get_width_chars (GtkEditable *editable); 132 GDK_AVAILABLE_IN_ALL 133 void gtk_editable_set_width_chars (GtkEditable *editable, 134 int n_chars); 135 136 GDK_AVAILABLE_IN_ALL 137 int gtk_editable_get_max_width_chars (GtkEditable *editable); 138 GDK_AVAILABLE_IN_ALL 139 void gtk_editable_set_max_width_chars (GtkEditable *editable, 140 int n_chars); 141 GDK_AVAILABLE_IN_ALL 142 gboolean gtk_editable_get_enable_undo (GtkEditable *editable); 143 GDK_AVAILABLE_IN_ALL 144 void gtk_editable_set_enable_undo (GtkEditable *editable, 145 gboolean enable_undo); 146 147 /* api for implementations */ 148 149 typedef enum { 150 GTK_EDITABLE_PROP_TEXT, 151 GTK_EDITABLE_PROP_CURSOR_POSITION, 152 GTK_EDITABLE_PROP_SELECTION_BOUND, 153 GTK_EDITABLE_PROP_EDITABLE, 154 GTK_EDITABLE_PROP_WIDTH_CHARS, 155 GTK_EDITABLE_PROP_MAX_WIDTH_CHARS, 156 GTK_EDITABLE_PROP_XALIGN, 157 GTK_EDITABLE_PROP_ENABLE_UNDO, 158 GTK_EDITABLE_NUM_PROPERTIES 159 } GtkEditableProperties; 160 161 GDK_AVAILABLE_IN_ALL 162 guint gtk_editable_install_properties (GObjectClass *object_class, 163 guint first_prop); 164 GDK_AVAILABLE_IN_ALL 165 GtkEditable *gtk_editable_get_delegate (GtkEditable *editable); 166 GDK_AVAILABLE_IN_ALL 167 void gtk_editable_init_delegate (GtkEditable *editable); 168 GDK_AVAILABLE_IN_ALL 169 void gtk_editable_finish_delegate (GtkEditable *editable); 170 GDK_AVAILABLE_IN_ALL 171 gboolean gtk_editable_delegate_set_property (GObject *object, 172 guint prop_id, 173 const GValue *value, 174 GParamSpec *pspec); 175 GDK_AVAILABLE_IN_ALL 176 gboolean gtk_editable_delegate_get_property (GObject *object, 177 guint prop_id, 178 GValue *value, 179 GParamSpec *pspec); 180 181 182 G_END_DECLS 183 184 #endif /* __GTK_EDITABLE_H__ */ 185