1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-28 13:56:37 +02:00

Add function buffer_set_pointer in plugin API

This commit is contained in:
Sebastien Helleu
2008-10-22 12:58:05 +02:00
parent 533155816d
commit a965be6802
10 changed files with 67 additions and 50 deletions
+48 -38
View File
@@ -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
+3 -1
View File
@@ -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);
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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");
}
+2 -2
View File
@@ -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);
}
}
}
+1
View File
@@ -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;
+2 -2
View File
@@ -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;
}
+6 -2
View File
@@ -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) \
+1 -1
View File
@@ -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);
}
}
+2 -2
View File
@@ -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);
}
}
}