[gnome-terminal] Add 'encoding' profile setting
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal] Add 'encoding' profile setting
- Date: Thu, 3 May 2012 19:04:30 +0000 (UTC)
commit 5a63bece36a38aa2d5bb490b6d65e31496fe6d84
Author: Christian Persch <chpe gnome org>
Date: Fri Jan 20 22:21:25 2012 +0100
Add 'encoding' profile setting
By special request, implement this feature, but without UI for now.
https://bugzilla.gnome.org/show_bug.cgi?id=108711
src/org.gnome.Terminal.Preferences.gschema.xml.in | 74 +++++++++++++++++++++
src/terminal-app.c | 11 ++-
src/terminal-schemas.h | 1 +
src/terminal-screen.c | 9 +++
4 files changed, 92 insertions(+), 3 deletions(-)
---
diff --git a/src/org.gnome.Terminal.Preferences.gschema.xml.in b/src/org.gnome.Terminal.Preferences.gschema.xml.in
index 15d4b7f..0986328 100644
--- a/src/org.gnome.Terminal.Preferences.gschema.xml.in
+++ b/src/org.gnome.Terminal.Preferences.gschema.xml.in
@@ -236,6 +236,80 @@
<default>true</default>
<_summary>Whether to use the system monospace font</_summary>
</key>
+ <key name="encoding" type="s">
+ <choices>
+ <choice value="current" />
+ <choice value="ISO-8859-1" />
+ <choice value="ISO-8859-2" />
+ <choice value="ISO-8859-3" />
+ <choice value="ISO-8859-4" />
+ <choice value="ISO-8859-5" />
+ <choice value="ISO-8859-6" />
+ <choice value="ISO-8859-7" />
+ <choice value="ISO-8859-8" />
+ <choice value="ISO-8859-8-I" />
+ <choice value="ISO-8859-9" />
+ <choice value="ISO-8859-10" />
+ <choice value="ISO-8859-13" />
+ <choice value="ISO-8859-14" />
+ <choice value="ISO-8859-15" />
+ <choice value="ISO-8859-16" />
+ <choice value="UTF-8" />
+ <choice value="ARMSCII-8" />
+ <choice value="BIG5" />
+ <choice value="BIG5-HKSCS" />
+ <choice value="CP866" />
+ <choice value="EUC-JP" />
+ <choice value="EUC-KR" />
+ <choice value="EUC-TW" />
+ <choice value="GB18030" />
+ <choice value="GB2312" />
+ <choice value="GBK" />
+ <choice value="GEORGIAN-PS" />
+ <choice value="IBM850" />
+ <choice value="IBM852" />
+ <choice value="IBM855" />
+ <choice value="IBM857" />
+ <choice value="IBM862" />
+ <choice value="IBM864" />
+ <choice value="ISO-2022-JP" />
+ <choice value="ISO-2022-KR" />
+ <choice value="ISO-IR-111" />
+ <choice value="KOI8-R" />
+ <choice value="KOI8-U" />
+ <choice value="MAC_ARABIC" />
+ <choice value="MAC_CE" />
+ <choice value="MAC_CROATIAN" />
+ <choice value="MAC-CYRILLIC" />
+ <choice value="MAC_DEVANAGARI" />
+ <choice value="MAC_FARSI" />
+ <choice value="MAC_GREEK" />
+ <choice value="MAC_GUJARATI" />
+ <choice value="MAC_GURMUKHI" />
+ <choice value="MAC_HEBREW" />
+ <choice value="MAC_ICELANDIC" />
+ <choice value="MAC_ROMAN" />
+ <choice value="MAC_ROMANIAN" />
+ <choice value="MAC_TURKISH" />
+ <choice value="MAC_UKRAINIAN" />
+ <choice value="SHIFT_JIS" />
+ <choice value="TCVN" />
+ <choice value="TIS-620" />
+ <choice value="UHC" />
+ <choice value="VISCII" />
+ <choice value="WINDOWS-1250" />
+ <choice value="WINDOWS-1251" />
+ <choice value="WINDOWS-1252" />
+ <choice value="WINDOWS-1253" />
+ <choice value="WINDOWS-1254" />
+ <choice value="WINDOWS-1255" />
+ <choice value="WINDOWS-1256" />
+ <choice value="WINDOWS-1257" />
+ <choice value="WINDOWS-1258" />
+ </choices>
+ <default>'current'</default>
+ <_summary>Which encoding to use</_summary>
+ </key>
</schema>
<!-- Profiles list -->
diff --git a/src/terminal-app.c b/src/terminal-app.c
index dab8533..8809530 100644
--- a/src/terminal-app.c
+++ b/src/terminal-app.c
@@ -1548,9 +1548,14 @@ terminal_app_get_encodings (TerminalApp *app)
/**
* terminal_app_ensure_encoding:
* @app:
- * @charset:
+ * @charset: (allow-none): a charset, or %NULL
*
- * Ensures there's a #TerminalEncoding for @charset available.
+ * Ensures there's a #TerminalEncoding for @charset available. If @charset
+ * is %NULL, returns the #TerminalEncoding for the locale's charset. If
+ * @charset is not a known charset, returns a #TerminalEncoding for a
+ * custom charset.
+ *
+ * Returns: (transfer none): a #TerminalEncoding
*/
TerminalEncoding *
terminal_app_ensure_encoding (TerminalApp *app,
@@ -1558,7 +1563,7 @@ terminal_app_ensure_encoding (TerminalApp *app,
{
TerminalEncoding *encoding;
- encoding = g_hash_table_lookup (app->encodings, charset);
+ encoding = g_hash_table_lookup (app->encodings, charset ? charset : "current");
if (encoding == NULL)
{
encoding = terminal_encoding_new (charset,
diff --git a/src/terminal-schemas.h b/src/terminal-schemas.h
index 3e8f8e3..fd0f18f 100644
--- a/src/terminal-schemas.h
+++ b/src/terminal-schemas.h
@@ -39,6 +39,7 @@ G_BEGIN_DECLS
#define TERMINAL_PROFILE_DEFAULT_SIZE_COLUMNS_KEY "default-size-columns"
#define TERMINAL_PROFILE_DEFAULT_SIZE_ROWS_KEY "default-size-rows"
#define TERMINAL_PROFILE_DELETE_BINDING_KEY "delete-binding"
+#define TERMINAL_PROFILE_ENCODING "encoding"
#define TERMINAL_PROFILE_EXIT_ACTION_KEY "exit-action"
#define TERMINAL_PROFILE_FONT_KEY "font"
#define TERMINAL_PROFILE_FOREGROUND_COLOR_KEY "foreground-color"
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index 7b3ed26..231eac3 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -892,6 +892,15 @@ terminal_screen_profile_changed_cb (GSettings *profile,
if (!prop_name || prop_name == I_(TERMINAL_PROFILE_SCROLLBAR_POLICY_KEY))
_terminal_screen_update_scrollbar (screen);
+ if (!prop_name || prop_name == I_(TERMINAL_PROFILE_ENCODING))
+ {
+ TerminalEncoding *encoding;
+
+ encoding = terminal_app_ensure_encoding (terminal_app_get (),
+ g_settings_get_string (profile, TERMINAL_PROFILE_ENCODING));
+ vte_terminal_set_encoding (vte_terminal, terminal_encoding_get_charset (encoding));
+ }
+
if (!prop_name ||
prop_name == I_(TERMINAL_PROFILE_TITLE_MODE_KEY) ||
prop_name == I_(TERMINAL_PROFILE_TITLE_KEY))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]