gtkeditable.h 7.71 KB
Newer Older
Cody Russell's avatar
Cody Russell committed
1
/* GTK - The GIMP Toolkit
2
3
4
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * This library is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
6
7
8
9
10
11
 * 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
12
 * Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
Javier Jardón's avatar
Javier Jardón committed
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
21
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
22
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
23
24
 */

25
26
27
28
#ifndef __GTK_EDITABLE_H__
#define __GTK_EDITABLE_H__


29
30
31
32
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

33
34
#include <gtk/gtkwidget.h>

35

36
G_BEGIN_DECLS
37

Owen Taylor's avatar
Owen Taylor committed
38
39
40
#define GTK_TYPE_EDITABLE             (gtk_editable_get_type ())
#define GTK_EDITABLE(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_EDITABLE, GtkEditable))
#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
44
typedef struct _GtkEditable          GtkEditable;         /* Dummy typedef */
typedef struct _GtkEditableInterface GtkEditableInterface;
45

46
struct _GtkEditableInterface
47
{
48
  GTypeInterface                   base_iface;
49

50
  /* signals */
Owen Taylor's avatar
Owen Taylor committed
51
  void (* insert_text)              (GtkEditable    *editable,
Benjamin Otte's avatar
Benjamin Otte committed
52
                                     const char     *text,
53
54
                                     int             length,
                                     int            *position);
Owen Taylor's avatar
Owen Taylor committed
55
  void (* delete_text)              (GtkEditable    *editable,
56
57
                                     int             start_pos,
                                     int             end_pos);
58
59
60
  void (* changed)                  (GtkEditable    *editable);

  /* vtable */
61
62
63
64
65
66
67
68
69
  const char * (* get_text)         (GtkEditable    *editable);
  void     (* do_insert_text)       (GtkEditable    *editable,
                                     const char     *text,
                                     int             length,
                                     int            *position);
  void     (* do_delete_text)       (GtkEditable    *editable,
                                     int             start_pos,
                                     int             end_pos);

Owen Taylor's avatar
Owen Taylor committed
70
  gboolean (* get_selection_bounds) (GtkEditable    *editable,
71
72
73
74
75
76
                                     int            *start_pos,
                                     int            *end_pos);
  void     (* set_selection_bounds) (GtkEditable    *editable,
                                     int             start_pos,
                                     int             end_pos);
  GtkEditable * (* get_delegate)    (GtkEditable    *editable);
77
78
};

79
GDK_AVAILABLE_IN_ALL
Manish Singh's avatar
Manish Singh committed
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
86
87
88
89
void     gtk_editable_set_text             (GtkEditable *editable,
                                            const char  *text);
GDK_AVAILABLE_IN_ALL
char *   gtk_editable_get_chars            (GtkEditable *editable,
                                            int          start_pos,
90
                                            int          end_pos) G_GNUC_MALLOC;
91
GDK_AVAILABLE_IN_ALL
Owen Taylor's avatar
Owen Taylor committed
92
void     gtk_editable_insert_text          (GtkEditable *editable,
93
94
95
                                            const char  *text,
                                            int          length,
                                            int         *position);
96
GDK_AVAILABLE_IN_ALL
Owen Taylor's avatar
Owen Taylor committed
97
void     gtk_editable_delete_text          (GtkEditable *editable,
98
99
100
                                            int          start_pos,
                                            int          end_pos);

101
GDK_AVAILABLE_IN_ALL
102
103
104
gboolean gtk_editable_get_selection_bounds (GtkEditable *editable,
                                            int         *start_pos,
                                            int         *end_pos);
105
GDK_AVAILABLE_IN_ALL
Owen Taylor's avatar
Owen Taylor committed
106
void     gtk_editable_delete_selection     (GtkEditable *editable);
107
108
109
110
111
GDK_AVAILABLE_IN_ALL
void     gtk_editable_select_region        (GtkEditable *editable,
                                            int          start_pos,
                                            int          end_pos);

112
GDK_AVAILABLE_IN_ALL
Owen Taylor's avatar
Owen Taylor committed
113
void     gtk_editable_set_position         (GtkEditable *editable,
114
115
116
117
                                            int          position);
GDK_AVAILABLE_IN_ALL
int      gtk_editable_get_position         (GtkEditable *editable);

118
GDK_AVAILABLE_IN_ALL
119
gboolean gtk_editable_get_editable         (GtkEditable *editable);
120
GDK_AVAILABLE_IN_ALL
Owen Taylor's avatar
Owen Taylor committed
121
void     gtk_editable_set_editable         (GtkEditable *editable,
122
123
                                            gboolean     is_editable);

124
GDK_AVAILABLE_IN_ALL
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
float    gtk_editable_get_alignment        (GtkEditable *editable);
GDK_AVAILABLE_IN_ALL
void     gtk_editable_set_alignment        (GtkEditable *editable,
                                            float        xalign);

GDK_AVAILABLE_IN_ALL
int      gtk_editable_get_width_chars      (GtkEditable *editable);
GDK_AVAILABLE_IN_ALL
void     gtk_editable_set_width_chars      (GtkEditable *editable,
                                            int          n_chars);

GDK_AVAILABLE_IN_ALL
int      gtk_editable_get_max_width_chars  (GtkEditable *editable);
GDK_AVAILABLE_IN_ALL
void     gtk_editable_set_max_width_chars  (GtkEditable *editable,
                                            int          n_chars);
141
142
143
144
145
GDK_AVAILABLE_IN_ALL
gboolean gtk_editable_get_enable_undo      (GtkEditable *editable);
GDK_AVAILABLE_IN_ALL
void     gtk_editable_set_enable_undo      (GtkEditable *editable,
                                            gboolean     enable_undo);
146
147
148
149
150
151
152
153
154
155
156

/* api for implementations */

typedef enum {
  GTK_EDITABLE_PROP_TEXT,
  GTK_EDITABLE_PROP_CURSOR_POSITION,
  GTK_EDITABLE_PROP_SELECTION_BOUND,
  GTK_EDITABLE_PROP_EDITABLE,
  GTK_EDITABLE_PROP_WIDTH_CHARS,
  GTK_EDITABLE_PROP_MAX_WIDTH_CHARS,
  GTK_EDITABLE_PROP_XALIGN,
157
  GTK_EDITABLE_PROP_ENABLE_UNDO,
158
159
160
161
162
163
164
  GTK_EDITABLE_NUM_PROPERTIES
} GtkEditableProperties;

GDK_AVAILABLE_IN_ALL
guint        gtk_editable_install_properties    (GObjectClass *object_class,
                                                 guint         first_prop);
GDK_AVAILABLE_IN_ALL
165
166
GtkEditable *gtk_editable_get_delegate          (GtkEditable *editable);
GDK_AVAILABLE_IN_ALL
167
168
169
170
171
172
173
174
175
176
177
178
179
180
void         gtk_editable_init_delegate         (GtkEditable  *editable);
GDK_AVAILABLE_IN_ALL
void         gtk_editable_finish_delegate       (GtkEditable  *editable);
GDK_AVAILABLE_IN_ALL
gboolean     gtk_editable_delegate_set_property (GObject      *object,
                                                 guint         prop_id,
                                                 const GValue *value,
                                                 GParamSpec   *pspec);
GDK_AVAILABLE_IN_ALL
gboolean     gtk_editable_delegate_get_property (GObject      *object,
                                                 guint         prop_id,
                                                 GValue       *value,
                                                 GParamSpec   *pspec);

181

182
G_END_DECLS
183
184

#endif /* __GTK_EDITABLE_H__ */