1 /* gtkentrycompletion.h 2 * Copyright (C) 2003 Kristian Rietveld <kris@gtk.org> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library 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 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef __GTK_ENTRY_COMPLETION_H__ 19 #define __GTK_ENTRY_COMPLETION_H__ 20 21 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 22 #error "Only <gtk/gtk.h> can be included directly." 23 #endif 24 25 #include <gdk/gdk.h> 26 #include <gtk/gtktreemodel.h> 27 #include <gtk/gtkliststore.h> 28 #include <gtk/gtkcellarea.h> 29 #include <gtk/gtktreeviewcolumn.h> 30 #include <gtk/gtktreemodelfilter.h> 31 32 G_BEGIN_DECLS 33 34 #define GTK_TYPE_ENTRY_COMPLETION (gtk_entry_completion_get_type ()) 35 #define GTK_ENTRY_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletion)) 36 #define GTK_ENTRY_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletionClass)) 37 #define GTK_IS_ENTRY_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY_COMPLETION)) 38 #define GTK_IS_ENTRY_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY_COMPLETION)) 39 #define GTK_ENTRY_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletionClass)) 40 41 typedef struct _GtkEntryCompletion GtkEntryCompletion; 42 typedef struct _GtkEntryCompletionClass GtkEntryCompletionClass; 43 typedef struct _GtkEntryCompletionPrivate GtkEntryCompletionPrivate; 44 45 /** 46 * GtkEntryCompletionMatchFunc: 47 * @completion: the #GtkEntryCompletion 48 * @key: the string to match, normalized and case-folded 49 * @iter: a #GtkTreeIter indicating the row to match 50 * @user_data: user data given to gtk_entry_completion_set_match_func() 51 * 52 * A function which decides whether the row indicated by @iter matches 53 * a given @key, and should be displayed as a possible completion for @key. 54 * Note that @key is normalized and case-folded (see g_utf8_normalize() 55 * and g_utf8_casefold()). If this is not appropriate, match functions 56 * have access to the unmodified key via 57 * `gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry ()))`. 58 * 59 * Returns: %TRUE if @iter should be displayed as a possible completion 60 * for @key 61 */ 62 typedef gboolean (* GtkEntryCompletionMatchFunc) (GtkEntryCompletion *completion, 63 const gchar *key, 64 GtkTreeIter *iter, 65 gpointer user_data); 66 67 68 struct _GtkEntryCompletion 69 { 70 GObject parent_instance; 71 72 /*< private >*/ 73 GtkEntryCompletionPrivate *priv; 74 }; 75 76 struct _GtkEntryCompletionClass 77 { 78 GObjectClass parent_class; 79 80 gboolean (* match_selected) (GtkEntryCompletion *completion, 81 GtkTreeModel *model, 82 GtkTreeIter *iter); 83 void (* action_activated) (GtkEntryCompletion *completion, 84 gint index_); 85 gboolean (* insert_prefix) (GtkEntryCompletion *completion, 86 const gchar *prefix); 87 gboolean (* cursor_on_match) (GtkEntryCompletion *completion, 88 GtkTreeModel *model, 89 GtkTreeIter *iter); 90 void (* no_matches) (GtkEntryCompletion *completion); 91 92 /* Padding for future expansion */ 93 void (*_gtk_reserved0) (void); 94 void (*_gtk_reserved1) (void); 95 void (*_gtk_reserved2) (void); 96 }; 97 98 /* core */ 99 GDK_AVAILABLE_IN_ALL 100 GType gtk_entry_completion_get_type (void) G_GNUC_CONST; 101 GDK_AVAILABLE_IN_ALL 102 GtkEntryCompletion *gtk_entry_completion_new (void); 103 GDK_AVAILABLE_IN_ALL 104 GtkEntryCompletion *gtk_entry_completion_new_with_area (GtkCellArea *area); 105 106 GDK_AVAILABLE_IN_ALL 107 GtkWidget *gtk_entry_completion_get_entry (GtkEntryCompletion *completion); 108 109 GDK_AVAILABLE_IN_ALL 110 void gtk_entry_completion_set_model (GtkEntryCompletion *completion, 111 GtkTreeModel *model); 112 GDK_AVAILABLE_IN_ALL 113 GtkTreeModel *gtk_entry_completion_get_model (GtkEntryCompletion *completion); 114 115 GDK_AVAILABLE_IN_ALL 116 void gtk_entry_completion_set_match_func (GtkEntryCompletion *completion, 117 GtkEntryCompletionMatchFunc func, 118 gpointer func_data, 119 GDestroyNotify func_notify); 120 GDK_AVAILABLE_IN_ALL 121 void gtk_entry_completion_set_minimum_key_length (GtkEntryCompletion *completion, 122 gint length); 123 GDK_AVAILABLE_IN_ALL 124 gint gtk_entry_completion_get_minimum_key_length (GtkEntryCompletion *completion); 125 GDK_AVAILABLE_IN_3_4 126 gchar * gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion, 127 const char *key); 128 GDK_AVAILABLE_IN_ALL 129 void gtk_entry_completion_complete (GtkEntryCompletion *completion); 130 GDK_AVAILABLE_IN_ALL 131 void gtk_entry_completion_insert_prefix (GtkEntryCompletion *completion); 132 133 GDK_AVAILABLE_IN_ALL 134 void gtk_entry_completion_insert_action_text (GtkEntryCompletion *completion, 135 gint index_, 136 const gchar *text); 137 GDK_AVAILABLE_IN_ALL 138 void gtk_entry_completion_insert_action_markup (GtkEntryCompletion *completion, 139 gint index_, 140 const gchar *markup); 141 GDK_AVAILABLE_IN_ALL 142 void gtk_entry_completion_delete_action (GtkEntryCompletion *completion, 143 gint index_); 144 145 GDK_AVAILABLE_IN_ALL 146 void gtk_entry_completion_set_inline_completion (GtkEntryCompletion *completion, 147 gboolean inline_completion); 148 GDK_AVAILABLE_IN_ALL 149 gboolean gtk_entry_completion_get_inline_completion (GtkEntryCompletion *completion); 150 GDK_AVAILABLE_IN_ALL 151 void gtk_entry_completion_set_inline_selection (GtkEntryCompletion *completion, 152 gboolean inline_selection); 153 GDK_AVAILABLE_IN_ALL 154 gboolean gtk_entry_completion_get_inline_selection (GtkEntryCompletion *completion); 155 GDK_AVAILABLE_IN_ALL 156 void gtk_entry_completion_set_popup_completion (GtkEntryCompletion *completion, 157 gboolean popup_completion); 158 GDK_AVAILABLE_IN_ALL 159 gboolean gtk_entry_completion_get_popup_completion (GtkEntryCompletion *completion); 160 GDK_AVAILABLE_IN_ALL 161 void gtk_entry_completion_set_popup_set_width (GtkEntryCompletion *completion, 162 gboolean popup_set_width); 163 GDK_AVAILABLE_IN_ALL 164 gboolean gtk_entry_completion_get_popup_set_width (GtkEntryCompletion *completion); 165 GDK_AVAILABLE_IN_ALL 166 void gtk_entry_completion_set_popup_single_match (GtkEntryCompletion *completion, 167 gboolean popup_single_match); 168 GDK_AVAILABLE_IN_ALL 169 gboolean gtk_entry_completion_get_popup_single_match (GtkEntryCompletion *completion); 170 171 GDK_AVAILABLE_IN_ALL 172 const gchar *gtk_entry_completion_get_completion_prefix (GtkEntryCompletion *completion); 173 /* convenience */ 174 GDK_AVAILABLE_IN_ALL 175 void gtk_entry_completion_set_text_column (GtkEntryCompletion *completion, 176 gint column); 177 GDK_AVAILABLE_IN_ALL 178 gint gtk_entry_completion_get_text_column (GtkEntryCompletion *completion); 179 180 G_END_DECLS 181 182 #endif /* __GTK_ENTRY_COMPLETION_H__ */ 183