/*
* gtkappchooser.c: app-chooser interface
*
* Copyright (C) 2010 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library. If not, see .
*
* Authors: Cosimo Cecchi
*/
/**
* GtkAppChooser:
*
* `GtkAppChooser` is an interface for widgets which allow the user to
* choose an application.
*
* The main objects that implement this interface are
* [class@Gtk.AppChooserWidget],
* [class@Gtk.AppChooserDialog] and [class@Gtk.AppChooserButton].
*
* Applications are represented by GIO `GAppInfo` objects here.
* GIO has a concept of recommended and fallback applications for a
* given content type. Recommended applications are those that claim
* to handle the content type itself, while fallback also includes
* applications that handle a more generic content type. GIO also
* knows the default and last-used application for a given content
* type. The `GtkAppChooserWidget` provides detailed control over
* whether the shown list of applications should include default,
* recommended or fallback applications.
*
* To obtain the application that has been selected in a `GtkAppChooser`,
* use [method@Gtk.AppChooser.get_app_info].
*/
#include "config.h"
#include "gtkappchooser.h"
#include "gtkintl.h"
#include "gtkappchooserprivate.h"
#include "gtkwidget.h"
#include
G_DEFINE_INTERFACE (GtkAppChooser, gtk_app_chooser, GTK_TYPE_WIDGET);
static void
gtk_app_chooser_default_init (GtkAppChooserIface *iface)
{
GParamSpec *pspec;
/**
* GtkAppChooser:content-type: (attributes org.gtk.Property.get=gtk_app_chooser_get_content_type)
*
* The content type of the `GtkAppChooser` object.
*
* See `GContentType` for more information about content types.
*/
pspec = g_param_spec_string ("content-type",
P_("Content type"),
P_("The content type used by the open with object"),
NULL,
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS);
g_object_interface_install_property (iface, pspec);
}
/**
* gtk_app_chooser_get_content_type: (attributes org.gtk.Method.get_property=content-type)
* @self: a `GtkAppChooser`
*
* Returns the content type for which the `GtkAppChooser`
* shows applications.
*
* Returns: the content type of @self. Free with g_free()
*/
char *
gtk_app_chooser_get_content_type (GtkAppChooser *self)
{
char *retval = NULL;
g_return_val_if_fail (GTK_IS_APP_CHOOSER (self), NULL);
g_object_get (self,
"content-type", &retval,
NULL);
return retval;
}
/**
* gtk_app_chooser_get_app_info:
* @self: a `GtkAppChooser`
*
* Returns the currently selected application.
*
* Returns: (nullable) (transfer full): a `GAppInfo` for the
* currently selected application, or %NULL if none is selected.
* Free with g_object_unref()
*/
GAppInfo *
gtk_app_chooser_get_app_info (GtkAppChooser *self)
{
return GTK_APP_CHOOSER_GET_IFACE (self)->get_app_info (self);
}
/**
* gtk_app_chooser_refresh:
* @self: a `GtkAppChooser`
*
* Reloads the list of applications.
*/
void
gtk_app_chooser_refresh (GtkAppChooser *self)
{
GTK_APP_CHOOSER_GET_IFACE (self)->refresh (self);
}