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 atk.WindowT;
26 
27 public  import gobject.Signals;
28 public  import gtkc.atk;
29 public  import gtkc.atktypes;
30 public  import gtkc.gdktypes;
31 public  import std.algorithm;
32 
33 
34 /**
35  * #AtkWindow should be implemented by the UI elements that represent
36  * a top-level window, such as the main window of an application or
37  * dialog.
38  */
39 public template WindowT(TStruct)
40 {
41 	/** Get the main Gtk struct */
42 	public AtkWindow* getWindowStruct()
43 	{
44 		return cast(AtkWindow*)getStruct();
45 	}
46 
47 
48 	protected class OnActivateDelegateWrapper
49 	{
50 		void delegate(WindowIF) dlg;
51 		gulong handlerId;
52 		ConnectFlags flags;
53 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
54 		{
55 			this.dlg = dlg;
56 			this.handlerId = handlerId;
57 			this.flags = flags;
58 		}
59 	}
60 	protected OnActivateDelegateWrapper[] onActivateListeners;
61 
62 	/**
63 	 * The signal #AtkWindow::activate is emitted when a window
64 	 * becomes the active window of the application or session.
65 	 *
66 	 * Since: 2.2
67 	 */
68 	gulong addOnActivate(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
69 	{
70 		onActivateListeners ~= new OnActivateDelegateWrapper(dlg, 0, connectFlags);
71 		onActivateListeners[onActivateListeners.length - 1].handlerId = Signals.connectData(
72 			this,
73 			"activate",
74 			cast(GCallback)&callBackActivate,
75 			cast(void*)onActivateListeners[onActivateListeners.length - 1],
76 			cast(GClosureNotify)&callBackActivateDestroy,
77 			connectFlags);
78 		return onActivateListeners[onActivateListeners.length - 1].handlerId;
79 	}
80 	
81 	extern(C) static void callBackActivate(AtkWindow* windowStruct,OnActivateDelegateWrapper wrapper)
82 	{
83 		wrapper.dlg(wrapper.outer);
84 	}
85 	
86 	extern(C) static void callBackActivateDestroy(OnActivateDelegateWrapper wrapper, GClosure* closure)
87 	{
88 		wrapper.outer.internalRemoveOnActivate(wrapper);
89 	}
90 
91 	protected void internalRemoveOnActivate(OnActivateDelegateWrapper source)
92 	{
93 		foreach(index, wrapper; onActivateListeners)
94 		{
95 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
96 			{
97 				onActivateListeners[index] = null;
98 				onActivateListeners = std.algorithm.remove(onActivateListeners, index);
99 				break;
100 			}
101 		}
102 	}
103 	
104 
105 	protected class OnCreateDelegateWrapper
106 	{
107 		void delegate(WindowIF) dlg;
108 		gulong handlerId;
109 		ConnectFlags flags;
110 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
111 		{
112 			this.dlg = dlg;
113 			this.handlerId = handlerId;
114 			this.flags = flags;
115 		}
116 	}
117 	protected OnCreateDelegateWrapper[] onCreateListeners;
118 
119 	/**
120 	 * The signal #AtkWindow::create is emitted when a new window
121 	 * is created.
122 	 *
123 	 * Since: 2.2
124 	 */
125 	gulong addOnCreate(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
126 	{
127 		onCreateListeners ~= new OnCreateDelegateWrapper(dlg, 0, connectFlags);
128 		onCreateListeners[onCreateListeners.length - 1].handlerId = Signals.connectData(
129 			this,
130 			"create",
131 			cast(GCallback)&callBackCreate,
132 			cast(void*)onCreateListeners[onCreateListeners.length - 1],
133 			cast(GClosureNotify)&callBackCreateDestroy,
134 			connectFlags);
135 		return onCreateListeners[onCreateListeners.length - 1].handlerId;
136 	}
137 	
138 	extern(C) static void callBackCreate(AtkWindow* windowStruct,OnCreateDelegateWrapper wrapper)
139 	{
140 		wrapper.dlg(wrapper.outer);
141 	}
142 	
143 	extern(C) static void callBackCreateDestroy(OnCreateDelegateWrapper wrapper, GClosure* closure)
144 	{
145 		wrapper.outer.internalRemoveOnCreate(wrapper);
146 	}
147 
148 	protected void internalRemoveOnCreate(OnCreateDelegateWrapper source)
149 	{
150 		foreach(index, wrapper; onCreateListeners)
151 		{
152 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
153 			{
154 				onCreateListeners[index] = null;
155 				onCreateListeners = std.algorithm.remove(onCreateListeners, index);
156 				break;
157 			}
158 		}
159 	}
160 	
161 
162 	protected class OnDeactivateDelegateWrapper
163 	{
164 		void delegate(WindowIF) dlg;
165 		gulong handlerId;
166 		ConnectFlags flags;
167 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
168 		{
169 			this.dlg = dlg;
170 			this.handlerId = handlerId;
171 			this.flags = flags;
172 		}
173 	}
174 	protected OnDeactivateDelegateWrapper[] onDeactivateListeners;
175 
176 	/**
177 	 * The signal #AtkWindow::deactivate is emitted when a window is
178 	 * no longer the active window of the application or session.
179 	 *
180 	 * Since: 2.2
181 	 */
182 	gulong addOnDeactivate(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
183 	{
184 		onDeactivateListeners ~= new OnDeactivateDelegateWrapper(dlg, 0, connectFlags);
185 		onDeactivateListeners[onDeactivateListeners.length - 1].handlerId = Signals.connectData(
186 			this,
187 			"deactivate",
188 			cast(GCallback)&callBackDeactivate,
189 			cast(void*)onDeactivateListeners[onDeactivateListeners.length - 1],
190 			cast(GClosureNotify)&callBackDeactivateDestroy,
191 			connectFlags);
192 		return onDeactivateListeners[onDeactivateListeners.length - 1].handlerId;
193 	}
194 	
195 	extern(C) static void callBackDeactivate(AtkWindow* windowStruct,OnDeactivateDelegateWrapper wrapper)
196 	{
197 		wrapper.dlg(wrapper.outer);
198 	}
199 	
200 	extern(C) static void callBackDeactivateDestroy(OnDeactivateDelegateWrapper wrapper, GClosure* closure)
201 	{
202 		wrapper.outer.internalRemoveOnDeactivate(wrapper);
203 	}
204 
205 	protected void internalRemoveOnDeactivate(OnDeactivateDelegateWrapper source)
206 	{
207 		foreach(index, wrapper; onDeactivateListeners)
208 		{
209 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
210 			{
211 				onDeactivateListeners[index] = null;
212 				onDeactivateListeners = std.algorithm.remove(onDeactivateListeners, index);
213 				break;
214 			}
215 		}
216 	}
217 	
218 
219 	protected class OnDestroyDelegateWrapper
220 	{
221 		void delegate(WindowIF) dlg;
222 		gulong handlerId;
223 		ConnectFlags flags;
224 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
225 		{
226 			this.dlg = dlg;
227 			this.handlerId = handlerId;
228 			this.flags = flags;
229 		}
230 	}
231 	protected OnDestroyDelegateWrapper[] onDestroyListeners;
232 
233 	/**
234 	 * The signal #AtkWindow::destroy is emitted when a window is
235 	 * destroyed.
236 	 *
237 	 * Since: 2.2
238 	 */
239 	gulong addOnDestroy(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
240 	{
241 		onDestroyListeners ~= new OnDestroyDelegateWrapper(dlg, 0, connectFlags);
242 		onDestroyListeners[onDestroyListeners.length - 1].handlerId = Signals.connectData(
243 			this,
244 			"destroy",
245 			cast(GCallback)&callBackDestroy,
246 			cast(void*)onDestroyListeners[onDestroyListeners.length - 1],
247 			cast(GClosureNotify)&callBackDestroyDestroy,
248 			connectFlags);
249 		return onDestroyListeners[onDestroyListeners.length - 1].handlerId;
250 	}
251 	
252 	extern(C) static void callBackDestroy(AtkWindow* windowStruct,OnDestroyDelegateWrapper wrapper)
253 	{
254 		wrapper.dlg(wrapper.outer);
255 	}
256 	
257 	extern(C) static void callBackDestroyDestroy(OnDestroyDelegateWrapper wrapper, GClosure* closure)
258 	{
259 		wrapper.outer.internalRemoveOnDestroy(wrapper);
260 	}
261 
262 	protected void internalRemoveOnDestroy(OnDestroyDelegateWrapper source)
263 	{
264 		foreach(index, wrapper; onDestroyListeners)
265 		{
266 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
267 			{
268 				onDestroyListeners[index] = null;
269 				onDestroyListeners = std.algorithm.remove(onDestroyListeners, index);
270 				break;
271 			}
272 		}
273 	}
274 	
275 
276 	protected class OnMaximizeDelegateWrapper
277 	{
278 		void delegate(WindowIF) dlg;
279 		gulong handlerId;
280 		ConnectFlags flags;
281 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
282 		{
283 			this.dlg = dlg;
284 			this.handlerId = handlerId;
285 			this.flags = flags;
286 		}
287 	}
288 	protected OnMaximizeDelegateWrapper[] onMaximizeListeners;
289 
290 	/**
291 	 * The signal #AtkWindow::maximize is emitted when a window
292 	 * is maximized.
293 	 *
294 	 * Since: 2.2
295 	 */
296 	gulong addOnMaximize(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
297 	{
298 		onMaximizeListeners ~= new OnMaximizeDelegateWrapper(dlg, 0, connectFlags);
299 		onMaximizeListeners[onMaximizeListeners.length - 1].handlerId = Signals.connectData(
300 			this,
301 			"maximize",
302 			cast(GCallback)&callBackMaximize,
303 			cast(void*)onMaximizeListeners[onMaximizeListeners.length - 1],
304 			cast(GClosureNotify)&callBackMaximizeDestroy,
305 			connectFlags);
306 		return onMaximizeListeners[onMaximizeListeners.length - 1].handlerId;
307 	}
308 	
309 	extern(C) static void callBackMaximize(AtkWindow* windowStruct,OnMaximizeDelegateWrapper wrapper)
310 	{
311 		wrapper.dlg(wrapper.outer);
312 	}
313 	
314 	extern(C) static void callBackMaximizeDestroy(OnMaximizeDelegateWrapper wrapper, GClosure* closure)
315 	{
316 		wrapper.outer.internalRemoveOnMaximize(wrapper);
317 	}
318 
319 	protected void internalRemoveOnMaximize(OnMaximizeDelegateWrapper source)
320 	{
321 		foreach(index, wrapper; onMaximizeListeners)
322 		{
323 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
324 			{
325 				onMaximizeListeners[index] = null;
326 				onMaximizeListeners = std.algorithm.remove(onMaximizeListeners, index);
327 				break;
328 			}
329 		}
330 	}
331 	
332 
333 	protected class OnMinimizeDelegateWrapper
334 	{
335 		void delegate(WindowIF) dlg;
336 		gulong handlerId;
337 		ConnectFlags flags;
338 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
339 		{
340 			this.dlg = dlg;
341 			this.handlerId = handlerId;
342 			this.flags = flags;
343 		}
344 	}
345 	protected OnMinimizeDelegateWrapper[] onMinimizeListeners;
346 
347 	/**
348 	 * The signal #AtkWindow::minimize is emitted when a window
349 	 * is minimized.
350 	 *
351 	 * Since: 2.2
352 	 */
353 	gulong addOnMinimize(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
354 	{
355 		onMinimizeListeners ~= new OnMinimizeDelegateWrapper(dlg, 0, connectFlags);
356 		onMinimizeListeners[onMinimizeListeners.length - 1].handlerId = Signals.connectData(
357 			this,
358 			"minimize",
359 			cast(GCallback)&callBackMinimize,
360 			cast(void*)onMinimizeListeners[onMinimizeListeners.length - 1],
361 			cast(GClosureNotify)&callBackMinimizeDestroy,
362 			connectFlags);
363 		return onMinimizeListeners[onMinimizeListeners.length - 1].handlerId;
364 	}
365 	
366 	extern(C) static void callBackMinimize(AtkWindow* windowStruct,OnMinimizeDelegateWrapper wrapper)
367 	{
368 		wrapper.dlg(wrapper.outer);
369 	}
370 	
371 	extern(C) static void callBackMinimizeDestroy(OnMinimizeDelegateWrapper wrapper, GClosure* closure)
372 	{
373 		wrapper.outer.internalRemoveOnMinimize(wrapper);
374 	}
375 
376 	protected void internalRemoveOnMinimize(OnMinimizeDelegateWrapper source)
377 	{
378 		foreach(index, wrapper; onMinimizeListeners)
379 		{
380 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
381 			{
382 				onMinimizeListeners[index] = null;
383 				onMinimizeListeners = std.algorithm.remove(onMinimizeListeners, index);
384 				break;
385 			}
386 		}
387 	}
388 	
389 
390 	protected class OnMoveDelegateWrapper
391 	{
392 		void delegate(WindowIF) dlg;
393 		gulong handlerId;
394 		ConnectFlags flags;
395 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
396 		{
397 			this.dlg = dlg;
398 			this.handlerId = handlerId;
399 			this.flags = flags;
400 		}
401 	}
402 	protected OnMoveDelegateWrapper[] onMoveListeners;
403 
404 	/**
405 	 * The signal #AtkWindow::move is emitted when a window
406 	 * is moved.
407 	 *
408 	 * Since: 2.2
409 	 */
410 	gulong addOnMove(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
411 	{
412 		onMoveListeners ~= new OnMoveDelegateWrapper(dlg, 0, connectFlags);
413 		onMoveListeners[onMoveListeners.length - 1].handlerId = Signals.connectData(
414 			this,
415 			"move",
416 			cast(GCallback)&callBackMove,
417 			cast(void*)onMoveListeners[onMoveListeners.length - 1],
418 			cast(GClosureNotify)&callBackMoveDestroy,
419 			connectFlags);
420 		return onMoveListeners[onMoveListeners.length - 1].handlerId;
421 	}
422 	
423 	extern(C) static void callBackMove(AtkWindow* windowStruct,OnMoveDelegateWrapper wrapper)
424 	{
425 		wrapper.dlg(wrapper.outer);
426 	}
427 	
428 	extern(C) static void callBackMoveDestroy(OnMoveDelegateWrapper wrapper, GClosure* closure)
429 	{
430 		wrapper.outer.internalRemoveOnMove(wrapper);
431 	}
432 
433 	protected void internalRemoveOnMove(OnMoveDelegateWrapper source)
434 	{
435 		foreach(index, wrapper; onMoveListeners)
436 		{
437 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
438 			{
439 				onMoveListeners[index] = null;
440 				onMoveListeners = std.algorithm.remove(onMoveListeners, index);
441 				break;
442 			}
443 		}
444 	}
445 	
446 
447 	protected class OnResizeDelegateWrapper
448 	{
449 		void delegate(WindowIF) dlg;
450 		gulong handlerId;
451 		ConnectFlags flags;
452 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
453 		{
454 			this.dlg = dlg;
455 			this.handlerId = handlerId;
456 			this.flags = flags;
457 		}
458 	}
459 	protected OnResizeDelegateWrapper[] onResizeListeners;
460 
461 	/**
462 	 * The signal #AtkWindow::resize is emitted when a window
463 	 * is resized.
464 	 *
465 	 * Since: 2.2
466 	 */
467 	gulong addOnResize(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
468 	{
469 		onResizeListeners ~= new OnResizeDelegateWrapper(dlg, 0, connectFlags);
470 		onResizeListeners[onResizeListeners.length - 1].handlerId = Signals.connectData(
471 			this,
472 			"resize",
473 			cast(GCallback)&callBackResize,
474 			cast(void*)onResizeListeners[onResizeListeners.length - 1],
475 			cast(GClosureNotify)&callBackResizeDestroy,
476 			connectFlags);
477 		return onResizeListeners[onResizeListeners.length - 1].handlerId;
478 	}
479 	
480 	extern(C) static void callBackResize(AtkWindow* windowStruct,OnResizeDelegateWrapper wrapper)
481 	{
482 		wrapper.dlg(wrapper.outer);
483 	}
484 	
485 	extern(C) static void callBackResizeDestroy(OnResizeDelegateWrapper wrapper, GClosure* closure)
486 	{
487 		wrapper.outer.internalRemoveOnResize(wrapper);
488 	}
489 
490 	protected void internalRemoveOnResize(OnResizeDelegateWrapper source)
491 	{
492 		foreach(index, wrapper; onResizeListeners)
493 		{
494 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
495 			{
496 				onResizeListeners[index] = null;
497 				onResizeListeners = std.algorithm.remove(onResizeListeners, index);
498 				break;
499 			}
500 		}
501 	}
502 	
503 
504 	protected class OnRestoreDelegateWrapper
505 	{
506 		void delegate(WindowIF) dlg;
507 		gulong handlerId;
508 		ConnectFlags flags;
509 		this(void delegate(WindowIF) dlg, gulong handlerId, ConnectFlags flags)
510 		{
511 			this.dlg = dlg;
512 			this.handlerId = handlerId;
513 			this.flags = flags;
514 		}
515 	}
516 	protected OnRestoreDelegateWrapper[] onRestoreListeners;
517 
518 	/**
519 	 * The signal #AtkWindow::restore is emitted when a window
520 	 * is restored.
521 	 *
522 	 * Since: 2.2
523 	 */
524 	gulong addOnRestore(void delegate(WindowIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
525 	{
526 		onRestoreListeners ~= new OnRestoreDelegateWrapper(dlg, 0, connectFlags);
527 		onRestoreListeners[onRestoreListeners.length - 1].handlerId = Signals.connectData(
528 			this,
529 			"restore",
530 			cast(GCallback)&callBackRestore,
531 			cast(void*)onRestoreListeners[onRestoreListeners.length - 1],
532 			cast(GClosureNotify)&callBackRestoreDestroy,
533 			connectFlags);
534 		return onRestoreListeners[onRestoreListeners.length - 1].handlerId;
535 	}
536 	
537 	extern(C) static void callBackRestore(AtkWindow* windowStruct,OnRestoreDelegateWrapper wrapper)
538 	{
539 		wrapper.dlg(wrapper.outer);
540 	}
541 	
542 	extern(C) static void callBackRestoreDestroy(OnRestoreDelegateWrapper wrapper, GClosure* closure)
543 	{
544 		wrapper.outer.internalRemoveOnRestore(wrapper);
545 	}
546 
547 	protected void internalRemoveOnRestore(OnRestoreDelegateWrapper source)
548 	{
549 		foreach(index, wrapper; onRestoreListeners)
550 		{
551 			if (wrapper.dlg == source.dlg && wrapper.flags == source.flags && wrapper.handlerId == source.handlerId)
552 			{
553 				onRestoreListeners[index] = null;
554 				onRestoreListeners = std.algorithm.remove(onRestoreListeners, index);
555 				break;
556 			}
557 		}
558 	}
559 	
560 }