Your message dated Sun, 28 Jan 2018 09:29:17 +0100
with message-id <[email protected]>
and subject line Re: xchat: Add GUI option to select spell check language 
(libsexy)
has caused the Debian Bug report #811008,
regarding xchat: Add GUI option to select spell check language (libsexy)
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
811008: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811008
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: xchat
Version: 2.8.8-7.3+b2
Severity: wishlist

This patch adds a dropdown menu that lists all available libsexy
dictionaries and lets the user select which one to be used.

-- System Information:
Debian Release: stretch/sid
  APT prefers testing-updates
  APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.3.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=es_AR.utf8, LC_CTYPE=es_AR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages xchat depends on:
ii  libatk1.0-0          2.18.0-1
ii  libc6                2.21-6
ii  libcairo2            1.14.4-1
ii  libdbus-1-3          1.10.6-1
ii  libdbus-glib-1-2     0.102-1
ii  libfontconfig1       2.11.0-6.3
ii  libfreetype6         2.6.1-0.1
ii  libgdk-pixbuf2.0-0   2.32.3-1
ii  libglib2.0-0         2.46.2-3
ii  libgtk2.0-0          2.24.29-1
ii  libpango-1.0-0       1.38.1-1
ii  libpangocairo-1.0-0  1.38.1-1
ii  libpangoft2-1.0-0    1.38.1-1
ii  libperl5.22          5.22.1-3
ii  libsexy2             0.1.11-2.1
ii  libssl1.0.2          1.0.2e-1
ii  libx11-6             2:1.6.3-1
ii  xchat-common         2.8.8-7.3

Versions of packages xchat recommends:
ii  alsa-utils     1.0.29-1+b1
ii  libnotify-bin  0.7.6-2
ii  libnotify4     0.7.6-2
ii  libpython2.7   2.7.11-2
ii  libtcl8.6      8.6.4+dfsg-2
ii  xdg-utils      1.1.1-1
ii  zlib1g         1:1.2.8.dfsg-2+b1

xchat suggests no packages.

-- no debconf information
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -428,6 +428,7 @@
        {"gui_dialog_width", P_OFFINT (dialog_width), TYPE_INT},
        {"gui_hide_menu", P_OFFINT (hidemenu), TYPE_BOOL},
        {"gui_input_spell", P_OFFINT (gui_input_spell), TYPE_BOOL},
+       {"gui_input_spell_dict", P_OFFSET (gui_input_spell_dict), TYPE_STR},
        {"gui_input_style", P_OFFINT (style_inputbox), TYPE_BOOL},
        {"gui_join_dialog", P_OFFINT (gui_join_dialog), TYPE_BOOL},
        {"gui_lagometer", P_OFFINT (lagometer), TYPE_INT},
--- a/src/common/xchat.h
+++ b/src/common/xchat.h
@@ -276,6 +276,7 @@
        unsigned int auto_indent;
        unsigned int wordwrap;
        unsigned int gui_input_spell;
+       char gui_input_spell_dict[6];   /* Dicts. are at most "xx_XX". */
        unsigned int gui_tray;
        unsigned int gui_tray_flags;
        unsigned int gui_tweaks;
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -2863,6 +2863,20 @@
 #else
 #ifdef USE_LIBSEXY
        gui->input_box = entry = sexy_spell_entry_new ();
+       /* By default, the language set on the environment is enabled.
+       We want to try and select the one in the settings, so we disable it. */
+       sexy_spell_entry_deactivate_language((SexySpellEntry *)entry, NULL);
+
+       gboolean valid_dict = sexy_spell_entry_activate_language 
((SexySpellEntry *)entry,
+                                                                               
        (gchar *)prefs.gui_input_spell_dict, NULL);
+
+       /* If there is no dictionary selected in the settings, or if it is not
+       valid, we fall back to the default. */
+       if (valid_dict == FALSE) {
+               printf("Setting default because option failed. \n");
+               sexy_spell_entry_activate_default_languages((SexySpellEntry 
*)entry);
+       }
+
        sexy_spell_entry_set_checked ((SexySpellEntry *)entry, 
prefs.gui_input_spell);
 #else
        gui->input_box = entry = gtk_entry_new ();
--- a/src/fe-gtk/setup.c
+++ b/src/fe-gtk/setup.c
@@ -85,7 +85,8 @@
        ST_HSCALE,
        ST_HEADER,
        ST_LABEL,
-       ST_ALERTHEAD
+       ST_ALERTHEAD,
+       ST_DICT_MENU
 };
 
 typedef struct
@@ -125,7 +126,12 @@
        {ST_END, 0, 0, 0, 0, 0}
 };
 
