"print text finished" -> "gui print text finished". Added %[options] format

for printing text. The syntax for options is [+-]<option>[+-]<option>...
Currently supports options 't' = timestamp, 'T' = server tag, 's' =
line_start, 'S' = line_start_irssi. -s or -S means don't print the
line_start. For example %[-st+T] would never print line_start or timestamp
to line, but would always print server tag to line.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1569 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2001-06-26 21:28:00 +00:00 committed by cras
parent f1a0aabdf4
commit 6362ab86f6
6 changed files with 177 additions and 92 deletions

View File

@ -224,7 +224,7 @@ FE common
"gui window goto", int number "gui window goto", int number
(Can be used to determine when all "gui print text"s are sent (not required)) (Can be used to determine when all "gui print text"s are sent (not required))
"print text finished", WINDOW_REC "gui print text finished", WINDOW_REC
* Provides signals: * Provides signals:

View File

@ -59,11 +59,51 @@ int format_find_tag(const char *module, const char *tag)
return -1; return -1;
} }
int format_expand_styles(GString *out, char format) static void format_expand_code(const char **format, int *flags)
{ {
char *p; int set;
switch (format) { if (flags == NULL) {
/* flags are being ignored - skip the code */
while (**format != ']')
(*format)++;
return;
}
set = TRUE;
(*format)++;
while (**format != ']') {
if (**format == '+')
set = TRUE;
else if (**format == '-')
set = FALSE;
else switch (**format) {
case 's':
case 'S':
*flags |= !set ? PRINT_FLAG_UNSET_LINE_START :
**format == 's' ? PRINT_FLAG_SET_LINE_START :
PRINT_FLAG_SET_LINE_START_IRSSI;
break;
case 't':
*flags |= set ? PRINT_FLAG_SET_TIMESTAMP :
PRINT_FLAG_UNSET_TIMESTAMP;
break;
case 'T':
*flags |= set ? PRINT_FLAG_SET_SERVERTAG :
PRINT_FLAG_UNSET_SERVERTAG;
break;
}
(*format)++;
}
}
int format_expand_styles(GString *out, const char **format, int *flags)
{
char *p, fmt;
fmt = **format;
switch (fmt) {
case 'U': case 'U':
/* Underline on/off */ /* Underline on/off */
g_string_append_c(out, 4); g_string_append_c(out, 4);
@ -103,9 +143,13 @@ int format_expand_styles(GString *out, char format)
g_string_append_c(out, 4); g_string_append_c(out, 4);
g_string_append_c(out, FORMAT_STYLE_DEFAULTS); g_string_append_c(out, FORMAT_STYLE_DEFAULTS);
break; break;
case '[':
/* code */
format_expand_code(format, flags);
break;
default: default:
/* check if it's a background color */ /* check if it's a background color */
p = strchr(format_backs, format); p = strchr(format_backs, fmt);
if (p != NULL) { if (p != NULL) {
g_string_append_c(out, 4); g_string_append_c(out, 4);
g_string_append_c(out, FORMAT_COLOR_NOCHANGE); g_string_append_c(out, FORMAT_COLOR_NOCHANGE);
@ -114,8 +158,8 @@ int format_expand_styles(GString *out, char format)
} }
/* check if it's a foreground color */ /* check if it's a foreground color */
if (format == 'p') format = 'm'; if (fmt == 'p') fmt = 'm';
p = strchr(format_fores, format); p = strchr(format_fores, fmt);
if (p != NULL) { if (p != NULL) {
g_string_append_c(out, 4); g_string_append_c(out, 4);
g_string_append_c(out, (char) ((int) (p-format_fores)+'0')); g_string_append_c(out, (char) ((int) (p-format_fores)+'0'));
@ -124,8 +168,8 @@ int format_expand_styles(GString *out, char format)
} }
/* check if it's a bold foreground color */ /* check if it's a bold foreground color */
if (format == 'P') format = 'M'; if (fmt == 'P') fmt = 'M';
p = strchr(format_boldfores, format); p = strchr(format_boldfores, fmt);
if (p != NULL) { if (p != NULL) {
g_string_append_c(out, 4); g_string_append_c(out, 4);
g_string_append_c(out, (char) (8+(int) (p-format_boldfores)+'0')); g_string_append_c(out, (char) (8+(int) (p-format_boldfores)+'0'));
@ -208,14 +252,13 @@ void format_create_dest(TEXT_DEST_REC *dest,
void *server, const char *target, void *server, const char *target,
int level, WINDOW_REC *window) int level, WINDOW_REC *window)
{ {
memset(dest, 0, sizeof(TEXT_DEST_REC));
dest->server = server; dest->server = server;
dest->target = target; dest->target = target;
dest->level = level; dest->level = level;
dest->window = window != NULL ? window : dest->window = window != NULL ? window :
window_find_closest(server, target, level); window_find_closest(server, target, level);
dest->hilight_priority = 0;
dest->hilight_color = NULL;
} }
/* Return length of text part in string (ie. without % codes) */ /* Return length of text part in string (ie. without % codes) */
@ -231,7 +274,8 @@ int format_get_length(const char *str)
while (*str != '\0') { while (*str != '\0') {
if (*str == '%' && str[1] != '\0') { if (*str == '%' && str[1] != '\0') {
str++; str++;
if (*str != '%' && format_expand_styles(tmp, *str)) { if (*str != '%' &&
format_expand_styles(tmp, &str, NULL)) {
str++; str++;
continue; continue;
} }
@ -265,7 +309,8 @@ int format_real_length(const char *str, int len)
while (*str != '\0' && len > 0) { while (*str != '\0' && len > 0) {
if (*str == '%' && str[1] != '\0') { if (*str == '%' && str[1] != '\0') {
str++; str++;
if (*str != '%' && format_expand_styles(tmp, *str)) { if (*str != '%' &&
format_expand_styles(tmp, &str, NULL)) {
str++; str++;
continue; continue;
} }
@ -285,7 +330,7 @@ int format_real_length(const char *str, int len)
return (int) (str-start); return (int) (str-start);
} }
char *format_string_expand(const char *text) char *format_string_expand(const char *text, int *flags)
{ {
GString *out; GString *out;
char code, *ret; char code, *ret;
@ -294,11 +339,12 @@ char *format_string_expand(const char *text)
out = g_string_new(NULL); out = g_string_new(NULL);
if (flags != NULL) *flags = 0;
code = 0; code = 0;
while (*text != '\0') { while (*text != '\0') {
if (code == '%') { if (code == '%') {
/* color code */ /* color code */
if (!format_expand_styles(out, *text)) { if (!format_expand_styles(out, &text, flags)) {
g_string_append_c(out, '%'); g_string_append_c(out, '%');
g_string_append_c(out, '%'); g_string_append_c(out, '%');
g_string_append_c(out, *text); g_string_append_c(out, *text);
@ -332,7 +378,7 @@ static char *format_get_text_args(TEXT_DEST_REC *dest,
while (*text != '\0') { while (*text != '\0') {
if (code == '%') { if (code == '%') {
/* color code */ /* color code */
if (!format_expand_styles(out, *text)) { if (!format_expand_styles(out, &text, &dest->flags)) {
g_string_append_c(out, '%'); g_string_append_c(out, '%');
g_string_append_c(out, '%'); g_string_append_c(out, '%');
g_string_append_c(out, *text); g_string_append_c(out, *text);
@ -487,19 +533,29 @@ char *format_get_level_tag(THEME_REC *theme, TEXT_DEST_REC *dest)
{ {
int format; int format;
if (dest->level & LINE_START_IRSSI_LEVEL) /* check for flags if we want to override defaults */
format = TXT_LINE_START_IRSSI; if (dest->flags & PRINT_FLAG_UNSET_LINE_START)
else if ((dest->level & NOT_LINE_START_LEVEL) == 0)
format = TXT_LINE_START;
else
return NULL; return NULL;
if (dest->flags & PRINT_FLAG_SET_LINE_START)
format = TXT_LINE_START;
else if (dest->flags & PRINT_FLAG_SET_LINE_START_IRSSI)
format = TXT_LINE_START_IRSSI;
else {
/* use defaults */
if (dest->level & LINE_START_IRSSI_LEVEL)
format = TXT_LINE_START_IRSSI;
else if ((dest->level & NOT_LINE_START_LEVEL) == 0)
format = TXT_LINE_START;
else
return NULL;
}
return format_get_text_theme(theme, MODULE_NAME, dest, format); return format_get_text_theme(theme, MODULE_NAME, dest, format);
} }
#define show_timestamp(level) \ #define show_timestamp(level) \
((level & (MSGLEVEL_NEVER|MSGLEVEL_LASTLOG)) == 0 && \ (timestamps || (msgs_timestamps && ((level) & MSGLEVEL_MSGS)))
(timestamps || (msgs_timestamps && ((level) & MSGLEVEL_MSGS))))
static char *get_timestamp(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t) static char *get_timestamp(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
{ {
@ -509,6 +565,15 @@ static char *get_timestamp(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
if (!show_timestamp(dest->level)) if (!show_timestamp(dest->level))
return NULL; return NULL;
/* check for flags if we want to override defaults */
if (dest->flags & PRINT_FLAG_UNSET_TIMESTAMP)
return NULL;
if ((dest->flags & PRINT_FLAG_SET_TIMESTAMP) == 0 &&
(dest->level & (MSGLEVEL_NEVER|MSGLEVEL_LASTLOG)) != 0)
return NULL;
if (timestamp_timeout > 0) { if (timestamp_timeout > 0) {
diff = t - dest->window->last_timestamp; diff = t - dest->window->last_timestamp;
dest->window->last_timestamp = t; dest->window->last_timestamp = t;
@ -530,25 +595,35 @@ static char *get_server_tag(THEME_REC *theme, TEXT_DEST_REC *dest)
server = dest->server; server = dest->server;
if (server == NULL || hide_server_tags || if (server == NULL || hide_server_tags)
(dest->window->active != NULL && return NULL;
dest->window->active->server == server))
/* check for flags if we want to override defaults */
if (dest->flags & PRINT_FLAG_UNSET_SERVERTAG)
return NULL; return NULL;
if (servers != NULL) { if ((dest->flags & PRINT_FLAG_SET_SERVERTAG) == 0) {
count++; if (dest->window->active != NULL &&
if (servers->next != NULL) dest->window->active->server == server)
return NULL;
if (servers != NULL) {
count++; count++;
} if (servers->next != NULL)
if (count < 2 && lookup_servers != NULL) { count++;
count++; }
if (lookup_servers->next != NULL) if (count < 2 && lookup_servers != NULL) {
count++; count++;
if (lookup_servers->next != NULL)
count++;
}
if (count < 2)
return NULL;
} }
return count < 2 ? NULL : return format_get_text_theme(theme, MODULE_NAME, dest,
format_get_text_theme(theme, MODULE_NAME, dest, TXT_SERVERTAG, server->tag);
TXT_SERVERTAG, server->tag);
} }
char *format_get_line_start(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t) char *format_get_line_start(THEME_REC *theme, TEXT_DEST_REC *dest, time_t t)
@ -576,7 +651,7 @@ void format_newline(WINDOW_REC *window)
signal_emit_id(signal_gui_print_text, 6, window, signal_emit_id(signal_gui_print_text, 6, window,
GINT_TO_POINTER(-1), GINT_TO_POINTER(-1), GINT_TO_POINTER(-1), GINT_TO_POINTER(-1),
GINT_TO_POINTER(PRINTFLAG_NEWLINE), GINT_TO_POINTER(GUI_PRINT_FLAG_NEWLINE),
"", GINT_TO_POINTER(-1)); "", GINT_TO_POINTER(-1));
} }
@ -613,19 +688,19 @@ static char *get_ansi_color(THEME_REC *theme, char *str,
/* reset colors back to default */ /* reset colors back to default */
fg = theme->default_color; fg = theme->default_color;
bg = -1; bg = -1;
flags &= ~PRINTFLAG_INDENT; flags &= ~GUI_PRINT_FLAG_INDENT;
break; break;
case 1: case 1:
/* hilight */ /* hilight */
flags |= PRINTFLAG_BOLD; flags |= GUI_PRINT_FLAG_BOLD;
break; break;
case 5: case 5:
/* blink */ /* blink */
flags |= PRINTFLAG_BLINK; flags |= GUI_PRINT_FLAG_BLINK;
break; break;
case 7: case 7:
/* reverse */ /* reverse */
flags |= PRINTFLAG_REVERSE; flags |= GUI_PRINT_FLAG_REVERSE;
break; break;
default: default:
if (num >= 30 && num <= 37) if (num >= 30 && num <= 37)
@ -817,7 +892,7 @@ void format_send_to_gui(TEXT_DEST_REC *dest, const char *text)
GINT_TO_POINTER(bgcolor), GINT_TO_POINTER(bgcolor),
GINT_TO_POINTER(flags), str, GINT_TO_POINTER(flags), str,
dest->level); dest->level);
flags &= ~PRINTFLAG_INDENT; flags &= ~GUI_PRINT_FLAG_INDENT;
} }
if (type == '\n') if (type == '\n')
@ -831,7 +906,7 @@ void format_send_to_gui(TEXT_DEST_REC *dest, const char *text)
case 2: case 2:
/* bold */ /* bold */
if (!hide_text_style) if (!hide_text_style)
flags ^= PRINTFLAG_BOLD; flags ^= GUI_PRINT_FLAG_BOLD;
break; break;
case 3: case 3:
/* MIRC color */ /* MIRC color */
@ -839,40 +914,40 @@ void format_send_to_gui(TEXT_DEST_REC *dest, const char *text)
hide_text_style ? NULL : &fgcolor, hide_text_style ? NULL : &fgcolor,
hide_text_style ? NULL : &bgcolor); hide_text_style ? NULL : &bgcolor);
if (!hide_text_style) if (!hide_text_style)
flags |= PRINTFLAG_MIRC_COLOR; flags |= GUI_PRINT_FLAG_MIRC_COLOR;
break; break;
case 4: case 4:
/* user specific colors */ /* user specific colors */
flags &= ~PRINTFLAG_MIRC_COLOR; flags &= ~GUI_PRINT_FLAG_MIRC_COLOR;
switch (*ptr) { switch (*ptr) {
case FORMAT_STYLE_BLINK: case FORMAT_STYLE_BLINK:
flags ^= PRINTFLAG_BLINK; flags ^= GUI_PRINT_FLAG_BLINK;
break; break;
case FORMAT_STYLE_UNDERLINE: case FORMAT_STYLE_UNDERLINE:
flags ^= PRINTFLAG_UNDERLINE; flags ^= GUI_PRINT_FLAG_UNDERLINE;
break; break;
case FORMAT_STYLE_BOLD: case FORMAT_STYLE_BOLD:
flags ^= PRINTFLAG_BOLD; flags ^= GUI_PRINT_FLAG_BOLD;
break; break;
case FORMAT_STYLE_REVERSE: case FORMAT_STYLE_REVERSE:
flags ^= PRINTFLAG_REVERSE; flags ^= GUI_PRINT_FLAG_REVERSE;
break; break;
case FORMAT_STYLE_INDENT: case FORMAT_STYLE_INDENT:
flags |= PRINTFLAG_INDENT; flags |= GUI_PRINT_FLAG_INDENT;
break; break;
case FORMAT_STYLE_DEFAULTS: case FORMAT_STYLE_DEFAULTS:
fgcolor = bgcolor = -1; fgcolor = bgcolor = -1;
flags &= PRINTFLAG_INDENT; flags &= GUI_PRINT_FLAG_INDENT;
break; break;
default: default:
if (*ptr != FORMAT_COLOR_NOCHANGE) { if (*ptr != FORMAT_COLOR_NOCHANGE) {
fgcolor = (unsigned char) *ptr-'0'; fgcolor = (unsigned char) *ptr-'0';
if (fgcolor <= 7) if (fgcolor <= 7)
flags &= ~PRINTFLAG_BOLD; flags &= ~GUI_PRINT_FLAG_BOLD;
else { else {
/* bold */ /* bold */
if (fgcolor != 8) fgcolor -= 8; if (fgcolor != 8) fgcolor -= 8;
flags |= PRINTFLAG_BOLD; flags |= GUI_PRINT_FLAG_BOLD;
} }
} }
ptr++; ptr++;
@ -884,22 +959,22 @@ void format_send_to_gui(TEXT_DEST_REC *dest, const char *text)
case 6: case 6:
/* blink */ /* blink */
if (!hide_text_style) if (!hide_text_style)
flags ^= PRINTFLAG_BLINK; flags ^= GUI_PRINT_FLAG_BLINK;
break; break;
case 15: case 15:
/* remove all styling */ /* remove all styling */
fgcolor = bgcolor = -1; fgcolor = bgcolor = -1;
flags &= PRINTFLAG_INDENT; flags &= GUI_PRINT_FLAG_INDENT;
break; break;
case 22: case 22:
/* reverse */ /* reverse */
if (!hide_text_style) if (!hide_text_style)
flags ^= PRINTFLAG_REVERSE; flags ^= GUI_PRINT_FLAG_REVERSE;
break; break;
case 31: case 31:
/* underline */ /* underline */
if (!hide_text_style) if (!hide_text_style)
flags ^= PRINTFLAG_UNDERLINE; flags ^= GUI_PRINT_FLAG_UNDERLINE;
break; break;
case 27: case 27:
/* ansi color code */ /* ansi color code */

View File

@ -4,13 +4,13 @@
#include "themes.h" #include "themes.h"
#include "fe-windows.h" #include "fe-windows.h"
#define PRINTFLAG_BOLD 0x01 #define GUI_PRINT_FLAG_BOLD 0x01
#define PRINTFLAG_REVERSE 0x02 #define GUI_PRINT_FLAG_REVERSE 0x02
#define PRINTFLAG_UNDERLINE 0x04 #define GUI_PRINT_FLAG_UNDERLINE 0x04
#define PRINTFLAG_BLINK 0x08 #define GUI_PRINT_FLAG_BLINK 0x08
#define PRINTFLAG_MIRC_COLOR 0x10 #define GUI_PRINT_FLAG_MIRC_COLOR 0x10
#define PRINTFLAG_INDENT 0x20 #define GUI_PRINT_FLAG_INDENT 0x20
#define PRINTFLAG_NEWLINE 0x40 #define GUI_PRINT_FLAG_NEWLINE 0x40
#define MAX_FORMAT_PARAMS 10 #define MAX_FORMAT_PARAMS 10
#define DEFAULT_FORMAT_ARGLIST_SIZE 200 #define DEFAULT_FORMAT_ARGLIST_SIZE 200
@ -30,6 +30,16 @@ struct _FORMAT_REC {
int paramtypes[MAX_FORMAT_PARAMS]; int paramtypes[MAX_FORMAT_PARAMS];
}; };
#define PRINT_FLAG_SET_LINE_START 0x0001
#define PRINT_FLAG_SET_LINE_START_IRSSI 0x0002
#define PRINT_FLAG_UNSET_LINE_START 0x0003
#define PRINT_FLAG_SET_TIMESTAMP 0x0004
#define PRINT_FLAG_UNSET_TIMESTAMP 0x0008
#define PRINT_FLAG_SET_SERVERTAG 0x0010
#define PRINT_FLAG_UNSET_SERVERTAG 0x0020
typedef struct { typedef struct {
WINDOW_REC *window; WINDOW_REC *window;
SERVER_REC *server; SERVER_REC *server;
@ -38,6 +48,7 @@ typedef struct {
int hilight_priority; int hilight_priority;
char *hilight_color; char *hilight_color;
int flags;
} TEXT_DEST_REC; } TEXT_DEST_REC;
int format_find_tag(const char *module, const char *tag); int format_find_tag(const char *module, const char *tag);
@ -49,7 +60,7 @@ int format_get_length(const char *str);
handles %codes. */ handles %codes. */
int format_real_length(const char *str, int len); int format_real_length(const char *str, int len);
char *format_string_expand(const char *text); char *format_string_expand(const char *text, int *flags);
char *format_get_text(const char *module, WINDOW_REC *window, char *format_get_text(const char *module, WINDOW_REC *window,
void *server, const char *target, void *server, const char *target,
@ -107,7 +118,7 @@ void format_send_to_gui(TEXT_DEST_REC *dest, const char *text);
#define FORMAT_STYLE_REVERSE (0x04 + FORMAT_STYLE_SPECIAL) #define FORMAT_STYLE_REVERSE (0x04 + FORMAT_STYLE_SPECIAL)
#define FORMAT_STYLE_INDENT (0x05 + FORMAT_STYLE_SPECIAL) #define FORMAT_STYLE_INDENT (0x05 + FORMAT_STYLE_SPECIAL)
#define FORMAT_STYLE_DEFAULTS (0x06 + FORMAT_STYLE_SPECIAL) #define FORMAT_STYLE_DEFAULTS (0x06 + FORMAT_STYLE_SPECIAL)
int format_expand_styles(GString *out, char format); int format_expand_styles(GString *out, const char **format, int *flags);
void formats_init(void); void formats_init(void);
void formats_deinit(void); void formats_deinit(void);

View File

@ -263,7 +263,7 @@ static char *hilight_get_color(HILIGHT_REC *rec)
color = rec->color != NULL ? rec->color : color = rec->color != NULL ? rec->color :
settings_get_str("hilight_color"); settings_get_str("hilight_color");
return format_string_expand(color); return format_string_expand(color, NULL);
} }
static void hilight_update_text_dest(TEXT_DEST_REC *dest, HILIGHT_REC *rec) static void hilight_update_text_dest(TEXT_DEST_REC *dest, HILIGHT_REC *rec)

View File

@ -34,11 +34,10 @@
static int beep_msg_level, beep_when_away, beep_when_window_active; static int beep_msg_level, beep_when_away, beep_when_window_active;
static int signal_gui_print_text; static int signal_gui_print_text, signal_gui_print_text_finished;
static int signal_print_text;
static int signal_print_text_finished;
static int signal_print_format;
static int signal_print_starting; static int signal_print_starting;
static int signal_print_text;
static int signal_print_format;
static int sending_print_starting; static int sending_print_starting;
@ -235,7 +234,7 @@ static char *printtext_get_args(TEXT_DEST_REC *dest, const char *str,
break; break;
} }
default: default:
if (!format_expand_styles(out, *str)) { if (!format_expand_styles(out, &str, &dest->flags)) {
g_string_append_c(out, '%'); g_string_append_c(out, '%');
g_string_append_c(out, *str); g_string_append_c(out, *str);
} }
@ -248,7 +247,7 @@ static char *printtext_get_args(TEXT_DEST_REC *dest, const char *str,
return ret; return ret;
} }
static char *printtext_expand_formats(const char *str) static char *printtext_expand_formats(const char *str, int *flags)
{ {
GString *out; GString *out;
char *ret; char *ret;
@ -263,7 +262,7 @@ static char *printtext_expand_formats(const char *str)
if (*++str == '\0') if (*++str == '\0')
break; break;
if (!format_expand_styles(out, *str)) { if (!format_expand_styles(out, &str, flags)) {
g_string_append_c(out, '%'); g_string_append_c(out, '%');
g_string_append_c(out, *str); g_string_append_c(out, *str);
} }
@ -320,7 +319,7 @@ void printtext_string(void *server, const char *target, int level, const char *t
sending_print_starting = FALSE; sending_print_starting = FALSE;
} }
str = printtext_expand_formats(text); str = printtext_expand_formats(text, &dest.flags);
print_line(&dest, str); print_line(&dest, str);
g_free(str); g_free(str);
} }
@ -349,7 +348,7 @@ void printtext_gui(const char *text)
memset(&dest, 0, sizeof(dest)); memset(&dest, 0, sizeof(dest));
str = printtext_expand_formats(text); str = printtext_expand_formats(text, &dest.flags);
format_send_to_gui(&dest, str); format_send_to_gui(&dest, str);
g_free(str); g_free(str);
} }
@ -385,7 +384,7 @@ static void sig_print_text(TEXT_DEST_REC *dest, const char *text)
format_send_to_gui(dest, str); format_send_to_gui(dest, str);
g_free(str); g_free(str);
signal_emit_id(signal_print_text_finished, 1, dest->window); signal_emit_id(signal_gui_print_text_finished, 1, dest->window);
} }
static void sig_print_text_free(TEXT_DEST_REC *dest, const char *text) static void sig_print_text_free(TEXT_DEST_REC *dest, const char *text)
@ -432,10 +431,10 @@ void printtext_init(void)
{ {
sending_print_starting = FALSE; sending_print_starting = FALSE;
signal_gui_print_text = signal_get_uniq_id("gui print text"); signal_gui_print_text = signal_get_uniq_id("gui print text");
signal_print_text = signal_get_uniq_id("print text"); signal_gui_print_text_finished = signal_get_uniq_id("gui print text finished");
signal_print_text_finished = signal_get_uniq_id("print text finished");
signal_print_format = signal_get_uniq_id("print format");
signal_print_starting = signal_get_uniq_id("print starting"); signal_print_starting = signal_get_uniq_id("print starting");
signal_print_text = signal_get_uniq_id("print text");
signal_print_format = signal_get_uniq_id("print format");
read_settings(); read_settings();
signal_add("print text", (SIGNAL_FUNC) sig_print_text); signal_add("print text", (SIGNAL_FUNC) sig_print_text);

View File

@ -72,7 +72,7 @@ static void remove_old_lines(TEXT_BUFFER_VIEW_REC *view)
static void get_colors(int flags, int *fg, int *bg) static void get_colors(int flags, int *fg, int *bg)
{ {
if (flags & PRINTFLAG_MIRC_COLOR) { if (flags & GUI_PRINT_FLAG_MIRC_COLOR) {
/* mirc colors - real range is 0..15, but after 16 /* mirc colors - real range is 0..15, but after 16
colors wrap to 0, 1, ... */ colors wrap to 0, 1, ... */
*bg = *bg < 0 ? 0 : mirc_colors[*bg % 16]; *bg = *bg < 0 ? 0 : mirc_colors[*bg % 16];
@ -88,19 +88,19 @@ static void get_colors(int flags, int *fg, int *bg)
current_theme->default_real_color; current_theme->default_real_color;
} }
if (flags & PRINTFLAG_REVERSE) { if (flags & GUI_PRINT_FLAG_REVERSE) {
int tmp; int tmp;
tmp = *fg; *fg = *bg; *bg = tmp; tmp = *fg; *fg = *bg; *bg = tmp;
} }
if (*fg == 8) *fg |= ATTR_COLOR8; if (*fg == 8) *fg |= ATTR_COLOR8;
if (flags & PRINTFLAG_BOLD) { if (flags & GUI_PRINT_FLAG_BOLD) {
if (*fg == 0) *fg = current_theme->default_real_color; if (*fg == 0) *fg = current_theme->default_real_color;
*fg |= 8; *fg |= 8;
} }
if (flags & PRINTFLAG_UNDERLINE) *fg |= ATTR_UNDERLINE; if (flags & GUI_PRINT_FLAG_UNDERLINE) *fg |= ATTR_UNDERLINE;
if (flags & PRINTFLAG_BLINK) *bg |= 0x08; if (flags & GUI_PRINT_FLAG_BLINK) *bg |= 0x08;
} }
static void line_add_colors(TEXT_BUFFER_REC *buffer, LINE_REC **line, static void line_add_colors(TEXT_BUFFER_REC *buffer, LINE_REC **line,
@ -120,7 +120,7 @@ static void line_add_colors(TEXT_BUFFER_REC *buffer, LINE_REC **line,
data[pos++] = color == 0 ? LINE_CMD_COLOR0 : color; data[pos++] = color == 0 ? LINE_CMD_COLOR0 : color;
} }
if ((flags & PRINTFLAG_UNDERLINE) != (last_flags & PRINTFLAG_UNDERLINE)) { if ((flags & GUI_PRINT_FLAG_UNDERLINE) != (last_flags & GUI_PRINT_FLAG_UNDERLINE)) {
data[pos++] = 0; data[pos++] = 0;
data[pos++] = LINE_CMD_UNDERLINE; data[pos++] = LINE_CMD_UNDERLINE;
} }
@ -132,7 +132,7 @@ static void line_add_colors(TEXT_BUFFER_REC *buffer, LINE_REC **line,
data[pos++] = 0; data[pos++] = 0;
data[pos++] = LINE_CMD_BLINK; data[pos++] = LINE_CMD_BLINK;
} }
if (flags & PRINTFLAG_INDENT) { if (flags & GUI_PRINT_FLAG_INDENT) {
data[pos++] = 0; data[pos++] = 0;
data[pos++] = LINE_CMD_INDENT; data[pos++] = LINE_CMD_INDENT;
} }
@ -182,14 +182,14 @@ static void sig_gui_print_text(WINDOW_REC *window, void *fgcolor,
insert_after = WINDOW_GUI(window)->use_insert_after ? insert_after = WINDOW_GUI(window)->use_insert_after ?
WINDOW_GUI(window)->insert_after : view->buffer->cur_line; WINDOW_GUI(window)->insert_after : view->buffer->cur_line;
if (flags & PRINTFLAG_NEWLINE) if (flags & GUI_PRINT_FLAG_NEWLINE)
view_add_eol(view, &insert_after); view_add_eol(view, &insert_after);
line_add_colors(view->buffer, &insert_after, fg, bg, flags); line_add_colors(view->buffer, &insert_after, fg, bg, flags);
textbuffer_insert(view->buffer, insert_after, textbuffer_insert(view->buffer, insert_after,
str, strlen(str), &lineinfo); str, strlen(str), &lineinfo);
} }
static void sig_printtext_finished(WINDOW_REC *window) static void sig_gui_printtext_finished(WINDOW_REC *window)
{ {
TEXT_BUFFER_VIEW_REC *view; TEXT_BUFFER_VIEW_REC *view;
LINE_REC *insert_after; LINE_REC *insert_after;
@ -258,7 +258,7 @@ void gui_printtext_init(void)
settings_add_bool("history", "scrollback_save_formats", FALSE); settings_add_bool("history", "scrollback_save_formats", FALSE);
signal_add("gui print text", (SIGNAL_FUNC) sig_gui_print_text); signal_add("gui print text", (SIGNAL_FUNC) sig_gui_print_text);
signal_add("print text finished", (SIGNAL_FUNC) sig_printtext_finished); signal_add("gui print text finished", (SIGNAL_FUNC) sig_gui_printtext_finished);
signal_add("print format", (SIGNAL_FUNC) sig_print_format); signal_add("print format", (SIGNAL_FUNC) sig_print_format);
signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("setup changed", (SIGNAL_FUNC) read_settings);
@ -270,7 +270,7 @@ void gui_printtext_deinit(void)
g_string_free(format, TRUE); g_string_free(format, TRUE);
signal_remove("gui print text", (SIGNAL_FUNC) sig_gui_print_text); signal_remove("gui print text", (SIGNAL_FUNC) sig_gui_print_text);
signal_remove("print text finished", (SIGNAL_FUNC) sig_printtext_finished); signal_remove("print text finished", (SIGNAL_FUNC) sig_gui_printtext_finished);
signal_remove("print format", (SIGNAL_FUNC) sig_print_format); signal_remove("print format", (SIGNAL_FUNC) sig_print_format);
signal_remove("setup changed", (SIGNAL_FUNC) read_settings); signal_remove("setup changed", (SIGNAL_FUNC) read_settings);
} }