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:
+48
-38
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user