From 85424d6b5dff6d5fb2fbdd3005276c507394c597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Arreola=20Rodr=C3=ADguez?= Date: Sat, 24 Jul 2021 01:23:42 -0500 Subject: [PATCH] Cambio los g_settings del encoding y proxy por configuraciones. --- src/terminal-app.c | 2 +- src/terminal-app.h | 4 +++ src/terminal-encoding.c | 9 +++--- src/terminal-util.c | 68 ++++++++++++++++++++++------------------- src/terminal-util.h | 10 +++--- 5 files changed, 52 insertions(+), 41 deletions(-) diff --git a/src/terminal-app.c b/src/terminal-app.c index b35f6ab..8011d86 100644 --- a/src/terminal-app.c +++ b/src/terminal-app.c @@ -942,7 +942,7 @@ encoding_mark_active (gpointer key, encoding->is_active = active; } -static void +void terminal_app_encoding_list_notify_cb (GKeyFile *settings, gchar *key, gpointer user_data) diff --git a/src/terminal-app.h b/src/terminal-app.h index 2b0e9e6..35601d8 100644 --- a/src/terminal-app.h +++ b/src/terminal-app.h @@ -155,6 +155,10 @@ gboolean terminal_app_save_config_file (TerminalApp *app, const char *file_name, GError **error); +void +terminal_app_encoding_list_notify_cb (GKeyFile *settings, + gchar *key, + gpointer user_data); G_END_DECLS #endif /* !TERMINAL_APP_H */ diff --git a/src/terminal-encoding.c b/src/terminal-encoding.c index 12f6edd..5f5847d 100644 --- a/src/terminal-encoding.c +++ b/src/terminal-encoding.c @@ -290,7 +290,7 @@ update_active_encodings_gsettings (void) GSList *list, *l; GArray *strings; const gchar *id_string; - GSettings *settings; + GKeyFile *settings; list = terminal_app_get_active_encodings (terminal_app_get ()); strings = g_array_new (TRUE, TRUE, sizeof (gchar *)); @@ -302,13 +302,14 @@ update_active_encodings_gsettings (void) strings = g_array_append_val (strings, id_string); } - settings = g_settings_new (CONF_GLOBAL_SCHEMA); - g_settings_set_strv (settings, "active-encodings", (const gchar **) strings->data); - g_object_unref (settings); + settings = terminal_app_get_global_settings (); + g_key_file_set_string_list (settings, CONF_GLOBAL_SCHEMA, "active-encodings", (const gchar **) strings->data, g_strv_length ((const gchar **) strings->data)); g_array_free (strings, TRUE); g_slist_foreach (list, (GFunc) terminal_encoding_unref, NULL); g_slist_free (list); + + terminal_app_encoding_list_notify_cb (settings, "active-encodings", terminal_app_get ()); } static void diff --git a/src/terminal-util.c b/src/terminal-util.c index 1ffb629..fc978fc 100644 --- a/src/terminal-util.c +++ b/src/terminal-util.c @@ -470,11 +470,12 @@ terminal_util_key_file_get_argv (GKeyFile *key_file, /* Proxy stuff */ static char * -gsettings_get_string (GSettings *settings, +gsettings_get_string (GKeyFile *settings, + const char *group, const char *key) { char *value; - value = g_settings_get_string (settings, key); + value = g_key_file_get_string (settings, group, key, NULL); if (G_UNLIKELY (value && *value == '\0')) { g_free (value); @@ -533,27 +534,27 @@ set_proxy_env (GHashTable *env_table, static void setup_http_proxy_env (GHashTable *env_table, - GSettings *settings_http) + GKeyFile *settings_global) { gchar *host; gint port; - - host = gsettings_get_string (settings_http, "host"); - port = g_settings_get_int (settings_http, "port"); + + host = gsettings_get_string (settings_global, CONF_HTTP_PROXY_SCHEMA, "host"); + port = g_key_file_get_integer (settings_global, CONF_HTTP_PROXY_SCHEMA, "port", NULL); if (host && port) { GString *buf = g_string_sized_new (64); g_string_append (buf, "http://"); - if (g_settings_get_boolean (settings_http, "use-authentication")) + if (g_key_file_get_boolean (settings_global, CONF_HTTP_PROXY_SCHEMA, "use-authentication", NULL)) { char *user, *password; - user = gsettings_get_string (settings_http, "authentication-user"); + user = gsettings_get_string (settings_global, CONF_HTTP_PROXY_SCHEMA, "authentication-user"); if (user) { g_string_append_uri_escaped (buf, user, NULL, TRUE); - password = gsettings_get_string (settings_http, "authentication-password"); + password = gsettings_get_string (settings_global, CONF_HTTP_PROXY_SCHEMA, "authentication-password"); if (password) { g_string_append_c (buf, ':'); @@ -573,9 +574,9 @@ setup_http_proxy_env (GHashTable *env_table, static void setup_ignore_host_env (GHashTable *env_table, - GSettings *settings) + GKeyFile *settings_global) { - gchar **ignore = g_settings_get_strv (settings, "ignore-hosts"); + gchar **ignore = g_key_file_get_string_list (settings_global, CONF_PROXY_SCHEMA, "ignore-hosts", NULL, NULL); if (ignore == NULL) return; @@ -596,13 +597,13 @@ setup_ignore_host_env (GHashTable *env_table, static void setup_https_proxy_env (GHashTable *env_table, - GSettings *settings_https) + GKeyFile *settings_global) { gchar *host; gint port; - host = gsettings_get_string (settings_https, "host"); - port = g_settings_get_int (settings_https, "port"); + host = gsettings_get_string (settings_global, CONF_HTTPS_PROXY_SCHEMA, "host"); + port = g_key_file_get_integer (settings_global, CONF_HTTPS_PROXY_SCHEMA, "port", NULL); if (host && port) { char *proxy; @@ -615,13 +616,13 @@ setup_https_proxy_env (GHashTable *env_table, static void setup_ftp_proxy_env (GHashTable *env_table, - GSettings *settings_ftp) + GKeyFile *settings_global) { gchar *host; gint port; - host = gsettings_get_string (settings_ftp, "host"); - port = g_settings_get_int (settings_ftp, "port"); + host = gsettings_get_string (settings_global, CONF_FTP_PROXY_SCHEMA, "host"); + port = g_key_file_get_integer (settings_global, CONF_FTP_PROXY_SCHEMA, "port", NULL); if (host && port) { char *proxy; @@ -634,13 +635,13 @@ setup_ftp_proxy_env (GHashTable *env_table, static void setup_socks_proxy_env (GHashTable *env_table, - GSettings *settings_socks) + GKeyFile *settings_global) { gchar *host; gint port; - host = gsettings_get_string (settings_socks, "host"); - port = g_settings_get_int (settings_socks, "port"); + host = gsettings_get_string (settings_global, CONF_SOCKS_PROXY_SCHEMA, "host"); + port = g_key_file_get_integer (settings_global, CONF_SOCKS_PROXY_SCHEMA, "port", NULL); if (host && port) { char *proxy; @@ -652,7 +653,7 @@ setup_socks_proxy_env (GHashTable *env_table, static void setup_autoconfig_proxy_env (GHashTable *env_table, - GSettings *settings) + GKeyFile *settings_global) { /* XXX Not sure what to do with this. See bug #596688. gchar *url; @@ -678,33 +679,38 @@ void terminal_util_add_proxy_env (GHashTable *env_table) { char *proxymode; + /* Trasladar estos gsettings al único fichero global */ + GKeyFile *settings_global = terminal_app_get_global_settings (); + + /* + TODO: Sería ideal trasladar estas configuraciones a un archivo global GSettings *settings = g_settings_new (CONF_PROXY_SCHEMA); GSettings *settings_http = g_settings_new (CONF_HTTP_PROXY_SCHEMA); GSettings *settings_https = g_settings_new (CONF_HTTPS_PROXY_SCHEMA); GSettings *settings_ftp = g_settings_new (CONF_FTP_PROXY_SCHEMA); GSettings *settings_socks = g_settings_new (CONF_SOCKS_PROXY_SCHEMA); - + */ /* If mode is not manual, nothing to set */ - proxymode = gsettings_get_string (settings, "mode"); + proxymode = g_key_file_get_string (settings_global, CONF_PROXY_SCHEMA, "mode", NULL); if (proxymode && 0 == strcmp (proxymode, "manual")) { - setup_http_proxy_env (env_table, settings_http); - setup_ignore_host_env (env_table, settings); - setup_https_proxy_env (env_table, settings_https); - setup_ftp_proxy_env (env_table, settings_ftp); - setup_socks_proxy_env (env_table, settings_socks); + setup_http_proxy_env (env_table, settings_global); + setup_ignore_host_env (env_table, settings_global); + setup_https_proxy_env (env_table, settings_global); + setup_ftp_proxy_env (env_table, settings_global); + setup_socks_proxy_env (env_table, settings_global); } else if (proxymode && 0 == strcmp (proxymode, "auto")) { - setup_autoconfig_proxy_env (env_table, settings); + setup_autoconfig_proxy_env (env_table, settings_global); } g_free (proxymode); - g_object_unref (settings); + /*g_object_unref (settings); g_object_unref (settings_http); g_object_unref (settings_https); g_object_unref (settings_ftp); - g_object_unref (settings_socks); + g_object_unref (settings_socks);*/ } /* Bidirectional object/widget binding */ diff --git a/src/terminal-util.h b/src/terminal-util.h index 97b9459..2e1e5db 100644 --- a/src/terminal-util.h +++ b/src/terminal-util.h @@ -27,11 +27,11 @@ G_BEGIN_DECLS -#define CONF_PROXY_SCHEMA "org.gnome.system.proxy" -#define CONF_HTTP_PROXY_SCHEMA "org.gnome.system.proxy.http" -#define CONF_HTTPS_PROXY_SCHEMA "org.gnome.system.proxy.https" -#define CONF_FTP_PROXY_SCHEMA "org.gnome.system.proxy.ftp" -#define CONF_SOCKS_PROXY_SCHEMA "org.gnome.system.proxy.socks" +#define CONF_PROXY_SCHEMA "proxy" +#define CONF_HTTP_PROXY_SCHEMA "proxy.http" +#define CONF_HTTPS_PROXY_SCHEMA "proxy.https" +#define CONF_FTP_PROXY_SCHEMA "proxy.ftp" +#define CONF_SOCKS_PROXY_SCHEMA "proxy.socks" void terminal_util_set_unique_role (GtkWindow *window, const char *prefix);