1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module gtk.EntryBuffer;
26 
27 private import glib.ConstructionException;
28 private import glib.Str;
29 private import gobject.ObjectG;
30 private import gobject.Signals;
31 private import gtk.c.functions;
32 public  import gtk.c.types;
33 public  import gtkc.gtktypes;
34 private import std.algorithm;
35 
36 
37 /**
38  * The #GtkEntryBuffer class contains the actual text displayed in a
39  * #GtkEntry widget.
40  * 
41  * A single #GtkEntryBuffer object can be shared by multiple #GtkEntry
42  * widgets which will then share the same text content, but not the cursor
43  * position, visibility attributes, icon etc.
44  * 
45  * #GtkEntryBuffer may be derived from. Such a derived class might allow
46  * text to be stored in an alternate location, such as non-pageable memory,
47  * useful in the case of important passwords. Or a derived class could
48  * integrate with an application’s concept of undo/redo.
49  */
50 public class EntryBuffer : ObjectG
51 {
52 	/** the main Gtk struct */
53 	protected GtkEntryBuffer* gtkEntryBuffer;
54 
55 	/** Get the main Gtk struct */
56 	public GtkEntryBuffer* getEntryBufferStruct(bool transferOwnership = false)
57 	{
58 		if (transferOwnership)
59 			ownedRef = false;
60 		return gtkEntryBuffer;
61 	}
62 
63 	/** the main Gtk struct as a void* */
64 	protected override void* getStruct()
65 	{
66 		return cast(void*)gtkEntryBuffer;
67 	}
68 
69 	/**
70 	 * Sets our main struct and passes it to the parent class.
71 	 */
72 	public this (GtkEntryBuffer* gtkEntryBuffer, bool ownedRef = false)
73 	{
74 		this.gtkEntryBuffer = gtkEntryBuffer;
75 		super(cast(GObject*)gtkEntryBuffer, ownedRef);
76 	}
77 
78 
79 	/** */
80 	public static GType getType()
81 	{
82 		return gtk_entry_buffer_get_type();
83 	}
84 
85 	/**
86 	 * Create a new GtkEntryBuffer object.
87 	 *
88 	 * Optionally, specify initial text to set in the buffer.
89 	 *
90 	 * Params:
91 	 *     initialChars = initial buffer text, or %NULL
92 	 *     nInitialChars = number of characters in @initial_chars, or -1
93 	 *
94 	 * Returns: A new GtkEntryBuffer object.
95 	 *
96 	 * Since: 2.18
97 	 *
98 	 * Throws: ConstructionException GTK+ fails to create the object.
99 	 */
100 	public this(string initialChars, int nInitialChars)
101 	{
102 		auto p = gtk_entry_buffer_new(Str.toStringz(initialChars), nInitialChars);
103 
104 		if(p is null)
105 		{
106 			throw new ConstructionException("null returned by new");
107 		}
108 
109 		this(cast(GtkEntryBuffer*) p, true);
110 	}
111 
112 	/**
113 	 * Deletes a sequence of characters from the buffer. @n_chars characters are
114 	 * deleted starting at @position. If @n_chars is negative, then all characters
115 	 * until the end of the text are deleted.
116 	 *
117 	 * If @position or @n_chars are out of bounds, then they are coerced to sane
118 	 * values.
119 	 *
120 	 * Note that the positions are specified in characters, not bytes.
121 	 *
122 	 * Params:
123 	 *     position = position at which to delete text
124 	 *     nChars = number of characters to delete
125 	 *
126 	 * Returns: The number of characters deleted.
127 	 *
128 	 * Since: 2.18
129 	 */
130 	public uint deleteText(uint position, int nChars)
131 	{
132 		return gtk_entry_buffer_delete_text(gtkEntryBuffer, position, nChars);
133 	}
134 
135 	/**
136 	 * Used when subclassing #GtkEntryBuffer
137 	 *
138 	 * Params:
139 	 *     position = position at which text was deleted
140 	 *     nChars = number of characters deleted
141 	 *
142 	 * Since: 2.18
143 	 */
144 	public void emitDeletedText(uint position, uint nChars)
145 	{
146 		gtk_entry_buffer_emit_deleted_text(gtkEntryBuffer, position, nChars);
147 	}
148 
149 	/**
150 	 * Used when subclassing #GtkEntryBuffer
151 	 *
152 	 * Params:
153 	 *     position = position at which text was inserted
154 	 *     chars = text that was inserted
155 	 *     nChars = number of characters inserted
156 	 *
157 	 * Since: 2.18
158 	 */
159 	public void emitInsertedText(uint position, string chars, uint nChars)
160 	{
161 		gtk_entry_buffer_emit_inserted_text(gtkEntryBuffer, position, Str.toStringz(chars), nChars);
162 	}
163 
164 	/**
165 	 * Retrieves the length in bytes of the buffer.
166 	 * See gtk_entry_buffer_get_length().
167 	 *
168 	 * Returns: The byte length of the buffer.
169 	 *
170 	 * Since: 2.18
171 	 */
172 	public size_t getBytes()
173 	{
174 		return gtk_entry_buffer_get_bytes(gtkEntryBuffer);
175 	}
176 
177 	/**
178 	 * Retrieves the length in characters of the buffer.
179 	 *
180 	 * Returns: The number of characters in the buffer.
181 	 *
182 	 * Since: 2.18
183 	 */
184 	public uint getLength()
185 	{
186 		return gtk_entry_buffer_get_length(gtkEntryBuffer);
187 	}
188 
189 	/**
190 	 * Retrieves the maximum allowed length of the text in
191 	 * @buffer. See gtk_entry_buffer_set_max_length().
192 	 *
193 	 * Returns: the maximum allowed number of characters
194 	 *     in #GtkEntryBuffer, or 0 if there is no maximum.
195 	 *
196 	 * Since: 2.18
197 	 */
198 	public int getMaxLength()
199 	{
200 		return gtk_entry_buffer_get_max_length(gtkEntryBuffer);
201 	}
202 
203 	/**
204 	 * Retrieves the contents of the buffer.
205 	 *
206 	 * The memory pointer returned by this call will not change
207 	 * unless this object emits a signal, or is finalized.
208 	 *
209 	 * Returns: a pointer to the contents of the widget as a
210 	 *     string. This string points to internally allocated
211 	 *     storage in the buffer and must not be freed, modified or
212 	 *     stored.
213 	 *
214 	 * Since: 2.18
215 	 */
216 	public string getText()
217 	{
218 		return Str.toString(gtk_entry_buffer_get_text(gtkEntryBuffer));
219 	}
220 
221 	/**
222 	 * Inserts @n_chars characters of @chars into the contents of the
223 	 * buffer, at position @position.
224 	 *
225 	 * If @n_chars is negative, then characters from chars will be inserted
226 	 * until a null-terminator is found. If @position or @n_chars are out of
227 	 * bounds, or the maximum buffer text length is exceeded, then they are
228 	 * coerced to sane values.
229 	 *
230 	 * Note that the position and length are in characters, not in bytes.
231 	 *
232 	 * Params:
233 	 *     position = the position at which to insert text.
234 	 *     chars = the text to insert into the buffer.
235 	 *     nChars = the length of the text in characters, or -1
236 	 *
237 	 * Returns: The number of characters actually inserted.
238 	 *
239 	 * Since: 2.18
240 	 */
241 	public uint insertText(uint position, string chars, int nChars)
242 	{
243 		return gtk_entry_buffer_insert_text(gtkEntryBuffer, position, Str.toStringz(chars), nChars);
244 	}
245 
246 	/**
247 	 * Sets the maximum allowed length of the contents of the buffer. If
248 	 * the current contents are longer than the given length, then they
249 	 * will be truncated to fit.
250 	 *
251 	 * Params:
252 	 *     maxLength = the maximum length of the entry buffer, or 0 for no maximum.
253 	 *         (other than the maximum length of entries.) The value passed in will
254 	 *         be clamped to the range 0-65536.
255 	 *
256 	 * Since: 2.18
257 	 */
258 	public void setMaxLength(int maxLength)
259 	{
260 		gtk_entry_buffer_set_max_length(gtkEntryBuffer, maxLength);
261 	}
262 
263 	/**
264 	 * Sets the text in the buffer.
265 	 *
266 	 * This is roughly equivalent to calling gtk_entry_buffer_delete_text()
267 	 * and gtk_entry_buffer_insert_text().
268 	 *
269 	 * Note that @n_chars is in characters, not in bytes.
270 	 *
271 	 * Params:
272 	 *     chars = the new text
273 	 *     nChars = the number of characters in @text, or -1
274 	 *
275 	 * Since: 2.18
276 	 */
277 	public void setText(string chars, int nChars)
278 	{
279 		gtk_entry_buffer_set_text(gtkEntryBuffer, Str.toStringz(chars), nChars);
280 	}
281 
282 	/**
283 	 * This signal is emitted after text is deleted from the buffer.
284 	 *
285 	 * Params:
286 	 *     position = the position the text was deleted at.
287 	 *     nChars = The number of characters that were deleted.
288 	 *
289 	 * Since: 2.18
290 	 */
291 	gulong addOnDeletedText(void delegate(uint, uint, EntryBuffer) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
292 	{
293 		return Signals.connect(this, "deleted-text", dlg, connectFlags ^ ConnectFlags.SWAPPED);
294 	}
295 
296 	/**
297 	 * This signal is emitted after text is inserted into the buffer.
298 	 *
299 	 * Params:
300 	 *     position = the position the text was inserted at.
301 	 *     chars = The text that was inserted.
302 	 *     nChars = The number of characters that were inserted.
303 	 *
304 	 * Since: 2.18
305 	 */
306 	gulong addOnInsertedText(void delegate(uint, string, uint, EntryBuffer) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
307 	{
308 		return Signals.connect(this, "inserted-text", dlg, connectFlags ^ ConnectFlags.SWAPPED);
309 	}
310 }