From a965be6802bbc601096c4186d3e338652b6c9bd2 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Wed, 22 Oct 2008 12:58:05 +0200 Subject: [PATCH] Add function buffer_set_pointer in plugin API --- src/gui/gui-buffer.c | 86 +++++++++++++---------- src/gui/gui-buffer.h | 4 +- src/plugins/irc/irc-channel.c | 2 +- src/plugins/irc/irc-server.c | 2 +- src/plugins/irc/irc-upgrade.c | 4 +- src/plugins/plugin.c | 1 + src/plugins/scripts/lua/weechat-lua-api.c | 4 +- src/plugins/weechat-plugin.h | 8 ++- src/plugins/xfer/xfer-buffer.c | 2 +- src/plugins/xfer/xfer-upgrade.c | 4 +- 10 files changed, 67 insertions(+), 50 deletions(-) diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index f023cdfa7..1d779764f 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -566,33 +566,30 @@ gui_buffer_set_unread (struct t_gui_buffer *buffer) } /* - * gui_buffer_set: set a buffer property + * gui_buffer_set: set a buffer property (string) */ void gui_buffer_set (struct t_gui_buffer *buffer, const char *property, - void *value) + const char *value) { - const char *value_str; long number; char *error; if (!property || !value) return; - value_str = (const char *)value; - /* properties that does NOT need a buffer */ if (string_strcasecmp (property, "hotlist") == 0) { - if (strcmp (value_str, "-") == 0) + if (strcmp (value, "-") == 0) gui_add_hotlist = 0; - else if (strcmp (value_str, "+") == 0) + else if (strcmp (value, "+") == 0) gui_add_hotlist = 1; else { error = NULL; - number = strtol (value_str, &error, 10); + number = strtol (value, &error, 10); if (error && !error[0]) gui_hotlist_add (buffer, number, NULL, 1); } @@ -606,45 +603,29 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property, return; /* properties that need a buffer */ - if (string_strcasecmp (property, "close_callback") == 0) - { - buffer->close_callback = value; - } - else if (string_strcasecmp (property, "close_callback_data") == 0) - { - buffer->close_callback_data = value; - } - else if (string_strcasecmp (property, "input_callback") == 0) - { - buffer->input_callback = value; - } - else if (string_strcasecmp (property, "input_callback_data") == 0) - { - buffer->input_callback_data = value; - } - else if (string_strcasecmp (property, "display") == 0) + if (string_strcasecmp (property, "display") == 0) { gui_window_switch_to_buffer (gui_current_window, buffer); } else if (string_strcasecmp (property, "name") == 0) { - gui_buffer_set_name (buffer, value_str); + gui_buffer_set_name (buffer, value); } else if (string_strcasecmp (property, "short_name") == 0) { - gui_buffer_set_short_name (buffer, value_str); + gui_buffer_set_short_name (buffer, value); } else if (string_strcasecmp (property, "type") == 0) { - if (string_strcasecmp (value_str, "formated") == 0) + if (string_strcasecmp (value, "formated") == 0) gui_buffer_set_type (buffer, GUI_BUFFER_TYPE_FORMATED); - else if (string_strcasecmp (value_str, "free") == 0) + else if (string_strcasecmp (value, "free") == 0) gui_buffer_set_type (buffer, GUI_BUFFER_TYPE_FREE); } else if (string_strcasecmp (property, "notify") == 0) { error = NULL; - number = strtol (value_str, &error, 10); + number = strtol (value, &error, 10); if (error && !error[0] && (number < GUI_BUFFER_NUM_NOTIFY)) { @@ -656,40 +637,40 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property, } else if (string_strcasecmp (property, "title") == 0) { - gui_buffer_set_title (buffer, value_str); + gui_buffer_set_title (buffer, value); } else if (string_strcasecmp (property, "nicklist") == 0) { error = NULL; - number = strtol (value_str, &error, 10); + number = strtol (value, &error, 10); if (error && !error[0]) gui_buffer_set_nicklist (buffer, number); } else if (string_strcasecmp (property, "nicklist_case_sensitive") == 0) { error = NULL; - number = strtol (value_str, &error, 10); + number = strtol (value, &error, 10); if (error && !error[0]) gui_buffer_set_nicklist_case_sensitive (buffer, number); } else if (string_strcasecmp (property, "nicklist_display_groups") == 0) { error = NULL; - number = strtol (value_str, &error, 10); + number = strtol (value, &error, 10); if (error && !error[0]) gui_buffer_set_nicklist_display_groups (buffer, number); } else if (string_strcasecmp (property, "highlight_words") == 0) { - gui_buffer_set_highlight_words (buffer, value_str); + gui_buffer_set_highlight_words (buffer, value); } else if (string_strcasecmp (property, "highlight_tags") == 0) { - gui_buffer_set_highlight_tags (buffer, value_str); + gui_buffer_set_highlight_tags (buffer, value); } else if (string_strncasecmp (property, "key_bind_", 9) == 0) { - gui_keyboard_bind (buffer, property + 9, value_str); + gui_keyboard_bind (buffer, property + 9, value); } else if (string_strncasecmp (property, "key_unbind_", 11) == 0) { @@ -701,12 +682,41 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property, else if (string_strcasecmp (property, "input") == 0) { gui_input_delete_line (buffer); - gui_input_insert_string (buffer, value_str, 0); + gui_input_insert_string (buffer, value, 0); gui_input_text_changed_signal (); gui_buffer_ask_input_refresh (buffer, 1); } } +/* + * gui_buffer_set: set a buffer property (pointer) + */ + +void +gui_buffer_set_pointer (struct t_gui_buffer *buffer, const char *property, + void *pointer) +{ + if (!buffer || !property) + return; + + if (string_strcasecmp (property, "close_callback") == 0) + { + buffer->close_callback = pointer; + } + else if (string_strcasecmp (property, "close_callback_data") == 0) + { + buffer->close_callback_data = pointer; + } + else if (string_strcasecmp (property, "input_callback") == 0) + { + buffer->input_callback = pointer; + } + else if (string_strcasecmp (property, "input_callback_data") == 0) + { + buffer->input_callback_data = pointer; + } +} + /* * gui_buffer_search_main: get main buffer (weechat one, created at startup) * return first buffer if not found diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h index a003a5c4b..9e9b0bfe4 100644 --- a/src/gui/gui-buffer.h +++ b/src/gui/gui-buffer.h @@ -206,7 +206,9 @@ extern void gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer, const char *new_highlight_tags); extern void gui_buffer_set_unread (struct t_gui_buffer *buffer); extern void gui_buffer_set (struct t_gui_buffer *buffer, const char *property, - void *value); + const char *value); +extern void gui_buffer_set_pointer (struct t_gui_buffer *buffer, + const char *property, void *pointer); extern struct t_gui_buffer *gui_buffer_search_main (); extern struct t_gui_buffer *gui_buffer_search_by_name (const char *plugin, const char *name); diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c index 89d3c06ba..2c015ed57 100644 --- a/src/plugins/irc/irc-channel.c +++ b/src/plugins/irc/irc-channel.c @@ -96,7 +96,7 @@ irc_channel_new (struct t_irc_server *server, int channel_type, return NULL; } - weechat_buffer_set (new_buffer, "short_name", (char *)channel_name); + weechat_buffer_set (new_buffer, "short_name", channel_name); weechat_hook_signal_send ("logger_backlog", WEECHAT_HOOK_SIGNAL_POINTER, new_buffer); diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 5fff09da5..998856a5e 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -304,7 +304,7 @@ irc_server_set_nick (struct t_irc_server *server, const char *nick) free (server->nick); server->nick = (nick) ? strdup (nick) : NULL; - weechat_buffer_set (server->buffer, "highlight_words", (void *)nick); + weechat_buffer_set (server->buffer, "highlight_words", nick); weechat_bar_item_update ("input_prompt"); } diff --git a/src/plugins/irc/irc-upgrade.c b/src/plugins/irc/irc-upgrade.c index afe8c8f85..a46c37c02 100644 --- a/src/plugins/irc/irc-upgrade.c +++ b/src/plugins/irc/irc-upgrade.c @@ -153,8 +153,8 @@ irc_upgrade_set_buffer_callbacks () if (weechat_infolist_pointer (infolist, "plugin") == weechat_irc_plugin) { ptr_buffer = weechat_infolist_pointer (infolist, "pointer"); - weechat_buffer_set (ptr_buffer, "close_callback", &irc_buffer_close_cb); - weechat_buffer_set (ptr_buffer, "input_callback", &irc_input_data_cb); + weechat_buffer_set_pointer (ptr_buffer, "close_callback", &irc_buffer_close_cb); + weechat_buffer_set_pointer (ptr_buffer, "input_callback", &irc_input_data_cb); } } } diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c index 4b549ec3e..0afd2192d 100644 --- a/src/plugins/plugin.c +++ b/src/plugins/plugin.c @@ -414,6 +414,7 @@ plugin_load (const char *filename) new_plugin->buffer_get_string = &gui_buffer_get_string; new_plugin->buffer_get_pointer = &gui_buffer_get_pointer; new_plugin->buffer_set = &gui_buffer_set; + new_plugin->buffer_set_pointer = &gui_buffer_set_pointer; new_plugin->window_get_integer = &gui_window_get_integer; new_plugin->window_get_string = &gui_window_get_string; diff --git a/src/plugins/scripts/lua/weechat-lua-api.c b/src/plugins/scripts/lua/weechat-lua-api.c index a126669f8..081a2e083 100644 --- a/src/plugins/scripts/lua/weechat-lua-api.c +++ b/src/plugins/scripts/lua/weechat-lua-api.c @@ -3871,7 +3871,7 @@ weechat_lua_api_buffer_set (lua_State *L) property = lua_tostring (lua_current_interpreter, -2); value = lua_tostring (lua_current_interpreter, -1); - weechat_buffer_set (script_str2ptr (buffer), property, (void *)value); + weechat_buffer_set (script_str2ptr (buffer), property, value); LUA_RETURN_OK; } @@ -4530,7 +4530,7 @@ weechat_lua_api_bar_set (lua_State *L) weechat_buffer_set (script_str2ptr (bar), property, - (void *)value); + value); LUA_RETURN_OK; } diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h index 7c1a0efef..4536acf2d 100644 --- a/src/plugins/weechat-plugin.h +++ b/src/plugins/weechat-plugin.h @@ -420,8 +420,10 @@ struct t_weechat_plugin void *(*buffer_get_pointer) (struct t_gui_buffer *buffer, const char *property); void (*buffer_set) (struct t_gui_buffer *buffer, const char *property, - void *value); - + const char *value); + void (*buffer_set_pointer) (struct t_gui_buffer *buffer, + const char *property, void *pointer); + /* windows */ int (*window_get_integer) (struct t_gui_window *window, const char *property); @@ -908,6 +910,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); weechat_plugin->buffer_get_pointer(__buffer, __property) #define weechat_buffer_set(__buffer, __property, __value) \ weechat_plugin->buffer_set(__buffer, __property, __value) +#define weechat_buffer_set_pointer(__buffer, __property, __pointer) \ + weechat_plugin->buffer_set_pointer(__buffer, __property, __pointer) /* windows */ #define weechat_window_get_integer(__window, __property) \ diff --git a/src/plugins/xfer/xfer-buffer.c b/src/plugins/xfer/xfer-buffer.c index 836e155ad..fbac50de6 100644 --- a/src/plugins/xfer/xfer-buffer.c +++ b/src/plugins/xfer/xfer-buffer.c @@ -245,7 +245,7 @@ xfer_buffer_refresh (const char *hotlist) } line++; } - weechat_buffer_set (xfer_buffer, "hotlist", (void *)hotlist); + weechat_buffer_set (xfer_buffer, "hotlist", hotlist); } } diff --git a/src/plugins/xfer/xfer-upgrade.c b/src/plugins/xfer/xfer-upgrade.c index 0d4f2e6c6..4f8a0780b 100644 --- a/src/plugins/xfer/xfer-upgrade.c +++ b/src/plugins/xfer/xfer-upgrade.c @@ -81,8 +81,8 @@ xfer_upgrade_set_buffer_callbacks () if (weechat_infolist_pointer (infolist, "plugin") == weechat_xfer_plugin) { ptr_buffer = weechat_infolist_pointer (infolist, "pointer"); - weechat_buffer_set (ptr_buffer, "close_callback", &xfer_buffer_close_cb); - weechat_buffer_set (ptr_buffer, "input_callback", &xfer_buffer_input_cb); + weechat_buffer_set_pointer (ptr_buffer, "close_callback", &xfer_buffer_close_cb); + weechat_buffer_set_pointer (ptr_buffer, "input_callback", &xfer_buffer_input_cb); } } }