1/* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * Copyright (C) 2004-2006 Christian Hammond
5 * Copyright (C) 2008 Cody Russell
6 * Copyright (C) 2008 Red Hat, Inc.
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
20 */
21
22/*
23 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
24 * file for a list of people on the GTK+ Team. See the ChangeLog
25 * files for a list of changes. These files are distributed with
26 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
27 */
28
29#ifndef __GTK_ENTRY_H__
30#define __GTK_ENTRY_H__
31
32
33#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
34#error "Only <gtk/gtk.h> can be included directly."
35#endif
36
37#include <gtk/gtkeditable.h>
38#include <gtk/gtkimcontext.h>
39#include <gtk/gtkentrybuffer.h>
40#include <gtk/gtkentrycompletion.h>
41#include <gtk/gtkimage.h>
42
43
44G_BEGIN_DECLS
45
46#define GTK_TYPE_ENTRY (gtk_entry_get_type ())
47#define GTK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry))
48#define GTK_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY, GtkEntryClass))
49#define GTK_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY))
50#define GTK_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY))
51#define GTK_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY, GtkEntryClass))
52
53/**
54 * GtkEntryIconPosition:
55 * @GTK_ENTRY_ICON_PRIMARY: At the beginning of the entry (depending on the text direction).
56 * @GTK_ENTRY_ICON_SECONDARY: At the end of the entry (depending on the text direction).
57 *
58 * Specifies the side of the entry at which an icon is placed.
59 */
60typedef enum
61{
62 GTK_ENTRY_ICON_PRIMARY,
63 GTK_ENTRY_ICON_SECONDARY
64} GtkEntryIconPosition;
65
66typedef struct _GtkEntry GtkEntry;
67typedef struct _GtkEntryClass GtkEntryClass;
68
69struct _GtkEntry
70{
71 /*< private >*/
72 GtkWidget parent_instance;
73};
74
75/**
76 * GtkEntryClass:
77 * @parent_class: The parent class.
78 * @activate: Class handler for the `GtkEntry::activate` signal. The default
79 * implementation activates the gtk.activate-default action.
80 *
81 * Class structure for `GtkEntry`. All virtual functions have a default
82 * implementation. Derived classes may set the virtual function pointers for the
83 * signal handlers to %NULL, but must keep @get_text_area_size and
84 * @get_frame_size non-%NULL; either use the default implementation, or provide
85 * a custom one.
86 */
87struct _GtkEntryClass
88{
89 GtkWidgetClass parent_class;
90
91 /* Action signals
92 */
93 void (* activate) (GtkEntry *entry);
94
95 /*< private >*/
96
97 gpointer padding[8];
98};
99
100GDK_AVAILABLE_IN_ALL
101GType gtk_entry_get_type (void) G_GNUC_CONST;
102GDK_AVAILABLE_IN_ALL
103GtkWidget* gtk_entry_new (void);
104GDK_AVAILABLE_IN_ALL
105GtkWidget* gtk_entry_new_with_buffer (GtkEntryBuffer *buffer);
106
107GDK_AVAILABLE_IN_ALL
108GtkEntryBuffer* gtk_entry_get_buffer (GtkEntry *entry);
109GDK_AVAILABLE_IN_ALL
110void gtk_entry_set_buffer (GtkEntry *entry,
111 GtkEntryBuffer *buffer);
112
113GDK_AVAILABLE_IN_ALL
114void gtk_entry_set_visibility (GtkEntry *entry,
115 gboolean visible);
116GDK_AVAILABLE_IN_ALL
117gboolean gtk_entry_get_visibility (GtkEntry *entry);
118
119GDK_AVAILABLE_IN_ALL
120void gtk_entry_set_invisible_char (GtkEntry *entry,
121 gunichar ch);
122GDK_AVAILABLE_IN_ALL
123gunichar gtk_entry_get_invisible_char (GtkEntry *entry);
124GDK_AVAILABLE_IN_ALL
125void gtk_entry_unset_invisible_char (GtkEntry *entry);
126
127GDK_AVAILABLE_IN_ALL
128void gtk_entry_set_has_frame (GtkEntry *entry,
129 gboolean setting);
130GDK_AVAILABLE_IN_ALL
131gboolean gtk_entry_get_has_frame (GtkEntry *entry);
132
133GDK_AVAILABLE_IN_ALL
134void gtk_entry_set_overwrite_mode (GtkEntry *entry,
135 gboolean overwrite);
136GDK_AVAILABLE_IN_ALL
137gboolean gtk_entry_get_overwrite_mode (GtkEntry *entry);
138
139/* text is truncated if needed */
140GDK_AVAILABLE_IN_ALL
141void gtk_entry_set_max_length (GtkEntry *entry,
142 int max);
143GDK_AVAILABLE_IN_ALL
144int gtk_entry_get_max_length (GtkEntry *entry);
145GDK_AVAILABLE_IN_ALL
146guint16 gtk_entry_get_text_length (GtkEntry *entry);
147
148GDK_AVAILABLE_IN_ALL
149void gtk_entry_set_activates_default (GtkEntry *entry,
150 gboolean setting);
151GDK_AVAILABLE_IN_ALL
152gboolean gtk_entry_get_activates_default (GtkEntry *entry);
153
154GDK_AVAILABLE_IN_ALL
155void gtk_entry_set_alignment (GtkEntry *entry,
156 float xalign);
157GDK_AVAILABLE_IN_ALL
158float gtk_entry_get_alignment (GtkEntry *entry);
159
160GDK_AVAILABLE_IN_ALL
161void gtk_entry_set_completion (GtkEntry *entry,
162 GtkEntryCompletion *completion);
163GDK_AVAILABLE_IN_ALL
164GtkEntryCompletion *gtk_entry_get_completion (GtkEntry *entry);
165
166/* Progress API
167 */
168GDK_AVAILABLE_IN_ALL
169void gtk_entry_set_progress_fraction (GtkEntry *entry,
170 double fraction);
171GDK_AVAILABLE_IN_ALL
172double gtk_entry_get_progress_fraction (GtkEntry *entry);
173
174GDK_AVAILABLE_IN_ALL
175void gtk_entry_set_progress_pulse_step (GtkEntry *entry,
176 double fraction);
177GDK_AVAILABLE_IN_ALL
178double gtk_entry_get_progress_pulse_step (GtkEntry *entry);
179
180GDK_AVAILABLE_IN_ALL
181void gtk_entry_progress_pulse (GtkEntry *entry);
182GDK_AVAILABLE_IN_ALL
183const char * gtk_entry_get_placeholder_text (GtkEntry *entry);
184GDK_AVAILABLE_IN_ALL
185void gtk_entry_set_placeholder_text (GtkEntry *entry,
186 const char *text);
187/* Setting and managing icons
188 */
189GDK_AVAILABLE_IN_ALL
190void gtk_entry_set_icon_from_paintable (GtkEntry *entry,
191 GtkEntryIconPosition icon_pos,
192 GdkPaintable *paintable);
193GDK_AVAILABLE_IN_ALL
194void gtk_entry_set_icon_from_icon_name (GtkEntry *entry,
195 GtkEntryIconPosition icon_pos,
196 const char *icon_name);
197GDK_AVAILABLE_IN_ALL
198void gtk_entry_set_icon_from_gicon (GtkEntry *entry,
199 GtkEntryIconPosition icon_pos,
200 GIcon *icon);
201GDK_AVAILABLE_IN_ALL
202GtkImageType gtk_entry_get_icon_storage_type (GtkEntry *entry,
203 GtkEntryIconPosition icon_pos);
204GDK_AVAILABLE_IN_ALL
205GdkPaintable * gtk_entry_get_icon_paintable (GtkEntry *entry,
206 GtkEntryIconPosition icon_pos);
207GDK_AVAILABLE_IN_ALL
208const char * gtk_entry_get_icon_name (GtkEntry *entry,
209 GtkEntryIconPosition icon_pos);
210GDK_AVAILABLE_IN_ALL
211GIcon* gtk_entry_get_icon_gicon (GtkEntry *entry,
212 GtkEntryIconPosition icon_pos);
213GDK_AVAILABLE_IN_ALL
214void gtk_entry_set_icon_activatable (GtkEntry *entry,
215 GtkEntryIconPosition icon_pos,
216 gboolean activatable);
217GDK_AVAILABLE_IN_ALL
218gboolean gtk_entry_get_icon_activatable (GtkEntry *entry,
219 GtkEntryIconPosition icon_pos);
220GDK_AVAILABLE_IN_ALL
221void gtk_entry_set_icon_sensitive (GtkEntry *entry,
222 GtkEntryIconPosition icon_pos,
223 gboolean sensitive);
224GDK_AVAILABLE_IN_ALL
225gboolean gtk_entry_get_icon_sensitive (GtkEntry *entry,
226 GtkEntryIconPosition icon_pos);
227GDK_AVAILABLE_IN_ALL
228int gtk_entry_get_icon_at_pos (GtkEntry *entry,
229 int x,
230 int y);
231GDK_AVAILABLE_IN_ALL
232void gtk_entry_set_icon_tooltip_text (GtkEntry *entry,
233 GtkEntryIconPosition icon_pos,
234 const char *tooltip);
235GDK_AVAILABLE_IN_ALL
236char * gtk_entry_get_icon_tooltip_text (GtkEntry *entry,
237 GtkEntryIconPosition icon_pos);
238GDK_AVAILABLE_IN_ALL
239void gtk_entry_set_icon_tooltip_markup (GtkEntry *entry,
240 GtkEntryIconPosition icon_pos,
241 const char *tooltip);
242GDK_AVAILABLE_IN_ALL
243char * gtk_entry_get_icon_tooltip_markup (GtkEntry *entry,
244 GtkEntryIconPosition icon_pos);
245GDK_AVAILABLE_IN_ALL
246void gtk_entry_set_icon_drag_source (GtkEntry *entry,
247 GtkEntryIconPosition icon_pos,
248 GdkContentProvider *provider,
249 GdkDragAction actions);
250GDK_AVAILABLE_IN_ALL
251int gtk_entry_get_current_icon_drag_source (GtkEntry *entry);
252GDK_AVAILABLE_IN_ALL
253void gtk_entry_get_icon_area (GtkEntry *entry,
254 GtkEntryIconPosition icon_pos,
255 GdkRectangle *icon_area);
256
257GDK_AVAILABLE_IN_ALL
258void gtk_entry_reset_im_context (GtkEntry *entry);
259
260GDK_AVAILABLE_IN_ALL
261void gtk_entry_set_input_purpose (GtkEntry *entry,
262 GtkInputPurpose purpose);
263GDK_AVAILABLE_IN_ALL
264GtkInputPurpose gtk_entry_get_input_purpose (GtkEntry *entry);
265
266GDK_AVAILABLE_IN_ALL
267void gtk_entry_set_input_hints (GtkEntry *entry,
268 GtkInputHints hints);
269GDK_AVAILABLE_IN_ALL
270GtkInputHints gtk_entry_get_input_hints (GtkEntry *entry);
271
272GDK_AVAILABLE_IN_ALL
273void gtk_entry_set_attributes (GtkEntry *entry,
274 PangoAttrList *attrs);
275GDK_AVAILABLE_IN_ALL
276PangoAttrList *gtk_entry_get_attributes (GtkEntry *entry);
277
278GDK_AVAILABLE_IN_ALL
279void gtk_entry_set_tabs (GtkEntry *entry,
280 PangoTabArray *tabs);
281
282GDK_AVAILABLE_IN_ALL
283PangoTabArray *gtk_entry_get_tabs (GtkEntry *entry);
284
285GDK_AVAILABLE_IN_ALL
286gboolean gtk_entry_grab_focus_without_selecting (GtkEntry *entry);
287
288GDK_AVAILABLE_IN_ALL
289void gtk_entry_set_extra_menu (GtkEntry *entry,
290 GMenuModel *model);
291GDK_AVAILABLE_IN_ALL
292GMenuModel * gtk_entry_get_extra_menu (GtkEntry *entry);
293
294G_END_DECLS
295
296#endif /* __GTK_ENTRY_H__ */
297

source code of gtk/gtk/gtkentry.h