Consolidate color stripping for messages, topic and scrollback

This commit is contained in:
Berke Viktor 2012-09-01 21:38:00 +02:00
parent fb00928c9d
commit 4f887a1e53
5 changed files with 60 additions and 16 deletions

View File

@ -597,7 +597,6 @@ const struct prefs vars[] = {
{"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT},
{"text_max_lines", P_OFFINT (max_lines), TYPE_INT},
{"text_replay", P_OFFINT (text_replay), TYPE_BOOL},
{"text_replay_strip_color", P_OFFINT (text_replay_strip_color), TYPE_BOOL},
{"text_search_case_match", P_OFFINT (text_search_case_match), TYPE_BOOL},
{"text_search_backward", P_OFFINT (text_search_backward), TYPE_BOOL},
{"text_search_highlight_all", P_OFFINT (text_search_highlight_all), TYPE_BOOL},
@ -606,7 +605,9 @@ const struct prefs vars[] = {
{"text_show_marker", P_OFFINT (show_marker), TYPE_BOOL},
{"text_show_sep", P_OFFINT (show_separator), TYPE_BOOL},
{"text_spell_langs", P_OFFSET (spell_langs), TYPE_STR},
{"text_stripcolor", P_OFFINT (stripcolor), TYPE_BOOL},
{"text_stripcolor_msg", P_OFFINT (text_stripcolor_msg), TYPE_BOOL},
{"text_stripcolor_replay", P_OFFINT (text_stripcolor_replay), TYPE_BOOL},
{"text_stripcolor_topic", P_OFFINT (text_stripcolor_topic), TYPE_BOOL},
{"text_thin_sep", P_OFFINT (thin_separator), TYPE_BOOL},
{"text_tint_blue", P_OFFINT (tint_blue), TYPE_INT},
{"text_tint_green", P_OFFINT (tint_green), TYPE_INT},
@ -689,7 +690,8 @@ load_config (void)
prefs.recon_delay = 10;
prefs.autocopy_text = 1;
prefs.text_replay = 1;
prefs.text_replay_strip_color = 1;
prefs.text_stripcolor_replay = 1;
prefs.text_stripcolor_topic = 1;
prefs.tabchannels = 1;
prefs.tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */
prefs.tab_sort = 1;

View File

@ -340,12 +340,12 @@ scrollback_load (session *sess)
text = strchr (buf + 3, ' ');
if (text)
{
if (prefs.text_replay_strip_color)
if (prefs.text_stripcolor_replay)
{
text = strip_color (text + 1, -1, STRIP_COLOR);
}
fe_print_text (sess, text, stamp);
if (prefs.text_replay_strip_color)
if (prefs.text_stripcolor_replay)
{
g_free (text);
}
@ -381,21 +381,21 @@ scrollback_load (session *sess)
text = strchr (buf + 3, ' ');
if (text)
{
if (prefs.text_replay_strip_color)
if (prefs.text_stripcolor_replay)
{
text = strip_color (text + 1, -1, STRIP_COLOR);
}
cleaned_text = text_replace_non_bmp (text, -1, &cleaned_len);
if (cleaned_text != NULL)
{
if (prefs.text_replay_strip_color)
if (prefs.text_stripcolor_replay)
{
g_free (text);
}
text = cleaned_text;
}
fe_print_text (sess, text, stamp);
if (prefs.text_replay_strip_color)
if (prefs.text_stripcolor_replay)
{
g_free (text);
}
@ -1799,7 +1799,7 @@ load_text_events ()
/*
CL: format_event now handles filtering of arguments:
1) if prefs.stripcolor is set, filter all style control codes from arguments
1) if prefs.text_stripcolor_msg is set, filter all style control codes from arguments
2) always strip \010 (ATTR_HIDDEN) from arguments: it is only for use in the format string itself
*/
#define ARG_FLAG(argn) (1 << (argn))
@ -2095,7 +2095,7 @@ text_emit (int index, session *sess, char *a, char *b, char *c, char *d)
{
char *word[PDIWORDS];
int i;
unsigned int stripcolor_args = (prefs.stripcolor ? 0xFFFFFFFF : 0);
unsigned int stripcolor_args = (prefs.text_stripcolor_msg ? 0xFFFFFFFF : 0);
char tbuf[NICKLEN + 4];
if (prefs.colorednicks && (index == XP_TE_CHANACTION || index == XP_TE_CHANMSG))

View File

@ -236,7 +236,9 @@ struct xchatprefs
unsigned int autoopendccrecvwindow;
unsigned int autoopendccchatwindow;
unsigned int transparent;
unsigned int stripcolor;
unsigned int text_stripcolor_msg;
unsigned int text_stripcolor_replay;
unsigned int text_stripcolor_topic;
unsigned int timestamp;
unsigned int fastdccsend;
unsigned int dcc_send_fillspaces;
@ -286,7 +288,6 @@ struct xchatprefs
unsigned int windows_as_tabs;
unsigned int indent_nicks;
unsigned int text_replay;
unsigned int text_replay_strip_color;
unsigned int show_marker;
unsigned int show_separator;
unsigned int thin_separator;

View File

@ -552,13 +552,31 @@ fe_set_topic (session *sess, char *topic, char *stripped_topic)
{
if (!sess->gui->is_tab || sess == current_tab)
{
gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), stripped_topic);
if (prefs.text_stripcolor_topic)
{
gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), stripped_topic);
}
else
{
gtk_entry_set_text (GTK_ENTRY (sess->gui->topic_entry), topic);
}
mg_set_topic_tip (sess);
} else
}
else
{
if (sess->res->topic_text)
{
free (sess->res->topic_text);
sess->res->topic_text = strdup (stripped_topic);
}
if (prefs.text_stripcolor_topic)
{
sess->res->topic_text = strdup (stripped_topic);
}
else
{
sess->res->topic_text = strdup (topic);
}
}
}

View File

@ -281,6 +281,15 @@ static const setting tabs_settings[] =
{ST_END, 0, 0, 0, 0, 0}
};
static const setting color_settings[] =
{
{ST_TOGGLE, N_("Messages"), P_OFFINTNL(text_stripcolor_msg), 0, 0, 0},
{ST_TOGGLE, N_("Scrollback"), P_OFFINTNL(text_stripcolor_replay), 0, 0, 0},
{ST_TOGGLE, N_("Topic"), P_OFFINTNL(text_stripcolor_topic), 0, 0, 0},
{ST_END, 0, 0, 0, 0, 0}
};
static const char *const dccaccept[] =
{
N_("No"),
@ -464,7 +473,9 @@ static const setting logging_settings[] =
{
{ST_HEADER, N_("Logging"),0,0,0},
{ST_TOGGLE, N_("Display scrollback from previous session"), P_OFFINTNL(text_replay), 0, 0, 0},
{ST_TOGGLE, N_("Strip colors when displaying scrollback"), P_OFFINTNL(text_replay_strip_color), 0, 0, 0},
#if 0 /* Now it's done under Colors */
{ST_TOGGLE, N_("Strip colors when displaying scrollback"), P_OFFINTNL(text_stripcolor_replay), 0, 0, 0},
#endif
{ST_TOGGLE, N_("Enable logging of conversations to disk"), P_OFFINTNL(logging), 0, 0, 2},
{ST_ENTRY, N_("Log filename:"), P_OFFSETNL(logmask), 0, 0, sizeof prefs.logmask},
{ST_LABEL, N_("%s=Server %c=Channel %n=Network.")},
@ -1417,6 +1428,18 @@ setup_create_color_page (void)
setup_create_other_colorR (_("Spell checker:"), COL_SPELL, 11, tab);
#endif
setup_create_header (tab, 15, N_("Color Stripping"));
/* label = gtk_label_new (_("Strip colors from:"));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (tab), label, 2, 3, 16, 17,
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, LABEL_INDENT, 0); */
for (i = 0; i < 3; i++)
{
setup_create_toggleL (tab, i + 16, &color_settings[i]);
}
return box;
}