diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2008-01-04 23:47:26 +0100 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2008-01-04 23:47:26 +0100 |
commit | 2b7c8eb73b5b8ac45c389ebc86671c2f0c487de0 (patch) | |
tree | 503315e92c57382c4959f1f491677674e30049b8 /src/plugins/irc | |
parent | 23273bf47a94c759d36584dad7053f0867556869 (diff) | |
download | weechat-2b7c8eb73b5b8ac45c389ebc86671c2f0c487de0.zip |
Fixed data input in channel buffers (IRC plugin)
Diffstat (limited to 'src/plugins/irc')
-rw-r--r-- | src/plugins/irc/Makefile.am | 2 | ||||
-rw-r--r-- | src/plugins/irc/irc-channel.c | 4 | ||||
-rw-r--r-- | src/plugins/irc/irc-input.c | 122 | ||||
-rw-r--r-- | src/plugins/irc/irc-input.h | 25 |
4 files changed, 88 insertions, 65 deletions
diff --git a/src/plugins/irc/Makefile.am b/src/plugins/irc/Makefile.am index bf856a86d..599886020 100644 --- a/src/plugins/irc/Makefile.am +++ b/src/plugins/irc/Makefile.am @@ -34,6 +34,7 @@ irc_la_SOURCES = irc.c \ irc-config.h \ irc-display.c \ irc-display.h \ + irc-input.c \ irc-mode.c \ irc-mode.h \ irc-nick.c \ @@ -47,7 +48,6 @@ irc_la_SOURCES = irc.c \ # irc-buffer.h \ # irc-dcc.c \ # irc-dcc.h \ -# irc-input.c \ # irc-log.c irc_la_LDFLAGS = -module diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c index fb9a08c5c..81d119d15 100644 --- a/src/plugins/irc/irc-channel.c +++ b/src/plugins/irc/irc-channel.c @@ -33,6 +33,7 @@ #include "irc-dcc.h" #include "irc-nick.h" #include "irc-server.h" +#include "irc-input.h" /* @@ -57,7 +58,8 @@ irc_channel_new (struct t_irc_server *server, int channel_type, } /* create buffer for channel */ - new_buffer = weechat_buffer_new (server->name, channel_name, NULL); + new_buffer = weechat_buffer_new (server->name, channel_name, + &irc_input_data); if (!new_buffer) { free (new_channel); diff --git a/src/plugins/irc/irc-input.c b/src/plugins/irc/irc-input.c index 553b2955e..bf3e40b8e 100644 --- a/src/plugins/irc/irc-input.c +++ b/src/plugins/irc/irc-input.c @@ -26,11 +26,13 @@ #include <stdlib.h> #include <string.h> -#include "../../core/weechat.h" #include "irc.h" -#include "../../core/utf8.h" -#include "../../core/weechat-config.h" -#include "../../gui/gui.h" +#include "irc-server.h" +#include "irc-channel.h" +#include "irc-nick.h" +#include "irc-dcc.h" +#include "irc-color.h" +#include "irc-config.h" /* @@ -38,45 +40,41 @@ */ void -irc_input_user_message_display (t_gui_window *window, char *text) +irc_input_user_message_display (struct t_gui_buffer *buffer, char *text) { - t_irc_nick *ptr_nick; - - IRC_BUFFER_GET_SERVER_CHANNEL(window->buffer); + struct t_irc_nick *ptr_nick; - if ((ptr_channel->type == IRC_CHANNEL_TYPE_PRIVATE) - || (ptr_channel->type == IRC_CHANNEL_TYPE_DCC_CHAT)) - { - irc_display_nick (window->buffer, NULL, ptr_server->nick, - GUI_MSG_TYPE_NICK, 1, - GUI_COLOR(GUI_COLOR_CHAT_NICK_SELF), 0); - gui_chat_printf_type (window->buffer, - GUI_MSG_TYPE_MSG, - NULL, -1, - "%s%s\n", - GUI_COLOR(GUI_COLOR_CHAT), - text); - } - else + IRC_GET_SERVER_CHANNEL(buffer); + + if (ptr_channel) { - ptr_nick = irc_nick_search (ptr_channel, ptr_server->nick); - if (ptr_nick) + if ((ptr_channel->type == IRC_CHANNEL_TYPE_PRIVATE) + || (ptr_channel->type == IRC_CHANNEL_TYPE_DCC_CHAT)) { - irc_display_nick (window->buffer, ptr_nick, NULL, - GUI_MSG_TYPE_NICK, 1, NULL, 0); - gui_chat_printf_type (window->buffer, - GUI_MSG_TYPE_MSG, - NULL, -1, - "%s%s\n", - GUI_COLOR(GUI_COLOR_CHAT), - text); + weechat_printf (buffer, + "%s%s", + irc_nick_as_prefix (NULL, ptr_server->nick, + IRC_COLOR_CHAT_NICK_SELF), + text); } else { - gui_chat_printf_error (ptr_server->buffer, - _("%s cannot find nick for sending " - "message\n"), - WEECHAT_ERROR); + ptr_nick = irc_nick_search (ptr_channel, ptr_server->nick); + if (ptr_nick) + { + weechat_printf (buffer, + "%s%s", + irc_nick_as_prefix (ptr_nick, NULL, + IRC_COLOR_CHAT_NICK_SELF), + text); + } + else + { + weechat_printf (ptr_server->buffer, + _("%s%s: cannot find nick for sending " + "message"), + weechat_prefix ("error"), "irc"); + } } } } @@ -87,21 +85,21 @@ irc_input_user_message_display (t_gui_window *window, char *text) */ void -irc_input_send_user_message (t_gui_window *window, char *text) +irc_input_send_user_message (struct t_gui_buffer *buffer, char *text) { int max_length; char *pos, *pos_next, *pos_max, *next, saved_char, *last_space; - IRC_BUFFER_GET_SERVER_CHANNEL(window->buffer); + IRC_GET_SERVER_CHANNEL(buffer); if (!ptr_server || !ptr_channel || !text || !text[0]) return; if (!ptr_server->is_connected) { - gui_chat_printf_error (window->buffer, - _("%s you are not connected to server\n"), - WEECHAT_ERROR); + weechat_printf (buffer, + _("%s%s: you are not connected to server"), + weechat_prefix ("error"), "irc"); return; } @@ -122,7 +120,7 @@ irc_input_send_user_message (t_gui_window *window, char *text) { if (pos[0] == ' ') last_space = pos; - pos_next = utf8_next_char (pos); + pos_next = weechat_utf8_next_char (pos); if (pos_next > pos_max) break; pos = pos_next; @@ -137,12 +135,12 @@ irc_input_send_user_message (t_gui_window *window, char *text) irc_server_sendf_queued (ptr_server, "PRIVMSG %s :%s", ptr_channel->name, text); - irc_input_user_message_display (window, text); + irc_input_user_message_display (buffer, text); if (next) { next[0] = saved_char; - irc_input_send_user_message (window, next); + irc_input_send_user_message (buffer, next); } } @@ -152,38 +150,38 @@ irc_input_send_user_message (t_gui_window *window, char *text) * PROTOCOL_RC_KO if error */ -int -irc_input_data (t_gui_window *window, char *data) +void +irc_input_data (struct t_gui_buffer *buffer, char *data) { char *data_with_colors; - IRC_BUFFER_GET_CHANNEL(window->buffer); + IRC_GET_SERVER_CHANNEL(buffer); if (ptr_channel) { data_with_colors = (char *)irc_color_encode ((unsigned char *)data, - irc_cfg_irc_colors_send); + weechat_config_boolean (irc_config_irc_colors_send)); if (ptr_channel->dcc_chat) { if (ptr_channel->dcc_chat->sock < 0) { - gui_chat_printf_error_nolog (window->buffer, - "%s DCC CHAT is closed\n", - WEECHAT_ERROR); + weechat_printf (buffer, + "%s%s: DCC CHAT is closed", + weechat_prefix ("error"), "irc"); } else { - irc_dcc_chat_sendf (ptr_channel->dcc_chat, - "%s\r\n", - (data_with_colors) ? data_with_colors : data); - irc_input_user_message_display (window, - (data_with_colors) ? - data_with_colors : data); + //irc_dcc_chat_sendf (ptr_channel->dcc_chat, + // "%s\r\n", + // (data_with_colors) ? data_with_colors : data); + //irc_input_user_message_display (buffer, + // (data_with_colors) ? + // data_with_colors : data); } } else - irc_input_send_user_message (window, + irc_input_send_user_message (buffer, (data_with_colors) ? data_with_colors : data); if (data_with_colors) @@ -191,10 +189,8 @@ irc_input_data (t_gui_window *window, char *data) } else { - gui_chat_printf_error_nolog (window->buffer, - _("This buffer is not a channel!\n")); - return PROTOCOL_RC_KO; + weechat_printf (buffer, + _("%s: this buffer is not a channel!"), + "irc"); } - - return PROTOCOL_RC_OK; } diff --git a/src/plugins/irc/irc-input.h b/src/plugins/irc/irc-input.h new file mode 100644 index 000000000..8fefc8da7 --- /dev/null +++ b/src/plugins/irc/irc-input.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2003-2008 by FlashCode <flashcode@flashtux.org> + * See README for License detail, AUTHORS for developers list. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +#ifndef __WEECHAT_IRC_INPUT_H +#define __WEECHAT_IRC_INPUT_H 1 + +extern void irc_input_data (struct t_gui_buffer *buffer, char *data); + +#endif /* irc-input.h */ |