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  = GAppInfo.html
27  * outPack = gio
28  * outFile = AppInfoT
29  * strct   = GAppInfo
30  * realStrct=
31  * ctorStrct=
32  * clss    = AppInfoT
33  * interf  = AppInfoIF
34  * class Code: No
35  * interface Code: No
36  * template for:
37  * 	- TStruct
38  * extend  = 
39  * implements:
40  * prefixes:
41  * 	- g_app_info_
42  * omit structs:
43  * omit prefixes:
44  * 	- g_app_launch_context_
45  * omit code:
46  * omit signals:
47  * imports:
48  * 	- glib.Str
49  * 	- glib.ErrorG
50  * 	- glib.GException
51  * 	- glib.ListG
52  * 	- gio.AppInfoIF
53  * 	- gio.AppLaunchContext
54  * 	- gio.Icon
55  * 	- gio.IconIF
56  * structWrap:
57  * 	- GAppInfo* -> AppInfoIF
58  * 	- GAppLaunchContext* -> AppLaunchContext
59  * 	- GIcon* -> IconIF
60  * 	- GList* -> ListG
61  * module aliases:
62  * local aliases:
63  * overrides:
64  */
65 
66 module gio.AppInfoT;
67 
68 public  import gtkc.giotypes;
69 
70 public import gtkc.gio;
71 public import glib.ConstructionException;
72 public import gobject.ObjectG;
73 
74 public import gobject.Signals;
75 public  import gtkc.gdktypes;
76 
77 public import glib.Str;
78 public import glib.ErrorG;
79 public import glib.GException;
80 public import glib.ListG;
81 public import gio.AppInfoIF;
82 public import gio.AppLaunchContext;
83 public import gio.Icon;
84 public import gio.IconIF;
85 
86 
87 
88 
89 /**
90  * GAppInfo and GAppLaunchContext are used for describing and launching
91  * applications installed on the system.
92  *
93  * As of GLib 2.20, URIs will always be converted to POSIX paths
94  * (using g_file_get_path()) when using g_app_info_launch() even if
95  * the application requested an URI and not a POSIX path. For example
96  * for an desktop-file based application with Exec key totem
97  * %U and a single URI,
98  * sftp://foo/file.avi, then
99  * /home/user/.gvfs/sftp on foo/file.avi will be
100  * passed. This will only work if a set of suitable GIO extensions
101  * (such as gvfs 2.26 compiled with FUSE support), is available and
102  * operational; if this is not the case, the URI will be passed
103  * unmodified to the application. Some URIs, such as
104  * mailto:, of course cannot be mapped to a POSIX
105  * path (in gvfs there's no FUSE mount for it); such URIs will be
106  * passed unmodified to the application.
107  *
108  * Specifically for gvfs 2.26 and later, the POSIX URI will be mapped
109  * back to the GIO URI in the GFile constructors (since gvfs
110  * implements the GVfs extension point). As such, if the application
111  * needs to examine the URI, it needs to use g_file_get_uri() or
112  * similar on GFile. In other words, an application cannot assume
113  * that the URI passed to e.g. g_file_new_for_commandline_arg() is
114  * equal to the result of g_file_get_uri(). The following snippet
115  * illustrates this:
116  *
117  * GFile *f;
118  * char *uri;
119  *
120  * file = g_file_new_for_commandline_arg (uri_from_commandline);
121  *
122  * uri = g_file_get_uri (file);
123  * strcmp (uri, uri_from_commandline) == 0; // FALSE
124  * g_free (uri);
125  *
126  * if (g_file_has_uri_scheme (file, "cdda"))
127  *  {
128 	 *  // do something special with uri
129  *  }
130  * g_object_unref (file);
131  *
132  * This code will work when both cdda://sr0/Track
133  * 1.wav and /home/user/.gvfs/cdda on sr0/Track
134  * 1.wav is passed to the application. It should be noted
135  * that it's generally not safe for applications to rely on the format
136  * of a particular URIs. Different launcher applications (e.g. file
137  * managers) may have different ideas of what a given URI means.
138  */
139 public template AppInfoT(TStruct)
140 {
141 	
142 	/** the main Gtk struct */
143 	protected GAppInfo* gAppInfo;
144 	
145 	
146 	public GAppInfo* getAppInfoTStruct()
147 	{
148 		return cast(GAppInfo*)getStruct();
149 	}
150 	
151 	
152 	/**
153 	 */
154 	int[string] connectedSignals;
155 	
156 	void delegate(string, AppInfoIF)[] _onLaunchFailedListeners;
157 	void delegate(string, AppInfoIF)[] onLaunchFailedListeners()
158 	{
159 		return  _onLaunchFailedListeners;
160 	}
161 	/**
162 	 */
163 	void addOnLaunchFailed(void delegate(string, AppInfoIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
164 	{
165 		if ( !("launch-failed" in connectedSignals) )
166 		{
167 			Signals.connectData(
168 			getStruct(),
169 			"launch-failed",
170 			cast(GCallback)&callBackLaunchFailed,
171 			cast(void*)cast(AppInfoIF)this,
172 			null,
173 			connectFlags);
174 			connectedSignals["launch-failed"] = 1;
175 		}
176 		_onLaunchFailedListeners ~= dlg;
177 	}
178 	extern(C) static void callBackLaunchFailed(GAppLaunchContext* gapplaunchcontextStruct, gchar* arg1, AppInfoIF _appInfoIF)
179 	{
180 		foreach ( void delegate(string, AppInfoIF) dlg ; _appInfoIF.onLaunchFailedListeners )
181 		{
182 			dlg(Str.toString(arg1), _appInfoIF);
183 		}
184 	}
185 	
186 	void delegate(AppInfoIF, GVariant*, AppInfoIF)[] _onLaunchedListeners;
187 	void delegate(AppInfoIF, GVariant*, AppInfoIF)[] onLaunchedListeners()
188 	{
189 		return  _onLaunchedListeners;
190 	}
191 	/**
192 	 */
193 	void addOnLaunched(void delegate(AppInfoIF, GVariant*, AppInfoIF) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0)
194 	{
195 		if ( !("launched" in connectedSignals) )
196 		{
197 			Signals.connectData(
198 			getStruct(),
199 			"launched",
200 			cast(GCallback)&callBackLaunched,
201 			cast(void*)cast(AppInfoIF)this,
202 			null,
203 			connectFlags);
204 			connectedSignals["launched"] = 1;
205 		}
206 		_onLaunchedListeners ~= dlg;
207 	}
208 	extern(C) static void callBackLaunched(GAppLaunchContext* gapplaunchcontextStruct, GAppInfo* arg1, GVariant* arg2, AppInfoIF _appInfoIF)
209 	{
210 		foreach ( void delegate(AppInfoIF, GVariant*, AppInfoIF) dlg ; _appInfoIF.onLaunchedListeners )
211 		{
212 			dlg(ObjectG.getDObject!(AppInfo, AppInfoIF)(arg1), arg2, _appInfoIF);
213 		}
214 	}
215 	
216 	
217 	/**
218 	 * Creates a new GAppInfo from the given information.
219 	 * Note that for commandline, the quoting rules of the Exec key of the
220 	 * freedesktop.org Desktop
221 	 * Entry Specification are applied. For example, if the commandline contains
222 	 * percent-encoded URIs, the percent-character must be doubled in order to prevent it from
223 	 * being swallowed by Exec key unquoting. See the specification for exact quoting rules.
224 	 * Params:
225 	 * commandline = the commandline to use
226 	 * applicationName = the application name, or NULL to use commandline. [allow-none]
227 	 * flags = flags that can specify details of the created GAppInfo
228 	 * Returns: new GAppInfo for given command. [transfer full]
229 	 * Throws: GException on failure.
230 	 */
231 	public static AppInfoIF createFromCommandline(string commandline, string applicationName, GAppInfoCreateFlags flags)
232 	{
233 		// GAppInfo * g_app_info_create_from_commandline (const char *commandline,  const char *application_name,  GAppInfoCreateFlags flags,  GError **error);
234 		GError* err = null;
235 		
236 		auto p = g_app_info_create_from_commandline(Str.toStringz(commandline), Str.toStringz(applicationName), flags, &err);
237 		
238 		if (err !is null)
239 		{
240 			throw new GException( new ErrorG(err) );
241 		}
242 		
243 		
244 		if(p is null)
245 		{
246 			return null;
247 		}
248 		
249 		return ObjectG.getDObject!(AppInfo, AppInfoIF)(cast(GAppInfo*) p);
250 	}
251 	
252 	/**
253 	 * Creates a duplicate of a GAppInfo.
254 	 * Returns: a duplicate of appinfo. [transfer full]
255 	 */
256 	public AppInfoIF dup()
257 	{
258 		// GAppInfo * g_app_info_dup (GAppInfo *appinfo);
259 		auto p = g_app_info_dup(getAppInfoTStruct());
260 		
261 		if(p is null)
262 		{
263 			return null;
264 		}
265 		
266 		return ObjectG.getDObject!(AppInfo, AppInfoIF)(cast(GAppInfo*) p);
267 	}
268 	
269 	/**
270 	 * Checks if two GAppInfos are equal.
271 	 * Params:
272 	 * appinfo2 = the second GAppInfo.
273 	 * Returns: TRUE if appinfo1 is equal to appinfo2. FALSE otherwise.
274 	 */
275 	public int equal(AppInfoIF appinfo2)
276 	{
277 		// gboolean g_app_info_equal (GAppInfo *appinfo1,  GAppInfo *appinfo2);
278 		return g_app_info_equal(getAppInfoTStruct(), (appinfo2 is null) ? null : appinfo2.getAppInfoTStruct());
279 	}
280 	
281 	/**
282 	 * Gets the ID of an application. An id is a string that
283 	 * identifies the application. The exact format of the id is
284 	 * platform dependent. For instance, on Unix this is the
285 	 * desktop file id from the xdg menu specification.
286 	 * Note that the returned ID may be NULL, depending on how
287 	 * the appinfo has been constructed.
288 	 * Returns: a string containing the application's ID.
289 	 */
290 	public string getId()
291 	{
292 		// const char * g_app_info_get_id (GAppInfo *appinfo);
293 		return Str.toString(g_app_info_get_id(getAppInfoTStruct()));
294 	}
295 	
296 	/**
297 	 * Gets the installed name of the application.
298 	 * Returns: the name of the application for appinfo.
299 	 */
300 	public string getName()
301 	{
302 		// const char * g_app_info_get_name (GAppInfo *appinfo);
303 		return Str.toString(g_app_info_get_name(getAppInfoTStruct()));
304 	}
305 	
306 	/**
307 	 * Gets the display name of the application. The display name is often more
308 	 * descriptive to the user than the name itself.
309 	 * Since 2.24
310 	 * Returns: the display name of the application for appinfo, or the name if no display name is available.
311 	 */
312 	public string getDisplayName()
313 	{
314 		// const char * g_app_info_get_display_name (GAppInfo *appinfo);
315 		return Str.toString(g_app_info_get_display_name(getAppInfoTStruct()));
316 	}
317 	
318 	/**
319 	 * Gets a human-readable description of an installed application.
320 	 * Returns: a string containing a description of the application appinfo, or NULL if none.
321 	 */
322 	public string getDescription()
323 	{
324 		// const char * g_app_info_get_description (GAppInfo *appinfo);
325 		return Str.toString(g_app_info_get_description(getAppInfoTStruct()));
326 	}
327 	
328 	/**
329 	 * Gets the executable's name for the installed application.
330 	 * Returns: a string containing the appinfo's application binaries name
331 	 */
332 	public string getExecutable()
333 	{
334 		// const char * g_app_info_get_executable (GAppInfo *appinfo);
335 		return Str.toString(g_app_info_get_executable(getAppInfoTStruct()));
336 	}
337 	
338 	/**
339 	 * Gets the commandline with which the application will be
340 	 * started.
341 	 * Since 2.20
342 	 * Returns: a string containing the appinfo's commandline, or NULL if this information is not available
343 	 */
344 	public string getCommandline()
345 	{
346 		// const char * g_app_info_get_commandline (GAppInfo *appinfo);
347 		return Str.toString(g_app_info_get_commandline(getAppInfoTStruct()));
348 	}
349 	
350 	/**
351 	 * Gets the icon for the application.
352 	 * Returns: the default GIcon for appinfo or NULL if there is no default icon. [transfer none]
353 	 */
354 	public IconIF getIcon()
355 	{
356 		// GIcon * g_app_info_get_icon (GAppInfo *appinfo);
357 		auto p = g_app_info_get_icon(getAppInfoTStruct());
358 		
359 		if(p is null)
360 		{
361 			return null;
362 		}
363 		
364 		return ObjectG.getDObject!(Icon, IconIF)(cast(GIcon*) p);
365 	}
366 	
367 	/**
368 	 * Launches the application. Passes files to the launched application
369 	 * as arguments, using the optional launch_context to get information
370 	 * about the details of the launcher (like what screen it is on).
371 	 * On error, error will be set accordingly.
372 	 * To launch the application without arguments pass a NULL files list.
373 	 * Note that even if the launch is successful the application launched
374 	 * can fail to start if it runs into problems during startup. There is
375 	 * no way to detect this.
376 	 * Some URIs can be changed when passed through a GFile (for instance
377 	 * unsupported URIs with strange formats like mailto:), so if you have
378 	 * a textual URI you want to pass in as argument, consider using
379 	 * g_app_info_launch_uris() instead.
380 	 * The launched application inherits the environment of the launching
381 	 * process, but it can be modified with g_app_launch_context_setenv() and
382 	 * g_app_launch_context_unsetenv().
383 	 * On UNIX, this function sets the GIO_LAUNCHED_DESKTOP_FILE
384 	 * environment variable with the path of the launched desktop file and
385 	 * GIO_LAUNCHED_DESKTOP_FILE_PID to the process
386 	 * id of the launched process. This can be used to ignore
387 	 * GIO_LAUNCHED_DESKTOP_FILE, should it be inherited
388 	 * by further processes. The DISPLAY and
389 	 * DESKTOP_STARTUP_ID environment variables are also
390 	 * set, based on information provided in launch_context.
391 	 * Params:
392 	 * files = a GList of GFile objects. [allow-none][element-type GFile]
393 	 * launchContext = a GAppLaunchContext or NULL. [allow-none]
394 	 * Returns: TRUE on successful launch, FALSE otherwise.
395 	 * Throws: GException on failure.
396 	 */
397 	public int launch(ListG files, AppLaunchContext launchContext)
398 	{
399 		// gboolean g_app_info_launch (GAppInfo *appinfo,  GList *files,  GAppLaunchContext *launch_context,  GError **error);
400 		GError* err = null;
401 		
402 		auto p = g_app_info_launch(getAppInfoTStruct(), (files is null) ? null : files.getListGStruct(), (launchContext is null) ? null : launchContext.getAppLaunchContextStruct(), &err);
403 		
404 		if (err !is null)
405 		{
406 			throw new GException( new ErrorG(err) );
407 		}
408 		
409 		return p;
410 	}
411 	
412 	/**
413 	 * Checks if the application accepts files as arguments.
414 	 * Returns: TRUE if the appinfo supports files.
415 	 */
416 	public int supportsFiles()
417 	{
418 		// gboolean g_app_info_supports_files (GAppInfo *appinfo);
419 		return g_app_info_supports_files(getAppInfoTStruct());
420 	}
421 	
422 	/**
423 	 * Checks if the application supports reading files and directories from URIs.
424 	 * Returns: TRUE if the appinfo supports URIs.
425 	 */
426 	public int supportsUris()
427 	{
428 		// gboolean g_app_info_supports_uris (GAppInfo *appinfo);
429 		return g_app_info_supports_uris(getAppInfoTStruct());
430 	}
431 	
432 	/**
433 	 * Launches the application. This passes the uris to the launched application
434 	 * as arguments, using the optional launch_context to get information
435 	 * about the details of the launcher (like what screen it is on).
436 	 * On error, error will be set accordingly.
437 	 * To launch the application without arguments pass a NULL uris list.
438 	 * Note that even if the launch is successful the application launched
439 	 * can fail to start if it runs into problems during startup. There is
440 	 * no way to detect this.
441 	 * Params:
442 	 * uris = a GList containing URIs to launch. [allow-none][element-type utf8]
443 	 * launchContext = a GAppLaunchContext or NULL. [allow-none]
444 	 * Returns: TRUE on successful launch, FALSE otherwise.
445 	 * Throws: GException on failure.
446 	 */
447 	public int launchUris(ListG uris, AppLaunchContext launchContext)
448 	{
449 		// gboolean g_app_info_launch_uris (GAppInfo *appinfo,  GList *uris,  GAppLaunchContext *launch_context,  GError **error);
450 		GError* err = null;
451 		
452 		auto p = g_app_info_launch_uris(getAppInfoTStruct(), (uris is null) ? null : uris.getListGStruct(), (launchContext is null) ? null : launchContext.getAppLaunchContextStruct(), &err);
453 		
454 		if (err !is null)
455 		{
456 			throw new GException( new ErrorG(err) );
457 		}
458 		
459 		return p;
460 	}
461 	
462 	/**
463 	 * Checks if the application info should be shown in menus that
464 	 * list available applications.
465 	 * Returns: TRUE if the appinfo should be shown, FALSE otherwise.
466 	 */
467 	public int shouldShow()
468 	{
469 		// gboolean g_app_info_should_show (GAppInfo *appinfo);
470 		return g_app_info_should_show(getAppInfoTStruct());
471 	}
472 	
473 	/**
474 	 * Obtains the information whether the GAppInfo can be deleted.
475 	 * See g_app_info_delete().
476 	 * Since 2.20
477 	 * Returns: TRUE if appinfo can be deleted
478 	 */
479 	public int canDelete()
480 	{
481 		// gboolean g_app_info_can_delete (GAppInfo *appinfo);
482 		return g_app_info_can_delete(getAppInfoTStruct());
483 	}
484 	
485 	/**
486 	 * Tries to delete a GAppInfo.
487 	 * On some platforms, there may be a difference between user-defined
488 	 * GAppInfos which can be deleted, and system-wide ones which
489 	 * cannot. See g_app_info_can_delete().
490 	 * Virtual: do_delete
491 	 * Since 2.20
492 	 * Returns: TRUE if appinfo has been deleted
493 	 */
494 	public int delet()
495 	{
496 		// gboolean g_app_info_delete (GAppInfo *appinfo);
497 		return g_app_info_delete(getAppInfoTStruct());
498 	}
499 	
500 	/**
501 	 * Removes all changes to the type associations done by
502 	 * g_app_info_set_as_default_for_type(),
503 	 * g_app_info_set_as_default_for_extension(),
504 	 * g_app_info_add_supports_type() or
505 	 * g_app_info_remove_supports_type().
506 	 * Since 2.20
507 	 * Params:
508 	 * contentType = a content type
509 	 */
510 	public static void resetTypeAssociations(string contentType)
511 	{
512 		// void g_app_info_reset_type_associations (const char *content_type);
513 		g_app_info_reset_type_associations(Str.toStringz(contentType));
514 	}
515 	
516 	/**
517 	 * Sets the application as the default handler for a given type.
518 	 * Params:
519 	 * contentType = the content type.
520 	 * Returns: TRUE on success, FALSE on error.
521 	 * Throws: GException on failure.
522 	 */
523 	public int setAsDefaultForType(string contentType)
524 	{
525 		// gboolean g_app_info_set_as_default_for_type (GAppInfo *appinfo,  const char *content_type,  GError **error);
526 		GError* err = null;
527 		
528 		auto p = g_app_info_set_as_default_for_type(getAppInfoTStruct(), Str.toStringz(contentType), &err);
529 		
530 		if (err !is null)
531 		{
532 			throw new GException( new ErrorG(err) );
533 		}
534 		
535 		return p;
536 	}
537 	
538 	/**
539 	 * Sets the application as the default handler for the given file extension.
540 	 * Params:
541 	 * extension = a string containing the file extension (without the dot).
542 	 * Returns: TRUE on success, FALSE on error.
543 	 * Throws: GException on failure.
544 	 */
545 	public int setAsDefaultForExtension(string extension)
546 	{
547 		// gboolean g_app_info_set_as_default_for_extension  (GAppInfo *appinfo,  const char *extension,  GError **error);
548 		GError* err = null;
549 		
550 		auto p = g_app_info_set_as_default_for_extension(getAppInfoTStruct(), Str.toStringz(extension), &err);
551 		
552 		if (err !is null)
553 		{
554 			throw new GException( new ErrorG(err) );
555 		}
556 		
557 		return p;
558 	}
559 	
560 	/**
561 	 * Sets the application as the last used application for a given type.
562 	 * This will make the application appear as first in the list returned
563 	 * by g_app_info_get_recommended_for_type(), regardless of the default
564 	 * application for that content type.
565 	 * Params:
566 	 * contentType = the content type.
567 	 * Returns: TRUE on success, FALSE on error.
568 	 * Throws: GException on failure.
569 	 */
570 	public int setAsLastUsedForType(string contentType)
571 	{
572 		// gboolean g_app_info_set_as_last_used_for_type  (GAppInfo *appinfo,  const char *content_type,  GError **error);
573 		GError* err = null;
574 		
575 		auto p = g_app_info_set_as_last_used_for_type(getAppInfoTStruct(), Str.toStringz(contentType), &err);
576 		
577 		if (err !is null)
578 		{
579 			throw new GException( new ErrorG(err) );
580 		}
581 		
582 		return p;
583 	}
584 	
585 	/**
586 	 * Adds a content type to the application information to indicate the
587 	 * application is capable of opening files with the given content type.
588 	 * Params:
589 	 * contentType = a string.
590 	 * Returns: TRUE on success, FALSE on error.
591 	 * Throws: GException on failure.
592 	 */
593 	public int addSupportsType(string contentType)
594 	{
595 		// gboolean g_app_info_add_supports_type (GAppInfo *appinfo,  const char *content_type,  GError **error);
596 		GError* err = null;
597 		
598 		auto p = g_app_info_add_supports_type(getAppInfoTStruct(), Str.toStringz(contentType), &err);
599 		
600 		if (err !is null)
601 		{
602 			throw new GException( new ErrorG(err) );
603 		}
604 		
605 		return p;
606 	}
607 	
608 	/**
609 	 * Checks if a supported content type can be removed from an application.
610 	 * Returns: TRUE if it is possible to remove supported content types from a given appinfo, FALSE if not.
611 	 */
612 	public int canRemoveSupportsType()
613 	{
614 		// gboolean g_app_info_can_remove_supports_type (GAppInfo *appinfo);
615 		return g_app_info_can_remove_supports_type(getAppInfoTStruct());
616 	}
617 	
618 	/**
619 	 * Removes a supported type from an application, if possible.
620 	 * Params:
621 	 * contentType = a string.
622 	 * Returns: TRUE on success, FALSE on error.
623 	 * Throws: GException on failure.
624 	 */
625 	public int removeSupportsType(string contentType)
626 	{
627 		// gboolean g_app_info_remove_supports_type (GAppInfo *appinfo,  const char *content_type,  GError **error);
628 		GError* err = null;
629 		
630 		auto p = g_app_info_remove_supports_type(getAppInfoTStruct(), Str.toStringz(contentType), &err);
631 		
632 		if (err !is null)
633 		{
634 			throw new GException( new ErrorG(err) );
635 		}
636 		
637 		return p;
638 	}
639 	
640 	/**
641 	 * Retrieves the list of content types that app_info claims to support.
642 	 * If this information is not provided by the environment, this function
643 	 * will return NULL.
644 	 * This function does not take in consideration associations added with
645 	 * g_app_info_add_supports_type(), but only those exported directly by
646 	 * the application.
647 	 * Since 2.34
648 	 * Returns: a list of content types. [transfer none][array zero-terminated=1][element-type utf8]
649 	 */
650 	public string[] getSupportedTypes()
651 	{
652 		// const char ** g_app_info_get_supported_types (GAppInfo *appinfo);
653 		return Str.toStringArray(g_app_info_get_supported_types(getAppInfoTStruct()));
654 	}
655 	
656 	/**
657 	 * Gets a list of all of the applications currently registered
658 	 * on this system.
659 	 * For desktop files, this includes applications that have
660 	 * NoDisplay=true set or are excluded from
661 	 * display by means of OnlyShowIn or
662 	 * NotShowIn. See g_app_info_should_show().
663 	 * The returned list does not include applications which have
664 	 * the Hidden key set.
665 	 * Returns: a newly allocated GList of references to GAppInfos. [element-type GAppInfo][transfer full]
666 	 */
667 	public static ListG getAll()
668 	{
669 		// GList * g_app_info_get_all (void);
670 		auto p = g_app_info_get_all();
671 		
672 		if(p is null)
673 		{
674 			return null;
675 		}
676 		
677 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
678 	}
679 	
680 	/**
681 	 * Gets a list of all GAppInfos for a given content type,
682 	 * including the recommended and fallback GAppInfos. See
683 	 * g_app_info_get_recommended_for_type() and
684 	 * g_app_info_get_fallback_for_type().
685 	 * Params:
686 	 * contentType = the content type to find a GAppInfo for
687 	 * Returns: GList of GAppInfos for given content_type or NULL on error. [element-type GAppInfo][transfer full]
688 	 */
689 	public static ListG getAllForType(string contentType)
690 	{
691 		// GList * g_app_info_get_all_for_type (const char *content_type);
692 		auto p = g_app_info_get_all_for_type(Str.toStringz(contentType));
693 		
694 		if(p is null)
695 		{
696 			return null;
697 		}
698 		
699 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
700 	}
701 	
702 	/**
703 	 * Gets the default GAppInfo for a given content type.
704 	 * Params:
705 	 * contentType = the content type to find a GAppInfo for
706 	 * mustSupportUris = if TRUE, the GAppInfo is expected to
707 	 * support URIs
708 	 * Returns: GAppInfo for given content_type or NULL on error. [transfer full]
709 	 */
710 	public static AppInfoIF getDefaultForType(string contentType, int mustSupportUris)
711 	{
712 		// GAppInfo * g_app_info_get_default_for_type (const char *content_type,  gboolean must_support_uris);
713 		auto p = g_app_info_get_default_for_type(Str.toStringz(contentType), mustSupportUris);
714 		
715 		if(p is null)
716 		{
717 			return null;
718 		}
719 		
720 		return ObjectG.getDObject!(AppInfo, AppInfoIF)(cast(GAppInfo*) p);
721 	}
722 	
723 	/**
724 	 * Gets the default application for handling URIs with
725 	 * the given URI scheme. A URI scheme is the initial part
726 	 * of the URI, up to but not including the ':', e.g. "http",
727 	 * "ftp" or "sip".
728 	 * Params:
729 	 * uriScheme = a string containing a URI scheme.
730 	 * Returns: GAppInfo for given uri_scheme or NULL on error. [transfer full]
731 	 */
732 	public static AppInfoIF getDefaultForUriScheme(string uriScheme)
733 	{
734 		// GAppInfo * g_app_info_get_default_for_uri_scheme  (const char *uri_scheme);
735 		auto p = g_app_info_get_default_for_uri_scheme(Str.toStringz(uriScheme));
736 		
737 		if(p is null)
738 		{
739 			return null;
740 		}
741 		
742 		return ObjectG.getDObject!(AppInfo, AppInfoIF)(cast(GAppInfo*) p);
743 	}
744 	
745 	/**
746 	 * Gets a list of fallback GAppInfos for a given content type, i.e.
747 	 * those applications which claim to support the given content type
748 	 * by MIME type subclassing and not directly.
749 	 * Since 2.28
750 	 * Params:
751 	 * contentType = the content type to find a GAppInfo for
752 	 * Returns: GList of GAppInfos for given content_type or NULL on error. [element-type GAppInfo][transfer full]
753 	 */
754 	public static ListG getFallbackForType(string contentType)
755 	{
756 		// GList * g_app_info_get_fallback_for_type (const gchar *content_type);
757 		auto p = g_app_info_get_fallback_for_type(Str.toStringz(contentType));
758 		
759 		if(p is null)
760 		{
761 			return null;
762 		}
763 		
764 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
765 	}
766 	
767 	/**
768 	 * Gets a list of recommended GAppInfos for a given content type, i.e.
769 	 * those applications which claim to support the given content type exactly,
770 	 * and not by MIME type subclassing.
771 	 * Note that the first application of the list is the last used one, i.e.
772 	 * the last one for which g_app_info_set_as_last_used_for_type() has been
773 	 * called.
774 	 * Since 2.28
775 	 * Params:
776 	 * contentType = the content type to find a GAppInfo for
777 	 * Returns: GList of GAppInfos for given content_type or NULL on error. [element-type GAppInfo][transfer full]
778 	 */
779 	public static ListG getRecommendedForType(string contentType)
780 	{
781 		// GList * g_app_info_get_recommended_for_type (const gchar *content_type);
782 		auto p = g_app_info_get_recommended_for_type(Str.toStringz(contentType));
783 		
784 		if(p is null)
785 		{
786 			return null;
787 		}
788 		
789 		return ObjectG.getDObject!(ListG)(cast(GList*) p);
790 	}
791 	
792 	/**
793 	 * Utility function that launches the default application
794 	 * registered to handle the specified uri. Synchronous I/O
795 	 * is done on the uri to detect the type of the file if
796 	 * required.
797 	 * Params:
798 	 * uri = the uri to show
799 	 * launchContext = an optional GAppLaunchContext. [allow-none]
800 	 * Returns: TRUE on success, FALSE on error.
801 	 * Throws: GException on failure.
802 	 */
803 	public static int launchDefaultForUri(string uri, AppLaunchContext launchContext)
804 	{
805 		// gboolean g_app_info_launch_default_for_uri (const char *uri,  GAppLaunchContext *launch_context,  GError **error);
806 		GError* err = null;
807 		
808 		auto p = g_app_info_launch_default_for_uri(Str.toStringz(uri), (launchContext is null) ? null : launchContext.getAppLaunchContextStruct(), &err);
809 		
810 		if (err !is null)
811 		{
812 			throw new GException( new ErrorG(err) );
813 		}
814 		
815 		return p;
816 	}
817 }