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  * Conversion parameters:
26  * inFile  = GtkTextMark.html
27  * outPack = gtk
28  * outFile = TextMark
29  * strct   = GtkTextMark
30  * realStrct=
31  * ctorStrct=
32  * clss    = TextMark
33  * interf  = 
34  * class Code: No
35  * interface Code: No
36  * template for:
37  * extend  = 
38  * implements:
39  * prefixes:
40  * 	- gtk_text_mark_
41  * omit structs:
42  * omit prefixes:
43  * omit code:
44  * omit signals:
45  * imports:
46  * 	- glib.Str
47  * 	- gtk.TextBuffer
48  * structWrap:
49  * 	- GtkTextBuffer* -> TextBuffer
50  * module aliases:
51  * local aliases:
52  * overrides:
53  */
54 
55 module gtk.TextMark;
56 
57 public  import gtkc.gtktypes;
58 
59 private import gtkc.gtk;
60 private import glib.ConstructionException;
61 private import gobject.ObjectG;
62 
63 
64 private import glib.Str;
65 private import gtk.TextBuffer;
66 
67 
68 
69 private import gobject.ObjectG;
70 
71 /**
72  * You may wish to begin by reading the text widget
73  * conceptual overview which gives an overview of all the objects and data
74  * types related to the text widget and how they work together.
75  *
76  * A GtkTextMark is like a bookmark in a text buffer; it preserves a position in
77  * the text. You can convert the mark to an iterator using
78  * gtk_text_buffer_get_iter_at_mark(). Unlike iterators, marks remain valid across
79  * buffer mutations, because their behavior is defined when text is inserted or
80  * deleted. When text containing a mark is deleted, the mark remains in the
81  * position originally occupied by the deleted text. When text is inserted at a
82  * mark, a mark with left gravity will be moved to the
83  * beginning of the newly-inserted text, and a mark with right
84  * gravity will be moved to the end.
85  *
86  * [3]
87  *
88  * Marks are reference counted, but the reference count only controls the validity
89  * of the memory; marks can be deleted from the buffer at any time with
90  * gtk_text_buffer_delete_mark(). Once deleted from the buffer, a mark is
91  * essentially useless.
92  *
93  * Marks optionally have names; these can be convenient to avoid passing the
94  * GtkTextMark object around.
95  *
96  * Marks are typically created using the gtk_text_buffer_create_mark() function.
97  */
98 public class TextMark : ObjectG
99 {
100 	
101 	/** the main Gtk struct */
102 	protected GtkTextMark* gtkTextMark;
103 	
104 	
105 	public GtkTextMark* getTextMarkStruct()
106 	{
107 		return gtkTextMark;
108 	}
109 	
110 	
111 	/** the main Gtk struct as a void* */
112 	protected override void* getStruct()
113 	{
114 		return cast(void*)gtkTextMark;
115 	}
116 	
117 	/**
118 	 * Sets our main struct and passes it to the parent class
119 	 */
120 	public this (GtkTextMark* gtkTextMark)
121 	{
122 		super(cast(GObject*)gtkTextMark);
123 		this.gtkTextMark = gtkTextMark;
124 	}
125 	
126 	protected override void setStruct(GObject* obj)
127 	{
128 		super.setStruct(obj);
129 		gtkTextMark = cast(GtkTextMark*)obj;
130 	}
131 	
132 	/**
133 	 */
134 	
135 	/**
136 	 * Creates a text mark. Add it to a buffer using gtk_text_buffer_add_mark().
137 	 * If name is NULL, the mark is anonymous; otherwise, the mark can be
138 	 * retrieved by name using gtk_text_buffer_get_mark(). If a mark has left
139 	 * gravity, and text is inserted at the mark's current location, the mark
140 	 * will be moved to the left of the newly-inserted text. If the mark has
141 	 * right gravity (left_gravity = FALSE), the mark will end up on the
142 	 * right of newly-inserted text. The standard left-to-right cursor is a
143 	 * mark with right gravity (when you type, the cursor stays on the right
144 	 * side of the text you're typing).
145 	 * Since 2.12
146 	 * Params:
147 	 * name = mark name or NULL. [allow-none]
148 	 * leftGravity = whether the mark should have left gravity
149 	 * Throws: ConstructionException GTK+ fails to create the object.
150 	 */
151 	public this (string name, int leftGravity)
152 	{
153 		// GtkTextMark * gtk_text_mark_new (const gchar *name,  gboolean left_gravity);
154 		auto p = gtk_text_mark_new(Str.toStringz(name), leftGravity);
155 		if(p is null)
156 		{
157 			throw new ConstructionException("null returned by gtk_text_mark_new(Str.toStringz(name), leftGravity)");
158 		}
159 		this(cast(GtkTextMark*) p);
160 	}
161 	
162 	/**
163 	 * Sets the visibility of mark; the insertion point is normally
164 	 * visible, i.e. you can see it as a vertical bar. Also, the text
165 	 * widget uses a visible mark to indicate where a drop will occur when
166 	 * dragging-and-dropping text. Most other marks are not visible.
167 	 * Marks are not visible by default.
168 	 * Params:
169 	 * setting = visibility of mark
170 	 */
171 	public void setVisible(int setting)
172 	{
173 		// void gtk_text_mark_set_visible (GtkTextMark *mark,  gboolean setting);
174 		gtk_text_mark_set_visible(gtkTextMark, setting);
175 	}
176 	
177 	/**
178 	 * Returns TRUE if the mark is visible (i.e. a cursor is displayed
179 	 * for it).
180 	 * Returns: TRUE if visible
181 	 */
182 	public int getVisible()
183 	{
184 		// gboolean gtk_text_mark_get_visible (GtkTextMark *mark);
185 		return gtk_text_mark_get_visible(gtkTextMark);
186 	}
187 	
188 	/**
189 	 * Returns TRUE if the mark has been removed from its buffer
190 	 * with gtk_text_buffer_delete_mark(). See gtk_text_buffer_add_mark()
191 	 * for a way to add it to a buffer again.
192 	 * Returns: whether the mark is deleted
193 	 */
194 	public int getDeleted()
195 	{
196 		// gboolean gtk_text_mark_get_deleted (GtkTextMark *mark);
197 		return gtk_text_mark_get_deleted(gtkTextMark);
198 	}
199 	
200 	/**
201 	 * Returns the mark name; returns NULL for anonymous marks.
202 	 * Returns: mark name
203 	 */
204 	public string getName()
205 	{
206 		// const gchar * gtk_text_mark_get_name (GtkTextMark *mark);
207 		return Str.toString(gtk_text_mark_get_name(gtkTextMark));
208 	}
209 	
210 	/**
211 	 * Gets the buffer this mark is located inside,
212 	 * or NULL if the mark is deleted.
213 	 * Returns: the mark's GtkTextBuffer. [transfer none]
214 	 */
215 	public TextBuffer getBuffer()
216 	{
217 		// GtkTextBuffer * gtk_text_mark_get_buffer (GtkTextMark *mark);
218 		auto p = gtk_text_mark_get_buffer(gtkTextMark);
219 		
220 		if(p is null)
221 		{
222 			return null;
223 		}
224 		
225 		return ObjectG.getDObject!(TextBuffer)(cast(GtkTextBuffer*) p);
226 	}
227 	
228 	/**
229 	 * Determines whether the mark has left gravity.
230 	 * Returns: TRUE if the mark has left gravity, FALSE otherwise
231 	 */
232 	public int getLeftGravity()
233 	{
234 		// gboolean gtk_text_mark_get_left_gravity (GtkTextMark *mark);
235 		return gtk_text_mark_get_left_gravity(gtkTextMark);
236 	}
237 }