[gnome-subtitles] #147 - Improved message in the Set Languages dialog
- From: Pedro Castro <pcastro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-subtitles] #147 - Improved message in the Set Languages dialog
- Date: Wed, 1 Jan 2020 20:21:44 +0000 (UTC)
commit a19c4b2b7ac24f45b1a13d6ed3ded70fd27c5f20
Author: Pedro Castro <pedro gnomesubtitles org>
Date: Wed Jan 1 20:21:20 2020 +0000
#147 - Improved message in the Set Languages dialog
src/GnomeSubtitles/Core/SpellLanguages.cs | 51 ++++++++++++++++---------
src/GnomeSubtitles/Dialog/SetLanguagesDialog.cs | 7 ++--
2 files changed, 37 insertions(+), 21 deletions(-)
---
diff --git a/src/GnomeSubtitles/Core/SpellLanguages.cs b/src/GnomeSubtitles/Core/SpellLanguages.cs
index 020ffce..746aae2 100644
--- a/src/GnomeSubtitles/Core/SpellLanguages.cs
+++ b/src/GnomeSubtitles/Core/SpellLanguages.cs
@@ -1,6 +1,6 @@
/*
* This file is part of Gnome Subtitles.
- * Copyright (C) 2008-2019 Pedro Castro
+ * Copyright (C) 2008-2020 Pedro Castro
*
* Gnome Subtitles is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,17 +29,23 @@ namespace GnomeSubtitles.Core {
/* Delegates */
public delegate void LanguageListHandler (string langTag, string providerName, string providerDesc, string
providerFile, IntPtr userdata);
+public delegate void ProviderListHandler (string providerName, string providerDesc, string providerFile,
IntPtr userdata);
+
public class SpellLanguages {
private bool enabled = false;
+ private ArrayList providers = null;
private ArrayList languages = null;
private int activeTextLanguageIndex = -1;
private int activeTranslationLanguageIndex = -1;
private LanguageListHandler languageListHandler = null;
+ private ProviderListHandler providerListHandler = null;
public SpellLanguages () {
languageListHandler = OnLanguageList;
- GetAvailableLanguages();
+ providerListHandler = OnProviderList;
+
+ Init();
GetEnabledFromConfig();
}
@@ -51,13 +57,12 @@ public class SpellLanguages {
/* Public members */
- public ArrayList Languages {
- get {
- if (languages == null)
- GetAvailableLanguages();
+ public ArrayList Providers {
+ get { return providers; }
+ }
- return languages;
- }
+ public ArrayList Languages {
+ get { return languages; }
}
public int ActiveTextLanguageIndex {
@@ -153,27 +158,38 @@ public class SpellLanguages {
[DllImport ("libenchant")]
static extern void enchant_broker_list_dicts (IntPtr broker, LanguageListHandler cb, IntPtr userdata);
+ [DllImport ("libenchant")]
+ static extern void enchant_broker_describe (IntPtr broker, ProviderListHandler cb, IntPtr userdata);
+
/* Private members */
- private void GetAvailableLanguages () {
- if (languages == null)
- Init();
+ private void Init () {
+ /* Providers */
+ providers = new ArrayList();
+
+ /* Languages */
+ languages = new ArrayList();
+ activeTextLanguageIndex = -1;
+ activeTranslationLanguageIndex = -1;
- FillLanguages();
+ GetProvidersAndLanguages();
GetActiveLanguagesFromConfig();
}
- private void FillLanguages () {
+ private void GetProvidersAndLanguages () {
IntPtr broker = enchant_broker_init ();
if (broker == IntPtr.Zero)
return;
+ enchant_broker_describe (broker, providerListHandler, IntPtr.Zero);
+
enchant_broker_list_dicts (broker, languageListHandler, IntPtr.Zero);
enchant_broker_free(broker);
languages.Sort();
+ Logger.Info("[Spellcheck] Found {0} providers: {1}", providers.Count, string.Join(",",
providers.ToArray()));
Logger.Info("[Spellcheck] Found {0} languages: {1}", languages.Count,
GetLanguageIDsAsString(languages));
}
@@ -214,11 +230,6 @@ public class SpellLanguages {
return -1;
}
- private void Init () {
- languages = new ArrayList();
- activeTextLanguageIndex = -1;
- activeTranslationLanguageIndex = -1;
- }
/* Event members */
@@ -227,6 +238,10 @@ public class SpellLanguages {
if (!languages.Contains(language))
languages.Add(language);
}
+
+ private void OnProviderList (string providerName, string providerDesc, string providerFile, IntPtr
userdata) {
+ providers.Add(providerName);
+ }
private void EmitToggleEnabled () {
if (this.ToggleEnabled != null)
diff --git a/src/GnomeSubtitles/Dialog/SetLanguagesDialog.cs b/src/GnomeSubtitles/Dialog/SetLanguagesDialog.cs
index e3f7d8e..9a5393c 100644
--- a/src/GnomeSubtitles/Dialog/SetLanguagesDialog.cs
+++ b/src/GnomeSubtitles/Dialog/SetLanguagesDialog.cs
@@ -1,6 +1,6 @@
/*
* This file is part of Gnome Subtitles.
- * Copyright (C) 2008-2018 Pedro Castro
+ * Copyright (C) 2008-2020 Pedro Castro
*
* Gnome Subtitles is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -80,9 +80,10 @@ public class SetLanguagesDialog : BaseDialog {
/* Bottom: info message */
-
- Label bottomLabel = Util.CreateLabel("<i>" + Catalog.GetString("For additional languages
please install the corresponding package.") + "</i>", 0, 0);
+ string providers = string.Join(", ", Base.SpellLanguages.Providers.ToArray());
+ Label bottomLabel = Util.CreateLabel("<i>" + string.Format(Catalog.GetString("Use your
distro's package manager to install additional languages (tip: search for 'spell'). Supported language packs:
{0}."), providers) + "</i>", 0, 0);
bottomLabel.UseMarkup = true;
+ bottomLabel.Wrap = true;
grid.Attach(bottomLabel, 0, 2, 2, 1);
dialog.ContentArea.Add(grid);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]