[gnome-terminal] First shot at Bug 595841 - Allow setting color for bold text
- From: Behdad Esfahbod <behdad src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-terminal] First shot at Bug 595841 - Allow setting color for bold text
- Date: Fri, 11 Dec 2009 23:27:50 +0000 (UTC)
commit e5e0e9598efaf63752a6e8899709c9844bf1ad9d
Author: Behdad Esfahbod <behdad behdad org>
Date: Fri Dec 11 18:07:38 2009 -0500
First shot at Bug 595841 - Allow setting color for bold text
The current UI simply adds a Bold color in the Colors tab. I think
we should also add a "Use different color for bold" checkbox before
it, otherwise (that is, right now), you need to change both foreground
and bold manually.
src/gnome-terminal.schemas.in | 18 ++++++++++-
src/profile-editor.c | 31 +++++++++++++------
src/profile-preferences.glade | 67 +++++++++++++++++++++++++++++++++++++++-
src/terminal-profile.c | 9 ++++-
src/terminal-profile.h | 1 +
src/terminal-screen.c | 13 +++++--
6 files changed, 120 insertions(+), 19 deletions(-)
---
diff --git a/src/gnome-terminal.schemas.in b/src/gnome-terminal.schemas.in
index 715c905..f23703a 100644
--- a/src/gnome-terminal.schemas.in
+++ b/src/gnome-terminal.schemas.in
@@ -159,7 +159,7 @@
<long>
Default color of text in the terminal, as a color
specification (can be HTML-style hex digits, or
- a color name such as "red").
+ a color name such as "red").
</long>
</locale>
</schema>
@@ -181,6 +181,22 @@
</schema>
<schema>
+ <key>/schemas/apps/gnome-terminal/profiles/Default/bold_color</key>
+ <applyto>/apps/gnome-terminal/profiles/Default/bold_color</applyto>
+ <owner>gnome-terminal</owner>
+ <type>string</type>
+ <default>#000000</default>
+ <locale name="C">
+ <short>Default color of bold text in the terminal</short>
+ <long>
+ Default color of bold text in the terminal, as a color
+ specification (can be HTML-style hex digits, or
+ a color name such as "red").
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/gnome-terminal/profiles/Default/title_mode</key>
<applyto>/apps/gnome-terminal/profiles/Default/title_mode</applyto>
<owner>gnome-terminal</owner>
diff --git a/src/profile-editor.c b/src/profile-editor.c
index 5aed33a..a5b5755 100644
--- a/src/profile-editor.c
+++ b/src/profile-editor.c
@@ -36,19 +36,20 @@ struct _TerminalColorScheme
const char *name;
const GdkColor foreground;
const GdkColor background;
+ const GdkColor bold;
};
static const TerminalColorScheme color_schemes[] = {
{ N_("Black on light yellow"),
- { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xDDDD } },
+ { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xDDDD }, { 0, 0x0000, 0x0000, 0x0000 } },
{ N_("Black on white"),
- { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xFFFF } },
+ { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xFFFF }, { 0, 0x0000, 0x0000, 0x0000 } },
{ N_("Gray on black"),
- { 0, 0xAAAA, 0xAAAA, 0xAAAA }, { 0, 0x0000, 0x0000, 0x0000 } },
+ { 0, 0xAAAA, 0xAAAA, 0xAAAA }, { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xAAAA, 0xAAAA, 0xAAAA } },
{ N_("Green on black"),
- { 0, 0x0000, 0xFFFF, 0x0000 }, { 0, 0x0000, 0x0000, 0x0000 } },
+ { 0, 0x0000, 0xFFFF, 0x0000 }, { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0x0000, 0xFFFF, 0x0000 } },
{ N_("White on black"),
- { 0, 0xFFFF, 0xFFFF, 0xFFFF }, { 0, 0x0000, 0x0000, 0x0000 } }
+ { 0, 0xFFFF, 0xFFFF, 0xFFFF }, { 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xFFFF } }
};
static void profile_forgotten_cb (TerminalProfile *profile,
@@ -173,6 +174,7 @@ profile_notify_sensitivity_cb (TerminalProfile *profile,
if (!prop_name ||
prop_name == I_(TERMINAL_PROFILE_FOREGROUND_COLOR) ||
prop_name == I_(TERMINAL_PROFILE_BACKGROUND_COLOR) ||
+ prop_name == I_(TERMINAL_PROFILE_BOLD_COLOR) ||
prop_name == I_(TERMINAL_PROFILE_USE_THEME_COLORS))
{
gboolean fg_locked, bg_locked, use_theme_colors;
@@ -185,6 +187,8 @@ profile_notify_sensitivity_cb (TerminalProfile *profile,
SET_SENSITIVE ("foreground-colorpicker-label", !use_theme_colors && !fg_locked);
SET_SENSITIVE ("background-colorpicker", !use_theme_colors && !bg_locked);
SET_SENSITIVE ("background-colorpicker-label", !use_theme_colors && !bg_locked);
+ SET_SENSITIVE ("bold-colorpicker", !use_theme_colors && !fg_locked);
+ SET_SENSITIVE ("bold-colorpicker-label", !use_theme_colors && !fg_locked);
SET_SENSITIVE ("color-scheme-combobox", !use_theme_colors && !fg_locked && !bg_locked);
SET_SENSITIVE ("color-scheme-combobox-label", !use_theme_colors && !fg_locked && !bg_locked);
}
@@ -277,15 +281,16 @@ color_scheme_combo_changed_cb (GtkWidget *combo,
TerminalProfile *profile)
{
guint i;
-
+
i = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
-
+
if (i < G_N_ELEMENTS (color_schemes))
{
g_signal_handlers_block_by_func (profile, G_CALLBACK (profile_colors_notify_scheme_combo_cb), combo);
g_object_set (profile,
TERMINAL_PROFILE_FOREGROUND_COLOR, &color_schemes[i].foreground,
TERMINAL_PROFILE_BACKGROUND_COLOR, &color_schemes[i].background,
+ TERMINAL_PROFILE_BOLD_COLOR, &color_schemes[i].bold,
NULL);
g_signal_handlers_unblock_by_func (profile, G_CALLBACK (profile_colors_notify_scheme_combo_cb), combo);
}
@@ -300,16 +305,18 @@ profile_colors_notify_scheme_combo_cb (TerminalProfile *profile,
GParamSpec *pspec,
GtkComboBox *combo)
{
- const GdkColor *fg, *bg;
+ const GdkColor *fg, *bg, *bold;
guint i;
fg = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
bg = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);
+ bold = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BOLD_COLOR);
for (i = 0; i < G_N_ELEMENTS (color_schemes); ++i)
{
if (fg && gdk_color_equal (fg, &color_schemes[i].foreground) &&
- bg && gdk_color_equal (bg, &color_schemes[i].background))
+ bg && gdk_color_equal (bg, &color_schemes[i].background) &&
+ bold && gdk_color_equal (bold, &color_schemes[i].bold))
break;
}
/* If we didn't find a match, then we get the last combo box item which is "custom" */
@@ -476,7 +483,7 @@ init_color_scheme_menu (GtkWidget *combo_box)
i = G_N_ELEMENTS (color_schemes);
while (i > 0)
{
- gtk_combo_box_prepend_text (GTK_COMBO_BOX (combo_box),
+ gtk_combo_box_prepend_text (GTK_COMBO_BOX (combo_box),
_(color_schemes[--i].name));
}
}
@@ -756,6 +763,9 @@ terminal_profile_edit (TerminalProfile *profile,
g_signal_connect (profile, "notify::" TERMINAL_PROFILE_BACKGROUND_COLOR,
G_CALLBACK (profile_colors_notify_scheme_combo_cb),
w);
+ g_signal_connect (profile, "notify::" TERMINAL_PROFILE_BOLD_COLOR,
+ G_CALLBACK (profile_colors_notify_scheme_combo_cb),
+ w);
#define CONNECT_WITH_FLAGS(name, prop, flags) terminal_util_bind_object_property_to_widget (G_OBJECT (profile), prop, (GtkWidget *) gtk_builder_get_object (builder, name), flags)
#define CONNECT(name, prop) CONNECT_WITH_FLAGS (name, prop, 0)
@@ -780,6 +790,7 @@ terminal_profile_edit (TerminalProfile *profile,
CONNECT ("background-colorpicker", TERMINAL_PROFILE_BACKGROUND_COLOR);
CONNECT ("background-image-filechooser", TERMINAL_PROFILE_BACKGROUND_IMAGE_FILE);
CONNECT ("backspace-binding-combobox", TERMINAL_PROFILE_BACKSPACE_BINDING);
+ CONNECT ("bold-colorpicker", TERMINAL_PROFILE_BOLD_COLOR);
CONNECT ("cursor-shape-combobox", TERMINAL_PROFILE_CURSOR_SHAPE);
CONNECT ("custom-command-entry", TERMINAL_PROFILE_CUSTOM_COMMAND);
CONNECT ("darken-background-scale", TERMINAL_PROFILE_BACKGROUND_DARKNESS);
diff --git a/src/profile-preferences.glade b/src/profile-preferences.glade
index ad3c994..73056fb 100644
--- a/src/profile-preferences.glade
+++ b/src/profile-preferences.glade
@@ -922,7 +922,7 @@ Hold the terminal open</property>
<child>
<widget class="GtkLabel" id="label39">
<property name="visible">True</property>
- <property name="label" translatable="yes"><b>Foreground and Background</b></property>
+ <property name="label" translatable="yes"><b>Foreground, Background, and Bold</b></property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -959,7 +959,7 @@ Hold the terminal open</property>
<child>
<widget class="GtkTable" id="table24">
<property name="visible">True</property>
- <property name="n_rows">4</property>
+ <property name="n_rows">5</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
@@ -1159,6 +1159,69 @@ Hold the terminal open</property>
<property name="y_options">fill</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkLabel" id="bold-colorpicker-label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Bol_d color:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">bold-colorpicker</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox144">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkColorButton" id="bold-colorpicker">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_alpha">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
diff --git a/src/terminal-profile.c b/src/terminal-profile.c
index 3e8f08a..5e8b340 100644
--- a/src/terminal-profile.c
+++ b/src/terminal-profile.c
@@ -54,6 +54,7 @@ enum
PROP_BACKGROUND_IMAGE_FILE,
PROP_BACKGROUND_TYPE,
PROP_BACKSPACE_BINDING,
+ PROP_BOLD_COLOR,
PROP_CURSOR_BLINK_MODE,
PROP_CURSOR_SHAPE,
PROP_CUSTOM_COMMAND,
@@ -89,6 +90,7 @@ enum
#define KEY_BACKGROUND_IMAGE_FILE "background_image"
#define KEY_BACKGROUND_TYPE "background_type"
#define KEY_BACKSPACE_BINDING "backspace_binding"
+#define KEY_BOLD_COLOR "bold_color"
#define KEY_CURSOR_BLINK_MODE "cursor_blink_mode"
#define KEY_CURSOR_SHAPE "cursor_shape"
#define KEY_CUSTOM_COMMAND "custom_command"
@@ -380,7 +382,7 @@ values_equal (GParamSpec *pspec,
if (g_param_values_cmp (pspec, va, vb) == 0)
return TRUE;
-
+
if (G_PARAM_SPEC_VALUE_TYPE (pspec) == GDK_TYPE_COLOR)
return gdk_color_equal (g_value_get_boxed (va), g_value_get_boxed (vb));
@@ -483,6 +485,7 @@ terminal_profile_reset_property_internal (TerminalProfile *profile,
switch (pspec->param_id)
{
case PROP_FOREGROUND_COLOR:
+ case PROP_BOLD_COLOR:
g_value_set_boxed (value, &DEFAULT_FOREGROUND_COLOR);
break;
@@ -601,7 +604,7 @@ terminal_profile_gconf_notify_cb (GConfClient *client,
if (!gdk_color_parse (gconf_value_get_string (gconf_value), &color))
goto out;
-
+
g_value_set_boxed (&value, &color);
}
else if (G_PARAM_SPEC_VALUE_TYPE (pspec) == PANGO_TYPE_FONT_DESCRIPTION)
@@ -945,6 +948,7 @@ terminal_profile_init (TerminalProfile *profile)
/* A few properties don't have defaults via the param spec; set them explicitly */
object_class = G_OBJECT_CLASS (TERMINAL_PROFILE_GET_CLASS (profile));
terminal_profile_reset_property_internal (profile, g_object_class_find_property (object_class, TERMINAL_PROFILE_FOREGROUND_COLOR), FALSE);
+ terminal_profile_reset_property_internal (profile, g_object_class_find_property (object_class, TERMINAL_PROFILE_BOLD_COLOR), FALSE);
terminal_profile_reset_property_internal (profile, g_object_class_find_property (object_class, TERMINAL_PROFILE_BACKGROUND_COLOR), FALSE);
terminal_profile_reset_property_internal (profile, g_object_class_find_property (object_class, TERMINAL_PROFILE_FONT), FALSE);
terminal_profile_reset_property_internal (profile, g_object_class_find_property (object_class, TERMINAL_PROFILE_PALETTE), FALSE);
@@ -1288,6 +1292,7 @@ terminal_profile_class_init (TerminalProfileClass *klass)
TERMINAL_PROFILE_PROPERTY_BOOLEAN (USE_THEME_COLORS, DEFAULT_USE_THEME_COLORS, KEY_USE_THEME_COLORS);
TERMINAL_PROFILE_PROPERTY_BOXED (BACKGROUND_COLOR, GDK_TYPE_COLOR, KEY_BACKGROUND_COLOR);
+ TERMINAL_PROFILE_PROPERTY_BOXED (BOLD_COLOR, GDK_TYPE_COLOR, KEY_BOLD_COLOR);
TERMINAL_PROFILE_PROPERTY_BOXED (FONT, PANGO_TYPE_FONT_DESCRIPTION, KEY_FONT);
TERMINAL_PROFILE_PROPERTY_BOXED (FOREGROUND_COLOR, GDK_TYPE_COLOR, KEY_FOREGROUND_COLOR);
diff --git a/src/terminal-profile.h b/src/terminal-profile.h
index bd8f1dc..087859b 100644
--- a/src/terminal-profile.h
+++ b/src/terminal-profile.h
@@ -72,6 +72,7 @@ typedef enum
#define TERMINAL_PROFILE_BACKGROUND_IMAGE_FILE "background-image-file"
#define TERMINAL_PROFILE_BACKGROUND_TYPE "background-type"
#define TERMINAL_PROFILE_BACKSPACE_BINDING "backspace-binding"
+#define TERMINAL_PROFILE_BOLD_COLOR "bold-color"
#define TERMINAL_PROFILE_CURSOR_BLINK_MODE "cursor-blink-mode"
#define TERMINAL_PROFILE_CURSOR_SHAPE "cursor-shape"
#define TERMINAL_PROFILE_CUSTOM_COMMAND "custom-command"
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index 969c762..16cb8e2 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -966,6 +966,7 @@ terminal_screen_profile_notify_cb (TerminalProfile *profile,
prop_name == I_(TERMINAL_PROFILE_USE_THEME_COLORS) ||
prop_name == I_(TERMINAL_PROFILE_FOREGROUND_COLOR) ||
prop_name == I_(TERMINAL_PROFILE_BACKGROUND_COLOR) ||
+ prop_name == I_(TERMINAL_PROFILE_BOLD_COLOR) ||
prop_name == I_(TERMINAL_PROFILE_PALETTE))
update_color_scheme (screen);
@@ -1080,7 +1081,7 @@ update_color_scheme (TerminalScreen *screen)
TerminalProfile *profile = priv->profile;
GtkStyle *style;
GdkColor colors[TERMINAL_PALETTE_SIZE];
- const GdkColor *fg_color, *bg_color;
+ const GdkColor *fg_color, *bg_color, *bold_color;
GdkColor fg, bg;
guint n_colors;
@@ -1090,12 +1091,14 @@ update_color_scheme (TerminalScreen *screen)
fg = style->text[GTK_STATE_NORMAL];
bg = style->base[GTK_STATE_NORMAL];
-
- fg_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
- bg_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);
+ bold_color = NULL;
if (!terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_USE_THEME_COLORS))
{
+ fg_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
+ bg_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);
+ bold_color = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BOLD_COLOR);
+
if (fg_color)
fg = *fg_color;
if (bg_color)
@@ -1106,6 +1109,8 @@ update_color_scheme (TerminalScreen *screen)
terminal_profile_get_palette (priv->profile, colors, &n_colors);
vte_terminal_set_colors (VTE_TERMINAL (screen), &fg, &bg,
colors, n_colors);
+ if (bold_color)
+ vte_terminal_set_color_bold (VTE_TERMINAL (screen), bold_color);
vte_terminal_set_background_tint_color (VTE_TERMINAL (screen), &bg);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]