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 gdk.Selection;
26 
27 private import gdk.Display;
28 private import gdk.Window;
29 private import glib.Str;
30 private import gobject.ObjectG;
31 private import gtkc.gdk;
32 public  import gtkc.gdktypes;
33 
34 
35 /** */
36 public struct Selection
37 {
38 
39 	/**
40 	 * Retrieves the contents of a selection in a given
41 	 * form.
42 	 *
43 	 * Params:
44 	 *     requestor = a #GdkWindow.
45 	 *     selection = an atom identifying the selection to get the
46 	 *         contents of.
47 	 *     target = the form in which to retrieve the selection.
48 	 *     time = the timestamp to use when retrieving the
49 	 *         selection. The selection owner may refuse the
50 	 *         request if it did not own the selection at
51 	 *         the time indicated by the timestamp.
52 	 */
53 	public static void convert(Window requestor, GdkAtom selection, GdkAtom target, uint time)
54 	{
55 		gdk_selection_convert((requestor is null) ? null : requestor.getWindowStruct(), selection, target, time);
56 	}
57 
58 	/**
59 	 * Determines the owner of the given selection.
60 	 *
61 	 * Params:
62 	 *     selection = an atom indentifying a selection.
63 	 *
64 	 * Return: if there is a selection owner
65 	 *     for this window, and it is a window known to the current process,
66 	 *     the #GdkWindow that owns the selection, otherwise %NULL. Note
67 	 *     that the return value may be owned by a different process if a
68 	 *     foreign window was previously created for that window, but a new
69 	 *     foreign window will never be created by this call.
70 	 */
71 	public static Window ownerGet(GdkAtom selection)
72 	{
73 		auto p = gdk_selection_owner_get(selection);
74 		
75 		if(p is null)
76 		{
77 			return null;
78 		}
79 		
80 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
81 	}
82 
83 	/**
84 	 * Determine the owner of the given selection.
85 	 *
86 	 * Note that the return value may be owned by a different
87 	 * process if a foreign window was previously created for that
88 	 * window, but a new foreign window will never be created by this call.
89 	 *
90 	 * Params:
91 	 *     display = a #GdkDisplay
92 	 *     selection = an atom indentifying a selection
93 	 *
94 	 * Return: if there is a selection owner
95 	 *     for this window, and it is a window known to the current
96 	 *     process, the #GdkWindow that owns the selection, otherwise
97 	 *     %NULL.
98 	 *
99 	 * Since: 2.2
100 	 */
101 	public static Window ownerGetForDisplay(Display display, GdkAtom selection)
102 	{
103 		auto p = gdk_selection_owner_get_for_display((display is null) ? null : display.getDisplayStruct(), selection);
104 		
105 		if(p is null)
106 		{
107 			return null;
108 		}
109 		
110 		return ObjectG.getDObject!(Window)(cast(GdkWindow*) p);
111 	}
112 
113 	/**
114 	 * Sets the owner of the given selection.
115 	 *
116 	 * Params:
117 	 *     owner = a #GdkWindow or %NULL to indicate that the
118 	 *         the owner for the given should be unset.
119 	 *     selection = an atom identifying a selection.
120 	 *     time = timestamp to use when setting the selection.
121 	 *         If this is older than the timestamp given last
122 	 *         time the owner was set for the given selection, the
123 	 *         request will be ignored.
124 	 *     sendEvent = if %TRUE, and the new owner is different
125 	 *         from the current owner, the current owner
126 	 *         will be sent a SelectionClear event.
127 	 *
128 	 * Return: %TRUE if the selection owner was successfully
129 	 *     changed to @owner, otherwise %FALSE.
130 	 */
131 	public static bool ownerSet(Window owner, GdkAtom selection, uint time, bool sendEvent)
132 	{
133 		return gdk_selection_owner_set((owner is null) ? null : owner.getWindowStruct(), selection, time, sendEvent) != 0;
134 	}
135 
136 	/**
137 	 * Sets the #GdkWindow @owner as the current owner of the selection @selection.
138 	 *
139 	 * Params:
140 	 *     display = the #GdkDisplay
141 	 *     owner = a #GdkWindow or %NULL to indicate that the owner for
142 	 *         the given should be unset
143 	 *     selection = an atom identifying a selection
144 	 *     time = timestamp to use when setting the selection
145 	 *         If this is older than the timestamp given last time the owner was
146 	 *         set for the given selection, the request will be ignored
147 	 *     sendEvent = if %TRUE, and the new owner is different from the current
148 	 *         owner, the current owner will be sent a SelectionClear event
149 	 *
150 	 * Return: %TRUE if the selection owner was successfully changed to owner,
151 	 *     otherwise %FALSE.
152 	 *
153 	 * Since: 2.2
154 	 */
155 	public static bool ownerSetForDisplay(Display display, Window owner, GdkAtom selection, uint time, bool sendEvent)
156 	{
157 		return gdk_selection_owner_set_for_display((display is null) ? null : display.getDisplayStruct(), (owner is null) ? null : owner.getWindowStruct(), selection, time, sendEvent) != 0;
158 	}
159 
160 	/**
161 	 * Retrieves selection data that was stored by the selection
162 	 * data in response to a call to gdk_selection_convert(). This function
163 	 * will not be used by applications, who should use the #GtkClipboard
164 	 * API instead.
165 	 *
166 	 * Params:
167 	 *     requestor = the window on which the data is stored
168 	 *     data = location to store a pointer to the retrieved data.
169 	 *         If the retrieval failed, %NULL we be stored here, otherwise, it
170 	 *         will be non-%NULL and the returned data should be freed with g_free()
171 	 *         when you are finished using it. The length of the
172 	 *         allocated memory is one more than the length
173 	 *         of the returned data, and the final byte will always
174 	 *         be zero, to ensure nul-termination of strings
175 	 *     propType = location to store the type of the property
176 	 *     propFormat = location to store the format of the property
177 	 *
178 	 * Return: the length of the retrieved data.
179 	 */
180 	public static int propertyGet(Window requestor, out char* data, GdkAtom* propType, int* propFormat)
181 	{
182 		return gdk_selection_property_get((requestor is null) ? null : requestor.getWindowStruct(), &data, propType, propFormat);
183 	}
184 
185 	/**
186 	 * Sends a response to SelectionRequest event.
187 	 *
188 	 * Params:
189 	 *     requestor = window to which to deliver response.
190 	 *     selection = selection that was requested.
191 	 *     target = target that was selected.
192 	 *     property = property in which the selection owner stored the
193 	 *         data, or %GDK_NONE to indicate that the request
194 	 *         was rejected.
195 	 *     time = timestamp.
196 	 */
197 	public static void sendNotify(Window requestor, GdkAtom selection, GdkAtom target, GdkAtom property, uint time)
198 	{
199 		gdk_selection_send_notify((requestor is null) ? null : requestor.getWindowStruct(), selection, target, property, time);
200 	}
201 
202 	/**
203 	 * Send a response to SelectionRequest event.
204 	 *
205 	 * Params:
206 	 *     display = the #GdkDisplay where @requestor is realized
207 	 *     requestor = window to which to deliver response
208 	 *     selection = selection that was requested
209 	 *     target = target that was selected
210 	 *     property = property in which the selection owner stored the data,
211 	 *         or %GDK_NONE to indicate that the request was rejected
212 	 *     time = timestamp
213 	 *
214 	 * Since: 2.2
215 	 */
216 	public static void sendNotifyForDisplay(Display display, Window requestor, GdkAtom selection, GdkAtom target, GdkAtom property, uint time)
217 	{
218 		gdk_selection_send_notify_for_display((display is null) ? null : display.getDisplayStruct(), (requestor is null) ? null : requestor.getWindowStruct(), selection, target, property, time);
219 	}
220 }