X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkentry.h;h=db80b9e5a51ab5a698143524055d527384a6f343;hb=ea043cab5718304d9b6170afa2d3f959fc99c718;hp=5974934ebda4908cbf04054c0efe8e2a9519e95b;hpb=2f50a3044ed8bf7783e8362d956b6f77010795cd;p=~andy%2Fgtk diff --git a/gtk/gtkentry.h b/gtk/gtkentry.h index 5974934eb..db80b9e5a 100644 --- a/gtk/gtkentry.h +++ b/gtk/gtkentry.h @@ -1,92 +1,304 @@ /* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * + * Copyright (C) 2004-2006 Christian Hammond + * Copyright (C) 2008 Cody Russell + * Copyright (C) 2008 Red Hat, Inc. + * * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * modify it under the terms of the GNU Lesser General Public * 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 - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * You should have received a copy of the GNU Lesser General Public + * 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/. */ + #ifndef __GTK_ENTRY_H__ #define __GTK_ENTRY_H__ -#include -#include +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif +#include +#include +#include +#include +#include +#include +#include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +G_BEGIN_DECLS -#define GTK_ENTRY(obj) GTK_CHECK_CAST (obj, gtk_entry_get_type (), GtkEntry) -#define GTK_ENTRY_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_entry_get_type (), GtkEntryClass) -#define GTK_IS_ENTRY(obj) GTK_CHECK_TYPE (obj, gtk_entry_get_type ()) +#define GTK_TYPE_ENTRY (gtk_entry_get_type ()) +#define GTK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry)) +#define GTK_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY, GtkEntryClass)) +#define GTK_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY)) +#define GTK_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY)) +#define GTK_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY, GtkEntryClass)) +/** + * GtkEntryIconPosition: + * @GTK_ENTRY_ICON_PRIMARY: At the beginning of the entry (depending on the text direction). + * @GTK_ENTRY_ICON_SECONDARY: At the end of the entry (depending on the text direction). + * + * Specifies the side of the entry at which an icon is placed. + * + * Since: 2.16 + */ +typedef enum +{ + GTK_ENTRY_ICON_PRIMARY, + GTK_ENTRY_ICON_SECONDARY +} GtkEntryIconPosition; -typedef struct _GtkEntry GtkEntry; -typedef struct _GtkEntryClass GtkEntryClass; +typedef struct _GtkEntry GtkEntry; +typedef struct _GtkEntryPrivate GtkEntryPrivate; +typedef struct _GtkEntryClass GtkEntryClass; struct _GtkEntry { - GtkEditable editable; - - GdkWindow *text_area; - GdkPixmap *backing_pixmap; - GdkCursor *cursor; - gchar *text; - - guint16 text_size; - guint16 text_length; - guint16 text_max_length; - gint16 scroll_offset; - guint visible : 1; - guint32 timer; - guint button; + /*< private >*/ + GtkWidget parent_instance; + + GtkEntryPrivate *priv; }; struct _GtkEntryClass { - GtkEditableClass parent_class; + GtkWidgetClass parent_class; + + /* Hook to customize right-click popup */ + void (* populate_popup) (GtkEntry *entry, + GtkWidget *popup); + + /* Action signals + */ + void (* activate) (GtkEntry *entry); + void (* move_cursor) (GtkEntry *entry, + GtkMovementStep step, + gint count, + gboolean extend_selection); + void (* insert_at_cursor) (GtkEntry *entry, + const gchar *str); + void (* delete_from_cursor) (GtkEntry *entry, + GtkDeleteType type, + gint count); + void (* backspace) (GtkEntry *entry); + void (* cut_clipboard) (GtkEntry *entry); + void (* copy_clipboard) (GtkEntry *entry); + void (* paste_clipboard) (GtkEntry *entry); + void (* toggle_overwrite) (GtkEntry *entry); + + /* hooks to add other objects beside the entry (like in GtkSpinButton) */ + void (* get_text_area_size) (GtkEntry *entry, + gint *x, + gint *y, + gint *width, + gint *height); + void (* get_frame_size) (GtkEntry *entry, + gint *x, + gint *y, + gint *width, + gint *height); + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); + void (*_gtk_reserved7) (void); }; -guint gtk_entry_get_type (void); -GtkWidget* gtk_entry_new (void); -GtkWidget* gtk_entry_new_with_max_length (guint16 max); -void gtk_entry_set_text (GtkEntry *entry, - const gchar *text); -void gtk_entry_append_text (GtkEntry *entry, - const gchar *text); -void gtk_entry_prepend_text (GtkEntry *entry, - const gchar *text); -void gtk_entry_set_position (GtkEntry *entry, - gint position); -gchar* gtk_entry_get_text (GtkEntry *entry); -void gtk_entry_select_region (GtkEntry *entry, - gint start, - gint end); -void gtk_entry_set_visibility (GtkEntry *entry, - gboolean visible); -void gtk_entry_set_editable (GtkEntry *entry, - gboolean editable); - -/* If entry->text is already > max it's up to you to change it */ -void gtk_entry_set_max_length (GtkEntry *entry, - guint16 max); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ +GType gtk_entry_get_type (void) G_GNUC_CONST; +GtkWidget* gtk_entry_new (void); +GtkWidget* gtk_entry_new_with_buffer (GtkEntryBuffer *buffer); + +GtkEntryBuffer* gtk_entry_get_buffer (GtkEntry *entry); +void gtk_entry_set_buffer (GtkEntry *entry, + GtkEntryBuffer *buffer); + +void gtk_entry_get_text_area (GtkEntry *entry, + GdkRectangle *text_area); + +void gtk_entry_set_visibility (GtkEntry *entry, + gboolean visible); +gboolean gtk_entry_get_visibility (GtkEntry *entry); + +void gtk_entry_set_invisible_char (GtkEntry *entry, + gunichar ch); +gunichar gtk_entry_get_invisible_char (GtkEntry *entry); +void gtk_entry_unset_invisible_char (GtkEntry *entry); + +void gtk_entry_set_has_frame (GtkEntry *entry, + gboolean setting); +gboolean gtk_entry_get_has_frame (GtkEntry *entry); + +GDK_DEPRECATED_IN_3_4 +void gtk_entry_set_inner_border (GtkEntry *entry, + const GtkBorder *border); +GDK_DEPRECATED_IN_3_4 +const GtkBorder* gtk_entry_get_inner_border (GtkEntry *entry); + +void gtk_entry_set_overwrite_mode (GtkEntry *entry, + gboolean overwrite); +gboolean gtk_entry_get_overwrite_mode (GtkEntry *entry); + +/* text is truncated if needed */ +void gtk_entry_set_max_length (GtkEntry *entry, + gint max); +gint gtk_entry_get_max_length (GtkEntry *entry); +guint16 gtk_entry_get_text_length (GtkEntry *entry); + +void gtk_entry_set_activates_default (GtkEntry *entry, + gboolean setting); +gboolean gtk_entry_get_activates_default (GtkEntry *entry); + +void gtk_entry_set_width_chars (GtkEntry *entry, + gint n_chars); +gint gtk_entry_get_width_chars (GtkEntry *entry); + +/* Somewhat more convenient than the GtkEditable generic functions + */ +void gtk_entry_set_text (GtkEntry *entry, + const gchar *text); +/* returns a reference to the text */ +const gchar* gtk_entry_get_text (GtkEntry *entry); + +PangoLayout* gtk_entry_get_layout (GtkEntry *entry); +void gtk_entry_get_layout_offsets (GtkEntry *entry, + gint *x, + gint *y); +void gtk_entry_set_alignment (GtkEntry *entry, + gfloat xalign); +gfloat gtk_entry_get_alignment (GtkEntry *entry); + +void gtk_entry_set_completion (GtkEntry *entry, + GtkEntryCompletion *completion); +GtkEntryCompletion *gtk_entry_get_completion (GtkEntry *entry); + +gint gtk_entry_layout_index_to_text_index (GtkEntry *entry, + gint layout_index); +gint gtk_entry_text_index_to_layout_index (GtkEntry *entry, + gint text_index); + +/* For scrolling cursor appropriately + */ +void gtk_entry_set_cursor_hadjustment (GtkEntry *entry, + GtkAdjustment *adjustment); +GtkAdjustment* gtk_entry_get_cursor_hadjustment (GtkEntry *entry); + +/* Progress API + */ +void gtk_entry_set_progress_fraction (GtkEntry *entry, + gdouble fraction); +gdouble gtk_entry_get_progress_fraction (GtkEntry *entry); + +void gtk_entry_set_progress_pulse_step (GtkEntry *entry, + gdouble fraction); +gdouble gtk_entry_get_progress_pulse_step (GtkEntry *entry); + +void gtk_entry_progress_pulse (GtkEntry *entry); +GDK_AVAILABLE_IN_3_2 +const gchar* gtk_entry_get_placeholder_text (GtkEntry *entry); +GDK_AVAILABLE_IN_3_2 +void gtk_entry_set_placeholder_text (GtkEntry *entry, + const gchar *text); +/* Setting and managing icons + */ +void gtk_entry_set_icon_from_pixbuf (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GdkPixbuf *pixbuf); +void gtk_entry_set_icon_from_stock (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + const gchar *stock_id); +void gtk_entry_set_icon_from_icon_name (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + const gchar *icon_name); +void gtk_entry_set_icon_from_gicon (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GIcon *icon); +GtkImageType gtk_entry_get_icon_storage_type (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +GdkPixbuf* gtk_entry_get_icon_pixbuf (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +const gchar* gtk_entry_get_icon_stock (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +const gchar* gtk_entry_get_icon_name (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +GIcon* gtk_entry_get_icon_gicon (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +void gtk_entry_set_icon_activatable (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + gboolean activatable); +gboolean gtk_entry_get_icon_activatable (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +void gtk_entry_set_icon_sensitive (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + gboolean sensitive); +gboolean gtk_entry_get_icon_sensitive (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +gint gtk_entry_get_icon_at_pos (GtkEntry *entry, + gint x, + gint y); +void gtk_entry_set_icon_tooltip_text (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + const gchar *tooltip); +gchar * gtk_entry_get_icon_tooltip_text (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +void gtk_entry_set_icon_tooltip_markup (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + const gchar *tooltip); +gchar * gtk_entry_get_icon_tooltip_markup (GtkEntry *entry, + GtkEntryIconPosition icon_pos); +void gtk_entry_set_icon_drag_source (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GtkTargetList *target_list, + GdkDragAction actions); +gint gtk_entry_get_current_icon_drag_source (GtkEntry *entry); +void gtk_entry_get_icon_area (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GdkRectangle *icon_area); + +gboolean gtk_entry_im_context_filter_keypress (GtkEntry *entry, + GdkEventKey *event); +void gtk_entry_reset_im_context (GtkEntry *entry); + +GDK_AVAILABLE_IN_3_6 +void gtk_entry_set_input_purpose (GtkEntry *entry, + GtkInputPurpose purpose); +GDK_AVAILABLE_IN_3_6 +GtkInputPurpose gtk_entry_get_input_purpose (GtkEntry *entry); + +GDK_AVAILABLE_IN_3_6 +void gtk_entry_set_input_hints (GtkEntry *entry, + GtkInputHints hints); +GDK_AVAILABLE_IN_3_6 +GtkInputHints gtk_entry_get_input_hints (GtkEntry *entry); + +GDK_AVAILABLE_IN_3_6 +void gtk_entry_set_attributes (GtkEntry *entry, + PangoAttrList *attrs); +GDK_AVAILABLE_IN_3_6 +PangoAttrList *gtk_entry_get_attributes (GtkEntry *entry); +G_END_DECLS #endif /* __GTK_ENTRY_H__ */