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); }
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; }
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); }
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); }
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); }
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); }
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); }