static void signal_query_created(QUERY_REC *query, gpointer automatic) { TEXT_DEST_REC dest; g_return_if_fail(IS_QUERY(query)); if (window_item_window(query) == NULL) { window_item_create((WI_ITEM_REC *) query, GPOINTER_TO_INT(automatic)); } format_create_dest_tag(&dest, query->server, query->server_tag, query->name, MSGLEVEL_CLIENTNOTICE, NULL); printformat_dest(&dest, TXT_QUERY_START, query->name, query->server_tag); }
static void signal_query_nick_changed(QUERY_REC *query, const char *oldnick) { TEXT_DEST_REC dest; g_return_if_fail(query != NULL); format_create_dest_tag(&dest, query->server, query->server_tag, query->name, MSGLEVEL_NICKS, NULL); /* don't print the nick change message if only the case was changed */ if (g_strcasecmp(query->name, oldnick) != 0) { printformat_dest(&dest, TXT_NICK_CHANGED, oldnick, query->name, query->name, query->address == NULL ? "" : query->address); } signal_emit("window item changed", 2, window_item_window((WI_ITEM_REC *) query), query); }
static void cmd_window_server(const char *data) { SERVER_REC *server; QUERY_REC *query; TEXT_DEST_REC dest; g_return_if_fail(data != NULL); server = server_find_tag(data); query = QUERY(active_win->active); if (server == NULL || query == NULL) return; /* /WINDOW SERVER used in a query window */ format_create_dest_tag(&dest, query->server, query->server_tag, query->name, MSGLEVEL_CLIENTNOTICE, NULL); printformat_dest(&dest, TXT_QUERY_SERVER_CHANGED, query->name, server->tag); query_change_server(query, server); signal_stop(); }
static void signal_query_destroyed(QUERY_REC *query) { WINDOW_REC *window; TEXT_DEST_REC dest; g_return_if_fail(IS_QUERY(query)); window = window_item_window((WI_ITEM_REC *) query); if (window == NULL) return; format_create_dest_tag(&dest, query->server, query->server_tag, query->name, MSGLEVEL_CLIENTNOTICE, NULL); printformat_dest(&dest, TXT_QUERY_STOP, query->name); window_item_destroy((WI_ITEM_REC *) query); if (!query->unwanted) window_auto_destroy(window); else { /* eg. connection lost to dcc chat */ window_bind_add(window, query->server_tag, query->name); } }
static void sig_message_public(SERVER_REC *server, const char *msg, const char *nick, const char *address, const char *target, NICK_REC *nickrec) { CHANNEL_REC *chanrec; const char *printnick; int for_me, print_channel, level; char *nickmode, *color, *freemsg = NULL; HILIGHT_REC *hilight; TEXT_DEST_REC dest; /* NOTE: this may return NULL if some channel is just closed with /WINDOW CLOSE and server still sends the few last messages */ chanrec = channel_find(server, target); if (nickrec == NULL && chanrec != NULL) nickrec = nicklist_find(chanrec, nick); for_me = !settings_get_bool("hilight_nick_matches") ? FALSE : !settings_get_bool("hilight_nick_matches_everywhere") ? nick_match_msg(chanrec, msg, server->nick) : nick_match_msg_everywhere(chanrec, msg, server->nick); hilight = for_me ? NULL : hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg); color = (hilight == NULL) ? NULL : hilight_get_color(hilight); print_channel = chanrec == NULL || !window_item_is_active((WI_ITEM_REC *) chanrec); if (!print_channel && settings_get_bool("print_active_channel") && window_item_window((WI_ITEM_REC *) chanrec)->items->next != NULL) print_channel = TRUE; level = MSGLEVEL_PUBLIC; if (for_me) level |= MSGLEVEL_HILIGHT; ignore_check_plus(server, nick, address, target, msg, &level, FALSE); if (settings_get_bool("emphasis")) msg = freemsg = expand_emphasis((WI_ITEM_REC *) chanrec, msg); /* get nick mode & nick what to print the msg with (in case there's multiple identical nicks) */ nickmode = channel_get_nickmode_rec(nickrec); printnick = nickrec == NULL ? nick : g_hash_table_lookup(printnicks, nickrec); if (printnick == NULL) printnick = nick; format_create_dest(&dest, server, target, level, NULL); dest.address = address; dest.nick = nick; if (color != NULL) { /* highlighted nick */ hilight_update_text_dest(&dest,hilight); if (!print_channel) /* message to active channel in window */ printformat_dest(&dest, TXT_PUBMSG_HILIGHT, color, printnick, msg, nickmode); else /* message to not existing/active channel */ printformat_dest(&dest, TXT_PUBMSG_HILIGHT_CHANNEL, color, printnick, target, msg, nickmode); } else { if (!print_channel) printformat_dest(&dest, for_me ? TXT_PUBMSG_ME : TXT_PUBMSG, printnick, msg, nickmode); else printformat_dest(&dest, for_me ? TXT_PUBMSG_ME_CHANNEL : TXT_PUBMSG_CHANNEL, printnick, target, msg, nickmode); } g_free_not_null(nickmode); g_free_not_null(freemsg); g_free_not_null(color); }