|
Packit |
aa0600 |
/*
|
|
Packit |
aa0600 |
* This file is part of gspell, a spell-checking library.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* Copyright 2015, 2016 - Sébastien Wilmet <swilmet@gnome.org>
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
aa0600 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
aa0600 |
* License as published by the Free Software Foundation; either
|
|
Packit |
aa0600 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
aa0600 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
aa0600 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
aa0600 |
* Lesser General Public License for more details.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit |
aa0600 |
* along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
aa0600 |
#include <config.h>
|
|
Packit |
aa0600 |
#endif
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
#include "gspell-language-chooser.h"
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* SECTION:language-chooser
|
|
Packit |
aa0600 |
* @Short_description: Interface to choose a GspellLanguage
|
|
Packit |
aa0600 |
* @Title: GspellLanguageChooser
|
|
Packit |
aa0600 |
* @See_also: #GspellLanguage, #GspellLanguageChooserButton, #GspellLanguageChooserDialog
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* #GspellLanguageChooser is an interface that is implemented by widgets for
|
|
Packit |
aa0600 |
* choosing a #GspellLanguage.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* There are two properties: #GspellLanguageChooser:language and
|
|
Packit |
aa0600 |
* #GspellLanguageChooser:language-code. They are kept in sync. The former is
|
|
Packit |
aa0600 |
* useful, for example, to bind it to the #GspellChecker's language property
|
|
Packit |
aa0600 |
* with g_object_bind_property(). The latter is useful to bind it to a
|
|
Packit |
aa0600 |
* #GSettings key with g_settings_bind().
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* When setting the language, %NULL or the empty string can be passed to pick
|
|
Packit |
aa0600 |
* the default language. In that case, the #GspellLanguageChooser:language-code
|
|
Packit |
aa0600 |
* property will contain the empty string, whereas the
|
|
Packit |
aa0600 |
* #GspellLanguageChooser:language property will contain the actual
|
|
Packit |
aa0600 |
* #GspellLanguage as returned by gspell_language_get_default(). If the user
|
|
Packit |
aa0600 |
* launches the #GspellLanguageChooser and chooses explicitly a language, then
|
|
Packit |
aa0600 |
* the #GspellLanguageChooser:language-code property will no longer be empty,
|
|
Packit |
aa0600 |
* even if it is the same language as the default language.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* Note that if an explicit language (non-%NULL or not the empty string) is set
|
|
Packit |
aa0600 |
* to the #GspellLanguageChooser, then the #GspellLanguageChooser:language-code
|
|
Packit |
aa0600 |
* property will not be empty, it will contain the language code of the passed
|
|
Packit |
aa0600 |
* language, even if the language is the same as the default language.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* Thus, a good default value for a #GSettings key is the empty string. That
|
|
Packit |
aa0600 |
* way, the default language is picked, and can change depending on the locale.
|
|
Packit |
aa0600 |
* But once the user has chosen a language, that language is kept in the
|
|
Packit |
aa0600 |
* #GSettings key.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
G_DEFINE_INTERFACE (GspellLanguageChooser, gspell_language_chooser, G_TYPE_OBJECT)
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
static void
|
|
Packit |
aa0600 |
gspell_language_chooser_default_init (GspellLanguageChooserInterface *interface)
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* GspellLanguageChooser:language:
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* The selected #GspellLanguage.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
g_object_interface_install_property (interface,
|
|
Packit |
aa0600 |
g_param_spec_boxed ("language",
|
|
Packit |
aa0600 |
"Language",
|
|
Packit |
aa0600 |
"",
|
|
Packit |
aa0600 |
GSPELL_TYPE_LANGUAGE,
|
|
Packit |
aa0600 |
G_PARAM_READWRITE |
|
|
Packit |
aa0600 |
G_PARAM_STATIC_STRINGS));
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* GspellLanguageChooser:language-code:
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* The empty string if the default language was set and the selection
|
|
Packit |
aa0600 |
* hasn't changed. Or the language code if an explicit language was set
|
|
Packit |
aa0600 |
* or if the selection has changed.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
g_object_interface_install_property (interface,
|
|
Packit |
aa0600 |
g_param_spec_string ("language-code",
|
|
Packit |
aa0600 |
"Language Code",
|
|
Packit |
aa0600 |
"",
|
|
Packit |
aa0600 |
"",
|
|
Packit |
aa0600 |
G_PARAM_READWRITE |
|
|
Packit |
aa0600 |
G_PARAM_STATIC_STRINGS));
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* gspell_language_chooser_get_language:
|
|
Packit |
aa0600 |
* @chooser: a #GspellLanguageChooser.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* Returns: (nullable): the selected #GspellLanguage, or %NULL if no
|
|
Packit |
aa0600 |
* dictionaries are available.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
const GspellLanguage *
|
|
Packit |
aa0600 |
gspell_language_chooser_get_language (GspellLanguageChooser *chooser)
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
g_return_val_if_fail (GSPELL_IS_LANGUAGE_CHOOSER (chooser), NULL);
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
return GSPELL_LANGUAGE_CHOOSER_GET_IFACE (chooser)->get_language_full (chooser, NULL);
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* gspell_language_chooser_set_language:
|
|
Packit |
aa0600 |
* @chooser: a #GspellLanguageChooser.
|
|
Packit |
aa0600 |
* @language: (nullable): a #GspellLanguage or %NULL to pick the default
|
|
Packit |
aa0600 |
* language.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* Sets the selected language.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
void
|
|
Packit |
aa0600 |
gspell_language_chooser_set_language (GspellLanguageChooser *chooser,
|
|
Packit |
aa0600 |
const GspellLanguage *language)
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
g_return_if_fail (GSPELL_IS_LANGUAGE_CHOOSER (chooser));
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
GSPELL_LANGUAGE_CHOOSER_GET_IFACE (chooser)->set_language (chooser, language);
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* gspell_language_chooser_get_language_code:
|
|
Packit |
aa0600 |
* @chooser: a #GspellLanguageChooser.
|
|
Packit |
aa0600 |
*
|
|
Packit |
aa0600 |
* Returns: the #GspellLanguageChooser:language-code. It cannot be %NULL.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
const gchar *
|
|
Packit |
aa0600 |
gspell_language_chooser_get_language_code (GspellLanguageChooser *chooser)
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
const GspellLanguage *lang;
|
|
Packit |
aa0600 |
gboolean default_lang = TRUE;
|
|
Packit |
aa0600 |
const gchar *language_code;
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
g_return_val_if_fail (GSPELL_IS_LANGUAGE_CHOOSER (chooser), "");
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
lang = GSPELL_LANGUAGE_CHOOSER_GET_IFACE (chooser)->get_language_full (chooser, &default_lang);
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
if (default_lang || lang == NULL)
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
return "";
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
language_code = gspell_language_get_code (lang);
|
|
Packit |
aa0600 |
g_return_val_if_fail (language_code != NULL, "");
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
return language_code;
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/**
|
|
Packit |
aa0600 |
* gspell_language_chooser_set_language_code:
|
|
Packit |
aa0600 |
* @chooser: a #GspellLanguageChooser.
|
|
Packit |
aa0600 |
* @language_code: (nullable): a language code, or the empty string or %NULL to
|
|
Packit |
aa0600 |
* pick the default language.
|
|
Packit |
aa0600 |
*/
|
|
Packit |
aa0600 |
void
|
|
Packit |
aa0600 |
gspell_language_chooser_set_language_code (GspellLanguageChooser *chooser,
|
|
Packit |
aa0600 |
const gchar *language_code)
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
const GspellLanguage *lang = NULL;
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
g_return_if_fail (GSPELL_IS_LANGUAGE_CHOOSER (chooser));
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
if (language_code != NULL && language_code[0] != '\0')
|
|
Packit |
aa0600 |
{
|
|
Packit |
aa0600 |
lang = gspell_language_lookup (language_code);
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
GSPELL_LANGUAGE_CHOOSER_GET_IFACE (chooser)->set_language (chooser, lang);
|
|
Packit |
aa0600 |
}
|
|
Packit |
aa0600 |
|
|
Packit |
aa0600 |
/* ex:set ts=8 noet: */
|