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  = VteTerminal.html
27  * outPack = vte
28  * outFile = Terminal
29  * strct   = VteTerminal
30  * realStrct=
31  * ctorStrct=
32  * clss    = Terminal
33  * interf  = 
34  * class Code: Yes
35  * interface Code: No
36  * template for:
37  * extend  = 
38  * implements:
39  * 	- ScrollableIF
40  * prefixes:
41  * 	- vte_terminal_
42  * 	- vte_
43  * omit structs:
44  * omit prefixes:
45  * omit code:
46  * omit signals:
47  * imports:
48  * 	- glib.Str
49  * 	- glib.ErrorG
50  * 	- glib.GException
51  * 	- glib.ArrayG
52  * 	- glib.Regex
53  * 	- gio.Cancellable
54  * 	- gio.OutputStream
55  * 	- gdk.Color
56  * 	- gdk.Cursor
57  * 	- gdk.RGBA
58  * 	- gtk.Adjustment
59  * 	- gtk.MenuShell
60  * 	- pango.PgFontDescription
61  * 	- vte.Pty
62  * 	- gtk.ScrollableIF
63  * 	- gtk.ScrollableT
64  * structWrap:
65  * 	- GArray* -> ArrayG
66  * 	- GCancellable* -> Cancellable
67  * 	- GOutputStream* -> OutputStream
68  * 	- GRegex* -> Regex
69  * 	- GdkColor* -> Color
70  * 	- GdkCursor* -> Cursor
71  * 	- GdkRGBA* -> RGBA
72  * 	- GtkAdjustment* -> Adjustment
73  * 	- GtkMenuShell* -> MenuShell
74  * 	- PangoFontDescription* -> PgFontDescription
75  * 	- VtePty* -> Pty
76  * module aliases:
77  * local aliases:
78  * overrides:
79  */
80 
81 module vte.Terminal;
82 
83 public  import vtec.vtetypes;
84 
85 private import vtec.vte;
86 private import glib.ConstructionException;
87 private import gobject.ObjectG;
88 
89 private import gobject.Signals;
90 public  import gtkc.gdktypes;
91 
92 private import glib.Str;
93 private import glib.ErrorG;
94 private import glib.GException;
95 private import glib.ArrayG;
96 private import glib.Regex;
97 private import gio.Cancellable;
98 private import gio.OutputStream;
99 private import gdk.Color;
100 private import gdk.Cursor;
101 private import gdk.RGBA;
102 private import gtk.Adjustment;
103 private import gtk.MenuShell;
104 private import pango.PgFontDescription;
105 private import vte.Pty;
106 private import gtk.ScrollableIF;
107 private import gtk.ScrollableT;
108 
109 
110 
111 private import gtk.Widget;
112 
113 /**
114  * A VteTerminal is a terminal emulator implemented as a GTK2 widget.
115  */
116 public class Terminal : Widget, ScrollableIF
117 {
118 	
119 	/** the main Gtk struct */
120 	protected VteTerminal* vteTerminal;
121 	
122 	
123 	public VteTerminal* getTerminalStruct()
124 	{
125 		return vteTerminal;
126 	}
127 	
128 	
129 	/** the main Gtk struct as a void* */
130 	protected override void* getStruct()
131 	{
132 		return cast(void*)vteTerminal;
133 	}
134 	
135 	/**
136 	 * Sets our main struct and passes it to the parent class
137 	 */
138 	public this (VteTerminal* vteTerminal)
139 	{
140 		super(cast(GtkWidget*)vteTerminal);
141 		this.vteTerminal = vteTerminal;
142 	}
143 	
144 	protected override void setStruct(GObject* obj)
145 	{
146 		super.setStruct(obj);
147 		vteTerminal = cast(VteTerminal*)obj;
148 	}
149 	
150 	// add the Scrollable capabilities
151 	mixin ScrollableT!(VteTerminal);
152 	
153 	alias Widget.setOpacity setOpacity;
154 	
155 	/**
156 	 */
157 	int[string] connectedSignals;
158 	
159 	void delegate(Terminal)[] onBeepListeners;
160 	/**
161 	 * This signal is emitted when the a child sends a beep request to the
162 	 * terminal.
163 	 */
164 	void addOnBeep(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
165 	{
166 		if ( !("beep" in connectedSignals) )
167 		{
168 			Signals.connectData(
169 			getStruct(),
170 			"beep",
171 			cast(GCallback)&callBackBeep,
172 			cast(void*)this,
173 			null,
174 			connectFlags);
175 			connectedSignals["beep"] = 1;
176 		}
177 		onBeepListeners ~= dlg;
178 	}
179 	extern(C) static void callBackBeep(VteTerminal* vteterminalStruct, Terminal _terminal)
180 	{
181 		foreach ( void delegate(Terminal) dlg ; _terminal.onBeepListeners )
182 		{
183 			dlg(_terminal);
184 		}
185 	}
186 	
187 	void delegate(guint, guint, Terminal)[] onCharSizeChangedListeners;
188 	/**
189 	 * Emitted whenever selection of a new font causes the values of the
190 	 * char_width or char_height fields to change.
191 	 */
192 	void addOnCharSizeChanged(void delegate(guint, guint, Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
193 	{
194 		if ( !("char-size-changed" in connectedSignals) )
195 		{
196 			Signals.connectData(
197 			getStruct(),
198 			"char-size-changed",
199 			cast(GCallback)&callBackCharSizeChanged,
200 			cast(void*)this,
201 			null,
202 			connectFlags);
203 			connectedSignals["char-size-changed"] = 1;
204 		}
205 		onCharSizeChangedListeners ~= dlg;
206 	}
207 	extern(C) static void callBackCharSizeChanged(VteTerminal* vteterminalStruct, guint width, guint height, Terminal _terminal)
208 	{
209 		foreach ( void delegate(guint, guint, Terminal) dlg ; _terminal.onCharSizeChangedListeners )
210 		{
211 			dlg(width, height, _terminal);
212 		}
213 	}
214 	
215 	void delegate(Terminal)[] onChildExitedListeners;
216 	/**
217 	 * This signal is emitted when the terminal detects that a child started
218 	 * using vte_terminal_fork_command() has exited.
219 	 */
220 	void addOnChildExited(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
221 	{
222 		if ( !("child-exited" in connectedSignals) )
223 		{
224 			Signals.connectData(
225 			getStruct(),
226 			"child-exited",
227 			cast(GCallback)&callBackChildExited,
228 			cast(void*)this,
229 			null,
230 			connectFlags);
231 			connectedSignals["child-exited"] = 1;
232 		}
233 		onChildExitedListeners ~= dlg;
234 	}
235 	extern(C) static void callBackChildExited(VteTerminal* vteterminalStruct, Terminal _terminal)
236 	{
237 		foreach ( void delegate(Terminal) dlg ; _terminal.onChildExitedListeners )
238 		{
239 			dlg(_terminal);
240 		}
241 	}
242 	
243 	void delegate(string, guint, Terminal)[] onCommitListeners;
244 	/**
245 	 * Emitted whenever the terminal receives input from the user and
246 	 * prepares to send it to the child process. The signal is emitted even
247 	 * when there is no child process.
248 	 */
249 	void addOnCommit(void delegate(string, guint, Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
250 	{
251 		if ( !("commit" in connectedSignals) )
252 		{
253 			Signals.connectData(
254 			getStruct(),
255 			"commit",
256 			cast(GCallback)&callBackCommit,
257 			cast(void*)this,
258 			null,
259 			connectFlags);
260 			connectedSignals["commit"] = 1;
261 		}
262 		onCommitListeners ~= dlg;
263 	}
264 	extern(C) static void callBackCommit(VteTerminal* vteterminalStruct, gchar* text, guint size, Terminal _terminal)
265 	{
266 		foreach ( void delegate(string, guint, Terminal) dlg ; _terminal.onCommitListeners )
267 		{
268 			dlg(Str.toString(text), size, _terminal);
269 		}
270 	}
271 	
272 	void delegate(Terminal)[] onContentsChangedListeners;
273 	/**
274 	 * Emitted whenever the visible appearance of the terminal has changed.
275 	 * Used primarily by VteTerminalAccessible.
276 	 */
277 	void addOnContentsChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
278 	{
279 		if ( !("contents-changed" in connectedSignals) )
280 		{
281 			Signals.connectData(
282 			getStruct(),
283 			"contents-changed",
284 			cast(GCallback)&callBackContentsChanged,
285 			cast(void*)this,
286 			null,
287 			connectFlags);
288 			connectedSignals["contents-changed"] = 1;
289 		}
290 		onContentsChangedListeners ~= dlg;
291 	}
292 	extern(C) static void callBackContentsChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
293 	{
294 		foreach ( void delegate(Terminal) dlg ; _terminal.onContentsChangedListeners )
295 		{
296 			dlg(_terminal);
297 		}
298 	}
299 	
300 	void delegate(Terminal)[] onCopyClipboardListeners;
301 	/**
302 	 * Emitted whenever vte_terminal_copy_clipboard() is called.
303 	 */
304 	void addOnCopyClipboard(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
305 	{
306 		if ( !("copy-clipboard" in connectedSignals) )
307 		{
308 			Signals.connectData(
309 			getStruct(),
310 			"copy-clipboard",
311 			cast(GCallback)&callBackCopyClipboard,
312 			cast(void*)this,
313 			null,
314 			connectFlags);
315 			connectedSignals["copy-clipboard"] = 1;
316 		}
317 		onCopyClipboardListeners ~= dlg;
318 	}
319 	extern(C) static void callBackCopyClipboard(VteTerminal* vteterminalStruct, Terminal _terminal)
320 	{
321 		foreach ( void delegate(Terminal) dlg ; _terminal.onCopyClipboardListeners )
322 		{
323 			dlg(_terminal);
324 		}
325 	}
326 	
327 	void delegate(Terminal)[] onCurrentDirectoryUriChangedListeners;
328 	/**
329 	 * Emitted when the current directory URI is modified.
330 	 * Since 0.34
331 	 */
332 	void addOnCurrentDirectoryUriChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
333 	{
334 		if ( !("current-directory-uri-changed" in connectedSignals) )
335 		{
336 			Signals.connectData(
337 			getStruct(),
338 			"current-directory-uri-changed",
339 			cast(GCallback)&callBackCurrentDirectoryUriChanged,
340 			cast(void*)this,
341 			null,
342 			connectFlags);
343 			connectedSignals["current-directory-uri-changed"] = 1;
344 		}
345 		onCurrentDirectoryUriChangedListeners ~= dlg;
346 	}
347 	extern(C) static void callBackCurrentDirectoryUriChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
348 	{
349 		foreach ( void delegate(Terminal) dlg ; _terminal.onCurrentDirectoryUriChangedListeners )
350 		{
351 			dlg(_terminal);
352 		}
353 	}
354 	
355 	void delegate(Terminal)[] onCurrentFileUriChangedListeners;
356 	/**
357 	 * Emitted when the current file URI is modified.
358 	 * Since 0.34
359 	 */
360 	void addOnCurrentFileUriChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
361 	{
362 		if ( !("current-file-uri-changed" in connectedSignals) )
363 		{
364 			Signals.connectData(
365 			getStruct(),
366 			"current-file-uri-changed",
367 			cast(GCallback)&callBackCurrentFileUriChanged,
368 			cast(void*)this,
369 			null,
370 			connectFlags);
371 			connectedSignals["current-file-uri-changed"] = 1;
372 		}
373 		onCurrentFileUriChangedListeners ~= dlg;
374 	}
375 	extern(C) static void callBackCurrentFileUriChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
376 	{
377 		foreach ( void delegate(Terminal) dlg ; _terminal.onCurrentFileUriChangedListeners )
378 		{
379 			dlg(_terminal);
380 		}
381 	}
382 	
383 	void delegate(Terminal)[] onCursorMovedListeners;
384 	/**
385 	 * Emitted whenever the cursor moves to a new character cell. Used
386 	 * primarily by VteTerminalAccessible.
387 	 */
388 	void addOnCursorMoved(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
389 	{
390 		if ( !("cursor-moved" in connectedSignals) )
391 		{
392 			Signals.connectData(
393 			getStruct(),
394 			"cursor-moved",
395 			cast(GCallback)&callBackCursorMoved,
396 			cast(void*)this,
397 			null,
398 			connectFlags);
399 			connectedSignals["cursor-moved"] = 1;
400 		}
401 		onCursorMovedListeners ~= dlg;
402 	}
403 	extern(C) static void callBackCursorMoved(VteTerminal* vteterminalStruct, Terminal _terminal)
404 	{
405 		foreach ( void delegate(Terminal) dlg ; _terminal.onCursorMovedListeners )
406 		{
407 			dlg(_terminal);
408 		}
409 	}
410 	
411 	void delegate(Terminal)[] onDecreaseFontSizeListeners;
412 	/**
413 	 * Emitted when the user hits the '-' key while holding the Control key.
414 	 */
415 	void addOnDecreaseFontSize(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
416 	{
417 		if ( !("decrease-font-size" in connectedSignals) )
418 		{
419 			Signals.connectData(
420 			getStruct(),
421 			"decrease-font-size",
422 			cast(GCallback)&callBackDecreaseFontSize,
423 			cast(void*)this,
424 			null,
425 			connectFlags);
426 			connectedSignals["decrease-font-size"] = 1;
427 		}
428 		onDecreaseFontSizeListeners ~= dlg;
429 	}
430 	extern(C) static void callBackDecreaseFontSize(VteTerminal* vteterminalStruct, Terminal _terminal)
431 	{
432 		foreach ( void delegate(Terminal) dlg ; _terminal.onDecreaseFontSizeListeners )
433 		{
434 			dlg(_terminal);
435 		}
436 	}
437 	
438 	void delegate(Terminal)[] onDeiconifyWindowListeners;
439 	/**
440 	 * Emitted at the child application's request.
441 	 */
442 	void addOnDeiconifyWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
443 	{
444 		if ( !("deiconify-window" in connectedSignals) )
445 		{
446 			Signals.connectData(
447 			getStruct(),
448 			"deiconify-window",
449 			cast(GCallback)&callBackDeiconifyWindow,
450 			cast(void*)this,
451 			null,
452 			connectFlags);
453 			connectedSignals["deiconify-window"] = 1;
454 		}
455 		onDeiconifyWindowListeners ~= dlg;
456 	}
457 	extern(C) static void callBackDeiconifyWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
458 	{
459 		foreach ( void delegate(Terminal) dlg ; _terminal.onDeiconifyWindowListeners )
460 		{
461 			dlg(_terminal);
462 		}
463 	}
464 	
465 	void delegate(Terminal)[] onEmulationChangedListeners;
466 	/**
467 	 * Emitted whenever the terminal's emulation changes, only possible at
468 	 * the parent application's request.
469 	 */
470 	void addOnEmulationChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
471 	{
472 		if ( !("emulation-changed" in connectedSignals) )
473 		{
474 			Signals.connectData(
475 			getStruct(),
476 			"emulation-changed",
477 			cast(GCallback)&callBackEmulationChanged,
478 			cast(void*)this,
479 			null,
480 			connectFlags);
481 			connectedSignals["emulation-changed"] = 1;
482 		}
483 		onEmulationChangedListeners ~= dlg;
484 	}
485 	extern(C) static void callBackEmulationChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
486 	{
487 		foreach ( void delegate(Terminal) dlg ; _terminal.onEmulationChangedListeners )
488 		{
489 			dlg(_terminal);
490 		}
491 	}
492 	
493 	void delegate(Terminal)[] onEncodingChangedListeners;
494 	/**
495 	 * Emitted whenever the terminal's current encoding has changed, either
496 	 * as a result of receiving a control sequence which toggled between the
497 	 * local and UTF-8 encodings, or at the parent application's request.
498 	 */
499 	void addOnEncodingChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
500 	{
501 		if ( !("encoding-changed" in connectedSignals) )
502 		{
503 			Signals.connectData(
504 			getStruct(),
505 			"encoding-changed",
506 			cast(GCallback)&callBackEncodingChanged,
507 			cast(void*)this,
508 			null,
509 			connectFlags);
510 			connectedSignals["encoding-changed"] = 1;
511 		}
512 		onEncodingChangedListeners ~= dlg;
513 	}
514 	extern(C) static void callBackEncodingChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
515 	{
516 		foreach ( void delegate(Terminal) dlg ; _terminal.onEncodingChangedListeners )
517 		{
518 			dlg(_terminal);
519 		}
520 	}
521 	
522 	void delegate(Terminal)[] onEofListeners;
523 	/**
524 	 * Emitted when the terminal receives an end-of-file from a child which
525 	 * is running in the terminal. This signal is frequently (but not
526 	 * always) emitted with a "child-exited" signal.
527 	 */
528 	void addOnEof(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
529 	{
530 		if ( !("eof" in connectedSignals) )
531 		{
532 			Signals.connectData(
533 			getStruct(),
534 			"eof",
535 			cast(GCallback)&callBackEof,
536 			cast(void*)this,
537 			null,
538 			connectFlags);
539 			connectedSignals["eof"] = 1;
540 		}
541 		onEofListeners ~= dlg;
542 	}
543 	extern(C) static void callBackEof(VteTerminal* vteterminalStruct, Terminal _terminal)
544 	{
545 		foreach ( void delegate(Terminal) dlg ; _terminal.onEofListeners )
546 		{
547 			dlg(_terminal);
548 		}
549 	}
550 	
551 	void delegate(Terminal)[] onIconTitleChangedListeners;
552 	/**
553 	 * Emitted when the terminal's icon_title field is modified.
554 	 */
555 	void addOnIconTitleChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
556 	{
557 		if ( !("icon-title-changed" in connectedSignals) )
558 		{
559 			Signals.connectData(
560 			getStruct(),
561 			"icon-title-changed",
562 			cast(GCallback)&callBackIconTitleChanged,
563 			cast(void*)this,
564 			null,
565 			connectFlags);
566 			connectedSignals["icon-title-changed"] = 1;
567 		}
568 		onIconTitleChangedListeners ~= dlg;
569 	}
570 	extern(C) static void callBackIconTitleChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
571 	{
572 		foreach ( void delegate(Terminal) dlg ; _terminal.onIconTitleChangedListeners )
573 		{
574 			dlg(_terminal);
575 		}
576 	}
577 	
578 	void delegate(Terminal)[] onIconifyWindowListeners;
579 	/**
580 	 * Emitted at the child application's request.
581 	 */
582 	void addOnIconifyWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
583 	{
584 		if ( !("iconify-window" in connectedSignals) )
585 		{
586 			Signals.connectData(
587 			getStruct(),
588 			"iconify-window",
589 			cast(GCallback)&callBackIconifyWindow,
590 			cast(void*)this,
591 			null,
592 			connectFlags);
593 			connectedSignals["iconify-window"] = 1;
594 		}
595 		onIconifyWindowListeners ~= dlg;
596 	}
597 	extern(C) static void callBackIconifyWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
598 	{
599 		foreach ( void delegate(Terminal) dlg ; _terminal.onIconifyWindowListeners )
600 		{
601 			dlg(_terminal);
602 		}
603 	}
604 	
605 	void delegate(Terminal)[] onIncreaseFontSizeListeners;
606 	/**
607 	 * Emitted when the user hits the '+' key while holding the Control key.
608 	 */
609 	void addOnIncreaseFontSize(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
610 	{
611 		if ( !("increase-font-size" in connectedSignals) )
612 		{
613 			Signals.connectData(
614 			getStruct(),
615 			"increase-font-size",
616 			cast(GCallback)&callBackIncreaseFontSize,
617 			cast(void*)this,
618 			null,
619 			connectFlags);
620 			connectedSignals["increase-font-size"] = 1;
621 		}
622 		onIncreaseFontSizeListeners ~= dlg;
623 	}
624 	extern(C) static void callBackIncreaseFontSize(VteTerminal* vteterminalStruct, Terminal _terminal)
625 	{
626 		foreach ( void delegate(Terminal) dlg ; _terminal.onIncreaseFontSizeListeners )
627 		{
628 			dlg(_terminal);
629 		}
630 	}
631 	
632 	void delegate(Terminal)[] onLowerWindowListeners;
633 	/**
634 	 * Emitted at the child application's request.
635 	 */
636 	void addOnLowerWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
637 	{
638 		if ( !("lower-window" in connectedSignals) )
639 		{
640 			Signals.connectData(
641 			getStruct(),
642 			"lower-window",
643 			cast(GCallback)&callBackLowerWindow,
644 			cast(void*)this,
645 			null,
646 			connectFlags);
647 			connectedSignals["lower-window"] = 1;
648 		}
649 		onLowerWindowListeners ~= dlg;
650 	}
651 	extern(C) static void callBackLowerWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
652 	{
653 		foreach ( void delegate(Terminal) dlg ; _terminal.onLowerWindowListeners )
654 		{
655 			dlg(_terminal);
656 		}
657 	}
658 	
659 	void delegate(Terminal)[] onMaximizeWindowListeners;
660 	/**
661 	 * Emitted at the child application's request.
662 	 */
663 	void addOnMaximizeWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
664 	{
665 		if ( !("maximize-window" in connectedSignals) )
666 		{
667 			Signals.connectData(
668 			getStruct(),
669 			"maximize-window",
670 			cast(GCallback)&callBackMaximizeWindow,
671 			cast(void*)this,
672 			null,
673 			connectFlags);
674 			connectedSignals["maximize-window"] = 1;
675 		}
676 		onMaximizeWindowListeners ~= dlg;
677 	}
678 	extern(C) static void callBackMaximizeWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
679 	{
680 		foreach ( void delegate(Terminal) dlg ; _terminal.onMaximizeWindowListeners )
681 		{
682 			dlg(_terminal);
683 		}
684 	}
685 	
686 	void delegate(guint, guint, Terminal)[] onMoveWindowListeners;
687 	/**
688 	 * Emitted at the child application's request.
689 	 */
690 	void addOnMoveWindow(void delegate(guint, guint, Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
691 	{
692 		if ( !("move-window" in connectedSignals) )
693 		{
694 			Signals.connectData(
695 			getStruct(),
696 			"move-window",
697 			cast(GCallback)&callBackMoveWindow,
698 			cast(void*)this,
699 			null,
700 			connectFlags);
701 			connectedSignals["move-window"] = 1;
702 		}
703 		onMoveWindowListeners ~= dlg;
704 	}
705 	extern(C) static void callBackMoveWindow(VteTerminal* vteterminalStruct, guint x, guint y, Terminal _terminal)
706 	{
707 		foreach ( void delegate(guint, guint, Terminal) dlg ; _terminal.onMoveWindowListeners )
708 		{
709 			dlg(x, y, _terminal);
710 		}
711 	}
712 	
713 	void delegate(Terminal)[] onPasteClipboardListeners;
714 	/**
715 	 * Emitted whenever vte_terminal_paste_clipboard() is called.
716 	 */
717 	void addOnPasteClipboard(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
718 	{
719 		if ( !("paste-clipboard" in connectedSignals) )
720 		{
721 			Signals.connectData(
722 			getStruct(),
723 			"paste-clipboard",
724 			cast(GCallback)&callBackPasteClipboard,
725 			cast(void*)this,
726 			null,
727 			connectFlags);
728 			connectedSignals["paste-clipboard"] = 1;
729 		}
730 		onPasteClipboardListeners ~= dlg;
731 	}
732 	extern(C) static void callBackPasteClipboard(VteTerminal* vteterminalStruct, Terminal _terminal)
733 	{
734 		foreach ( void delegate(Terminal) dlg ; _terminal.onPasteClipboardListeners )
735 		{
736 			dlg(_terminal);
737 		}
738 	}
739 	
740 	void delegate(Terminal)[] onRaiseWindowListeners;
741 	/**
742 	 * Emitted at the child application's request.
743 	 */
744 	void addOnRaiseWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
745 	{
746 		if ( !("raise-window" in connectedSignals) )
747 		{
748 			Signals.connectData(
749 			getStruct(),
750 			"raise-window",
751 			cast(GCallback)&callBackRaiseWindow,
752 			cast(void*)this,
753 			null,
754 			connectFlags);
755 			connectedSignals["raise-window"] = 1;
756 		}
757 		onRaiseWindowListeners ~= dlg;
758 	}
759 	extern(C) static void callBackRaiseWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
760 	{
761 		foreach ( void delegate(Terminal) dlg ; _terminal.onRaiseWindowListeners )
762 		{
763 			dlg(_terminal);
764 		}
765 	}
766 	
767 	void delegate(Terminal)[] onRefreshWindowListeners;
768 	/**
769 	 * Emitted at the child application's request.
770 	 */
771 	void addOnRefreshWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
772 	{
773 		if ( !("refresh-window" in connectedSignals) )
774 		{
775 			Signals.connectData(
776 			getStruct(),
777 			"refresh-window",
778 			cast(GCallback)&callBackRefreshWindow,
779 			cast(void*)this,
780 			null,
781 			connectFlags);
782 			connectedSignals["refresh-window"] = 1;
783 		}
784 		onRefreshWindowListeners ~= dlg;
785 	}
786 	extern(C) static void callBackRefreshWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
787 	{
788 		foreach ( void delegate(Terminal) dlg ; _terminal.onRefreshWindowListeners )
789 		{
790 			dlg(_terminal);
791 		}
792 	}
793 	
794 	void delegate(guint, guint, Terminal)[] onResizeWindowListeners;
795 	/**
796 	 * Emitted at the child application's request.
797 	 */
798 	void addOnResizeWindow(void delegate(guint, guint, Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
799 	{
800 		if ( !("resize-window" in connectedSignals) )
801 		{
802 			Signals.connectData(
803 			getStruct(),
804 			"resize-window",
805 			cast(GCallback)&callBackResizeWindow,
806 			cast(void*)this,
807 			null,
808 			connectFlags);
809 			connectedSignals["resize-window"] = 1;
810 		}
811 		onResizeWindowListeners ~= dlg;
812 	}
813 	extern(C) static void callBackResizeWindow(VteTerminal* vteterminalStruct, guint width, guint height, Terminal _terminal)
814 	{
815 		foreach ( void delegate(guint, guint, Terminal) dlg ; _terminal.onResizeWindowListeners )
816 		{
817 			dlg(width, height, _terminal);
818 		}
819 	}
820 	
821 	void delegate(Terminal)[] onRestoreWindowListeners;
822 	/**
823 	 * Emitted at the child application's request.
824 	 */
825 	void addOnRestoreWindow(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
826 	{
827 		if ( !("restore-window" in connectedSignals) )
828 		{
829 			Signals.connectData(
830 			getStruct(),
831 			"restore-window",
832 			cast(GCallback)&callBackRestoreWindow,
833 			cast(void*)this,
834 			null,
835 			connectFlags);
836 			connectedSignals["restore-window"] = 1;
837 		}
838 		onRestoreWindowListeners ~= dlg;
839 	}
840 	extern(C) static void callBackRestoreWindow(VteTerminal* vteterminalStruct, Terminal _terminal)
841 	{
842 		foreach ( void delegate(Terminal) dlg ; _terminal.onRestoreWindowListeners )
843 		{
844 			dlg(_terminal);
845 		}
846 	}
847 	
848 	void delegate(Terminal)[] onSelectionChangedListeners;
849 	/**
850 	 * Emitted whenever the contents of terminal's selection changes.
851 	 */
852 	void addOnSelectionChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
853 	{
854 		if ( !("selection-changed" in connectedSignals) )
855 		{
856 			Signals.connectData(
857 			getStruct(),
858 			"selection-changed",
859 			cast(GCallback)&callBackSelectionChanged,
860 			cast(void*)this,
861 			null,
862 			connectFlags);
863 			connectedSignals["selection-changed"] = 1;
864 		}
865 		onSelectionChangedListeners ~= dlg;
866 	}
867 	extern(C) static void callBackSelectionChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
868 	{
869 		foreach ( void delegate(Terminal) dlg ; _terminal.onSelectionChangedListeners )
870 		{
871 			dlg(_terminal);
872 		}
873 	}
874 	
875 	void delegate(Terminal)[] onStatusLineChangedListeners;
876 	/**
877 	 * Emitted whenever the contents of the status line are modified or
878 	 * cleared.
879 	 */
880 	void addOnStatusLineChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
881 	{
882 		if ( !("status-line-changed" in connectedSignals) )
883 		{
884 			Signals.connectData(
885 			getStruct(),
886 			"status-line-changed",
887 			cast(GCallback)&callBackStatusLineChanged,
888 			cast(void*)this,
889 			null,
890 			connectFlags);
891 			connectedSignals["status-line-changed"] = 1;
892 		}
893 		onStatusLineChangedListeners ~= dlg;
894 	}
895 	extern(C) static void callBackStatusLineChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
896 	{
897 		foreach ( void delegate(Terminal) dlg ; _terminal.onStatusLineChangedListeners )
898 		{
899 			dlg(_terminal);
900 		}
901 	}
902 	
903 	void delegate(Terminal)[] onTextDeletedListeners;
904 	/**
905 	 * An internal signal used for communication between the terminal and
906 	 * its accessibility peer. May not be emitted under certain
907 	 * circumstances.
908 	 */
909 	void addOnTextDeleted(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
910 	{
911 		if ( !("text-deleted" in connectedSignals) )
912 		{
913 			Signals.connectData(
914 			getStruct(),
915 			"text-deleted",
916 			cast(GCallback)&callBackTextDeleted,
917 			cast(void*)this,
918 			null,
919 			connectFlags);
920 			connectedSignals["text-deleted"] = 1;
921 		}
922 		onTextDeletedListeners ~= dlg;
923 	}
924 	extern(C) static void callBackTextDeleted(VteTerminal* vteterminalStruct, Terminal _terminal)
925 	{
926 		foreach ( void delegate(Terminal) dlg ; _terminal.onTextDeletedListeners )
927 		{
928 			dlg(_terminal);
929 		}
930 	}
931 	
932 	void delegate(Terminal)[] onTextInsertedListeners;
933 	/**
934 	 * An internal signal used for communication between the terminal and
935 	 * its accessibility peer. May not be emitted under certain
936 	 * circumstances.
937 	 */
938 	void addOnTextInserted(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
939 	{
940 		if ( !("text-inserted" in connectedSignals) )
941 		{
942 			Signals.connectData(
943 			getStruct(),
944 			"text-inserted",
945 			cast(GCallback)&callBackTextInserted,
946 			cast(void*)this,
947 			null,
948 			connectFlags);
949 			connectedSignals["text-inserted"] = 1;
950 		}
951 		onTextInsertedListeners ~= dlg;
952 	}
953 	extern(C) static void callBackTextInserted(VteTerminal* vteterminalStruct, Terminal _terminal)
954 	{
955 		foreach ( void delegate(Terminal) dlg ; _terminal.onTextInsertedListeners )
956 		{
957 			dlg(_terminal);
958 		}
959 	}
960 	
961 	void delegate(Terminal)[] onTextModifiedListeners;
962 	/**
963 	 * An internal signal used for communication between the terminal and
964 	 * its accessibility peer. May not be emitted under certain
965 	 * circumstances.
966 	 */
967 	void addOnTextModified(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
968 	{
969 		if ( !("text-modified" in connectedSignals) )
970 		{
971 			Signals.connectData(
972 			getStruct(),
973 			"text-modified",
974 			cast(GCallback)&callBackTextModified,
975 			cast(void*)this,
976 			null,
977 			connectFlags);
978 			connectedSignals["text-modified"] = 1;
979 		}
980 		onTextModifiedListeners ~= dlg;
981 	}
982 	extern(C) static void callBackTextModified(VteTerminal* vteterminalStruct, Terminal _terminal)
983 	{
984 		foreach ( void delegate(Terminal) dlg ; _terminal.onTextModifiedListeners )
985 		{
986 			dlg(_terminal);
987 		}
988 	}
989 	
990 	void delegate(gint, Terminal)[] onTextScrolledListeners;
991 	/**
992 	 * An internal signal used for communication between the terminal and
993 	 * its accessibility peer. May not be emitted under certain
994 	 * circumstances.
995 	 */
996 	void addOnTextScrolled(void delegate(gint, Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
997 	{
998 		if ( !("text-scrolled" in connectedSignals) )
999 		{
1000 			Signals.connectData(
1001 			getStruct(),
1002 			"text-scrolled",
1003 			cast(GCallback)&callBackTextScrolled,
1004 			cast(void*)this,
1005 			null,
1006 			connectFlags);
1007 			connectedSignals["text-scrolled"] = 1;
1008 		}
1009 		onTextScrolledListeners ~= dlg;
1010 	}
1011 	extern(C) static void callBackTextScrolled(VteTerminal* vteterminalStruct, gint delta, Terminal _terminal)
1012 	{
1013 		foreach ( void delegate(gint, Terminal) dlg ; _terminal.onTextScrolledListeners )
1014 		{
1015 			dlg(delta, _terminal);
1016 		}
1017 	}
1018 	
1019 	void delegate(Terminal)[] onWindowTitleChangedListeners;
1020 	/**
1021 	 * Emitted when the terminal's window_title field is modified.
1022 	 */
1023 	void addOnWindowTitleChanged(void delegate(Terminal) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
1024 	{
1025 		if ( !("window-title-changed" in connectedSignals) )
1026 		{
1027 			Signals.connectData(
1028 			getStruct(),
1029 			"window-title-changed",
1030 			cast(GCallback)&callBackWindowTitleChanged,
1031 			cast(void*)this,
1032 			null,
1033 			connectFlags);
1034 			connectedSignals["window-title-changed"] = 1;
1035 		}
1036 		onWindowTitleChangedListeners ~= dlg;
1037 	}
1038 	extern(C) static void callBackWindowTitleChanged(VteTerminal* vteterminalStruct, Terminal _terminal)
1039 	{
1040 		foreach ( void delegate(Terminal) dlg ; _terminal.onWindowTitleChangedListeners )
1041 		{
1042 			dlg(_terminal);
1043 		}
1044 	}
1045 	
1046 	
1047 	/**
1048 	 * Creates a new terminal widget.
1049 	 * Throws: ConstructionException GTK+ fails to create the object.
1050 	 */
1051 	public this ()
1052 	{
1053 		// GtkWidget * vte_terminal_new (void);
1054 		auto p = vte_terminal_new();
1055 		if(p is null)
1056 		{
1057 			throw new ConstructionException("null returned by vte_terminal_new()");
1058 		}
1059 		this(cast(VteTerminal*) p);
1060 	}
1061 	
1062 	/**
1063 	 * Warning
1064 	 * vte_terminal_im_append_menuitems is deprecated and should not be used in newly-written code.
1065 	 * Appends menu items for various input methods to the given menu. The
1066 	 * user can select one of these items to modify the input method used by
1067 	 * the terminal.
1068 	 * Params:
1069 	 * menushell = a GtkMenuShell
1070 	 */
1071 	public void imAppendMenuitems(MenuShell menushell)
1072 	{
1073 		// void vte_terminal_im_append_menuitems (VteTerminal *terminal,  GtkMenuShell *menushell);
1074 		vte_terminal_im_append_menuitems(vteTerminal, (menushell is null) ? null : menushell.getMenuShellStruct());
1075 	}
1076 	
1077 	/**
1078 	 * Interprets data as if it were data received from a child process. This
1079 	 * can either be used to drive the terminal without a child process, or just
1080 	 * to mess with your users.
1081 	 * Params:
1082 	 * data = a string in the terminal's current encoding. [array length=length][element-type guint8]
1083 	 */
1084 	public void feed(string data)
1085 	{
1086 		// void vte_terminal_feed (VteTerminal *terminal,  const char *data,  glong length);
1087 		vte_terminal_feed(vteTerminal, cast(char*)data.ptr, cast(int) data.length);
1088 	}
1089 	
1090 	/**
1091 	 * Sends a block of UTF-8 text to the child as if it were entered by the user
1092 	 * at the keyboard.
1093 	 * Params:
1094 	 * text = data to send to the child
1095 	 */
1096 	public void feedChild(string text)
1097 	{
1098 		// void vte_terminal_feed_child (VteTerminal *terminal,  const char *text,  glong length);
1099 		vte_terminal_feed_child(vteTerminal, cast(char*)text.ptr, cast(int) text.length);
1100 	}
1101 	
1102 	/**
1103 	 * Sends a block of binary data to the child.
1104 	 * Params:
1105 	 * data = data to send to the child
1106 	 */
1107 	public void feedChildBinary(string data)
1108 	{
1109 		// void vte_terminal_feed_child_binary (VteTerminal *terminal,  const char *data,  glong length);
1110 		vte_terminal_feed_child_binary(vteTerminal, cast(char*)data.ptr, cast(int) data.length);
1111 	}
1112 	
1113 	/**
1114 	 * Gets the exit status of the command started by vte_terminal_fork_command().
1115 	 * See your C library's documentation for more details on how to interpret the
1116 	 * exit status.
1117 	 * Note that this function may only be called from the signal handler of
1118 	 * the "child-exited" signal.
1119 	 * Returns: the child's exit status Since 0.20
1120 	 */
1121 	public int getChildExitStatus()
1122 	{
1123 		// int vte_terminal_get_child_exit_status (VteTerminal *terminal);
1124 		return vte_terminal_get_child_exit_status(vteTerminal);
1125 	}
1126 	
1127 	/**
1128 	 * Selects all text within the terminal (including the scrollback buffer).
1129 	 */
1130 	public void selectAll()
1131 	{
1132 		// void vte_terminal_select_all (VteTerminal *terminal);
1133 		vte_terminal_select_all(vteTerminal);
1134 	}
1135 	
1136 	/**
1137 	 * Clears the current selection.
1138 	 */
1139 	public void selectNone()
1140 	{
1141 		// void vte_terminal_select_none (VteTerminal *terminal);
1142 		vte_terminal_select_none(vteTerminal);
1143 	}
1144 	
1145 	/**
1146 	 * Places the selected text in the terminal in the GDK_SELECTION_CLIPBOARD
1147 	 * selection.
1148 	 */
1149 	public void copyClipboard()
1150 	{
1151 		// void vte_terminal_copy_clipboard (VteTerminal *terminal);
1152 		vte_terminal_copy_clipboard(vteTerminal);
1153 	}
1154 	
1155 	/**
1156 	 * Sends the contents of the GDK_SELECTION_CLIPBOARD selection to the
1157 	 * terminal's child. If necessary, the data is converted from UTF-8 to the
1158 	 * terminal's current encoding. It's called on paste menu item, or when
1159 	 * user presses Shift+Insert.
1160 	 */
1161 	public void pasteClipboard()
1162 	{
1163 		// void vte_terminal_paste_clipboard (VteTerminal *terminal);
1164 		vte_terminal_paste_clipboard(vteTerminal);
1165 	}
1166 	
1167 	/**
1168 	 * Places the selected text in the terminal in the GDK_SELECTION_PRIMARY
1169 	 * selection.
1170 	 */
1171 	public void copyPrimary()
1172 	{
1173 		// void vte_terminal_copy_primary (VteTerminal *terminal);
1174 		vte_terminal_copy_primary(vteTerminal);
1175 	}
1176 	
1177 	/**
1178 	 * Sends the contents of the GDK_SELECTION_PRIMARY selection to the terminal's
1179 	 * child. If necessary, the data is converted from UTF-8 to the terminal's
1180 	 * current encoding. The terminal will call also paste the
1181 	 * GDK_SELECTION_PRIMARY selection when the user clicks with the the second
1182 	 * mouse button.
1183 	 */
1184 	public void pastePrimary()
1185 	{
1186 		// void vte_terminal_paste_primary (VteTerminal *terminal);
1187 		vte_terminal_paste_primary(vteTerminal);
1188 	}
1189 	
1190 	/**
1191 	 * Attempts to change the terminal's size in terms of rows and columns. If
1192 	 * the attempt succeeds, the widget will resize itself to the proper size.
1193 	 * Params:
1194 	 * columns = the desired number of columns
1195 	 * rows = the desired number of rows
1196 	 */
1197 	public void setSize(glong columns, glong rows)
1198 	{
1199 		// void vte_terminal_set_size (VteTerminal *terminal,  glong columns,  glong rows);
1200 		vte_terminal_set_size(vteTerminal, columns, rows);
1201 	}
1202 	
1203 	/**
1204 	 * Controls whether or not the terminal will beep when the child outputs the
1205 	 * "bl" sequence.
1206 	 * Params:
1207 	 * isAudible = TRUE if the terminal should beep
1208 	 */
1209 	public void setAudibleBell(int isAudible)
1210 	{
1211 		// void vte_terminal_set_audible_bell (VteTerminal *terminal,  gboolean is_audible);
1212 		vte_terminal_set_audible_bell(vteTerminal, isAudible);
1213 	}
1214 	
1215 	/**
1216 	 * Checks whether or not the terminal will beep when the child outputs the
1217 	 * "bl" sequence.
1218 	 * Returns: TRUE if audible bell is enabled, FALSE if not
1219 	 */
1220 	public int getAudibleBell()
1221 	{
1222 		// gboolean vte_terminal_get_audible_bell (VteTerminal *terminal);
1223 		return vte_terminal_get_audible_bell(vteTerminal);
1224 	}
1225 	
1226 	/**
1227 	 * Controls whether or not the terminal will present a visible bell to the
1228 	 * user when the child outputs the "bl" sequence. The terminal
1229 	 * will clear itself to the default foreground color and then repaint itself.
1230 	 * Params:
1231 	 * isVisible = whether the terminal should flash on bell
1232 	 */
1233 	public void setVisibleBell(int isVisible)
1234 	{
1235 		// void vte_terminal_set_visible_bell (VteTerminal *terminal,  gboolean is_visible);
1236 		vte_terminal_set_visible_bell(vteTerminal, isVisible);
1237 	}
1238 	
1239 	/**
1240 	 * Checks whether or not the terminal will present a visible bell to the
1241 	 * user when the child outputs the "bl" sequence. The terminal
1242 	 * will clear itself to the default foreground color and then repaint itself.
1243 	 * Returns: TRUE if visible bell is enabled, FALSE if not
1244 	 */
1245 	public int getVisibleBell()
1246 	{
1247 		// gboolean vte_terminal_get_visible_bell (VteTerminal *terminal);
1248 		return vte_terminal_get_visible_bell(vteTerminal);
1249 	}
1250 	
1251 	/**
1252 	 * Controls whether or not the terminal will attempt to draw bold text,
1253 	 * either by using a bold font variant or by repainting text with a different
1254 	 * offset.
1255 	 * Params:
1256 	 * allowBold = TRUE if the terminal should attempt to draw bold text
1257 	 */
1258 	public void setAllowBold(int allowBold)
1259 	{
1260 		// void vte_terminal_set_allow_bold (VteTerminal *terminal,  gboolean allow_bold);
1261 		vte_terminal_set_allow_bold(vteTerminal, allowBold);
1262 	}
1263 	
1264 	/**
1265 	 * Checks whether or not the terminal will attempt to draw bold text by
1266 	 * repainting text with a one-pixel offset.
1267 	 * Returns: TRUE if bolding is enabled, FALSE if not
1268 	 */
1269 	public int getAllowBold()
1270 	{
1271 		// gboolean vte_terminal_get_allow_bold (VteTerminal *terminal);
1272 		return vte_terminal_get_allow_bold(vteTerminal);
1273 	}
1274 	
1275 	/**
1276 	 * Controls whether or not the terminal will forcibly scroll to the bottom of
1277 	 * the viewable history when the new data is received from the child.
1278 	 * Params:
1279 	 * scroll = whether the terminal should scroll on output
1280 	 */
1281 	public void setScrollOnOutput(int scroll)
1282 	{
1283 		// void vte_terminal_set_scroll_on_output (VteTerminal *terminal,  gboolean scroll);
1284 		vte_terminal_set_scroll_on_output(vteTerminal, scroll);
1285 	}
1286 	
1287 	/**
1288 	 * Controls whether or not the terminal will forcibly scroll to the bottom of
1289 	 * the viewable history when the user presses a key. Modifier keys do not
1290 	 * trigger this behavior.
1291 	 * Params:
1292 	 * scroll = whether the terminal should scroll on keystrokes
1293 	 */
1294 	public void setScrollOnKeystroke(int scroll)
1295 	{
1296 		// void vte_terminal_set_scroll_on_keystroke  (VteTerminal *terminal,  gboolean scroll);
1297 		vte_terminal_set_scroll_on_keystroke(vteTerminal, scroll);
1298 	}
1299 	
1300 	/**
1301 	 * Sets the color used to draw bold text in the default foreground color.
1302 	 * Params:
1303 	 * bold = the new bold color
1304 	 */
1305 	public void setColorBold(Color bold)
1306 	{
1307 		// void vte_terminal_set_color_bold (VteTerminal *terminal,  const GdkColor *bold);
1308 		vte_terminal_set_color_bold(vteTerminal, (bold is null) ? null : bold.getColorStruct());
1309 	}
1310 	
1311 	/**
1312 	 * Sets the color used to draw bold text in the default foreground color.
1313 	 * If bold is NULL then the default color is used.
1314 	 * Params:
1315 	 * bold = the new bold color or NULL. [allow-none]
1316 	 */
1317 	public void setColorBoldRgba(RGBA bold)
1318 	{
1319 		// void vte_terminal_set_color_bold_rgba (VteTerminal *terminal,  const GdkRGBA *bold);
1320 		vte_terminal_set_color_bold_rgba(vteTerminal, (bold is null) ? null : bold.getRGBAStruct());
1321 	}
1322 	
1323 	/**
1324 	 * Sets the foreground color used to draw normal text
1325 	 * Params:
1326 	 * foreground = the new foreground color
1327 	 */
1328 	public void setColorForeground(Color foreground)
1329 	{
1330 		// void vte_terminal_set_color_foreground (VteTerminal *terminal,  const GdkColor *foreground);
1331 		vte_terminal_set_color_foreground(vteTerminal, (foreground is null) ? null : foreground.getColorStruct());
1332 	}
1333 	
1334 	/**
1335 	 * Sets the foreground color used to draw normal text.
1336 	 * Params:
1337 	 * foreground = the new foreground color
1338 	 * Since 0.28
1339 	 */
1340 	public void setColorForegroundRgba(RGBA foreground)
1341 	{
1342 		// void vte_terminal_set_color_foreground_rgba  (VteTerminal *terminal,  const GdkRGBA *foreground);
1343 		vte_terminal_set_color_foreground_rgba(vteTerminal, (foreground is null) ? null : foreground.getRGBAStruct());
1344 	}
1345 	
1346 	/**
1347 	 * Sets the background color for text which does not have a specific background
1348 	 * color assigned. Only has effect when no background image is set and when
1349 	 * the terminal is not transparent.
1350 	 * Params:
1351 	 * background = the new background color
1352 	 */
1353 	public void setColorBackground(Color background)
1354 	{
1355 		// void vte_terminal_set_color_background (VteTerminal *terminal,  const GdkColor *background);
1356 		vte_terminal_set_color_background(vteTerminal, (background is null) ? null : background.getColorStruct());
1357 	}
1358 	
1359 	/**
1360 	 * Sets the background color for text which does not have a specific background
1361 	 * color assigned. Only has effect when no background image is set and when
1362 	 * the terminal is not transparent.
1363 	 * Params:
1364 	 * background = the new background color
1365 	 * Since 0.28
1366 	 */
1367 	public void setColorBackgroundRgba(RGBA background)
1368 	{
1369 		// void vte_terminal_set_color_background_rgba  (VteTerminal *terminal,  const GdkRGBA *background);
1370 		vte_terminal_set_color_background_rgba(vteTerminal, (background is null) ? null : background.getRGBAStruct());
1371 	}
1372 	
1373 	/**
1374 	 * Sets the color used to draw dim text in the default foreground color.
1375 	 * Params:
1376 	 * dim = the new dim color
1377 	 */
1378 	public void setColorDim(Color dim)
1379 	{
1380 		// void vte_terminal_set_color_dim (VteTerminal *terminal,  const GdkColor *dim);
1381 		vte_terminal_set_color_dim(vteTerminal, (dim is null) ? null : dim.getColorStruct());
1382 	}
1383 	
1384 	/**
1385 	 * Sets the color used to draw dim text in the default foreground color.
1386 	 * If dim is NULL then the default color is used.
1387 	 * Params:
1388 	 * dim = the new dim color or NULL. [allow-none]
1389 	 * Since 0.28
1390 	 */
1391 	public void setColorDimRgba(RGBA dim)
1392 	{
1393 		// void vte_terminal_set_color_dim_rgba (VteTerminal *terminal,  const GdkRGBA *dim);
1394 		vte_terminal_set_color_dim_rgba(vteTerminal, (dim is null) ? null : dim.getRGBAStruct());
1395 	}
1396 	
1397 	/**
1398 	 * Sets the background color for text which is under the cursor. If NULL, text
1399 	 * under the cursor will be drawn with foreground and background colors
1400 	 * reversed.
1401 	 * Params:
1402 	 * cursorBackground = the new color to use for the text cursor, or NULL. [allow-none]
1403 	 * Since 0.11.11
1404 	 */
1405 	public void setColorCursor(Color cursorBackground)
1406 	{
1407 		// void vte_terminal_set_color_cursor (VteTerminal *terminal,  const GdkColor *cursor_background);
1408 		vte_terminal_set_color_cursor(vteTerminal, (cursorBackground is null) ? null : cursorBackground.getColorStruct());
1409 	}
1410 	
1411 	/**
1412 	 * Sets the background color for text which is under the cursor. If NULL, text
1413 	 * under the cursor will be drawn with foreground and background colors
1414 	 * reversed.
1415 	 * Params:
1416 	 * cursorBackground = the new color to use for the text cursor, or NULL. [allow-none]
1417 	 * Since 0.28
1418 	 */
1419 	public void setColorCursorRgba(RGBA cursorBackground)
1420 	{
1421 		// void vte_terminal_set_color_cursor_rgba (VteTerminal *terminal,  const GdkRGBA *cursor_background);
1422 		vte_terminal_set_color_cursor_rgba(vteTerminal, (cursorBackground is null) ? null : cursorBackground.getRGBAStruct());
1423 	}
1424 	
1425 	/**
1426 	 * Sets the background color for text which is highlighted. If NULL,
1427 	 * highlighted text (which is usually highlighted because it is selected) will
1428 	 * be drawn with foreground and background colors reversed.
1429 	 * Params:
1430 	 * highlightBackground = the new color to use for highlighted text, or NULL. [allow-none]
1431 	 * Since 0.11.11
1432 	 */
1433 	public void setColorHighlight(Color highlightBackground)
1434 	{
1435 		// void vte_terminal_set_color_highlight (VteTerminal *terminal,  const GdkColor *highlight_background);
1436 		vte_terminal_set_color_highlight(vteTerminal, (highlightBackground is null) ? null : highlightBackground.getColorStruct());
1437 	}
1438 	
1439 	/**
1440 	 * Sets the background color for text which is highlighted. If NULL,
1441 	 * highlighted text (which is usually highlighted because it is selected) will
1442 	 * be drawn with foreground and background colors reversed.
1443 	 * Params:
1444 	 * highlightBackground = the new color to use for highlighted text, or NULL. [allow-none]
1445 	 * Since 0.28
1446 	 */
1447 	public void setColorHighlightRgba(RGBA highlightBackground)
1448 	{
1449 		// void vte_terminal_set_color_highlight_rgba  (VteTerminal *terminal,  const GdkRGBA *highlight_background);
1450 		vte_terminal_set_color_highlight_rgba(vteTerminal, (highlightBackground is null) ? null : highlightBackground.getRGBAStruct());
1451 	}
1452 	
1453 	/**
1454 	 * The terminal widget uses a 28-color model comprised of the default foreground
1455 	 * and background colors, the bold foreground color, the dim foreground
1456 	 * color, an eight color palette, bold versions of the eight color palette,
1457 	 * and a dim version of the the eight color palette.
1458 	 * palette_size must be either 0, 8, 16, or 24, or between 25 and 255 inclusive.
1459 	 * If foreground is NULL and
1460 	 * palette_size is greater than 0, the new foreground color is taken from
1461 	 * palette[7]. If background is NULL and palette_size is greater than 0,
1462 	 * the new background color is taken from palette[0]. If
1463 	 * palette_size is 8 or 16, the third (dim) and possibly the second (bold)
1464 	 * 8-color palettes are extrapolated from the new background color and the items
1465 	 * in palette.
1466 	 * Params:
1467 	 * foreground = the new foreground color, or NULL. [allow-none]
1468 	 * background = the new background color, or NULL. [allow-none]
1469 	 * palette = the color palette. [array length=palette_size zero-terminated=0][element-type Gdk.Color]
1470 	 * paletteSize = the number of entries in palette
1471 	 */
1472 	public void setColors(Color foreground, Color background, Color palette, glong paletteSize)
1473 	{
1474 		// void vte_terminal_set_colors (VteTerminal *terminal,  const GdkColor *foreground,  const GdkColor *background,  const GdkColor *palette,  glong palette_size);
1475 		vte_terminal_set_colors(vteTerminal, (foreground is null) ? null : foreground.getColorStruct(), (background is null) ? null : background.getColorStruct(), (palette is null) ? null : palette.getColorStruct(), paletteSize);
1476 	}
1477 	
1478 	/**
1479 	 * The terminal widget uses a 28-color model comprised of the default foreground
1480 	 * and background colors, the bold foreground color, the dim foreground
1481 	 * color, an eight color palette, bold versions of the eight color palette,
1482 	 * and a dim version of the the eight color palette.
1483 	 * palette_size must be either 0, 8, 16, or 24, or between 25 and 255 inclusive.
1484 	 * If foreground is NULL and
1485 	 * palette_size is greater than 0, the new foreground color is taken from
1486 	 * palette[7]. If background is NULL and palette_size is greater than 0,
1487 	 * the new background color is taken from palette[0]. If
1488 	 * palette_size is 8 or 16, the third (dim) and possibly the second (bold)
1489 	 * 8-color palettes are extrapolated from the new background color and the items
1490 	 * in palette.
1491 	 * Params:
1492 	 * foreground = the new foreground color, or NULL. [allow-none]
1493 	 * background = the new background color, or NULL. [allow-none]
1494 	 * palette = the color palette. [array length=palette_size zero-terminated=0][element-type Gdk.RGBA]
1495 	 * paletteSize = the number of entries in palette
1496 	 * Since 0.28
1497 	 */
1498 	public void setColorsRgba(RGBA foreground, RGBA background, RGBA palette, gsize paletteSize)
1499 	{
1500 		// void vte_terminal_set_colors_rgba (VteTerminal *terminal,  const GdkRGBA *foreground,  const GdkRGBA *background,  const GdkRGBA *palette,  gsize palette_size);
1501 		vte_terminal_set_colors_rgba(vteTerminal, (foreground is null) ? null : foreground.getRGBAStruct(), (background is null) ? null : background.getRGBAStruct(), (palette is null) ? null : palette.getRGBAStruct(), paletteSize);
1502 	}
1503 	
1504 	/**
1505 	 * Reset the terminal palette to reasonable compiled-in default color.
1506 	 */
1507 	public void setDefaultColors()
1508 	{
1509 		// void vte_terminal_set_default_colors (VteTerminal *terminal);
1510 		vte_terminal_set_default_colors(vteTerminal);
1511 	}
1512 	
1513 	/**
1514 	 * Sets the opacity of the terminal background, were 0 means completely
1515 	 * transparent and 65535 means completely opaque.
1516 	 * Params:
1517 	 * opacity = the new opacity
1518 	 */
1519 	public void setOpacity(ushort opacity)
1520 	{
1521 		// void vte_terminal_set_opacity (VteTerminal *terminal,  guint16 opacity);
1522 		vte_terminal_set_opacity(vteTerminal, opacity);
1523 	}
1524 	
1525 	/**
1526 	 * Sets a background image for the widget. Text which would otherwise be
1527 	 * drawn using the default background color will instead be drawn over the
1528 	 * specified image. If necessary, the image will be tiled to cover the
1529 	 * widget's entire visible area. If specified by
1530 	 * vte_terminal_set_background_saturation(), the terminal will tint its
1531 	 * in-memory copy of the image before applying it to the terminal.
1532 	 * Params:
1533 	 * image = a GdkPixbuf to use, or NULL to unset the background. [allow-none]
1534 	 */
1535 	public void setBackgroundImage(GdkPixbuf* image)
1536 	{
1537 		// void vte_terminal_set_background_image (VteTerminal *terminal,  GdkPixbuf *image);
1538 		vte_terminal_set_background_image(vteTerminal, image);
1539 	}
1540 	
1541 	/**
1542 	 * Sets a background image for the widget. If specified by
1543 	 * vte_terminal_set_background_saturation(), the terminal will tint its
1544 	 * in-memory copy of the image before applying it to the terminal.
1545 	 * Params:
1546 	 * path = path to an image file. [type filename]
1547 	 */
1548 	public void setBackgroundImageFile(string path)
1549 	{
1550 		// void vte_terminal_set_background_image_file  (VteTerminal *terminal,  const char *path);
1551 		vte_terminal_set_background_image_file(vteTerminal, Str.toStringz(path));
1552 	}
1553 	
1554 	/**
1555 	 * If a background image has been set using
1556 	 * vte_terminal_set_background_image(),
1557 	 * vte_terminal_set_background_image_file(), or
1558 	 * vte_terminal_set_background_transparent(), and the saturation value is less
1559 	 * than 1.0, the terminal will adjust the colors of the image before drawing
1560 	 * the image. To do so, the terminal will create a copy of the background
1561 	 * image (or snapshot of the root window) and modify its pixel values.
1562 	 * Params:
1563 	 * saturation = a floating point value between 0.0 and 1.0.
1564 	 */
1565 	public void setBackgroundSaturation(double saturation)
1566 	{
1567 		// void vte_terminal_set_background_saturation  (VteTerminal *terminal,  double saturation);
1568 		vte_terminal_set_background_saturation(vteTerminal, saturation);
1569 	}
1570 	
1571 	/**
1572 	 * Sets the terminal's background image to the pixmap stored in the root
1573 	 * window, adjusted so that if there are no windows below your application,
1574 	 * the widget will appear to be transparent.
1575 	 * Params:
1576 	 * transparent = whether the terminal should fake transparency
1577 	 */
1578 	public void setBackgroundTransparent(int transparent)
1579 	{
1580 		// void vte_terminal_set_background_transparent  (VteTerminal *terminal,  gboolean transparent);
1581 		vte_terminal_set_background_transparent(vteTerminal, transparent);
1582 	}
1583 	
1584 	/**
1585 	 * If a background image has been set using
1586 	 * vte_terminal_set_background_image(),
1587 	 * vte_terminal_set_background_image_file(), or
1588 	 * vte_terminal_set_background_transparent(), and the value set by
1589 	 * vte_terminal_set_background_saturation() is less than one, the terminal
1590 	 * will adjust the color of the image before drawing the image. To do so,
1591 	 * the terminal will create a copy of the background image (or snapshot of
1592 	 * the root window) and modify its pixel values. The initial tint color
1593 	 * is black.
1594 	 * Params:
1595 	 * color = a color which the terminal background should be tinted to if its
1596 	 * saturation is not 1.0.
1597 	 * Since 0.11
1598 	 */
1599 	public void setBackgroundTintColor(Color color)
1600 	{
1601 		// void vte_terminal_set_background_tint_color  (VteTerminal *terminal,  const GdkColor *color);
1602 		vte_terminal_set_background_tint_color(vteTerminal, (color is null) ? null : color.getColorStruct());
1603 	}
1604 	
1605 	/**
1606 	 * Controls whether or not the terminal will scroll the background image (if
1607 	 * one is set) when the text in the window must be scrolled.
1608 	 * Params:
1609 	 * scroll = whether the terminal should scroll the background image along with
1610 	 * the text
1611 	 * Since 0.11
1612 	 */
1613 	public void setScrollBackground(int scroll)
1614 	{
1615 		// void vte_terminal_set_scroll_background (VteTerminal *terminal,  gboolean scroll);
1616 		vte_terminal_set_scroll_background(vteTerminal, scroll);
1617 	}
1618 	
1619 	/**
1620 	 * Sets the shape of the cursor drawn.
1621 	 * Params:
1622 	 * shape = the VteTerminalCursorShape to use
1623 	 * Since 0.20
1624 	 */
1625 	public void setCursorShape(VteTerminalCursorShape shape)
1626 	{
1627 		// void vte_terminal_set_cursor_shape (VteTerminal *terminal,  VteTerminalCursorShape shape);
1628 		vte_terminal_set_cursor_shape(vteTerminal, shape);
1629 	}
1630 	
1631 	/**
1632 	 * Returns the currently set cursor shape.
1633 	 * Returns: cursor shape. Since 0.17.6
1634 	 */
1635 	public VteTerminalCursorShape getCursorShape()
1636 	{
1637 		// VteTerminalCursorShape vte_terminal_get_cursor_shape (VteTerminal *terminal);
1638 		return vte_terminal_get_cursor_shape(vteTerminal);
1639 	}
1640 	
1641 	/**
1642 	 * Warning
1643 	 * vte_terminal_set_cursor_blinks is deprecated and should not be used in newly-written code. 0.17.1 Use vte_terminal_set_cursor_blink_mode() instead.
1644 	 * Sets whether or not the cursor will blink.
1645 	 * Params:
1646 	 * blink = whether the cursor should blink
1647 	 */
1648 	public void setCursorBlinks(int blink)
1649 	{
1650 		// void vte_terminal_set_cursor_blinks (VteTerminal *terminal,  gboolean blink);
1651 		vte_terminal_set_cursor_blinks(vteTerminal, blink);
1652 	}
1653 	
1654 	/**
1655 	 * Returns the currently set cursor blink mode.
1656 	 * Returns: cursor blink mode. Since 0.17.1
1657 	 */
1658 	public VteTerminalCursorBlinkMode getCursorBlinkMode()
1659 	{
1660 		// VteTerminalCursorBlinkMode vte_terminal_get_cursor_blink_mode  (VteTerminal *terminal);
1661 		return vte_terminal_get_cursor_blink_mode(vteTerminal);
1662 	}
1663 	
1664 	/**
1665 	 * Sets whether or not the cursor will blink. Using VTE_CURSOR_BLINK_SYSTEM
1666 	 * will use the "gtk-cursor-blink" setting.
1667 	 * Params:
1668 	 * mode = the VteTerminalCursorBlinkMode to use
1669 	 * Since 0.17.1
1670 	 */
1671 	public void setCursorBlinkMode(VteTerminalCursorBlinkMode mode)
1672 	{
1673 		// void vte_terminal_set_cursor_blink_mode (VteTerminal *terminal,  VteTerminalCursorBlinkMode mode);
1674 		vte_terminal_set_cursor_blink_mode(vteTerminal, mode);
1675 	}
1676 	
1677 	/**
1678 	 * Sets the length of the scrollback buffer used by the terminal. The size of
1679 	 * the scrollback buffer will be set to the larger of this value and the number
1680 	 * of visible rows the widget can display, so 0 can safely be used to disable
1681 	 * scrollback.
1682 	 * A negative value means "infinite scrollback".
1683 	 * Note that this setting only affects the normal screen buffer.
1684 	 * For terminal types which have an alternate screen buffer, no scrollback is
1685 	 * allowed on the alternate screen buffer.
1686 	 * Params:
1687 	 * lines = the length of the history buffer
1688 	 */
1689 	public void setScrollbackLines(glong lines)
1690 	{
1691 		// void vte_terminal_set_scrollback_lines (VteTerminal *terminal,  glong lines);
1692 		vte_terminal_set_scrollback_lines(vteTerminal, lines);
1693 	}
1694 	
1695 	/**
1696 	 * Sets the font used for rendering all text displayed by the terminal,
1697 	 * overriding any fonts set using gtk_widget_modify_font(). The terminal
1698 	 * will immediately attempt to load the desired font, retrieve its
1699 	 * metrics, and attempt to resize itself to keep the same number of rows
1700 	 * and columns.
1701 	 * Params:
1702 	 * fontDesc = a PangoFontDescription for the desired font, or NULL. [allow-none]
1703 	 */
1704 	public void setFont(PgFontDescription fontDesc)
1705 	{
1706 		// void vte_terminal_set_font (VteTerminal *terminal,  const PangoFontDescription *font_desc);
1707 		vte_terminal_set_font(vteTerminal, (fontDesc is null) ? null : fontDesc.getPgFontDescriptionStruct());
1708 	}
1709 	
1710 	/**
1711 	 * A convenience function which converts name into a PangoFontDescription and
1712 	 * passes it to vte_terminal_set_font().
1713 	 * Params:
1714 	 * name = a pango font description in string form. [type utf8]
1715 	 */
1716 	public void setFontFromString(string name)
1717 	{
1718 		// void vte_terminal_set_font_from_string (VteTerminal *terminal,  const char *name);
1719 		vte_terminal_set_font_from_string(vteTerminal, Str.toStringz(name));
1720 	}
1721 	
1722 	/**
1723 	 * Warning
1724 	 * vte_terminal_set_font_from_string_full has been deprecated since version 0.20 and should not be used in newly-written code. Use vte_terminal_set_font()
1725 	 * A convenience function which converts name into a PangoFontDescription and
1726 	 * passes it to vte_terminal_set_font_full().
1727 	 * Params:
1728 	 * name = A string describing the font.
1729 	 * antialias = Whether or not to antialias the font (if possible).
1730 	 * Since 0.11.11
1731 	 */
1732 	public void setFontFromStringFull(string name, VteTerminalAntiAlias antialias)
1733 	{
1734 		// void vte_terminal_set_font_from_string_full  (VteTerminal *terminal,  const char *name,  VteTerminalAntiAlias antialias);
1735 		vte_terminal_set_font_from_string_full(vteTerminal, Str.toStringz(name), antialias);
1736 	}
1737 	
1738 	/**
1739 	 * Warning
1740 	 * vte_terminal_set_font_full has been deprecated since version 0.20 and should not be used in newly-written code. Use vte_terminal_set_font()
1741 	 * Sets the font used for rendering all text displayed by the terminal,
1742 	 * overriding any fonts set using gtk_widget_modify_font(). The terminal
1743 	 * will immediately attempt to load the desired font, retrieve its
1744 	 * metrics, and attempt to resize itself to keep the same number of rows
1745 	 * and columns.
1746 	 * Params:
1747 	 * fontDesc = The PangoFontDescription of the desired font, or NULL
1748 	 * antialias = Specify if anti aliasing of the fonts is to be used or not.
1749 	 * Since 0.11.11
1750 	 */
1751 	public void setFontFull(PgFontDescription fontDesc, VteTerminalAntiAlias antialias)
1752 	{
1753 		// void vte_terminal_set_font_full (VteTerminal *terminal,  const PangoFontDescription *font_desc,  VteTerminalAntiAlias antialias);
1754 		vte_terminal_set_font_full(vteTerminal, (fontDesc is null) ? null : fontDesc.getPgFontDescriptionStruct(), antialias);
1755 	}
1756 	
1757 	/**
1758 	 * Queries the terminal for information about the fonts which will be
1759 	 * used to draw text in the terminal.
1760 	 * Returns: a PangoFontDescription describing the font the terminal is currently using to render text. [transfer none]
1761 	 */
1762 	public PgFontDescription getFont()
1763 	{
1764 		// const PangoFontDescription * vte_terminal_get_font (VteTerminal *terminal);
1765 		auto p = vte_terminal_get_font(vteTerminal);
1766 		
1767 		if(p is null)
1768 		{
1769 			return null;
1770 		}
1771 		
1772 		return ObjectG.getDObject!(PgFontDescription)(cast(PangoFontDescription*) p);
1773 	}
1774 	
1775 	/**
1776 	 * Warning
1777 	 * vte_terminal_get_using_xft is deprecated and should not be used in newly-written code. 0.20
1778 	 * A VteTerminal can use multiple methods to draw text. This function
1779 	 * allows an application to determine whether or not the current method uses
1780 	 * fontconfig to find fonts. This setting cannot be changed by the caller,
1781 	 * but in practice usually matches the behavior of GTK+ itself.
1782 	 * Returns: TRUE
1783 	 */
1784 	public int getUsingXft()
1785 	{
1786 		// gboolean vte_terminal_get_using_xft (VteTerminal *terminal);
1787 		return vte_terminal_get_using_xft(vteTerminal);
1788 	}
1789 	
1790 	/**
1791 	 * Checks if the terminal currently contains selected text. Note that this
1792 	 * is different from determining if the terminal is the owner of any
1793 	 * GtkClipboard items.
1794 	 * Returns: TRUE if part of the text in the terminal is selected.
1795 	 */
1796 	public int getHasSelection()
1797 	{
1798 		// gboolean vte_terminal_get_has_selection (VteTerminal *terminal);
1799 		return vte_terminal_get_has_selection(vteTerminal);
1800 	}
1801 	
1802 	/**
1803 	 * When the user double-clicks to start selection, the terminal will extend
1804 	 * the selection on word boundaries. It will treat characters included in spec
1805 	 * as parts of words, and all other characters as word separators. Ranges of
1806 	 * characters can be specified by separating them with a hyphen.
1807 	 * As a special case, if spec is NULL or the empty string, the terminal will
1808 	 * treat all graphic non-punctuation non-space characters as word characters.
1809 	 * Params:
1810 	 * spec = a specification
1811 	 */
1812 	public void setWordChars(string spec)
1813 	{
1814 		// void vte_terminal_set_word_chars (VteTerminal *terminal,  const char *spec);
1815 		vte_terminal_set_word_chars(vteTerminal, Str.toStringz(spec));
1816 	}
1817 	
1818 	/**
1819 	 * Checks if a particular character is considered to be part of a word or not,
1820 	 * based on the values last passed to vte_terminal_set_word_chars().
1821 	 * Params:
1822 	 * c = a candidate Unicode code point
1823 	 * Returns: TRUE if the character is considered to be part of a word
1824 	 */
1825 	public int isWordChar(gunichar c)
1826 	{
1827 		// gboolean vte_terminal_is_word_char (VteTerminal *terminal,  gunichar c);
1828 		return vte_terminal_is_word_char(vteTerminal, c);
1829 	}
1830 	
1831 	/**
1832 	 * Modifies the terminal's backspace key binding, which controls what
1833 	 * string or control sequence the terminal sends to its child when the user
1834 	 * presses the backspace key.
1835 	 * Params:
1836 	 * binding = a VteTerminalEraseBinding for the backspace key
1837 	 */
1838 	public void setBackspaceBinding(VteTerminalEraseBinding binding)
1839 	{
1840 		// void vte_terminal_set_backspace_binding (VteTerminal *terminal,  VteTerminalEraseBinding binding);
1841 		vte_terminal_set_backspace_binding(vteTerminal, binding);
1842 	}
1843 	
1844 	/**
1845 	 * Modifies the terminal's delete key binding, which controls what
1846 	 * string or control sequence the terminal sends to its child when the user
1847 	 * presses the delete key.
1848 	 * Params:
1849 	 * binding = a VteTerminalEraseBinding for the delete key
1850 	 */
1851 	public void setDeleteBinding(VteTerminalEraseBinding binding)
1852 	{
1853 		// void vte_terminal_set_delete_binding (VteTerminal *terminal,  VteTerminalEraseBinding binding);
1854 		vte_terminal_set_delete_binding(vteTerminal, binding);
1855 	}
1856 	
1857 	/**
1858 	 * Changes the value of the terminal's mouse autohide setting. When autohiding
1859 	 * is enabled, the mouse cursor will be hidden when the user presses a key and
1860 	 * shown when the user moves the mouse. This setting can be read using
1861 	 * vte_terminal_get_mouse_autohide().
1862 	 * Params:
1863 	 * setting = whether the mouse pointer should autohide
1864 	 */
1865 	public void setMouseAutohide(int setting)
1866 	{
1867 		// void vte_terminal_set_mouse_autohide (VteTerminal *terminal,  gboolean setting);
1868 		vte_terminal_set_mouse_autohide(vteTerminal, setting);
1869 	}
1870 	
1871 	/**
1872 	 * Determines the value of the terminal's mouse autohide setting. When
1873 	 * autohiding is enabled, the mouse cursor will be hidden when the user presses
1874 	 * a key and shown when the user moves the mouse. This setting can be changed
1875 	 * using vte_terminal_set_mouse_autohide().
1876 	 * Returns: TRUE if autohiding is enabled, FALSE if not
1877 	 */
1878 	public int getMouseAutohide()
1879 	{
1880 		// gboolean vte_terminal_get_mouse_autohide (VteTerminal *terminal);
1881 		return vte_terminal_get_mouse_autohide(vteTerminal);
1882 	}
1883 	
1884 	/**
1885 	 * Resets as much of the terminal's internal state as possible, discarding any
1886 	 * unprocessed input data, resetting character attributes, cursor state,
1887 	 * national character set state, status line, terminal modes (insert/delete),
1888 	 * selection state, and encoding.
1889 	 * Params:
1890 	 * clearTabstops = whether to reset tabstops
1891 	 * clearHistory = whether to empty the terminal's scrollback buffer
1892 	 */
1893 	public void reset(int clearTabstops, int clearHistory)
1894 	{
1895 		// void vte_terminal_reset (VteTerminal *terminal,  gboolean clear_tabstops,  gboolean clear_history);
1896 		vte_terminal_reset(vteTerminal, clearTabstops, clearHistory);
1897 	}
1898 	
1899 	/**
1900 	 * Extracts a view of the visible part of the terminal. If is_selected is not
1901 	 * NULL, characters will only be read if is_selected returns TRUE after being
1902 	 * passed the column and row, respectively. A VteCharAttributes structure
1903 	 * is added to attributes for each byte added to the returned string detailing
1904 	 * the character's position, colors, and other characteristics.
1905 	 * Params:
1906 	 * isSelected = a VteSelectionFunc callback. [scope call][allow-none]
1907 	 * userData = user data to be passed to the callback. [closure]
1908 	 * attributes = location for storing text attributes. [out caller-allocates][transfer full][array][element-type Vte.CharAttributes]
1909 	 * Returns: a newly allocated text string, or NULL. [transfer full]
1910 	 */
1911 	public string getText(VteSelectionFunc isSelected, void* userData, ArrayG attributes)
1912 	{
1913 		// char * vte_terminal_get_text (VteTerminal *terminal,  VteSelectionFunc is_selected,  gpointer user_data,  GArray *attributes);
1914 		return Str.toString(vte_terminal_get_text(vteTerminal, isSelected, userData, (attributes is null) ? null : attributes.getArrayGStruct()));
1915 	}
1916 	
1917 	/**
1918 	 * Extracts a view of the visible part of the terminal. If is_selected is not
1919 	 * NULL, characters will only be read if is_selected returns TRUE after being
1920 	 * passed the column and row, respectively. A VteCharAttributes structure
1921 	 * is added to attributes for each byte added to the returned string detailing
1922 	 * the character's position, colors, and other characteristics. This function
1923 	 * differs from vte_terminal_get_text() in that trailing spaces at the end of
1924 	 * lines are included.
1925 	 * Params:
1926 	 * isSelected = a VteSelectionFunc callback. [scope call][allow-none]
1927 	 * userData = user data to be passed to the callback. [closure]
1928 	 * attributes = location for storing text attributes. [out caller-allocates][transfer full][array][element-type Vte.CharAttributes]
1929 	 * Returns: a newly allocated text string, or NULL. [transfer full] Since 0.11.11
1930 	 */
1931 	public string getTextIncludeTrailingSpaces(VteSelectionFunc isSelected, void* userData, ArrayG attributes)
1932 	{
1933 		// char * vte_terminal_get_text_include_trailing_spaces  (VteTerminal *terminal,  VteSelectionFunc is_selected,  gpointer user_data,  GArray *attributes);
1934 		return Str.toString(vte_terminal_get_text_include_trailing_spaces(vteTerminal, isSelected, userData, (attributes is null) ? null : attributes.getArrayGStruct()));
1935 	}
1936 	
1937 	/**
1938 	 * Extracts a view of the visible part of the terminal. If is_selected is not
1939 	 * NULL, characters will only be read if is_selected returns TRUE after being
1940 	 * passed the column and row, respectively. A VteCharAttributes structure
1941 	 * is added to attributes for each byte added to the returned string detailing
1942 	 * the character's position, colors, and other characteristics. The
1943 	 * entire scrollback buffer is scanned, so it is possible to read the entire
1944 	 * contents of the buffer using this function.
1945 	 * Params:
1946 	 * startRow = first row to search for data
1947 	 * startCol = first column to search for data
1948 	 * endRow = last row to search for data
1949 	 * endCol = last column to search for data
1950 	 * isSelected = a VteSelectionFunc callback. [scope call][allow-none]
1951 	 * userData = user data to be passed to the callback. [closure]
1952 	 * attributes = location for storing text attributes. [out caller-allocates][transfer full][array][element-type Vte.CharAttributes]
1953 	 * Returns: a newly allocated text string, or NULL. [transfer full]
1954 	 */
1955 	public string getTextRange(glong startRow, glong startCol, glong endRow, glong endCol, VteSelectionFunc isSelected, void* userData, ArrayG attributes)
1956 	{
1957 		// char * vte_terminal_get_text_range (VteTerminal *terminal,  glong start_row,  glong start_col,  glong end_row,  glong end_col,  VteSelectionFunc is_selected,  gpointer user_data,  GArray *attributes);
1958 		return Str.toString(vte_terminal_get_text_range(vteTerminal, startRow, startCol, endRow, endCol, isSelected, userData, (attributes is null) ? null : attributes.getArrayGStruct()));
1959 	}
1960 	
1961 	/**
1962 	 * Reads the location of the insertion cursor and returns it. The row
1963 	 * coordinate is absolute.
1964 	 * Params:
1965 	 * column = a location to store the column, or NULL. [out][allow-none]
1966 	 * row = a location to store the row, or NULL. [out][allow-none]
1967 	 */
1968 	public void getCursorPosition(out glong column, out glong row)
1969 	{
1970 		// void vte_terminal_get_cursor_position (VteTerminal *terminal,  glong *column,  glong *row);
1971 		vte_terminal_get_cursor_position(vteTerminal, &column, &row);
1972 	}
1973 	
1974 	/**
1975 	 * Clears the list of regular expressions the terminal uses to highlight text
1976 	 * when the user moves the mouse cursor.
1977 	 */
1978 	public void matchClearAll()
1979 	{
1980 		// void vte_terminal_match_clear_all (VteTerminal *terminal);
1981 		vte_terminal_match_clear_all(vteTerminal);
1982 	}
1983 	
1984 	/**
1985 	 * Warning
1986 	 * vte_terminal_match_add has been deprecated since version 0.17.1 and should not be used in newly-written code. Use vte_terminal_match_add_gregex() instead
1987 	 * Adds a regular expression to the list of matching expressions. When the
1988 	 * user moves the mouse cursor over a section of displayed text which matches
1989 	 * this expression, the text will be highlighted.
1990 	 * Params:
1991 	 * match = a regular expression
1992 	 * Returns: an integer associated with this expression
1993 	 */
1994 	public int matchAdd(string match)
1995 	{
1996 		// int vte_terminal_match_add (VteTerminal *terminal,  const char *match);
1997 		return vte_terminal_match_add(vteTerminal, Str.toStringz(match));
1998 	}
1999 	
2000 	/**
2001 	 * Adds the regular expression regex to the list of matching expressions. When the
2002 	 * user moves the mouse cursor over a section of displayed text which matches
2003 	 * this expression, the text will be highlighted.
2004 	 * Params:
2005 	 * regex = a GRegex
2006 	 * flags = the GRegexMatchFlags to use when matching the regex
2007 	 * Returns: an integer associated with this expression Since 0.17.1
2008 	 */
2009 	public int matchAddGregex(Regex regex, GRegexMatchFlags flags)
2010 	{
2011 		// int vte_terminal_match_add_gregex (VteTerminal *terminal,  GRegex *regex,  GRegexMatchFlags flags);
2012 		return vte_terminal_match_add_gregex(vteTerminal, (regex is null) ? null : regex.getRegexStruct(), flags);
2013 	}
2014 	
2015 	/**
2016 	 * Removes the regular expression which is associated with the given tag from
2017 	 * the list of expressions which the terminal will highlight when the user
2018 	 * moves the mouse cursor over matching text.
2019 	 * Params:
2020 	 * tag = the tag of the regex to remove
2021 	 */
2022 	public void matchRemove(int tag)
2023 	{
2024 		// void vte_terminal_match_remove (VteTerminal *terminal,  int tag);
2025 		vte_terminal_match_remove(vteTerminal, tag);
2026 	}
2027 	
2028 	/**
2029 	 * Checks if the text in and around the specified position matches any of the
2030 	 * regular expressions previously set using vte_terminal_match_add(). If a
2031 	 * match exists, the text string is returned and if tag is not NULL, the number
2032 	 * associated with the matched regular expression will be stored in tag.
2033 	 * If more than one regular expression has been set with
2034 	 * vte_terminal_match_add(), then expressions are checked in the order in
2035 	 * which they were added.
2036 	 * Params:
2037 	 * column = the text column
2038 	 * row = the text row
2039 	 * tag = a location to store the tag, or NULL. [out][allow-none]
2040 	 * Returns: a newly allocated string which matches one of the previously set regular expressions. [transfer full]
2041 	 */
2042 	public string matchCheck(glong column, glong row, out int tag)
2043 	{
2044 		// char * vte_terminal_match_check (VteTerminal *terminal,  glong column,  glong row,  int *tag);
2045 		return Str.toString(vte_terminal_match_check(vteTerminal, column, row, &tag));
2046 	}
2047 	
2048 	/**
2049 	 * Sets which cursor the terminal will use if the pointer is over the pattern
2050 	 * specified by tag. The terminal keeps a reference to cursor.
2051 	 * Params:
2052 	 * tag = the tag of the regex which should use the specified cursor
2053 	 * cursor = the GdkCursor which the terminal should use when the pattern is
2054 	 * highlighted, or NULL to use the standard cursor. [allow-none]
2055 	 * Since 0.11
2056 	 */
2057 	public void matchSetCursor(int tag, Cursor cursor)
2058 	{
2059 		// void vte_terminal_match_set_cursor (VteTerminal *terminal,  int tag,  GdkCursor *cursor);
2060 		vte_terminal_match_set_cursor(vteTerminal, tag, (cursor is null) ? null : cursor.getCursorStruct());
2061 	}
2062 	
2063 	/**
2064 	 * Sets which cursor the terminal will use if the pointer is over the pattern
2065 	 * specified by tag.
2066 	 * Params:
2067 	 * tag = the tag of the regex which should use the specified cursor
2068 	 * cursorType = a GdkCursorType
2069 	 * Since 0.11.9
2070 	 */
2071 	public void matchSetCursorType(int tag, GdkCursorType cursorType)
2072 	{
2073 		// void vte_terminal_match_set_cursor_type (VteTerminal *terminal,  int tag,  GdkCursorType cursor_type);
2074 		vte_terminal_match_set_cursor_type(vteTerminal, tag, cursorType);
2075 	}
2076 	
2077 	/**
2078 	 * Sets which cursor the terminal will use if the pointer is over the pattern
2079 	 * specified by tag.
2080 	 * Params:
2081 	 * tag = the tag of the regex which should use the specified cursor
2082 	 * cursorName = the name of the cursor
2083 	 * Since 0.17.1
2084 	 */
2085 	public void matchSetCursorName(int tag, string cursorName)
2086 	{
2087 		// void vte_terminal_match_set_cursor_name (VteTerminal *terminal,  int tag,  const char *cursor_name);
2088 		vte_terminal_match_set_cursor_name(vteTerminal, tag, Str.toStringz(cursorName));
2089 	}
2090 	
2091 	/**
2092 	 * Sets what type of terminal the widget attempts to emulate by scanning for
2093 	 * control sequences defined in the system's termcap file. Unless you
2094 	 * are interested in this feature, always use "xterm".
2095 	 * Params:
2096 	 * emulation = the name of a terminal description, or NULL to use the default. [allow-none]
2097 	 */
2098 	public void setEmulation(string emulation)
2099 	{
2100 		// void vte_terminal_set_emulation (VteTerminal *terminal,  const char *emulation);
2101 		vte_terminal_set_emulation(vteTerminal, Str.toStringz(emulation));
2102 	}
2103 	
2104 	/**
2105 	 * Queries the terminal for its current emulation, as last set by a call to
2106 	 * vte_terminal_set_emulation().
2107 	 * Returns: an interned string containing the name of the terminal type the widget is attempting to emulate
2108 	 */
2109 	public string getEmulation()
2110 	{
2111 		// const char * vte_terminal_get_emulation (VteTerminal *terminal);
2112 		return Str.toString(vte_terminal_get_emulation(vteTerminal));
2113 	}
2114 	
2115 	/**
2116 	 * Queries the terminal for its default emulation, which is attempted if the
2117 	 * terminal type passed to vte_terminal_set_emulation() is NULL.
2118 	 * Returns: an interned string containing the name of the default terminal type the widget attempts to emulate. [transfer none][type utf8] Since 0.11.11
2119 	 */
2120 	public string getDefaultEmulation()
2121 	{
2122 		// const char * vte_terminal_get_default_emulation (VteTerminal *terminal);
2123 		return Str.toString(vte_terminal_get_default_emulation(vteTerminal));
2124 	}
2125 	
2126 	/**
2127 	 * Changes the encoding the terminal will expect data from the child to
2128 	 * be encoded with. For certain terminal types, applications executing in the
2129 	 * terminal can change the encoding. The default encoding is defined by the
2130 	 * application's locale settings.
2131 	 * Params:
2132 	 * codeset = a valid GIConv target, or NULL to use the default encoding. [allow-none]
2133 	 */
2134 	public void setEncoding(string codeset)
2135 	{
2136 		// void vte_terminal_set_encoding (VteTerminal *terminal,  const char *codeset);
2137 		vte_terminal_set_encoding(vteTerminal, Str.toStringz(codeset));
2138 	}
2139 	
2140 	/**
2141 	 * Determines the name of the encoding in which the terminal expects data to be
2142 	 * encoded.
2143 	 * Returns: the current encoding for the terminal. [transfer none]
2144 	 */
2145 	public string getEncoding()
2146 	{
2147 		// const char * vte_terminal_get_encoding (VteTerminal *terminal);
2148 		return Str.toString(vte_terminal_get_encoding(vteTerminal));
2149 	}
2150 	
2151 	/**
2152 	 * Some terminal emulations specify a status line which is separate from the
2153 	 * main display area, and define a means for applications to move the cursor
2154 	 * to the status line and back.
2155 	 * Returns: the current contents of the terminal's status line. For terminals like "xterm", this will usually be the empty string. The string must not be modified or freed by the caller. [transfer none]
2156 	 */
2157 	public string getStatusLine()
2158 	{
2159 		// const char * vte_terminal_get_status_line (VteTerminal *terminal);
2160 		return Str.toString(vte_terminal_get_status_line(vteTerminal));
2161 	}
2162 	
2163 	/**
2164 	 * Warning
2165 	 * vte_terminal_get_padding has been deprecated since version 0.26 and should not be used in newly-written code. Get the "inner-border" style property instead
2166 	 * Determines the amount of additional space the widget is using to pad the
2167 	 * edges of its visible area. This is necessary for cases where characters in
2168 	 * the selected font don't themselves include a padding area and the text
2169 	 * itself would otherwise be contiguous with the window border. Applications
2170 	 * which use the widget's row_count, column_count, char_height, and
2171 	 * char_width fields to set geometry hints using
2172 	 * gtk_window_set_geometry_hints() will need to add this value to the base
2173 	 * size. The values returned in xpad and ypad are the total padding used in
2174 	 * each direction, and do not need to be doubled.
2175 	 * Params:
2176 	 * xpad = address in which to store left/right-edge padding
2177 	 * ypad = address in which to store top/bottom-edge ypadding
2178 	 */
2179 	public void getPadding(out int xpad, out int ypad)
2180 	{
2181 		// void vte_terminal_get_padding (VteTerminal *terminal,  int *xpad,  int *ypad);
2182 		vte_terminal_get_padding(vteTerminal, &xpad, &ypad);
2183 	}
2184 	
2185 	/**
2186 	 * Write contents of the current contents of terminal (including any
2187 	 * scrollback history) to stream according to flags.
2188 	 * If cancellable is not NULL, then the operation can be cancelled by triggering
2189 	 * the cancellable object from another thread. If the operation was cancelled,
2190 	 * the error G_IO_ERROR_CANCELLED will be returned in error.
2191 	 * This is a synchronous operation and will make the widget (and input
2192 	 * processing) during the write operation, which may take a long time
2193 	 * depending on scrollback history and stream availability for writing.
2194 	 * Params:
2195 	 * stream = a GOutputStream to write to
2196 	 * flags = a set of VteTerminalWriteFlags
2197 	 * cancellable = a GCancellable object, or NULL. [allow-none]
2198 	 * Returns: TRUE on success, FALSE if there was an error Since 0.24
2199 	 * Throws: GException on failure.
2200 	 */
2201 	public int writeContents(OutputStream stream, VteTerminalWriteFlags flags, Cancellable cancellable)
2202 	{
2203 		// gboolean vte_terminal_write_contents (VteTerminal *terminal,  GOutputStream *stream,  VteTerminalWriteFlags flags,  GCancellable *cancellable,  GError **error);
2204 		GError* err = null;
2205 		
2206 		auto p = vte_terminal_write_contents(vteTerminal, (stream is null) ? null : stream.getOutputStreamStruct(), flags, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err);
2207 		
2208 		if (err !is null)
2209 		{
2210 			throw new GException( new ErrorG(err) );
2211 		}
2212 		
2213 		return p;
2214 	}
2215 	
2216 	/**
2217 	 * Searches the next string matching the search regex set with
2218 	 * vte_terminal_search_set_gregex().
2219 	 * Returns: TRUE if a match was found Since 0.26
2220 	 */
2221 	public int searchFindNext()
2222 	{
2223 		// gboolean vte_terminal_search_find_next (VteTerminal *terminal);
2224 		return vte_terminal_search_find_next(vteTerminal);
2225 	}
2226 	
2227 	/**
2228 	 * Searches the previous string matching the search regex set with
2229 	 * vte_terminal_search_set_gregex().
2230 	 * Returns: TRUE if a match was found Since 0.26
2231 	 */
2232 	public int searchFindPrevious()
2233 	{
2234 		// gboolean vte_terminal_search_find_previous (VteTerminal *terminal);
2235 		return vte_terminal_search_find_previous(vteTerminal);
2236 	}
2237 	
2238 	/**
2239 	 * Returns: the search GRegex regex set in terminal, or NULL. [transfer none] Since 0.26
2240 	 */
2241 	public Regex searchGetGregex()
2242 	{
2243 		// GRegex * vte_terminal_search_get_gregex (VteTerminal *terminal);
2244 		auto p = vte_terminal_search_get_gregex(vteTerminal);
2245 		
2246 		if(p is null)
2247 		{
2248 			return null;
2249 		}
2250 		
2251 		return ObjectG.getDObject!(Regex)(cast(GRegex*) p);
2252 	}
2253 	
2254 	/**
2255 	 * Returns: whether searching will wrap around Since 0.26
2256 	 */
2257 	public int searchGetWrapAround()
2258 	{
2259 		// gboolean vte_terminal_search_get_wrap_around (VteTerminal *terminal);
2260 		return vte_terminal_search_get_wrap_around(vteTerminal);
2261 	}
2262 	
2263 	/**
2264 	 * Sets the GRegex regex to search for. Unsets the search regex when passed NULL.
2265 	 * Params:
2266 	 * regex = a GRegex, or NULL. [allow-none]
2267 	 * Since 0.26
2268 	 */
2269 	public void searchSetGregex(Regex regex)
2270 	{
2271 		// void vte_terminal_search_set_gregex (VteTerminal *terminal,  GRegex *regex);
2272 		vte_terminal_search_set_gregex(vteTerminal, (regex is null) ? null : regex.getRegexStruct());
2273 	}
2274 	
2275 	/**
2276 	 * Sets whether search should wrap around to the beginning of the
2277 	 * terminal content when reaching its end.
2278 	 * Params:
2279 	 * wrapAround = whether search should wrap
2280 	 * Since 0.26
2281 	 */
2282 	public void searchSetWrapAround(int wrapAround)
2283 	{
2284 		// void vte_terminal_search_set_wrap_around (VteTerminal *terminal,  gboolean wrap_around);
2285 		vte_terminal_search_set_wrap_around(vteTerminal, wrapAround);
2286 	}
2287 	
2288 	/**
2289 	 * Gets the user's shell, or NULL. In the latter case, the
2290 	 * system default (usually "/bin/sh") should be used.
2291 	 * Returns: a newly allocated string with the user's shell, or NULL. [transfer full][type filename] Since 0.28
2292 	 */
2293 	public static string getUserShell()
2294 	{
2295 		// char * vte_get_user_shell (void);
2296 		return Str.toString(vte_get_user_shell());
2297 	}
2298 	
2299 	/**
2300 	 * Warning
2301 	 * vte_terminal_fork_command has been deprecated since version 0.26 and should not be used in newly-written code. Use vte_terminal_fork_command_full()
2302 	 * Starts the specified command under a newly-allocated controlling
2303 	 * pseudo-terminal. The argv and envv lists should be NULL-terminated, and
2304 	 * argv[0] is expected to be the name of the file being run, as it would be if
2305 	 * execve() were being called. TERM is automatically set to reflect the
2306 	 * terminal widget's emulation setting. If lastlog, utmp, or wtmp are TRUE,
2307 	 * logs the session to the specified system log files.
2308 	 * Note that all file descriptors except stdin/stdout/stderr will be closed
2309 	 * before calling exec() in the child.
2310 	 * Params:
2311 	 * command = the name of a binary to run, or NULL to spawn the user's shell. [allow-none][type filename]
2312 	 * argv = the argument list to be passed to command, or NULL. [allow-none][array zero-terminated=1][element-type filename]
2313 	 * envv = a list of environment variables to be added to the environment before
2314 	 * starting command, or NULL. [allow-none][array zero-terminated=1][element-type filename]
2315 	 * workingDirectory = the name of a directory the command should start in, or NULL. [allow-none][type filename]
2316 	 * lastlog = TRUE if the session should be logged to the lastlog
2317 	 * utmp = TRUE if the session should be logged to the utmp/utmpx log
2318 	 * wtmp = TRUE if the session should be logged to the wtmp/wtmpx log
2319 	 * Returns: the PID of the new process, or -1 on failure
2320 	 */
2321 	public pid_t forkCommand(string command, string[] argv, string[] envv, string workingDirectory, int lastlog, int utmp, int wtmp)
2322 	{
2323 		// pid_t vte_terminal_fork_command (VteTerminal *terminal,  const char *command,  char **argv,  char **envv,  const char *working_directory,  gboolean lastlog,  gboolean utmp,  gboolean wtmp);
2324 		return vte_terminal_fork_command(vteTerminal, Str.toStringz(command), Str.toStringzArray(argv), Str.toStringzArray(envv), Str.toStringz(workingDirectory), lastlog, utmp, wtmp);
2325 	}
2326 	
2327 	/**
2328 	 * Starts the specified command under a newly-allocated controlling
2329 	 * pseudo-terminal. The argv and envv lists should be NULL-terminated.
2330 	 * The "TERM" environment variable is automatically set to reflect the
2331 	 * terminal widget's emulation setting.
2332 	 * pty_flags controls logging the session to the specified system log files.
2333 	 * Note that G_SPAWN_DO_NOT_REAP_CHILD will always be added to spawn_flags.
2334 	 * Note that unless spawn_flags contains G_SPAWN_LEAVE_DESCRIPTORS_OPEN, all file
2335 	 * descriptors except stdin/stdout/stderr will be closed before calling exec()
2336 	 * in the child.
2337 	 * See vte_pty_new(), g_spawn_async() and vte_terminal_watch_child() for more information.
2338 	 * Params:
2339 	 * ptyFlags = flags from VtePtyFlags
2340 	 * workingDirectory = the name of a directory the command should start
2341 	 * in, or NULL to use the current working directory. [allow-none]
2342 	 * argv = child's argument vector. [array zero-terminated=1][element-type filename]
2343 	 * envv = a list of environment
2344 	 * variables to be added to the environment before starting the process, or NULL. [allow-none][array zero-terminated=1][element-type filename]
2345 	 * spawnFlags = flags from GSpawnFlags
2346 	 * childSetup = an extra child setup function to run in the child just before exec(), or NULL. [allow-none][scope call]
2347 	 * childSetupData = user data for child_setup
2348 	 * childPid = a location to store the child PID, or NULL. [out][allow-none][transfer full]
2349 	 * Returns: TRUE on success, or FALSE on error with error filled in Since 0.26
2350 	 * Throws: GException on failure.
2351 	 */
2352 	public int forkCommandFull(VtePtyFlags ptyFlags, string workingDirectory, string[] argv, string[] envv, GSpawnFlags spawnFlags, GSpawnChildSetupFunc childSetup, void* childSetupData, out GPid childPid)
2353 	{
2354 		// gboolean vte_terminal_fork_command_full (VteTerminal *terminal,  VtePtyFlags pty_flags,  const char *working_directory,  char **argv,  char **envv,  GSpawnFlags spawn_flags,  GSpawnChildSetupFunc child_setup,  gpointer child_setup_data,  GPid *child_pid,  GError **error);
2355 		GError* err = null;
2356 		
2357 		auto p = vte_terminal_fork_command_full(vteTerminal, ptyFlags, Str.toStringz(workingDirectory), Str.toStringzArray(argv), Str.toStringzArray(envv), spawnFlags, childSetup, childSetupData, &childPid, &err);
2358 		
2359 		if (err !is null)
2360 		{
2361 			throw new GException( new ErrorG(err) );
2362 		}
2363 		
2364 		return p;
2365 	}
2366 	
2367 	/**
2368 	 * Warning
2369 	 * vte_terminal_forkpty has been deprecated since version 0.26 and should not be used in newly-written code. Use VtePty and fork() instead
2370 	 * Starts a new child process under a newly-allocated controlling
2371 	 * pseudo-terminal. TERM is automatically set to reflect the terminal widget's
2372 	 * emulation setting. If lastlog, utmp, or wtmp are TRUE, logs the session
2373 	 * to the specified system log files.
2374 	 * Note that all file descriptors except stdin/stdout/stderr will be closed
2375 	 * in the child.
2376 	 * Note that envv and working_directory are silently ignored.
2377 	 * Params:
2378 	 * envv = a list of environment variables to be added to the environment before
2379 	 * starting returning in the child process, or NULL
2380 	 * workingDirectory = the name of a directory the child process should change to, or
2381 	 * NULL
2382 	 * lastlog = TRUE if the session should be logged to the lastlog
2383 	 * utmp = TRUE if the session should be logged to the utmp/utmpx log
2384 	 * wtmp = TRUE if the session should be logged to the wtmp/wtmpx log
2385 	 * Returns: the ID of the new process in the parent, 0 in the child, and -1 if there was an error Since 0.11.11
2386 	 */
2387 	public pid_t forkpty(string[] envv, string workingDirectory, int lastlog, int utmp, int wtmp)
2388 	{
2389 		// pid_t vte_terminal_forkpty (VteTerminal *terminal,  char **envv,  const char *working_directory,  gboolean lastlog,  gboolean utmp,  gboolean wtmp);
2390 		return vte_terminal_forkpty(vteTerminal, Str.toStringzArray(envv), Str.toStringz(workingDirectory), lastlog, utmp, wtmp);
2391 	}
2392 	
2393 	/**
2394 	 * Warning
2395 	 * vte_terminal_get_pty has been deprecated since version 0.26 and should not be used in newly-written code. Use vte_terminal_get_pty_object() and vte_pty_get_fd()
2396 	 * Returns the file descriptor of the master end of terminal's PTY.
2397 	 * Returns: the file descriptor, or -1 if the terminal has no PTY. Since 0.20
2398 	 */
2399 	public int getPty()
2400 	{
2401 		// int vte_terminal_get_pty (VteTerminal *terminal);
2402 		return vte_terminal_get_pty(vteTerminal);
2403 	}
2404 	
2405 	/**
2406 	 * Returns the VtePty of terminal.
2407 	 * Returns: a VtePty, or NULL. [transfer none] Since 0.26
2408 	 */
2409 	public Pty getPtyObject()
2410 	{
2411 		// VtePty * vte_terminal_get_pty_object (VteTerminal *terminal);
2412 		auto p = vte_terminal_get_pty_object(vteTerminal);
2413 		
2414 		if(p is null)
2415 		{
2416 			return null;
2417 		}
2418 		
2419 		return ObjectG.getDObject!(Pty)(cast(VtePty*) p);
2420 	}
2421 	
2422 	/**
2423 	 * Creates a new VtePty, and sets the emulation property
2424 	 * from "emulation".
2425 	 * See vte_pty_new() for more information.
2426 	 * Params:
2427 	 * flags = flags from VtePtyFlags
2428 	 * Returns: a new VtePty. [transfer full] Since 0.26
2429 	 * Throws: GException on failure.
2430 	 */
2431 	public Pty ptyNew(VtePtyFlags flags)
2432 	{
2433 		// VtePty * vte_terminal_pty_new (VteTerminal *terminal,  VtePtyFlags flags,  GError **error);
2434 		GError* err = null;
2435 		
2436 		auto p = vte_terminal_pty_new(vteTerminal, flags, &err);
2437 		
2438 		if (err !is null)
2439 		{
2440 			throw new GException( new ErrorG(err) );
2441 		}
2442 		
2443 		
2444 		if(p is null)
2445 		{
2446 			return null;
2447 		}
2448 		
2449 		return ObjectG.getDObject!(Pty)(cast(VtePty*) p);
2450 	}
2451 	
2452 	/**
2453 	 * Warning
2454 	 * vte_terminal_set_pty has been deprecated since version 0.26 and should not be used in newly-written code. Use vte_pty_new_foreign() and vte_terminal_set_pty_object()
2455 	 * Attach an existing PTY master side to the terminal widget. Use
2456 	 * instead of vte_terminal_fork_command() or vte_terminal_forkpty().
2457 	 * Params:
2458 	 * ptyMaster = a file descriptor of the master end of a PTY, or -1
2459 	 * Since 0.12.1
2460 	 */
2461 	public void setPty(int ptyMaster)
2462 	{
2463 		// void vte_terminal_set_pty (VteTerminal *terminal,  int pty_master);
2464 		vte_terminal_set_pty(vteTerminal, ptyMaster);
2465 	}
2466 	
2467 	/**
2468 	 * Sets pty as the PTY to use in terminal.
2469 	 * Use NULL to unset the PTY.
2470 	 * Params:
2471 	 * pty = a VtePty, or NULL. [allow-none]
2472 	 * Since 0.26.
2473 	 */
2474 	public void setPtyObject(Pty pty)
2475 	{
2476 		// void vte_terminal_set_pty_object (VteTerminal *terminal,  VtePty *pty);
2477 		vte_terminal_set_pty_object(vteTerminal, (pty is null) ? null : pty.getPtyStruct());
2478 	}
2479 	
2480 	/**
2481 	 * Watches child_pid. When the process exists, the "child-exited"
2482 	 * signal will be called. Use vte_terminal_get_child_exit_status() to
2483 	 * retrieve the child's exit status.
2484 	 * Prior to calling this function, a VtePty must have been set in terminal
2485 	 * using vte_terminal_set_pty_object().
2486 	 * When the child exits, the terminal's VtePty will be set to NULL.
2487 	 * Note: g_child_watch_add() or g_child_watch_add_full() must not have
2488 	 * been called for child_pid, nor a GSource for it been created with
2489 	 * g_child_watch_source_new().
2490 	 * Note: when using the g_spawn_async() family of functions,
2491 	 * the G_SPAWN_DO_NOT_REAP_CHILD flag MUST have been passed.
2492 	 * Params:
2493 	 * childPid = a GPid
2494 	 * Since 0.26
2495 	 */
2496 	public void watchChild(GPid childPid)
2497 	{
2498 		// void vte_terminal_watch_child (VteTerminal *terminal,  GPid child_pid);
2499 		vte_terminal_watch_child(vteTerminal, childPid);
2500 	}
2501 	
2502 	/**
2503 	 * Warning
2504 	 * vte_terminal_get_adjustment has been deprecated since version 0.28 and should not be used in newly-written code. Use gtk_scrollable_get_vadjustment() instead
2505 	 * An accessor function provided for the benefit of language bindings.
2506 	 * Returns: the contents of terminal's adjustment field. [transfer none]
2507 	 */
2508 	public Adjustment getAdjustment()
2509 	{
2510 		// GtkAdjustment * vte_terminal_get_adjustment (VteTerminal *terminal);
2511 		auto p = vte_terminal_get_adjustment(vteTerminal);
2512 		
2513 		if(p is null)
2514 		{
2515 			return null;
2516 		}
2517 		
2518 		return ObjectG.getDObject!(Adjustment)(cast(GtkAdjustment*) p);
2519 	}
2520 	
2521 	/**
2522 	 * Warning
2523 	 * vte_terminal_get_char_ascent is deprecated and should not be used in newly-written code. 0.20
2524 	 * An accessor function provided for the benefit of language bindings.
2525 	 * Returns: the contents of terminal's char_ascent field
2526 	 */
2527 	public glong getCharAscent()
2528 	{
2529 		// glong vte_terminal_get_char_ascent (VteTerminal *terminal);
2530 		return vte_terminal_get_char_ascent(vteTerminal);
2531 	}
2532 	
2533 	/**
2534 	 * Warning
2535 	 * vte_terminal_get_char_descent is deprecated and should not be used in newly-written code. 0.20
2536 	 * An accessor function provided for the benefit of language bindings.
2537 	 * Returns: the contents of terminal's char_descent field
2538 	 */
2539 	public glong getCharDescent()
2540 	{
2541 		// glong vte_terminal_get_char_descent (VteTerminal *terminal);
2542 		return vte_terminal_get_char_descent(vteTerminal);
2543 	}
2544 	
2545 	/**
2546 	 * Returns: the height of a character cell
2547 	 */
2548 	public glong getCharHeight()
2549 	{
2550 		// glong vte_terminal_get_char_height (VteTerminal *terminal);
2551 		return vte_terminal_get_char_height(vteTerminal);
2552 	}
2553 	
2554 	/**
2555 	 * Returns: the width of a character cell
2556 	 */
2557 	public glong getCharWidth()
2558 	{
2559 		// glong vte_terminal_get_char_width (VteTerminal *terminal);
2560 		return vte_terminal_get_char_width(vteTerminal);
2561 	}
2562 	
2563 	/**
2564 	 * Returns: the number of columns
2565 	 */
2566 	public glong getColumnCount()
2567 	{
2568 		// glong vte_terminal_get_column_count (VteTerminal *terminal);
2569 		return vte_terminal_get_column_count(vteTerminal);
2570 	}
2571 	
2572 	/**
2573 	 * Returns: the icon title. [transfer none]
2574 	 */
2575 	public string getIconTitle()
2576 	{
2577 		// const char * vte_terminal_get_icon_title (VteTerminal *terminal);
2578 		return Str.toString(vte_terminal_get_icon_title(vteTerminal));
2579 	}
2580 	
2581 	/**
2582 	 * Returns: the number of rows
2583 	 */
2584 	public glong getRowCount()
2585 	{
2586 		// glong vte_terminal_get_row_count (VteTerminal *terminal);
2587 		return vte_terminal_get_row_count(vteTerminal);
2588 	}
2589 	
2590 	/**
2591 	 * Returns: the window title. [transfer none]
2592 	 */
2593 	public string getWindowTitle()
2594 	{
2595 		// const char * vte_terminal_get_window_title (VteTerminal *terminal);
2596 		return Str.toString(vte_terminal_get_window_title(vteTerminal));
2597 	}
2598 	
2599 	/**
2600 	 * Returns: the URI of the current directory of the process running in the terminal, or NULL. [transfer none] Since 0.34
2601 	 */
2602 	public string getCurrentDirectoryUri()
2603 	{
2604 		// const char * vte_terminal_get_current_directory_uri  (VteTerminal *terminal);
2605 		return Str.toString(vte_terminal_get_current_directory_uri(vteTerminal));
2606 	}
2607 	
2608 	/**
2609 	 * Returns: the URI of the current file the process running in the terminal is operating on, or NULL if not set. [transfer none] Since 0.34
2610 	 */
2611 	public string getCurrentFileUri()
2612 	{
2613 		// const char * vte_terminal_get_current_file_uri (VteTerminal *terminal);
2614 		return Str.toString(vte_terminal_get_current_file_uri(vteTerminal));
2615 	}
2616 }