-static const char *const tabcompmenu[] = 
+static const char* const dict_empty_list[] =
+{
+       NULL
+};
+
+static const char *const tabcompmenu[] =
 {
        N_("A-Z"),
        N_("Last-spoke order"),
@@ -139,6 +145,9 @@
 #if defined(USE_GTKSPELL) || defined(USE_LIBSEXY)
        {ST_TOGGLE, N_("Spell checking"), P_OFFINTNL(gui_input_spell),0,0,0},
 #endif
+#ifdef USE_LIBSEXY
+       {ST_DICT_MENU, "Dictionary:", P_OFFSETNL(gui_input_spell_dict), 0, 
dict_empty_list, 0},
+#endif
 
        {ST_HEADER, N_("Nick Completion"),0,0,0},
        {ST_TOGGLE, N_("Automatic nick completion (without TAB key)"), 
P_OFFINTNL(nickcompletion),
@@ -155,7 +164,7 @@
        {ST_END, 0, 0, 0, 0, 0}
 };
 
-/*static const char *const lagmenutext[] = 
+/*static const char *const lagmenutext[] =
 {
        N_("Off"),
        N_("Graph"),
@@ -164,7 +173,7 @@
        NULL
 };*/
 
-static const char *const ulmenutext[] = 
+static const char *const ulmenutext[] =
 {
        N_("A-Z, Ops first"),
        N_("A-Z"),
@@ -288,11 +297,11 @@
        {ST_ENTRY,      N_("DCC IP address:"), P_OFFSETNL(dcc_ip_str),
                                        N_("Claim you are at this address when 
offering files."), 0, sizeof prefs.dcc_ip_str},
        {ST_NUMBER,     N_("First DCC send port:"), 
P_OFFINTNL(first_dcc_send_port), 0, 0, 65535},
-       {ST_NUMBER,     N_("Last DCC send port:"), 
P_OFFINTNL(last_dcc_send_port), 0, 
+       {ST_NUMBER,     N_("Last DCC send port:"), 
P_OFFINTNL(last_dcc_send_port), 0,
                (const char **)N_("!Leave ports at zero for full range."), 
65535},
 
        {ST_HEADER, N_("Maximum File Transfer Speeds (bytes per second)"), 0, 
0, 0},
-       {ST_NUMBER,     N_("One upload:"), P_OFFINTNL(dcc_max_send_cps), 
+       {ST_NUMBER,     N_("One upload:"), P_OFFINTNL(dcc_max_send_cps),
                                        N_("Maximum speed for one transfer"), 
0, 1000000},
        {ST_NUMBER,     N_("One download:"), P_OFFINTNL(dcc_max_get_cps),
                                        N_("Maximum speed for one transfer"), 
0, 1000000},
@@ -443,7 +452,7 @@
 
 #define setup_get_str(pr,set) (((char *)pr)+set->offset)
 #define setup_get_int(pr,set) *(((int *)pr)+set->offset)
-#define setup_get_int3(pr,off) *(((int *)pr)+off) 
+#define setup_get_int3(pr,off) *(((int *)pr)+off)
 
 #define setup_set_int(pr,set,num) *((int *)pr+set->offset)=num
 #define setup_set_str(pr,set,str) strcpy(((char *)pr)+set->offset,str)
@@ -854,6 +863,63 @@
                                                        GTK_EXPAND | GTK_FILL, 
GTK_SHRINK | GTK_FILL, 0, 0);
 }
 
+#ifdef USE_LIBSEXY
+static void
+spell_dictionary_changed (GtkComboBox *cbox, const setting *set)
+{
+       if (gtk_combo_box_get_active(cbox) == 0)
+       {
+               /* The first item is the default (determine from the 
environment). */
+               setup_set_str(&setup_prefs, set, "");
+       }
+       else
+       {
+               gchar *option = gtk_combo_box_get_active_text (cbox);
+               setup_set_str(&setup_prefs, set, option);
+               g_free(option);
+       }
+}
+
+static void setup_create_dict_menu (GtkWidget *table, int row, const setting 
*set)
+{
+       GtkWidget *cbox, *box;
+
+       cbox = gtk_combo_box_new_text ();
+
+       /* Get all available dictionaries. */
+       SexySpellEntry *entry = (SexySpellEntry *)current_sess->gui->input_box;
+       GSList* langs = sexy_spell_entry_get_languages((const SexySpellEntry 
*)entry);
+       /* Get selected dictionary from the settings. */
+       const char* const selected_option = setup_get_str (&setup_prefs, set);
+       /* Default option: no dictionary selected. */
+       gtk_combo_box_append_text(GTK_COMBO_BOX(cbox), "-");
+       unsigned int default_index = 0;
+
+       /* Populating the menu with the available dictionaries... */
+       unsigned int dict_index = 1;
+       for (GSList* l = langs; l; l = g_slist_next(l)) {
+               gtk_combo_box_append_text(GTK_COMBO_BOX(cbox), _(l->data));
+
+               if (strcmp(_(l->data), selected_option) == 0) {
+                       /* Set the focus on the one selected in the settings. */
+                       default_index = dict_index;
+               }
+               dict_index++;
+       }
+
+       gtk_combo_box_set_active (GTK_COMBO_BOX (cbox), default_index);
+       g_signal_connect (G_OBJECT (cbox), "changed",
+                                               G_CALLBACK 
(spell_dictionary_changed), (gpointer)set);
+
+       box = gtk_hbox_new (0, 0);
+       gtk_box_pack_start (GTK_BOX (box), cbox, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE (table), box, 2, 3, row, row + 1,
+                                                       GTK_EXPAND | GTK_FILL, 
GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0);
+
+       g_slist_free_full (langs, g_free);
+}
+#endif
+
 static void
 setup_filereq_cb (GtkWidget *entry, char *file)
 {
@@ -996,7 +1062,7 @@
        if (set->offset == P_OFFSETNL(proxy_user))
                proxy_user = wid;
        if (set->offset == P_OFFSETNL(proxy_pass))
-               proxy_pass = wid; 
+               proxy_pass = wid;
 
        /* only http and Socks5 can auth */
        if ( (set->offset == P_OFFSETNL(proxy_pass) ||
@@ -1128,6 +1194,11 @@
                        break;
                case ST_ALERTHEAD:
                        setup_create_alert_header (tab, row, &set[i]);
+                       break;
+#ifdef USE_LIBSEXY
+               case ST_DICT_MENU:
+                       setup_create_dict_menu(tab, row, &set[i]);
+#endif
                }
 
                /* will this toggle disable the "next" widget? */
@@ -1149,9 +1220,9 @@
 #if 0
        if (set == general_settings)
        {
-               setup_create_id_menu (tab, _("Mark identified users with:"),    
+               setup_create_id_menu (tab, _("Mark identified users with:"),
                                                                         row, 
setup_prefs.irc_id_ytext);
-               setup_create_id_menu (tab, _("Mark not-identified users 
with:"),        
+               setup_create_id_menu (tab, _("Mark not-identified users with:"),
                                                                         row + 
1, setup_prefs.irc_id_ntext);
        }
 #endif
@@ -1891,7 +1962,15 @@
 #endif
 
 #ifdef USE_LIBSEXY
-       sexy_spell_entry_set_checked ((SexySpellEntry *)gui->input_box, 
prefs.gui_input_spell);
+       SexySpellEntry *entry = (SexySpellEntry *)gui->input_box;
+       sexy_spell_entry_deactivate_language(entry, NULL);
+
+       if (prefs.gui_input_spell_dict[0] != '\0')
+               sexy_spell_entry_activate_language(entry,(gchar 
*)prefs.gui_input_spell_dict, NULL);
+       else
+               sexy_spell_entry_activate_default_languages(entry);
+
+       sexy_spell_entry_set_checked (entry, prefs.gui_input_spell);
 #endif
 }
 

--- End Message ---
--- Begin Message ---
On Thu, 14 Jan 2016 16:27:52 -0300 Santiago Gil <[email protected]> wrote:
> Package: xchat
> Version: 2.8.8-7.3+b2
> Severity: wishlist
> 
> This patch adds a dropdown menu that lists all available libsexy
> dictionaries and lets the user select which one to be used.
> 


libsexy is not a thing anymore

G.

> -- System Information:
> Debian Release: stretch/sid
>   APT prefers testing-updates
>   APT policy: (500, 'testing-updates'), (500, 'testing')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> 
> Kernel: Linux 4.3.0-1-amd64 (SMP w/2 CPU cores)
> Locale: LANG=es_AR.utf8, LC_CTYPE=es_AR.utf8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
> Init: systemd (via /run/systemd/system)
> 
> Versions of packages xchat depends on:
> ii  libatk1.0-0          2.18.0-1
> ii  libc6                2.21-6
> ii  libcairo2            1.14.4-1
> ii  libdbus-1-3          1.10.6-1
> ii  libdbus-glib-1-2     0.102-1
> ii  libfontconfig1       2.11.0-6.3
> ii  libfreetype6         2.6.1-0.1
> ii  libgdk-pixbuf2.0-0   2.32.3-1
> ii  libglib2.0-0         2.46.2-3
> ii  libgtk2.0-0          2.24.29-1
> ii  libpango-1.0-0       1.38.1-1
> ii  libpangocairo-1.0-0  1.38.1-1
> ii  libpangoft2-1.0-0    1.38.1-1
> ii  libperl5.22          5.22.1-3
> ii  libsexy2             0.1.11-2.1
> ii  libssl1.0.2          1.0.2e-1
> ii  libx11-6             2:1.6.3-1
> ii  xchat-common         2.8.8-7.3
> 
> Versions of packages xchat recommends:
> ii  alsa-utils     1.0.29-1+b1
> ii  libnotify-bin  0.7.6-2
> ii  libnotify4     0.7.6-2
> ii  libpython2.7   2.7.11-2
> ii  libtcl8.6      8.6.4+dfsg-2
> ii  xdg-utils      1.1.1-1
> ii  zlib1g         1:1.2.8.dfsg-2+b1
> 
> xchat suggests no packages.
> 
> -- no debconf information

Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---

Reply via email to