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.TextTag; 26 27 private import gdk.Event; 28 private import glib.ConstructionException; 29 private import glib.Str; 30 private import gobject.ObjectG; 31 private import gobject.Signals; 32 private import gtk.TextIter; 33 private import gtk.c.functions; 34 public import gtk.c.types; 35 public import gtkc.gtktypes; 36 private import std.algorithm; 37 38 39 /** 40 * You may wish to begin by reading the 41 * [text widget conceptual overview][TextWidget] 42 * which gives an overview of all the objects and 43 * data types related to the text widget and how they work together. 44 * 45 * Tags should be in the #GtkTextTagTable for a given #GtkTextBuffer 46 * before using them with that buffer. 47 * 48 * gtk_text_buffer_create_tag() is the best way to create tags. 49 * See “gtk3-demo” for numerous examples. 50 * 51 * For each property of #GtkTextTag, there is a “set” property, e.g. 52 * “font-set” corresponds to “font”. These “set” properties reflect 53 * whether a property has been set or not. 54 * They are maintained by GTK+ and you should not set them independently. 55 */ 56 public class TextTag : ObjectG 57 { 58 /** the main Gtk struct */ 59 protected GtkTextTag* gtkTextTag; 60 61 /** Get the main Gtk struct */ 62 public GtkTextTag* getTextTagStruct(bool transferOwnership = false) 63 { 64 if (transferOwnership) 65 ownedRef = false; 66 return gtkTextTag; 67 } 68 69 /** the main Gtk struct as a void* */ 70 protected override void* getStruct() 71 { 72 return cast(void*)gtkTextTag; 73 } 74 75 /** 76 * Sets our main struct and passes it to the parent class. 77 */ 78 public this (GtkTextTag* gtkTextTag, bool ownedRef = false) 79 { 80 this.gtkTextTag = gtkTextTag; 81 super(cast(GObject*)gtkTextTag, ownedRef); 82 } 83 84 85 /** */ 86 public static GType getType() 87 { 88 return gtk_text_tag_get_type(); 89 } 90 91 /** 92 * Creates a #GtkTextTag. Configure the tag using object arguments, 93 * i.e. using g_object_set(). 94 * 95 * Params: 96 * name = tag name, or %NULL 97 * 98 * Returns: a new #GtkTextTag 99 * 100 * Throws: ConstructionException GTK+ fails to create the object. 101 */ 102 public this(string name) 103 { 104 auto p = gtk_text_tag_new(Str.toStringz(name)); 105 106 if(p is null) 107 { 108 throw new ConstructionException("null returned by new"); 109 } 110 111 this(cast(GtkTextTag*) p, true); 112 } 113 114 /** 115 * Emits the #GtkTextTagTable::tag-changed signal on the #GtkTextTagTable where 116 * the tag is included. 117 * 118 * The signal is already emitted when setting a #GtkTextTag property. This 119 * function is useful for a #GtkTextTag subclass. 120 * 121 * Params: 122 * sizeChanged = whether the change affects the #GtkTextView layout. 123 * 124 * Since: 3.20 125 */ 126 public void changed(bool sizeChanged) 127 { 128 gtk_text_tag_changed(gtkTextTag, sizeChanged); 129 } 130 131 /** 132 * Emits the “event” signal on the #GtkTextTag. 133 * 134 * Params: 135 * eventObject = object that received the event, such as a widget 136 * event = the event 137 * iter = location where the event was received 138 * 139 * Returns: result of signal emission (whether the event was handled) 140 */ 141 public bool event(ObjectG eventObject, Event event, TextIter iter) 142 { 143 return gtk_text_tag_event(gtkTextTag, (eventObject is null) ? null : eventObject.getObjectGStruct(), (event is null) ? null : event.getEventStruct(), (iter is null) ? null : iter.getTextIterStruct()) != 0; 144 } 145 146 /** 147 * Get the tag priority. 148 * 149 * Returns: The tag’s priority. 150 */ 151 public int getPriority() 152 { 153 return gtk_text_tag_get_priority(gtkTextTag); 154 } 155 156 /** 157 * Sets the priority of a #GtkTextTag. Valid priorities 158 * start at 0 and go to one less than gtk_text_tag_table_get_size(). 159 * Each tag in a table has a unique priority; setting the priority 160 * of one tag shifts the priorities of all the other tags in the 161 * table to maintain a unique priority for each tag. Higher priority 162 * tags “win” if two tags both set the same text attribute. When adding 163 * a tag to a tag table, it will be assigned the highest priority in 164 * the table by default; so normally the precedence of a set of tags 165 * is the order in which they were added to the table, or created with 166 * gtk_text_buffer_create_tag(), which adds the tag to the buffer’s table 167 * automatically. 168 * 169 * Params: 170 * priority = the new priority 171 */ 172 public void setPriority(int priority) 173 { 174 gtk_text_tag_set_priority(gtkTextTag, priority); 175 } 176 177 /** 178 * The ::event signal is emitted when an event occurs on a region of the 179 * buffer marked with this tag. 180 * 181 * Params: 182 * object = the object the event was fired from (typically a #GtkTextView) 183 * event = the event which triggered the signal 184 * iter = a #GtkTextIter pointing at the location the event occurred 185 * 186 * Returns: %TRUE to stop other handlers from being invoked for the 187 * event. %FALSE to propagate the event further. 188 */ 189 gulong addOnEvent(bool delegate(ObjectG, Event, TextIter, TextTag) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0) 190 { 191 return Signals.connect(this, "event", dlg, connectFlags ^ ConnectFlags.SWAPPED); 192 } 193 }