Ejemplo n.º 1
0
static void sig_print_text(TEXT_DEST_REC *dest, const char *text)
{
        THEME_REC *theme;
	char *str, *tmp;

	g_return_if_fail(dest != NULL);
	g_return_if_fail(text != NULL);

	if (dest->window == NULL) {
                str = strip_codes(text);
		printf("NO WINDOWS: %s\n", str);
                g_free(str);
                return;
	}

	msg_beep_check(dest);

        if ((dest->level & MSGLEVEL_NEVER) == 0)
		dest->window->last_line = time(NULL);

	/* add timestamp/server tag here - if it's done in print_line()
	   it would be written to log files too */
        theme = window_get_theme(dest->window);
	tmp = format_get_line_start(theme, dest, time(NULL));
	str = !theme->info_eol ? format_add_linestart(text, tmp) :
		format_add_lineend(text, tmp);

	g_free_not_null(tmp);

	format_send_to_gui(dest, str);
	g_free(str);

	signal_emit_id(signal_gui_print_text_finished, 1, dest->window);
}
Ejemplo n.º 2
0
void gui_printtext_after(TEXT_DEST_REC *dest, LINE_REC *prev, const char *str)
{
	GUI_WINDOW_REC *gui;

	gui = WINDOW_GUI(dest->window);

	gui->use_insert_after = TRUE;
	gui->insert_after = prev;
	format_send_to_gui(dest, str);
	gui->use_insert_after = FALSE;
}
Ejemplo n.º 3
0
void gui_window_reformat_line(WINDOW_REC *window, LINE_REC *line)
{
    GUI_WINDOW_REC *gui;
    TEXT_DEST_REC dest;
    GString *raw;
    char *str, *tmp, *prestr, *linestart, *leveltag;

    gui = WINDOW_GUI(window);

    raw = g_string_new(NULL);
    str = gui_window_line_get_format(window, line, raw);

    if (str == NULL && raw->len == 2 &&
            raw->str[1] == (char)LINE_CMD_FORMAT_CONT) {
        /* multiline format, format explained in one the
           following lines. remove this line. */
        gui_window_line_remove(window, line, FALSE);
    } else if (str != NULL) {
        /* FIXME: ugly ugly .. and this can't handle
           non-formatted lines.. */
        g_string_append_c(raw, '\0');
        g_string_append_c(raw, (char)LINE_CMD_EOL);

        gui_window_line_text_free(gui, line);

        gui->temp_line = line;
        gui->temp_line->text = gui->cur_text->buffer+gui->cur_text->pos;
        gui->cur_text->lines++;
        gui->eol_marked = FALSE;

        format_create_dest(&dest, NULL, NULL, line->level, window);

        linestart = format_get_line_start(current_theme, &dest, line->time);
        leveltag = format_get_level_tag(current_theme, &dest);

        prestr = g_strconcat(linestart == NULL ? "" : linestart,
                             leveltag, NULL);
        g_free_not_null(linestart);
        g_free_not_null(leveltag);

        tmp = format_add_linestart(str, prestr);
        g_free(str);
        g_free(prestr);

        format_send_to_gui(&dest, tmp);
        g_free(tmp);

        gui_window_line_append(gui, raw->str, raw->len);

        gui->eol_marked = TRUE;
        gui->temp_line = NULL;
    }
    g_string_free(raw, TRUE);
}
Ejemplo n.º 4
0
void printtext_gui(const char *text)
{
	TEXT_DEST_REC dest;
        char *str;

	g_return_if_fail(text != NULL);

        memset(&dest, 0, sizeof(dest));

	str = printtext_expand_formats(text, &dest.flags);
	format_send_to_gui(&dest, str);
	g_free(str);
}
Ejemplo n.º 5
0
void gui_printtext_after_time(TEXT_DEST_REC *dest, LINE_REC *prev, const char *str, time_t time)
{
	GUI_WINDOW_REC *gui;

	gui = WINDOW_GUI(dest->window);

	gui->use_insert_after = TRUE;
	gui->insert_after = prev;
	gui->insert_after_time = time;
	format_send_to_gui(dest, str);
	gui->use_insert_after = FALSE;
	signal_emit("gui print text after finished", 3, dest->window, gui->insert_after, prev);
}
Ejemplo n.º 6
0
void gui_printtext_after_time(TEXT_DEST_REC *dest, LINE_REC *prev, const char *str, time_t time)
{
	GUI_WINDOW_REC *gui;

	gui = WINDOW_GUI(dest->window);

	if (prev == NULL && !gui->view->buffer->last_eol) {
		/* we have an unfinished line in the buffer still */
		view_add_eol(gui->view, &gui->insert_after);
	}

	gui->use_insert_after = TRUE;
	gui->insert_after = prev;
	gui->insert_after_time = time;
	format_send_to_gui(dest, str);
	gui->use_insert_after = FALSE;
	signal_emit("gui print text after finished", 3, dest->window, gui->insert_after, prev);
}
Ejemplo n.º 7
0
void printformat_module_gui_args(const char *module, int formatnum, va_list va)
{
	TEXT_DEST_REC dest;
	char *arglist[MAX_FORMAT_PARAMS];
	char buffer[DEFAULT_FORMAT_ARGLIST_SIZE];
	FORMAT_REC *formats;
        char *str;

	g_return_if_fail(module != NULL);

        memset(&dest, 0, sizeof(dest));

	formats = g_hash_table_lookup(default_formats, module);
	format_read_arglist(va, &formats[formatnum],
			    arglist, sizeof(arglist)/sizeof(char *),
			    buffer, sizeof(buffer));

	str = format_get_text_theme_charargs(window_get_theme(dest.window),
					     module, &dest,
					     formatnum, arglist);
	if (*str != '\0') format_send_to_gui(&dest, str);
	g_free(str);
}