Merge branch 'wip/pwithnall/3399-glib-gir-platform-differences-appinfo-content-types' into 'main'

gappinfo and gcontenttype: Make introspection annotations available on all platforms

See merge request GNOME/glib!4167
This commit is contained in:
Philip Withnall 2024-07-26 15:51:28 +00:00
commit 44a145f2e3
13 changed files with 1836 additions and 1559 deletions

View File

@ -116,6 +116,38 @@ g_app_info_default_init (GAppInfoInterface *iface)
{
}
/**
* g_app_info_create_from_commandline:
* @commandline: (type filename): the command line to use
* @application_name: (nullable): the application name, or `NULL` to use @commandline
* @flags: flags that can specify details of the created [iface@Gio.AppInfo]
* @error: a [type@GLib.Error] location to store the error occurring,
* `NULL` to ignore.
*
* Creates a new [iface@Gio.AppInfo] from the given information.
*
* Note that for @commandline, the quoting rules of the `Exec` key of the
* [freedesktop.org Desktop Entry Specification](http://freedesktop.org/Standards/desktop-entry-spec)
* are applied. For example, if the @commandline contains
* percent-encoded URIs, the percent-character must be doubled in order to prevent it from
* being swallowed by `Exec` key unquoting. See
* [the specification](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s07.html)
* for exact quoting rules.
*
* Returns: (transfer full): new [iface@Gio.AppInfo] for given command.
**/
GAppInfo *
g_app_info_create_from_commandline (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
{
g_return_val_if_fail (commandline, NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
return g_app_info_create_from_commandline_impl (commandline, application_name,
flags, error);
}
/**
* g_app_info_dup:
@ -374,6 +406,156 @@ g_app_info_set_as_last_used_for_type (GAppInfo *appinfo,
return FALSE;
}
/**
* g_app_info_get_all:
*
* Gets a list of all of the applications currently registered
* on this system.
*
* For desktop files, this includes applications that have
* [`NoDisplay=true`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-nodisplay)
* set or are excluded from display by means of
* [`OnlyShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-onlyshowin)
* or [`NotShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-notshowin).
* See [method@Gio.AppInfo.should_show].
*
* The returned list does not include applications which have the
* [`Hidden` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-hidden)
* set.
*
* Returns: (element-type GAppInfo) (transfer full): a newly allocated
* list of references to [iface@Gio.AppInfo]s.
**/
GList *
g_app_info_get_all (void)
{
return g_app_info_get_all_impl ();
}
/**
* g_app_info_get_recommended_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
*
* Gets a list of recommended [iface@Gio.AppInfo]s for a given content type,
* i.e. those applications which claim to support the given content type
* exactly, and not by MIME type subclassing.
*
* Note that the first application of the list is the last used one, i.e.
* the last one for which [method@Gio.AppInfo.set_as_last_used_for_type] has
* been called.
*
* Returns: (element-type GAppInfo) (transfer full): list of
* [iface@Gio.AppInfo]s for given @content_type or `NULL` on error.
*
* Since: 2.28
**/
GList *
g_app_info_get_recommended_for_type (const gchar *content_type)
{
g_return_val_if_fail (content_type != NULL, NULL);
return g_app_info_get_recommended_for_type_impl (content_type);
}
/**
* g_app_info_get_fallback_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
*
* Gets a list of fallback [iface@Gio.AppInfo]s for a given content type, i.e.
* those applications which claim to support the given content type by MIME
* type subclassing and not directly.
*
* Returns: (element-type GAppInfo) (transfer full): list of [iface@Gio.AppInfo]s
* for given @content_type or `NULL` on error.
*
* Since: 2.28
**/
GList *
g_app_info_get_fallback_for_type (const gchar *content_type)
{
g_return_val_if_fail (content_type != NULL, NULL);
return g_app_info_get_fallback_for_type_impl (content_type);
}
/**
* g_app_info_get_all_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
*
* Gets a list of all [iface@Gio.AppInfo]s for a given content type,
* including the recommended and fallback [iface@Gio.AppInfo]s. See
* [func@Gio.AppInfo.get_recommended_for_type] and
* [func@Gio.AppInfo.get_fallback_for_type].
*
* Returns: (element-type GAppInfo) (transfer full): list of
* [iface@Gio.AppInfo]s for given @content_type.
**/
GList *
g_app_info_get_all_for_type (const char *content_type)
{
g_return_val_if_fail (content_type != NULL, NULL);
return g_app_info_get_all_for_type_impl (content_type);
}
/**
* g_app_info_reset_type_associations:
* @content_type: a content type
*
* Removes all changes to the type associations done by
* [method@Gio.AppInfo.set_as_default_for_type],
* [method@Gio.AppInfo.set_as_default_for_extension],
* [method@Gio.AppInfo.add_supports_type] or
* [method@Gio.AppInfo.remove_supports_type].
*
* Since: 2.20
*/
void
g_app_info_reset_type_associations (const char *content_type)
{
g_app_info_reset_type_associations_impl (content_type);
}
/**
* g_app_info_get_default_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
* @must_support_uris: if `TRUE`, the [iface@Gio.AppInfo] is expected to
* support URIs
*
* Gets the default [iface@Gio.AppInfo] for a given content type.
*
* Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
* @content_type or `NULL` on error.
*/
GAppInfo *
g_app_info_get_default_for_type (const char *content_type,
gboolean must_support_uris)
{
g_return_val_if_fail (content_type != NULL, NULL);
return g_app_info_get_default_for_type_impl (content_type, must_support_uris);
}
/**
* g_app_info_get_default_for_uri_scheme:
* @uri_scheme: a string containing a URI scheme.
*
* Gets the default application for handling URIs with the given URI scheme.
*
* A URI scheme is the initial part of the URI, up to but not including the `:`.
* For example, `http`, `ftp` or `sip`.
*
* Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
* @uri_scheme or `NULL` on error.
*/
GAppInfo *
g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
{
g_return_val_if_fail (uri_scheme != NULL && *uri_scheme != '\0', NULL);
return g_app_info_get_default_for_uri_scheme_impl (uri_scheme);
}
/**
* g_app_info_set_as_default_for_extension:
* @appinfo: the app info

View File

@ -25,4 +25,17 @@
void g_app_info_monitor_fire (void);
GAppInfo *g_app_info_create_from_commandline_impl (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error);
GList *g_app_info_get_recommended_for_type_impl (const gchar *content_type);
GList *g_app_info_get_fallback_for_type_impl (const gchar *content_type);
GList *g_app_info_get_all_for_type_impl (const char *content_type);
void g_app_info_reset_type_associations_impl (const char *content_type);
GAppInfo *g_app_info_get_default_for_type_impl (const char *content_type,
gboolean must_support_uris);
GAppInfo *g_app_info_get_default_for_uri_scheme_impl (const char *uri_scheme);
GList *g_app_info_get_all_impl (void);
#endif /* __G_APP_INFO_PRIVATE_H__ */

1356
gio/gcontenttype-fdo.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@
#include "config.h"
#include "gcontenttype.h"
#include "gcontenttypeprivate.h"
#include "gicon.h"
#include "gthemedicon.h"
@ -107,22 +108,22 @@ create_cstr_from_cfstring_with_fallback (CFStringRef str,
/*< private >*/
void
g_content_type_set_mime_dirs (const gchar * const *dirs)
g_content_type_set_mime_dirs_impl (const gchar * const *dirs)
{
/* noop on macOS */
}
/*< private >*/
const gchar * const *
g_content_type_get_mime_dirs (void)
g_content_type_get_mime_dirs_impl (void)
{
const gchar * const *mime_dirs = { NULL };
return mime_dirs;
}
gboolean
g_content_type_equals (const gchar *type1,
const gchar *type2)
g_content_type_equals_impl (const gchar *type1,
const gchar *type2)
{
CFStringRef str1, str2;
gboolean ret;
@ -145,8 +146,8 @@ g_content_type_equals (const gchar *type1,
}
gboolean
g_content_type_is_a (const gchar *ctype,
const gchar *csupertype)
g_content_type_is_a_impl (const gchar *ctype,
const gchar *csupertype)
{
CFStringRef type, supertype;
gboolean ret;
@ -166,8 +167,8 @@ g_content_type_is_a (const gchar *ctype,
}
gboolean
g_content_type_is_mime_type (const gchar *type,
const gchar *mime_type)
g_content_type_is_mime_type_impl (const gchar *type,
const gchar *mime_type)
{
gchar *content_type;
gboolean ret;
@ -183,7 +184,7 @@ g_content_type_is_mime_type (const gchar *type,
}
gboolean
g_content_type_is_unknown (const gchar *type)
g_content_type_is_unknown_impl (const gchar *type)
{
g_return_val_if_fail (type != NULL, FALSE);
@ -198,7 +199,7 @@ g_content_type_is_unknown (const gchar *type)
}
gchar *
g_content_type_get_description (const gchar *type)
g_content_type_get_description_impl (const gchar *type)
{
CFStringRef str;
CFStringRef desc_str;
@ -327,25 +328,25 @@ g_content_type_get_icon_internal (const gchar *uti,
}
GIcon *
g_content_type_get_icon (const gchar *type)
g_content_type_get_icon_impl (const gchar *type)
{
return g_content_type_get_icon_internal (type, FALSE);
}
GIcon *
g_content_type_get_symbolic_icon (const gchar *type)
g_content_type_get_symbolic_icon_impl (const gchar *type)
{
return g_content_type_get_icon_internal (type, TRUE);
}
gchar *
g_content_type_get_generic_icon_name (const gchar *type)
g_content_type_get_generic_icon_name_impl (const gchar *type)
{
return NULL;
}
gboolean
g_content_type_can_be_executable (const gchar *type)
g_content_type_can_be_executable_impl (const gchar *type)
{
CFStringRef uti;
gboolean ret = FALSE;
@ -369,7 +370,7 @@ g_content_type_can_be_executable (const gchar *type)
}
gchar *
g_content_type_from_mime_type (const gchar *mime_type)
g_content_type_from_mime_type_impl (const gchar *mime_type)
{
CFStringRef mime_str;
CFStringRef uti_str;
@ -437,7 +438,7 @@ g_content_type_from_mime_type (const gchar *mime_type)
}
gchar *
g_content_type_get_mime_type (const gchar *type)
g_content_type_get_mime_type_impl (const gchar *type)
{
CFStringRef uti_str;
CFStringRef mime_str;
@ -489,10 +490,10 @@ looks_like_text (const guchar *data,
}
gchar *
g_content_type_guess (const gchar *filename,
const guchar *data,
gsize data_size,
gboolean *result_uncertain)
g_content_type_guess_impl (const gchar *filename,
const guchar *data,
gsize data_size,
gboolean *result_uncertain)
{
CFStringRef uti = NULL;
gchar *cextension;
@ -595,14 +596,14 @@ g_content_type_guess (const gchar *filename,
}
GList *
g_content_types_get_registered (void)
g_content_types_get_registered_impl (void)
{
/* TODO: UTTypeCreateAllIdentifiersForTag? */
return NULL;
}
gchar **
g_content_type_guess_for_tree (GFile *root)
g_content_type_guess_for_tree_impl (GFile *root)
{
return NULL;
}

View File

@ -28,6 +28,7 @@
#include <string.h>
#include <stdio.h>
#include "gcontenttype.h"
#include "gcontenttypeprivate.h"
#include "gthemedicon.h"
#include "gicon.h"
#include "glibintl.h"
@ -87,22 +88,22 @@ get_registry_classes_key (const char *subdir,
/*< private >*/
void
g_content_type_set_mime_dirs (const gchar * const *dirs)
g_content_type_set_mime_dirs_impl (const gchar * const *dirs)
{
/* noop on Windows */
}
/*< private >*/
const gchar * const *
g_content_type_get_mime_dirs (void)
g_content_type_get_mime_dirs_impl (void)
{
const gchar * const *mime_dirs = { NULL };
return mime_dirs;
}
gboolean
g_content_type_equals (const gchar *type1,
const gchar *type2)
g_content_type_equals_impl (const gchar *type1,
const gchar *type2)
{
char *progid1, *progid2;
gboolean res;
@ -126,8 +127,8 @@ g_content_type_equals (const gchar *type1,
}
gboolean
g_content_type_is_a (const gchar *type,
const gchar *supertype)
g_content_type_is_a_impl (const gchar *type,
const gchar *supertype)
{
gboolean res;
char *perceived_type;
@ -152,8 +153,8 @@ g_content_type_is_a (const gchar *type,
}
gboolean
g_content_type_is_mime_type (const gchar *type,
const gchar *mime_type)
g_content_type_is_mime_type_impl (const gchar *type,
const gchar *mime_type)
{
gchar *content_type;
gboolean ret;
@ -169,7 +170,7 @@ g_content_type_is_mime_type (const gchar *type,
}
gboolean
g_content_type_is_unknown (const gchar *type)
g_content_type_is_unknown_impl (const gchar *type)
{
g_return_val_if_fail (type != NULL, FALSE);
@ -177,7 +178,7 @@ g_content_type_is_unknown (const gchar *type)
}
gchar *
g_content_type_get_description (const gchar *type)
g_content_type_get_description_impl (const gchar *type)
{
char *progid;
char *description;
@ -201,7 +202,7 @@ g_content_type_get_description (const gchar *type)
}
gchar *
g_content_type_get_mime_type (const gchar *type)
g_content_type_get_mime_type_impl (const gchar *type)
{
char *mime;
@ -224,17 +225,8 @@ g_content_type_get_mime_type (const gchar *type)
G_LOCK_DEFINE_STATIC (_type_icons);
static GHashTable *_type_icons = NULL;
/**
* g_content_type_get_icon:
* @type: a content type string
*
* Gets the icon for a content type.
*
* Returns: (transfer full): #GIcon corresponding to the content type. Free the returned
* object with g_object_unref()
*/
GIcon *
g_content_type_get_icon (const gchar *type)
g_content_type_get_icon_impl (const gchar *type)
{
GIcon *themed_icon;
char *name = NULL;
@ -292,19 +284,19 @@ g_content_type_get_icon (const gchar *type)
}
GIcon *
g_content_type_get_symbolic_icon (const gchar *type)
g_content_type_get_symbolic_icon_impl (const gchar *type)
{
return g_content_type_get_icon (type);
}
gchar *
g_content_type_get_generic_icon_name (const gchar *type)
g_content_type_get_generic_icon_name_impl (const gchar *type)
{
return NULL;
}
gboolean
g_content_type_can_be_executable (const gchar *type)
g_content_type_can_be_executable_impl (const gchar *type)
{
g_return_val_if_fail (type != NULL, FALSE);
@ -343,7 +335,7 @@ looks_like_text (const guchar *data,
}
gchar *
g_content_type_from_mime_type (const gchar *mime_type)
g_content_type_from_mime_type_impl (const gchar *mime_type)
{
char *key, *content_type;
@ -362,10 +354,10 @@ g_content_type_from_mime_type (const gchar *mime_type)
}
gchar *
g_content_type_guess (const gchar *filename,
const guchar *data,
gsize data_size,
gboolean *result_uncertain)
g_content_type_guess_impl (const gchar *filename,
const guchar *data,
gsize data_size,
gboolean *result_uncertain)
{
char *basename;
char *type;
@ -410,7 +402,7 @@ g_content_type_guess (const gchar *filename,
}
GList *
g_content_types_get_registered (void)
g_content_types_get_registered_impl (void)
{
DWORD index;
wchar_t keyname[256];
@ -446,7 +438,7 @@ g_content_types_get_registered (void)
}
gchar **
g_content_type_guess_for_tree (GFile *root)
g_content_type_guess_for_tree_impl (GFile *root)
{
/* FIXME: implement */
return NULL;

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,29 @@ gsize _g_unix_content_type_get_sniff_len (void);
char * _g_unix_content_type_unalias (const char *type);
char **_g_unix_content_type_get_parents (const char *type);
void g_content_type_set_mime_dirs_impl (const gchar * const *dirs);
const gchar * const *g_content_type_get_mime_dirs_impl (void);
gboolean g_content_type_equals_impl (const gchar *type1,
const gchar *type2);
gboolean g_content_type_is_a_impl (const gchar *type,
const gchar *supertype);
gboolean g_content_type_is_mime_type_impl (const gchar *type,
const gchar *mime_type);
gboolean g_content_type_is_unknown_impl (const gchar *type);
gchar *g_content_type_get_description_impl (const gchar *type);
char *g_content_type_get_mime_type_impl (const char *type);
GIcon *g_content_type_get_icon_impl (const gchar *type);
GIcon *g_content_type_get_symbolic_icon_impl (const gchar *type);
gchar *g_content_type_get_generic_icon_name_impl (const gchar *type);
gboolean g_content_type_can_be_executable_impl (const gchar *type);
gchar *g_content_type_from_mime_type_impl (const gchar *mime_type);
gchar *g_content_type_guess_impl (const gchar *filename,
const guchar *data,
gsize data_size,
gboolean *result_uncertain);
GList *g_content_types_get_registered_impl (void);
gchar **g_content_type_guess_for_tree_impl (GFile *root);
G_END_DECLS
#endif /* __G_CONTENT_TYPE_PRIVATE_H__ */

View File

@ -1777,7 +1777,7 @@ g_desktop_app_info_class_init (GDesktopAppInfoClass *klass)
/**
* GDesktopAppInfo:filename:
*
* The origin filename of this #GDesktopAppInfo
* The origin filename of this [class@Gio.DesktopAppInfo]
*/
g_object_class_install_property (gobject_class,
PROP_FILENAME,
@ -2064,11 +2064,11 @@ g_desktop_app_info_load_file (GDesktopAppInfo *self)
/**
* g_desktop_app_info_new_from_keyfile:
* @key_file: an opened #GKeyFile
* @key_file: an opened [type@GLib.KeyFile]
*
* Creates a new #GDesktopAppInfo.
* Creates a new [class@Gio.DesktopAppInfo].
*
* Returns: (nullable): a new #GDesktopAppInfo or %NULL on error.
* Returns: (nullable): a new [class@Gio.DesktopAppInfo] or `NULL` on error.
*
* Since: 2.18
**/
@ -2095,9 +2095,9 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file)
* @filename: (type filename): the path of a desktop file, in the GLib
* filename encoding
*
* Creates a new #GDesktopAppInfo.
* Creates a new [class@Gio.DesktopAppInfo].
*
* Returns: (nullable): a new #GDesktopAppInfo or %NULL on error.
* Returns: (nullable): a new [class@Gio.DesktopAppInfo] or `NULL` on error.
**/
GDesktopAppInfo *
g_desktop_app_info_new_from_filename (const char *filename)
@ -2115,22 +2115,22 @@ g_desktop_app_info_new_from_filename (const char *filename)
/**
* g_desktop_app_info_new:
* @desktop_id: the desktop file id
* @desktop_id: the desktop file ID
*
* Creates a new #GDesktopAppInfo based on a desktop file id.
* Creates a new [class@Gio.DesktopAppInfo] based on a desktop file ID.
*
* A desktop file id is the basename of the desktop file, including the
* .desktop extension. GIO is looking for a desktop file with this name
* A desktop file ID is the basename of the desktop file, including the
* `.desktop` extension. GIO is looking for a desktop file with this name
* in the `applications` subdirectories of the XDG
* data directories (i.e. the directories specified in the `XDG_DATA_HOME`
* and `XDG_DATA_DIRS` environment variables). GIO also supports the
* prefix-to-subdirectory mapping that is described in the
* [Menu Spec](http://standards.freedesktop.org/menu-spec/latest/)
* (i.e. a desktop id of kde-foo.desktop will match
* (i.e. a desktop ID of `kde-foo.desktop` will match
* `/usr/share/applications/kde/foo.desktop`).
*
* Returns: (nullable): a new #GDesktopAppInfo, or %NULL if no desktop
* file with that id exists.
* Returns: (nullable): a new [class@Gio.DesktopAppInfo], or `NULL` if no
* desktop file with that ID exists.
*/
GDesktopAppInfo *
g_desktop_app_info_new (const char *desktop_id)
@ -2248,12 +2248,13 @@ g_desktop_app_info_get_display_name (GAppInfo *appinfo)
/**
* g_desktop_app_info_get_is_hidden:
* @info: a #GDesktopAppInfo.
* @info: a [class@Gio.DesktopAppInfo].
*
* A desktop file is hidden if the Hidden key in it is
* set to True.
* A desktop file is hidden if the
* [`Hidden` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-hidden)
* in it is set to `True`.
*
* Returns: %TRUE if hidden, %FALSE otherwise.
* Returns: `TRUE` if hidden, `FALSE` otherwise.
**/
gboolean
g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info)
@ -2263,14 +2264,14 @@ g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info)
/**
* g_desktop_app_info_get_filename:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
*
* When @info was created from a known filename, return it. In some
* situations such as the #GDesktopAppInfo returned from
* g_desktop_app_info_new_from_keyfile(), this function will return %NULL.
* situations such as a [class@Gio.DesktopAppInfo] returned from
* [ctor@Gio.DesktopAppInfo.new_from_keyfile], this function will return `NULL`.
*
* Returns: (nullable) (type filename): The full path to the file for @info,
* or %NULL if not known.
* or `NULL` if not known.
* Since: 2.24
*/
const char *
@ -2313,12 +2314,14 @@ g_desktop_app_info_get_icon (GAppInfo *appinfo)
/**
* g_desktop_app_info_get_categories:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
*
* Gets the categories from the desktop file.
*
* Returns: (nullable): The unparsed Categories key from the desktop file;
* i.e. no attempt is made to split it by ';' or validate it.
* Returns: (nullable): The unparsed
* [`Categories` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-categories)
* from the desktop file;
* i.e. no attempt is made to split it by `;` or validate it.
*/
const char *
g_desktop_app_info_get_categories (GDesktopAppInfo *info)
@ -2328,11 +2331,12 @@ g_desktop_app_info_get_categories (GDesktopAppInfo *info)
/**
* g_desktop_app_info_get_keywords:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
*
* Gets the keywords from the desktop file.
*
* Returns: (transfer none): The value of the Keywords key
* Returns: (transfer none): The value of the
* [`Keywords` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-keywords)
*
* Since: 2.32
*/
@ -2344,11 +2348,12 @@ g_desktop_app_info_get_keywords (GDesktopAppInfo *info)
/**
* g_desktop_app_info_get_generic_name:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
*
* Gets the generic name from the desktop file.
*
* Returns: (nullable): The value of the GenericName key
* Returns: (nullable): The value of the
* [`GenericName` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-genericname)
*/
const char *
g_desktop_app_info_get_generic_name (GDesktopAppInfo *info)
@ -2358,13 +2363,14 @@ g_desktop_app_info_get_generic_name (GDesktopAppInfo *info)
/**
* g_desktop_app_info_get_nodisplay:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
*
* Gets the value of the NoDisplay key, which helps determine if the
* application info should be shown in menus. See
* %G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().
* Gets the value of the
* [`NoDisplay` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-nodisplay)
* which helps determine if the application info should be shown in menus. See
* `G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY` and [method@Gio.AppInfo.should_show].
*
* Returns: The value of the NoDisplay key
* Returns: The value of the `NoDisplay` key
*
* Since: 2.30
*/
@ -2376,24 +2382,25 @@ g_desktop_app_info_get_nodisplay (GDesktopAppInfo *info)
/**
* g_desktop_app_info_get_show_in:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @desktop_env: (nullable): a string specifying a desktop name
*
* Checks if the application info should be shown in menus that list available
* applications for a specific name of the desktop, based on the
* `OnlyShowIn` and `NotShowIn` keys.
* [`OnlyShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-onlyshowin)
* and [`NotShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-notshowin)
* keys.
*
* @desktop_env should typically be given as %NULL, in which case the
* @desktop_env should typically be given as `NULL`, in which case the
* `XDG_CURRENT_DESKTOP` environment variable is consulted. If you want
* to override the default mechanism then you may specify @desktop_env,
* but this is not recommended.
*
* Note that g_app_info_should_show() for @info will include this check (with
* %NULL for @desktop_env) as well as additional checks.
* Note that [method@Gio.AppInfo.should_show] for @info will include this check
* (with `NULL` for @desktop_env) as well as additional checks.
*
* Returns: %TRUE if the @info should be shown in @desktop_env according to the
* `OnlyShowIn` and `NotShowIn` keys, %FALSE
* otherwise.
* Returns: `TRUE` if the @info should be shown in @desktop_env according to the
* `OnlyShowIn` and `NotShowIn` keys, `FALSE` otherwise.
*
* Since: 2.30
*/
@ -3544,28 +3551,28 @@ g_desktop_app_info_launch (GAppInfo *appinfo,
/**
* g_desktop_app_info_launch_uris_as_manager_with_fds:
* @appinfo: a #GDesktopAppInfo
* @appinfo: a [class@Gio.DesktopAppInfo]
* @uris: (element-type utf8): List of URIs
* @launch_context: (nullable): a #GAppLaunchContext
* @spawn_flags: #GSpawnFlags, used for each process
* @user_setup: (scope async) (nullable) (closure user_setup_data): a #GSpawnChildSetupFunc, used once
* for each process.
* @launch_context: (nullable): a [class@Gio.AppLaunchContext]
* @spawn_flags: [flags@GLib.SpawnFlags], used for each process
* @user_setup: (scope async) (nullable) (closure user_setup_data): a
* [callback@GLib.SpawnChildSetupFunc], used once for each process.
* @user_setup_data: User data for @user_setup
* @pid_callback: (scope call) (nullable) (closure pid_callback_data): Callback for child processes
* @pid_callback_data: User data for @callback
* @stdin_fd: file descriptor to use for child's stdin, or -1
* @stdout_fd: file descriptor to use for child's stdout, or -1
* @stderr_fd: file descriptor to use for child's stderr, or -1
* @error: return location for a #GError, or %NULL
* @stdin_fd: file descriptor to use for childs stdin, or `-1`
* @stdout_fd: file descriptor to use for childs stdout, or `-1`
* @stderr_fd: file descriptor to use for childs stderr, or `-1`
* @error: return location for a #GError, or `NULL`
*
* Equivalent to g_desktop_app_info_launch_uris_as_manager() but allows
* Equivalent to [method@Gio.DesktopAppInfo.launch_uris_as_manager] but allows
* you to pass in file descriptors for the stdin, stdout and stderr streams
* of the launched process.
*
* If application launching occurs via some non-spawn mechanism (e.g. D-Bus
* activation) then @stdin_fd, @stdout_fd and @stderr_fd are ignored.
*
* Returns: %TRUE on successful launch, %FALSE otherwise.
* Returns: `TRUE` on successful launch, `FALSE` otherwise.
*
* Since: 2.58
*/
@ -3599,34 +3606,35 @@ g_desktop_app_info_launch_uris_as_manager_with_fds (GDesktopAppInfo *
/**
* g_desktop_app_info_launch_uris_as_manager:
* @appinfo: a #GDesktopAppInfo
* @appinfo: a [class@Gio.DesktopAppInfo]
* @uris: (element-type utf8): List of URIs
* @launch_context: (nullable): a #GAppLaunchContext
* @spawn_flags: #GSpawnFlags, used for each process
* @user_setup: (scope async) (nullable): a #GSpawnChildSetupFunc, used once
* for each process.
* @launch_context: (nullable): a [class@Gio.AppLaunchContext]
* @spawn_flags: [flags@GLib.SpawnFlags], used for each process
* @user_setup: (scope async) (nullable): a [callback@GLib.SpawnChildSetupFunc],
* used once for each process.
* @user_setup_data: (closure user_setup) (nullable): User data for @user_setup
* @pid_callback: (scope call) (nullable): Callback for child processes
* @pid_callback_data: (closure pid_callback) (nullable): User data for @callback
* @error: return location for a #GError, or %NULL
* @error: return location for a #GError, or `NULL`
*
* This function performs the equivalent of g_app_info_launch_uris(),
* This function performs the equivalent of [method@Gio.AppInfo.launch_uris],
* but is intended primarily for operating system components that
* launch applications. Ordinary applications should use
* g_app_info_launch_uris().
* [method@Gio.AppInfo.launch_uris].
*
* If the application is launched via GSpawn, then @spawn_flags, @user_setup
* and @user_setup_data are used for the call to g_spawn_async().
* and @user_setup_data are used for the call to [func@GLib.spawn_async].
* Additionally, @pid_callback (with @pid_callback_data) will be called to
* inform about the PID of the created process. See g_spawn_async_with_pipes()
* for information on certain parameter conditions that can enable an
* optimized posix_spawn() codepath to be used.
* inform about the PID of the created process. See
* [func@GLib.spawn_async_with_pipes] for information on certain parameter
* conditions that can enable an optimized [`posix_spawn()`](man:posix_spawn(3))
* code path to be used.
*
* If application launching occurs via some other mechanism (eg: D-Bus
* If application launching occurs via some other mechanism (for example, D-Bus
* activation) then @spawn_flags, @user_setup, @user_setup_data,
* @pid_callback and @pid_callback_data are ignored.
*
* Returns: %TRUE on successful launch, %FALSE otherwise.
* Returns: `TRUE` on successful launch, `FALSE` otherwise.
*/
gboolean
g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo *appinfo,
@ -3658,15 +3666,17 @@ g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo *appinfo,
* @desktop_env: a string specifying what desktop this is
*
* Sets the name of the desktop that the application is running in.
* This is used by g_app_info_should_show() and
* g_desktop_app_info_get_show_in() to evaluate the
* `OnlyShowIn` and `NotShowIn`
* desktop entry fields.
*
* This is used by [method@Gio.AppInfo.should_show] and
* [method@Gio.DesktopAppInfo.get_show_in] to evaluate the
* [`OnlyShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-onlyshowin)
* and [`NotShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-notshowin)
* keys.
*
* Should be called only once; subsequent calls are ignored.
*
* Deprecated:2.42:do not use this API. Since 2.42 the value of the
* `XDG_CURRENT_DESKTOP` environment variable will be used.
* `XDG_CURRENT_DESKTOP` environment variable will be used.
*/
void
g_desktop_app_info_set_desktop_env (const gchar *desktop_env)
@ -4314,28 +4324,12 @@ g_desktop_app_info_delete (GAppInfo *appinfo)
}
/* Create for commandline {{{2 */
/**
* g_app_info_create_from_commandline:
* @commandline: (type filename): the commandline to use
* @application_name: (nullable): the application name, or %NULL to use @commandline
* @flags: flags that can specify details of the created #GAppInfo
* @error: a #GError location to store the error occurring, %NULL to ignore.
*
* Creates a new #GAppInfo from the given information.
*
* Note that for @commandline, the quoting rules of the Exec key of the
* [freedesktop.org Desktop Entry Specification](http://freedesktop.org/Standards/desktop-entry-spec)
* are applied. For example, if the @commandline contains
* percent-encoded URIs, the percent-character must be doubled in order to prevent it from
* being swallowed by Exec key unquoting. See the specification for exact quoting rules.
*
* Returns: (transfer full): new #GAppInfo for given command.
**/
GAppInfo *
g_app_info_create_from_commandline (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
g_app_info_create_from_commandline_impl (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
{
char **split;
char *basename;
@ -4484,25 +4478,8 @@ g_desktop_app_info_get_desktop_ids_for_content_type (const gchar *content_type,
return (gchar **) g_ptr_array_free (hits, FALSE);
}
/**
* g_app_info_get_recommended_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
*
* Gets a list of recommended [iface@Gio.AppInfo]s for a given content type,
* i.e. those applications which claim to support the given content type
* exactly, and not by MIME type subclassing.
*
* Note that the first application of the list is the last used one, i.e.
* the last one for which [method@Gio.AppInfo.set_as_last_used_for_type] has
* been called.
*
* Returns: (element-type GAppInfo) (transfer full): list of
* [iface@Gio.AppInfo]s for given @content_type or `NULL` on error.
*
* Since: 2.28
**/
GList *
g_app_info_get_recommended_for_type (const gchar *content_type)
g_app_info_get_recommended_for_type_impl (const gchar *content_type)
{
gchar **desktop_ids;
GList *infos;
@ -4527,21 +4504,8 @@ g_app_info_get_recommended_for_type (const gchar *content_type)
return g_list_reverse (infos);
}
/**
* g_app_info_get_fallback_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
*
* Gets a list of fallback [iface@Gio.AppInfo]s for a given content type, i.e.
* those applications which claim to support the given content type by MIME
* type subclassing and not directly.
*
* Returns: (element-type GAppInfo) (transfer full): list of [iface@Gio.AppInfo]s
* for given @content_type or `NULL` on error.
*
* Since: 2.28
**/
GList *
g_app_info_get_fallback_for_type (const gchar *content_type)
g_app_info_get_fallback_for_type_impl (const gchar *content_type)
{
gchar **recommended_ids;
gchar **all_ids;
@ -4579,20 +4543,8 @@ g_app_info_get_fallback_for_type (const gchar *content_type)
return g_list_reverse (infos);
}
/**
* g_app_info_get_all_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
*
* Gets a list of all [iface@Gio.AppInfo]s for a given content type,
* including the recommended and fallback [iface@Gio.AppInfo]s. See
* [func@Gio.AppInfo.get_recommended_for_type] and
* [func@Gio.AppInfo.get_fallback_for_type].
*
* Returns: (element-type GAppInfo) (transfer full): list of
* [iface@Gio.AppInfo]s for given @content_type.
**/
GList *
g_app_info_get_all_for_type (const char *content_type)
g_app_info_get_all_for_type_impl (const char *content_type)
{
gchar **desktop_ids;
GList *infos;
@ -4617,40 +4569,17 @@ g_app_info_get_all_for_type (const char *content_type)
return g_list_reverse (infos);
}
/**
* g_app_info_reset_type_associations:
* @content_type: a content type
*
* Removes all changes to the type associations done by
* [method@Gio.AppInfo.set_as_default_for_type],
* [method@Gio.AppInfo.set_as_default_for_extension],
* [method@Gio.AppInfo.add_supports_type] or
* [method@Gio.AppInfo.remove_supports_type].
*
* Since: 2.20
*/
void
g_app_info_reset_type_associations (const char *content_type)
g_app_info_reset_type_associations_impl (const char *content_type)
{
update_mimeapps_list (NULL, content_type,
UPDATE_MIME_NONE,
NULL);
}
/**
* g_app_info_get_default_for_type:
* @content_type: the content type to find a [iface@Gio.AppInfo] for
* @must_support_uris: if `TRUE`, the [iface@Gio.AppInfo] is expected to
* support URIs
*
* Gets the default [iface@Gio.AppInfo] for a given content type.
*
* Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
* @content_type or `NULL` on error.
*/
GAppInfo *
g_app_info_get_default_for_type (const char *content_type,
gboolean must_support_uris)
g_app_info_get_default_for_type_impl (const char *content_type,
gboolean must_support_uris)
{
GPtrArray *blocklist;
GPtrArray *results;
@ -4713,20 +4642,8 @@ out:
return info;
}
/**
* g_app_info_get_default_for_uri_scheme:
* @uri_scheme: a string containing a URI scheme.
*
* Gets the default application for handling URIs with
* the given URI scheme. A URI scheme is the initial part
* of the URI, up to but not including the ':', e.g. "http",
* "ftp" or "sip".
*
* Returns: (transfer full) (nullable): #GAppInfo for given @uri_scheme or
* %NULL on error.
*/
GAppInfo *
g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
g_app_info_get_default_for_uri_scheme_impl (const char *uri_scheme)
{
GAppInfo *app_info;
char *content_type, *scheme_down;
@ -4751,10 +4668,10 @@ g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
* Gets all applications that implement @interface.
*
* An application implements an interface if that interface is listed in
* the Implements= line of the desktop file of the application.
* the `Implements` line of the desktop file of the application.
*
* Returns: (element-type GDesktopAppInfo) (transfer full): a list of #GDesktopAppInfo
* objects.
* Returns: (element-type GDesktopAppInfo) (transfer full): a list of
* [class@Gio.DesktopAppInfo] objects.
*
* Since: 2.42
**/
@ -4807,15 +4724,15 @@ g_desktop_app_info_get_implementations (const gchar *interface)
* any time.
*
* None of the search results are subjected to the normal validation
* checks performed by g_desktop_app_info_new() (for example, checking that
* checks performed by [ctor@Gio.DesktopAppInfo.new] (for example, checking that
* the executable referenced by a result exists), and so it is possible for
* g_desktop_app_info_new() to return %NULL when passed an app ID returned by
* this function. It is expected that calling code will do this when
* subsequently creating a #GDesktopAppInfo for each result.
* [ctor@Gio.DesktopAppInfo.new] to return `NULL` when passed an app ID returned
* by this function. It is expected that calling code will do this when
* subsequently creating a [class@Gio.DesktopAppInfo] for each result.
*
* Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a
* list of strvs. Free each item with g_strfreev() and free the outer
* list with g_free().
* list of strvs. Free each item with [func@GLib.strfreev] and free the outer
* list with [func@GLib.free].
*/
gchar ***
g_desktop_app_info_search (const gchar *search_string)
@ -4892,23 +4809,8 @@ g_desktop_app_info_search (const gchar *search_string)
return results;
}
/**
* g_app_info_get_all:
*
* Gets a list of all of the applications currently registered
* on this system.
*
* For desktop files, this includes applications that have
* `NoDisplay=true` set or are excluded from display by means
* of `OnlyShowIn` or `NotShowIn`. See [method@Gio.AppInfo.should_show].
* The returned list does not include applications which have
* the `Hidden` key set.
*
* Returns: (element-type GAppInfo) (transfer full): a newly allocated
* list of references to [iface@Gio.AppInfo]s.
**/
GList *
g_app_info_get_all (void)
g_app_info_get_all_impl (void)
{
GHashTable *apps;
GHashTableIter iter;
@ -4946,8 +4848,8 @@ g_app_info_get_all (void)
* #GDesktopAppInfoLookup is an opaque data structure and can only be accessed
* using the following functions.
*
* Deprecated: 2.28: The #GDesktopAppInfoLookup interface is deprecated and
* unused by GIO.
* Deprecated: 2.28: The [iface@Gio.DesktopAppInfoLookup] interface is
* deprecated and unused by GIO.
**/
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@ -4964,23 +4866,24 @@ g_desktop_app_info_lookup_default_init (GDesktopAppInfoLookupInterface *iface)
/**
* g_desktop_app_info_lookup_get_default_for_uri_scheme:
* @lookup: a #GDesktopAppInfoLookup
* @lookup: a [iface@Gio.DesktopAppInfoLookup]
* @uri_scheme: a string containing a URI scheme.
*
* Gets the default application for launching applications
* using this URI scheme for a particular #GDesktopAppInfoLookup
* using this URI scheme for a particular [iface@Gio.DesktopAppInfoLookup]
* implementation.
*
* The #GDesktopAppInfoLookup interface and this function is used
* to implement g_app_info_get_default_for_uri_scheme() backends
* The [iface@Gio.DesktopAppInfoLookup] interface and this function is used
* to implement [func@Gio.AppInfo.get_default_for_uri_scheme] backends
* in a GIO module. There is no reason for applications to use it
* directly. Applications should use g_app_info_get_default_for_uri_scheme().
* directly. Applications should use
* [func@Gio.AppInfo.get_default_for_uri_scheme].
*
* Returns: (transfer full) (nullable): #GAppInfo for given @uri_scheme or
* %NULL on error.
* Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
* @uri_scheme or `NULL` on error.
*
* Deprecated: 2.28: The #GDesktopAppInfoLookup interface is deprecated and
* unused by GIO.
* Deprecated: 2.28: The [iface@Gio.DesktopAppInfoLookup] interface is
* deprecated and unused by GIO.
*/
GAppInfo *
g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *lookup,
@ -5001,14 +4904,14 @@ G_GNUC_END_IGNORE_DEPRECATIONS
/**
* g_desktop_app_info_get_startup_wm_class:
* @info: a #GDesktopAppInfo that supports startup notify
* @info: a [class@Gio.DesktopAppInfo] that supports startup notify
*
* Retrieves the StartupWMClass field from @info. This represents the
* WM_CLASS property of the main window of the application, if launched
* Retrieves the `StartupWMClass` field from @info. This represents the
* `WM_CLASS` property of the main window of the application, if launched
* through @info.
*
* Returns: (nullable) (transfer none): the startup WM class, or %NULL if none is set
* in the desktop file.
* Returns: (nullable) (transfer none): the startup WM class, or `NULL` if none
* is set in the desktop file.
*
* Since: 2.34
*/
@ -5022,15 +4925,15 @@ g_desktop_app_info_get_startup_wm_class (GDesktopAppInfo *info)
/**
* g_desktop_app_info_get_string:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @key: the key to look up
*
* Looks up a string value in the keyfile backing @info.
*
* The @key is looked up in the "Desktop Entry" group.
* The @key is looked up in the `Desktop Entry` group.
*
* Returns: (nullable): a newly allocated string, or %NULL if the key
* is not found
* Returns: (nullable): a newly allocated string, or `NULL` if the key is not
* found
*
* Since: 2.36
*/
@ -5046,16 +4949,16 @@ g_desktop_app_info_get_string (GDesktopAppInfo *info,
/**
* g_desktop_app_info_get_locale_string:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @key: the key to look up
*
* Looks up a localized string value in the keyfile backing @info
* translated to the current locale.
*
* The @key is looked up in the "Desktop Entry" group.
* The @key is looked up in the `Desktop Entry` group.
*
* Returns: (nullable): a newly allocated string, or %NULL if the key
* is not found
* Returns: (nullable): a newly allocated string, or `NULL` if the key is not
* found
*
* Since: 2.56
*/
@ -5073,15 +4976,14 @@ g_desktop_app_info_get_locale_string (GDesktopAppInfo *info,
/**
* g_desktop_app_info_get_boolean:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @key: the key to look up
*
* Looks up a boolean value in the keyfile backing @info.
*
* The @key is looked up in the "Desktop Entry" group.
* The @key is looked up in the `Desktop Entry` group.
*
* Returns: the boolean value, or %FALSE if the key
* is not found
* Returns: the boolean value, or `FALSE` if the key is not found
*
* Since: 2.36
*/
@ -5097,17 +4999,18 @@ g_desktop_app_info_get_boolean (GDesktopAppInfo *info,
/**
* g_desktop_app_info_get_string_list:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @key: the key to look up
* @length: (out) (optional): return location for the number of returned strings, or %NULL
* @length: (out) (optional): return location for the number of returned
* strings, or `NULL`
*
* Looks up a string list value in the keyfile backing @info.
*
* The @key is looked up in the "Desktop Entry" group.
* The @key is looked up in the `Desktop Entry` group.
*
* Returns: (array zero-terminated=1 length=length) (element-type utf8) (transfer full):
* a %NULL-terminated string array or %NULL if the specified
* key cannot be found. The array should be freed with g_strfreev().
* a `NULL`-terminated string array or `NULL` if the specified
* key cannot be found. The array should be freed with [func@GLib.strfreev].
*
* Since: 2.60
*/
@ -5124,13 +5027,13 @@ g_desktop_app_info_get_string_list (GDesktopAppInfo *info,
/**
* g_desktop_app_info_has_key:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @key: the key to look up
*
* Returns whether @key exists in the "Desktop Entry" group
* Returns whether @key exists in the `Desktop Entry` group
* of the keyfile backing @info.
*
* Returns: %TRUE if the @key exists
* Returns: `TRUE` if the @key exists
*
* Since: 2.36
*/
@ -5148,15 +5051,17 @@ g_desktop_app_info_has_key (GDesktopAppInfo *info,
/**
* g_desktop_app_info_list_actions:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
*
* Returns the list of "additional application actions" supported on the
* desktop file, as per the desktop file specification.
* Returns the list of
* [additional application actions](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html)
* supported on the desktop file, as per the desktop file specification.
*
* As per the specification, this is the list of actions that are
* explicitly listed in the "Actions" key of the [Desktop Entry] group.
* explicitly listed in the `Actions` key of the `Desktop Entry` group.
*
* Returns: (array zero-terminated=1) (element-type utf8) (transfer none): a list of strings, always non-%NULL
* Returns: (array zero-terminated=1) (element-type utf8) (transfer none): a
* list of strings, always non-`NULL`
*
* Since: 2.38
**/
@ -5183,14 +5088,15 @@ app_info_has_action (GDesktopAppInfo *info,
/**
* g_desktop_app_info_get_action_name:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @action_name: the name of the action as from
* g_desktop_app_info_list_actions()
* [method@Gio.DesktopAppInfo.list_actions]
*
* Gets the user-visible display name of the "additional application
* action" specified by @action_name.
* Gets the user-visible display name of the
* [additional application actions](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html)
* specified by @action_name.
*
* This corresponds to the "Name" key within the keyfile group for the
* This corresponds to the `Name` key within the keyfile group for the
* action.
*
* Returns: (transfer full): the locale-specific action name
@ -5225,25 +5131,26 @@ g_desktop_app_info_get_action_name (GDesktopAppInfo *info,
/**
* g_desktop_app_info_launch_action:
* @info: a #GDesktopAppInfo
* @info: a [class@Gio.DesktopAppInfo]
* @action_name: the name of the action as from
* g_desktop_app_info_list_actions()
* @launch_context: (nullable): a #GAppLaunchContext
* [method@Gio.DesktopAppInfo.list_actions]
* @launch_context: (nullable): a [class@Gio.AppLaunchContext]
*
* Activates the named application action.
*
* You may only call this function on action names that were
* returned from g_desktop_app_info_list_actions().
* returned from [method@Gio.DesktopAppInfo.list_actions].
*
* Note that if the main entry of the desktop file indicates that the
* application supports startup notification, and @launch_context is
* non-%NULL, then startup notification will be used when activating the
* non-`NULL`, then startup notification will be used when activating the
* action (and as such, invocation of the action on the receiving side
* must signal the end of startup notification when it is completed).
* This is the expected behaviour of applications declaring additional
* actions, as per the desktop file specification.
* actions, as per the
* [desktop file specification](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html).
*
* As with g_app_info_launch() there is no way to detect failures that
* As with [method@Gio.AppInfo.launch] there is no way to detect failures that
* occur while using this function.
*
* Since: 2.38

View File

@ -22,6 +22,7 @@
#include "config.h"
#include "gappinfo.h"
#include "gappinfoprivate.h"
#include "gosxappinfo.h"
#include "gcontenttype.h"
#include "gfile.h"
@ -577,10 +578,10 @@ g_osx_app_info_iface_init (GAppInfoIface *iface)
}
GAppInfo *
g_app_info_create_from_commandline (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
g_app_info_create_from_commandline_impl (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
{
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
"Creating an app info from a command line not currently supported");
@ -622,7 +623,7 @@ g_osx_app_info_get_all_for_scheme (const char *cscheme)
}
GList *
g_app_info_get_all_for_type (const char *content_type)
g_app_info_get_all_for_type_impl (const char *content_type)
{
gchar *mime_type;
CFArrayRef bundle_list;
@ -667,20 +668,20 @@ g_app_info_get_all_for_type (const char *content_type)
}
GList *
g_app_info_get_recommended_for_type (const char *content_type)
g_app_info_get_recommended_for_type_impl (const char *content_type)
{
return g_app_info_get_all_for_type (content_type);
}
GList *
g_app_info_get_fallback_for_type (const char *content_type)
g_app_info_get_fallback_for_type_impl (const char *content_type)
{
return g_app_info_get_all_for_type (content_type);
}
GAppInfo *
g_app_info_get_default_for_type (const char *content_type,
gboolean must_support_uris)
g_app_info_get_default_for_type_impl (const char *content_type,
gboolean must_support_uris)
{
gchar *mime_type;
CFStringRef type;
@ -731,7 +732,7 @@ g_app_info_get_default_for_type (const char *content_type,
}
GAppInfo *
g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
g_app_info_get_default_for_uri_scheme_impl (const char *uri_scheme)
{
CFStringRef scheme, bundle_id;
NSBundle *bundle;
@ -756,7 +757,7 @@ g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
}
GList *
g_app_info_get_all (void)
g_app_info_get_all_impl (void)
{
/* There is no API for this afaict
* could manually do it...
@ -765,6 +766,6 @@ g_app_info_get_all (void)
}
void
g_app_info_reset_type_associations (const char *content_type)
g_app_info_reset_type_associations_impl (const char *content_type)
{
}

View File

@ -29,6 +29,7 @@
#include <string.h>
#include "gcontenttype.h"
#include "gappinfoprivate.h"
#include "gwin32appinfo.h"
#include "gappinfo.h"
#include "gioerror.h"
@ -5671,10 +5672,10 @@ g_win32_app_info_get_supported_types (GAppInfo *appinfo)
}
GAppInfo *
g_app_info_create_from_commandline (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
g_app_info_create_from_commandline_impl (const char *commandline,
const char *application_name,
GAppInfoCreateFlags flags,
GError **error)
{
GWin32AppInfo *info;
GWin32AppInfoApplication *app;
@ -5754,7 +5755,7 @@ g_win32_app_info_iface_init (GAppInfoIface *iface)
}
GAppInfo *
g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
g_app_info_get_default_for_uri_scheme_impl (const char *uri_scheme)
{
GWin32AppInfoURLSchema *scheme = NULL;
char *scheme_down;
@ -5796,8 +5797,8 @@ g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
}
GAppInfo *
g_app_info_get_default_for_type (const char *content_type,
gboolean must_support_uris)
g_app_info_get_default_for_type_impl (const char *content_type,
gboolean must_support_uris)
{
GWin32AppInfoFileExtension *ext = NULL;
char *ext_down;
@ -5858,7 +5859,7 @@ g_app_info_get_default_for_type (const char *content_type,
}
GList *
g_app_info_get_all (void)
g_app_info_get_all_impl (void)
{
GHashTableIter iter;
gpointer value;
@ -5887,7 +5888,7 @@ g_app_info_get_all (void)
}
GList *
g_app_info_get_all_for_type (const char *content_type)
g_app_info_get_all_for_type_impl (const char *content_type)
{
GWin32AppInfoFileExtension *ext = NULL;
char *ext_down;
@ -5957,21 +5958,21 @@ g_app_info_get_all_for_type (const char *content_type)
}
GList *
g_app_info_get_fallback_for_type (const gchar *content_type)
g_app_info_get_fallback_for_type_impl (const gchar *content_type)
{
/* TODO: fix this once gcontenttype support is improved */
return g_app_info_get_all_for_type (content_type);
}
GList *
g_app_info_get_recommended_for_type (const gchar *content_type)
g_app_info_get_recommended_for_type_impl (const gchar *content_type)
{
/* TODO: fix this once gcontenttype support is improved */
return g_app_info_get_all_for_type (content_type);
}
void
g_app_info_reset_type_associations (const char *content_type)
g_app_info_reset_type_associations_impl (const char *content_type)
{
/* nothing to do */
}

View File

@ -392,7 +392,7 @@ if host_system != 'windows'
if glib_have_cocoa
settings_sources += files('gnextstepsettingsbackend.m')
contenttype_sources += files('gosxcontenttype.m')
contenttype_sources += files('gcontenttype-osx.m')
unix_sources += files('gosxappinfo.m')
framework_dep = dependency('appleframeworks', modules : ['Foundation', 'CoreFoundation', 'AppKit'])
platform_deps += [framework_dep]
@ -405,7 +405,7 @@ if host_system != 'windows'
)
application_headers += files('gosxappinfo.h')
else
contenttype_sources += files('gcontenttype.c')
contenttype_sources += files('gcontenttype-fdo.c')
unix_sources += files('gdesktopappinfo.c')
gio_unix_include_headers += files('gdesktopappinfo.h')
launch_desktop_sources = files('gio-launch-desktop.c')
@ -489,6 +489,7 @@ gio_base_sources = files(
'gbytesicon.c',
'gcancellable.c',
'gcharsetconverter.c',
'gcontenttype.c',
'gcontextspecificgroup.c',
'gconverter.c',
'gconverterinputstream.c',

View File

@ -12,7 +12,7 @@ gio/gbufferedoutputstream.c
gio/gbytesicon.c
gio/gcancellable.c
gio/gcharsetconverter.c
gio/gcontenttype.c
gio/gcontenttype-fdo.c
gio/gcontenttype-win32.c
gio/gconverter.c
gio/gconverterinputstream.c

View File

@ -896,7 +896,7 @@
fun:g_get_home_dir
}
# gcontenttype.c caches a one-time allocation global array of @global_mime_dirs.
# gcontenttype-fdo.c caches a one-time allocation global array of @global_mime_dirs.
{
content_type_mime_dirs_realloc
Memcheck:Leak