mirror of
https://github.com/weechat/weechat.git
synced 2026-06-28 13:56:37 +02:00
Added "toggle" value for /set on boolean options, fixed refresh bugs, added option type for infolist "options"
This commit is contained in:
@@ -381,7 +381,7 @@ command_buffer (void *data, struct t_gui_buffer *buffer,
|
||||
}
|
||||
gui_buffer_close (buffer, 1);
|
||||
gui_status_refresh_needed = 1;
|
||||
gui_current_window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
@@ -843,15 +843,25 @@ config_file_option_set (struct t_config_option *option, char *value,
|
||||
case CONFIG_OPTION_TYPE_BOOLEAN:
|
||||
if (value)
|
||||
{
|
||||
if (config_file_string_boolean_is_valid (value))
|
||||
if (string_strcasecmp (value, "toggle") == 0)
|
||||
{
|
||||
value_int = config_file_string_to_boolean (value);
|
||||
if (value_int == *((int *)option->value))
|
||||
rc = 1;
|
||||
else
|
||||
*((int *)option->value) =
|
||||
(*((int *)option->value) == CONFIG_BOOLEAN_TRUE) ?
|
||||
CONFIG_BOOLEAN_FALSE : CONFIG_BOOLEAN_TRUE;
|
||||
rc = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (config_file_string_boolean_is_valid (value))
|
||||
{
|
||||
*((int *)option->value) = value_int;
|
||||
rc = 2;
|
||||
value_int = config_file_string_to_boolean (value);
|
||||
if (value_int == *((int *)option->value))
|
||||
rc = 1;
|
||||
else
|
||||
{
|
||||
*((int *)option->value) = value_int;
|
||||
rc = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ struct t_hook
|
||||
struct t_hook *next_hook; /* link to next hook */
|
||||
};
|
||||
|
||||
typedef int (t_hook_callback_command)(void *data, struct t_gui_buffer *,
|
||||
typedef int (t_hook_callback_command)(void *data, struct t_gui_buffer *buffer,
|
||||
int argc, char **argv, char **argv_eol);
|
||||
|
||||
struct t_hook_command
|
||||
|
||||
@@ -1133,17 +1133,8 @@ gui_chat_draw (struct t_gui_buffer *buffer, int erase)
|
||||
{
|
||||
struct t_gui_window *ptr_win;
|
||||
struct t_gui_line *ptr_line;
|
||||
/*t_irc_dcc *dcc_first, *dcc_selected, *ptr_dcc;*/
|
||||
char format_empty[32];
|
||||
int i, line_pos, count, old_scroll, y_start, y_end;
|
||||
/*int j, num_bars;
|
||||
unsigned long pct_complete;
|
||||
char *unit_name[] = { N_("bytes"), N_("KB"), N_("MB"), N_("GB") };
|
||||
char *unit_format[] = { "%.0f", "%.1f", "%.02f", "%.02f" };
|
||||
float unit_divide[] = { 1, 1024, 1024*1024, 1024*1024*1024 };
|
||||
int num_unit;
|
||||
char format[32], date[128], *buf;
|
||||
struct tm *date_tmp;*/
|
||||
|
||||
if (!gui_ok)
|
||||
return;
|
||||
@@ -1168,254 +1159,119 @@ gui_chat_draw (struct t_gui_buffer *buffer, int erase)
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
|
||||
GUI_COLOR_CHAT);
|
||||
|
||||
/*if (buffer->type == GUI_BUFFER_TYPE_DCC)
|
||||
ptr_win->win_chat_cursor_x = 0;
|
||||
ptr_win->win_chat_cursor_y = 0;
|
||||
|
||||
switch (ptr_win->buffer->type)
|
||||
{
|
||||
i = 0;
|
||||
dcc_first = (ptr_win->dcc_first) ? (t_irc_dcc *) ptr_win->dcc_first : irc_dcc_list;
|
||||
dcc_selected = (ptr_win->dcc_selected) ? (t_irc_dcc *) ptr_win->dcc_selected : irc_dcc_list;
|
||||
for (ptr_dcc = dcc_first; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
|
||||
{
|
||||
if (i >= ptr_win->win_chat_height - 1)
|
||||
break;
|
||||
|
||||
// nickname and filename
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
GUI_COLOR_DCC_SELECTED : GUI_COLOR_WIN_CHAT);
|
||||
mvwprintw (GUI_CURSES(ptr_win)->win_chat, i, 0, "%s %-16s ",
|
||||
(ptr_dcc == dcc_selected) ? "***" : " ",
|
||||
ptr_dcc->nick);
|
||||
buf = weechat_iconv_from_internal (NULL,
|
||||
(IRC_DCC_IS_CHAT(ptr_dcc->type)) ?
|
||||
_(ptr_dcc->filename) : ptr_dcc->filename);
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, "%s",
|
||||
(buf) ? buf : ((IRC_DCC_IS_CHAT(ptr_dcc->type)) ?
|
||||
_(ptr_dcc->filename) : ptr_dcc->filename));
|
||||
if (buf)
|
||||
free (buf);
|
||||
if (IRC_DCC_IS_FILE(ptr_dcc->type))
|
||||
case GUI_BUFFER_TYPE_FORMATED:
|
||||
/* display at position of scrolling */
|
||||
if (ptr_win->start_line)
|
||||
{
|
||||
if (ptr_dcc->filename_suffix > 0)
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, " (.%d)",
|
||||
ptr_dcc->filename_suffix);
|
||||
}
|
||||
|
||||
// status
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
GUI_COLOR_DCC_SELECTED : GUI_COLOR_WIN_CHAT);
|
||||
mvwprintw (GUI_CURSES(ptr_win)->win_chat, i + 1, 0, "%s %s ",
|
||||
(ptr_dcc == dcc_selected) ? "***" : " ",
|
||||
(IRC_DCC_IS_RECV(ptr_dcc->type)) ? "-->>" : "<<--");
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
|
||||
GUI_COLOR_DCC_WAITING + ptr_dcc->status);
|
||||
buf = weechat_iconv_from_internal (NULL, _(irc_dcc_status_string[ptr_dcc->status]));
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, "%-10s",
|
||||
(buf) ? buf : _(irc_dcc_status_string[ptr_dcc->status]));
|
||||
if (buf)
|
||||
free (buf);
|
||||
|
||||
// other infos
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
GUI_COLOR_DCC_SELECTED : GUI_COLOR_WIN_CHAT);
|
||||
if (IRC_DCC_IS_FILE(ptr_dcc->type))
|
||||
{
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, " [");
|
||||
if (ptr_dcc->size == 0)
|
||||
{
|
||||
if (ptr_dcc->status == IRC_DCC_DONE)
|
||||
num_bars = 10;
|
||||
else
|
||||
num_bars = 0;
|
||||
}
|
||||
else
|
||||
num_bars = (int)((((float)(ptr_dcc->pos)/(float)(ptr_dcc->size))*100) / 10);
|
||||
for (j = 0; j < num_bars - 1; j++)
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, "=");
|
||||
if (num_bars > 0)
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, ">");
|
||||
for (j = 0; j < 10 - num_bars; j++)
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, " ");
|
||||
|
||||
if (ptr_dcc->size < 1024*10)
|
||||
num_unit = 0;
|
||||
else if (ptr_dcc->size < 1024*1024)
|
||||
num_unit = 1;
|
||||
else if (ptr_dcc->size < 1024*1024*1024)
|
||||
num_unit = 2;
|
||||
else
|
||||
num_unit = 3;
|
||||
if (ptr_dcc->size == 0)
|
||||
{
|
||||
if (ptr_dcc->status == IRC_DCC_DONE)
|
||||
pct_complete = 100;
|
||||
else
|
||||
pct_complete = 0;
|
||||
}
|
||||
else
|
||||
pct_complete = (unsigned long)(((float)(ptr_dcc->pos)/(float)(ptr_dcc->size))*100);
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, "] %3lu%% ",
|
||||
pct_complete);
|
||||
sprintf (format, "%s %%s / %s %%s",
|
||||
unit_format[num_unit],
|
||||
unit_format[num_unit]);
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, format,
|
||||
((float)(ptr_dcc->pos)) / ((float)(unit_divide[num_unit])),
|
||||
unit_name[num_unit],
|
||||
((float)(ptr_dcc->size)) / ((float)(unit_divide[num_unit])),
|
||||
unit_name[num_unit]);
|
||||
|
||||
if (ptr_dcc->bytes_per_sec < 1024*1024)
|
||||
num_unit = 1;
|
||||
else if (ptr_dcc->bytes_per_sec < 1024*1024*1024)
|
||||
num_unit = 2;
|
||||
else
|
||||
num_unit = 3;
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, " (");
|
||||
if (ptr_dcc->status == IRC_DCC_ACTIVE)
|
||||
{
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, _("ETA"));
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, ": %.2lu:%.2lu:%.2lu - ",
|
||||
ptr_dcc->eta / 3600,
|
||||
(ptr_dcc->eta / 60) % 60,
|
||||
ptr_dcc->eta % 60);
|
||||
}
|
||||
sprintf (format, "%s %%s/s)", unit_format[num_unit]);
|
||||
buf = weechat_iconv_from_internal (NULL, unit_name[num_unit]);
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, format,
|
||||
((float)ptr_dcc->bytes_per_sec) / ((float)(unit_divide[num_unit])),
|
||||
(buf) ? buf : unit_name[num_unit]);
|
||||
if (buf)
|
||||
free (buf);
|
||||
ptr_line = ptr_win->start_line;
|
||||
line_pos = ptr_win->start_line_pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
date_tmp = localtime (&(ptr_dcc->start_time));
|
||||
strftime (date, sizeof (date) - 1, "%a, %d %b %Y %H:%M:%S", date_tmp);
|
||||
wprintw (GUI_CURSES(ptr_win)->win_chat, " %s", date);
|
||||
/* look for first line to display, starting from last line */
|
||||
ptr_line = NULL;
|
||||
line_pos = 0;
|
||||
gui_chat_calculate_line_diff (ptr_win, &ptr_line, &line_pos,
|
||||
(-1) * (ptr_win->win_chat_height - 1));
|
||||
}
|
||||
|
||||
wclrtoeol (GUI_CURSES(ptr_win)->win_chat);
|
||||
if (line_pos > 0)
|
||||
{
|
||||
/* display end of first line at top of screen */
|
||||
gui_chat_display_line (ptr_win, ptr_line,
|
||||
gui_chat_display_line (ptr_win,
|
||||
ptr_line,
|
||||
0, 1) -
|
||||
line_pos, 0);
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
ptr_win->first_line_displayed = 0;
|
||||
}
|
||||
else
|
||||
ptr_win->first_line_displayed =
|
||||
(ptr_line == gui_chat_get_first_line_displayed (ptr_win->buffer));
|
||||
|
||||
ptr_win->dcc_last_displayed = ptr_dcc;
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
else*/
|
||||
{
|
||||
ptr_win->win_chat_cursor_x = 0;
|
||||
ptr_win->win_chat_cursor_y = 0;
|
||||
|
||||
switch (ptr_win->buffer->type)
|
||||
{
|
||||
case GUI_BUFFER_TYPE_FORMATED:
|
||||
/* display at position of scrolling */
|
||||
if (ptr_win->start_line)
|
||||
{
|
||||
ptr_line = ptr_win->start_line;
|
||||
line_pos = ptr_win->start_line_pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* look for first line to display, starting from last line */
|
||||
ptr_line = NULL;
|
||||
line_pos = 0;
|
||||
gui_chat_calculate_line_diff (ptr_win, &ptr_line, &line_pos,
|
||||
(-1) * (ptr_win->win_chat_height - 1));
|
||||
}
|
||||
|
||||
if (line_pos > 0)
|
||||
{
|
||||
/* display end of first line at top of screen */
|
||||
gui_chat_display_line (ptr_win, ptr_line,
|
||||
gui_chat_display_line (ptr_win,
|
||||
ptr_line,
|
||||
0, 1) -
|
||||
line_pos, 0);
|
||||
/* display lines */
|
||||
count = 0;
|
||||
while (ptr_line && (ptr_win->win_chat_cursor_y <= ptr_win->win_chat_height - 1))
|
||||
{
|
||||
count = gui_chat_display_line (ptr_win, ptr_line, 0, 0);
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
}
|
||||
|
||||
old_scroll = ptr_win->scroll;
|
||||
|
||||
ptr_win->scroll = (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1);
|
||||
|
||||
/* check if last line of buffer is entirely displayed and scrolling */
|
||||
/* if so, disable scroll indicator */
|
||||
if (!ptr_line && ptr_win->scroll)
|
||||
{
|
||||
if (count == gui_chat_display_line (ptr_win, ptr_win->buffer->last_line, 0, 1))
|
||||
ptr_win->scroll = 0;
|
||||
}
|
||||
|
||||
if (ptr_win->scroll != old_scroll)
|
||||
{
|
||||
hook_signal_send ("window_scrolled",
|
||||
WEECHAT_HOOK_SIGNAL_POINTER, ptr_win);
|
||||
}
|
||||
|
||||
if (!ptr_win->scroll
|
||||
&& (ptr_win->start_line == gui_chat_get_first_line_displayed (ptr_win->buffer)))
|
||||
{
|
||||
ptr_win->start_line = NULL;
|
||||
ptr_win->start_line_pos = 0;
|
||||
}
|
||||
|
||||
/* cursor is below end line of chat window? */
|
||||
if (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1)
|
||||
{
|
||||
ptr_win->win_chat_cursor_x = 0;
|
||||
ptr_win->win_chat_cursor_y = ptr_win->win_chat_height - 1;
|
||||
}
|
||||
break;
|
||||
case GUI_BUFFER_TYPE_FREE:
|
||||
/* display at position of scrolling */
|
||||
ptr_line = (ptr_win->start_line) ?
|
||||
ptr_win->start_line : buffer->lines;
|
||||
if (ptr_line)
|
||||
{
|
||||
if (!ptr_line->displayed)
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
ptr_win->first_line_displayed = 0;
|
||||
}
|
||||
else
|
||||
ptr_win->first_line_displayed =
|
||||
(ptr_line == gui_chat_get_first_line_displayed (ptr_win->buffer));
|
||||
|
||||
/* display lines */
|
||||
count = 0;
|
||||
while (ptr_line && (ptr_win->win_chat_cursor_y <= ptr_win->win_chat_height - 1))
|
||||
{
|
||||
count = gui_chat_display_line (ptr_win, ptr_line, 0, 0);
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
}
|
||||
|
||||
old_scroll = ptr_win->scroll;
|
||||
|
||||
ptr_win->scroll = (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1);
|
||||
|
||||
/* check if last line of buffer is entirely displayed and scrolling */
|
||||
/* if so, disable scroll indicator */
|
||||
if (!ptr_line && ptr_win->scroll)
|
||||
{
|
||||
if (count == gui_chat_display_line (ptr_win, ptr_win->buffer->last_line, 0, 1))
|
||||
ptr_win->scroll = 0;
|
||||
}
|
||||
|
||||
if (ptr_win->scroll != old_scroll)
|
||||
{
|
||||
hook_signal_send ("window_scrolled",
|
||||
WEECHAT_HOOK_SIGNAL_POINTER, ptr_win);
|
||||
}
|
||||
|
||||
if (!ptr_win->scroll
|
||||
&& (ptr_win->start_line == gui_chat_get_first_line_displayed (ptr_win->buffer)))
|
||||
{
|
||||
ptr_win->start_line = NULL;
|
||||
ptr_win->start_line_pos = 0;
|
||||
}
|
||||
|
||||
/* cursor is below end line of chat window? */
|
||||
if (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1)
|
||||
{
|
||||
ptr_win->win_chat_cursor_x = 0;
|
||||
ptr_win->win_chat_cursor_y = ptr_win->win_chat_height - 1;
|
||||
}
|
||||
break;
|
||||
case GUI_BUFFER_TYPE_FREE:
|
||||
/* display at position of scrolling */
|
||||
ptr_line = (ptr_win->start_line) ?
|
||||
ptr_win->start_line : buffer->lines;
|
||||
if (ptr_line)
|
||||
{
|
||||
if (!ptr_line->displayed)
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
if (ptr_line)
|
||||
y_start = (ptr_win->start_line) ? ptr_line->y : 0;
|
||||
y_end = y_start + ptr_win->win_chat_height - 1;
|
||||
while (ptr_line && (ptr_line->y <= y_end))
|
||||
{
|
||||
y_start = (ptr_win->start_line) ? ptr_line->y : 0;
|
||||
y_end = y_start + ptr_win->win_chat_height - 1;
|
||||
while (ptr_line && (ptr_line->y <= y_end))
|
||||
if (ptr_line->refresh_needed || erase)
|
||||
{
|
||||
if (ptr_line->refresh_needed || erase)
|
||||
{
|
||||
gui_chat_display_line_y (ptr_win, ptr_line,
|
||||
ptr_line->y - y_start);
|
||||
}
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
gui_chat_display_line_y (ptr_win, ptr_line,
|
||||
ptr_line->y - y_start);
|
||||
}
|
||||
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
wnoutrefresh (GUI_CURSES(ptr_win)->win_chat);
|
||||
refresh ();
|
||||
|
||||
if (buffer->type == GUI_BUFFER_TYPE_FREE)
|
||||
{
|
||||
for (ptr_line = buffer->lines; ptr_line;
|
||||
ptr_line = ptr_line->next_line)
|
||||
{
|
||||
ptr_line->refresh_needed = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
refresh ();
|
||||
|
||||
if (buffer->type == GUI_BUFFER_TYPE_FREE)
|
||||
{
|
||||
for (ptr_line = buffer->lines; ptr_line;
|
||||
ptr_line = ptr_line->next_line)
|
||||
{
|
||||
ptr_line->refresh_needed = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -843,7 +843,7 @@ gui_window_scroll_topic_left (struct t_gui_window *window)
|
||||
window->win_title_start -= (window->win_width * 3) / 4;
|
||||
if (window->win_title_start < 0)
|
||||
window->win_title_start = 0;
|
||||
window->buffer->title_refresh_needed = 1;
|
||||
gui_buffer_ask_title_refresh (window->buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -857,7 +857,7 @@ gui_window_scroll_topic_right (struct t_gui_window *window)
|
||||
return;
|
||||
|
||||
window->win_title_start += (window->win_width * 3) / 4;
|
||||
window->buffer->title_refresh_needed = 1;
|
||||
gui_buffer_ask_title_refresh (window->buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -875,7 +875,7 @@ gui_window_nick_beginning (struct t_gui_window *window)
|
||||
if (window->win_nick_start > 0)
|
||||
{
|
||||
window->win_nick_start = 0;
|
||||
window->buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -904,7 +904,7 @@ gui_window_nick_end (struct t_gui_window *window)
|
||||
if (new_start != window->win_nick_start)
|
||||
{
|
||||
window->win_nick_start = new_start;
|
||||
window->buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -926,7 +926,7 @@ gui_window_nick_page_up (struct t_gui_window *window)
|
||||
window->win_nick_start -= (window->win_nick_num_max - 1);
|
||||
if (window->win_nick_start <= 1)
|
||||
window->win_nick_start = 0;
|
||||
window->buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -951,7 +951,7 @@ gui_window_nick_page_down (struct t_gui_window *window)
|
||||
window->win_nick_start += (window->win_nick_num_max - 1);
|
||||
else
|
||||
window->win_nick_start += (window->win_nick_num_max - 2);
|
||||
window->buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -684,8 +684,8 @@ gui_action_up (char *args)
|
||||
((t_irc_dcc *)(window->dcc_first))->prev_dcc;
|
||||
window->dcc_selected =
|
||||
((t_irc_dcc *)(window->dcc_selected))->prev_dcc;
|
||||
gui_current_window->buffer->chat_refresh_needed = 1;
|
||||
gui_current_window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
|
||||
gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -824,8 +824,8 @@ gui_action_down (char *args)
|
||||
else
|
||||
window->dcc_selected =
|
||||
irc_dcc_list->next_dcc;
|
||||
gui_current_window->buffer->chat_refresh_needed = 1;
|
||||
gui_current_window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
|
||||
gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1300,8 +1300,8 @@ gui_action_scroll_previous_highlight (char *args)
|
||||
window->start_line_pos = 0;
|
||||
window->first_line_displayed =
|
||||
(window->start_line == gui_current_window->buffer->lines);
|
||||
gui_current_window->buffer->chat_refresh_needed = 1;
|
||||
gui_current_window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
|
||||
gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
|
||||
return;
|
||||
}
|
||||
ptr_line = ptr_line->prev_line;
|
||||
@@ -1337,8 +1337,8 @@ gui_action_scroll_next_highlight (char *args)
|
||||
window->start_line_pos = 0;
|
||||
window->first_line_displayed =
|
||||
(window->start_line == gui_current_window->buffer->lines);
|
||||
gui_current_window->buffer->chat_refresh_needed = 1;
|
||||
gui_current_window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
|
||||
gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
|
||||
return;
|
||||
}
|
||||
ptr_line = ptr_line->next_line;
|
||||
@@ -1370,7 +1370,7 @@ gui_action_scroll_unread (char *args)
|
||||
gui_current_window->start_line_pos = 0;
|
||||
gui_current_window->first_line_displayed =
|
||||
(gui_current_window->start_line == gui_chat_get_first_line_displayed (gui_current_window->buffer));
|
||||
gui_current_window->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (gui_current_window->buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,6 +293,9 @@ gui_bar_config_check_size (void *data, struct t_config_option *option,
|
||||
number = strtol (value, &error, 10);
|
||||
if (error && !error[0])
|
||||
{
|
||||
if (number < 0)
|
||||
return 0;
|
||||
|
||||
if (number <= ptr_bar->current_size
|
||||
|| gui_bar_check_size_add (ptr_bar,
|
||||
number - ptr_bar->current_size))
|
||||
|
||||
+51
-5
@@ -265,6 +265,50 @@ gui_buffer_get_pointer (struct t_gui_buffer *buffer, char *property)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_ask_title_refresh: set "title_refresh_needed" flag
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_ask_title_refresh (struct t_gui_buffer *buffer, int refresh)
|
||||
{
|
||||
if (refresh > buffer->title_refresh_needed)
|
||||
buffer->title_refresh_needed = refresh;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_ask_chat_refresh: set "chat_refresh_needed" flag
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_ask_chat_refresh (struct t_gui_buffer *buffer, int refresh)
|
||||
{
|
||||
if (refresh > buffer->chat_refresh_needed)
|
||||
buffer->chat_refresh_needed = refresh;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_ask_nicklist_refresh: set "nicklist_refresh_needed" flag
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_ask_nicklist_refresh (struct t_gui_buffer *buffer, int refresh)
|
||||
{
|
||||
if (refresh > buffer->nicklist_refresh_needed)
|
||||
buffer->nicklist_refresh_needed = refresh;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_ask_input_refresh: set "input_refresh_needed" flag
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_ask_input_refresh (struct t_gui_buffer *buffer, int refresh)
|
||||
{
|
||||
if (refresh > buffer->input_refresh_needed)
|
||||
buffer->input_refresh_needed = refresh;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_set_category: set category for a buffer
|
||||
*/
|
||||
@@ -324,7 +368,7 @@ gui_buffer_set_type (struct t_gui_buffer *buffer, enum t_gui_buffer_type type)
|
||||
break;
|
||||
}
|
||||
buffer->type = type;
|
||||
buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (buffer, 2);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -337,7 +381,7 @@ gui_buffer_set_title (struct t_gui_buffer *buffer, char *new_title)
|
||||
if (buffer->title)
|
||||
free (buffer->title);
|
||||
buffer->title = (new_title && new_title[0]) ? strdup (new_title) : NULL;
|
||||
buffer->title_refresh_needed = 1;
|
||||
gui_buffer_ask_title_refresh (buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -373,7 +417,7 @@ gui_buffer_set_nicklist_display_groups (struct t_gui_buffer *buffer,
|
||||
buffer->nicklist_display_groups = (display_groups) ? 1 : 0;
|
||||
buffer->nicklist_visible_count = 0;
|
||||
gui_nicklist_compute_visible_count (buffer, buffer->nicklist_root);
|
||||
buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -386,7 +430,7 @@ gui_buffer_set_nick (struct t_gui_buffer *buffer, char *new_nick)
|
||||
if (buffer->input_nick)
|
||||
free (buffer->input_nick);
|
||||
buffer->input_nick = (new_nick && new_nick[0]) ? strdup (new_nick) : NULL;
|
||||
buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_input_refresh (buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -680,7 +724,7 @@ gui_buffer_clear (struct t_gui_buffer *buffer)
|
||||
}
|
||||
}
|
||||
|
||||
buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
}
|
||||
|
||||
@@ -694,7 +738,9 @@ gui_buffer_clear_all ()
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
gui_buffer_clear (ptr_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -160,6 +160,14 @@ extern char *gui_buffer_get_string (struct t_gui_buffer *buffer,
|
||||
char *property);
|
||||
extern void *gui_buffer_get_pointer (struct t_gui_buffer *buffer,
|
||||
char *property);
|
||||
extern void gui_buffer_ask_title_refresh (struct t_gui_buffer *buffer,
|
||||
int refresh);
|
||||
extern void gui_buffer_ask_chat_refresh (struct t_gui_buffer *buffer,
|
||||
int refresh);
|
||||
extern void gui_buffer_ask_nicklist_refresh (struct t_gui_buffer *buffer,
|
||||
int refresh);
|
||||
extern void gui_buffer_ask_input_refresh (struct t_gui_buffer *buffer,
|
||||
int refresh);
|
||||
extern void gui_buffer_set_category (struct t_gui_buffer *buffer,
|
||||
char *category);
|
||||
extern void gui_buffer_set_name (struct t_gui_buffer *buffer, char *name);
|
||||
|
||||
+4
-4
@@ -573,7 +573,7 @@ gui_chat_line_free (struct t_gui_buffer *buffer, struct t_gui_line *line)
|
||||
{
|
||||
ptr_win->start_line = ptr_win->start_line->next_line;
|
||||
ptr_win->start_line_pos = 0;
|
||||
ptr_win->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
}
|
||||
}
|
||||
@@ -887,7 +887,7 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
|
||||
|
||||
if (gui_init_ok)
|
||||
{
|
||||
buffer->chat_refresh_needed = 1;
|
||||
gui_buffer_ask_chat_refresh (buffer, 1);
|
||||
if (gui_add_hotlist
|
||||
&& ((buffer->num_displayed == 0)
|
||||
|| (gui_buffer_is_scrolled (buffer))))
|
||||
@@ -937,7 +937,7 @@ gui_chat_printf_y (struct t_gui_buffer *buffer, int y, char *message, ...)
|
||||
if (ptr_line && (ptr_line->y == y))
|
||||
{
|
||||
gui_chat_line_free (buffer, ptr_line);
|
||||
buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (buffer, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -953,7 +953,7 @@ gui_chat_printf_y (struct t_gui_buffer *buffer, int y, char *message, ...)
|
||||
if (gui_init_ok)
|
||||
{
|
||||
gui_chat_line_add_y (buffer, y, buf);
|
||||
buffer->chat_refresh_needed = 1;
|
||||
gui_buffer_ask_chat_refresh (buffer, 1);
|
||||
}
|
||||
else
|
||||
string_iconv_fprintf (stdout, "%s\n", buf);
|
||||
|
||||
@@ -106,7 +106,7 @@ gui_filter_buffer (struct t_gui_buffer *buffer)
|
||||
|
||||
/* force chat refresh if at least one line changed */
|
||||
if (ptr_line->displayed != line_displayed)
|
||||
buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (buffer, 2);
|
||||
|
||||
ptr_line->displayed = line_displayed;
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ gui_nicklist_add_group (struct t_gui_buffer *buffer,
|
||||
|
||||
if (buffer->nicklist_display_groups && visible)
|
||||
{
|
||||
buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (buffer, 1);
|
||||
buffer->nicklist_visible_count++;
|
||||
gui_status_refresh_needed = 1;
|
||||
}
|
||||
@@ -337,7 +337,7 @@ gui_nicklist_add_nick (struct t_gui_buffer *buffer,
|
||||
|
||||
if (visible)
|
||||
{
|
||||
buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (buffer, 1);
|
||||
buffer->nicklist_visible_count++;
|
||||
gui_status_refresh_needed = 1;
|
||||
}
|
||||
@@ -372,7 +372,7 @@ gui_nicklist_remove_nick (struct t_gui_buffer *buffer,
|
||||
|
||||
if (nick->visible)
|
||||
{
|
||||
buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (buffer, 1);
|
||||
if (buffer->nicklist_visible_count > 0)
|
||||
buffer->nicklist_visible_count--;
|
||||
gui_status_refresh_needed = 1;
|
||||
@@ -427,7 +427,7 @@ gui_nicklist_remove_group (struct t_gui_buffer *buffer,
|
||||
|
||||
if (group->visible)
|
||||
{
|
||||
buffer->nicklist_refresh_needed = 1;
|
||||
gui_buffer_ask_nicklist_refresh (buffer, 1);
|
||||
if (buffer->nicklist_display_groups
|
||||
&& (buffer->nicklist_visible_count > 0))
|
||||
buffer->nicklist_visible_count--;
|
||||
|
||||
@@ -637,7 +637,7 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
|
||||
window->start_line_pos = 0;
|
||||
window->first_line_displayed =
|
||||
(window->start_line == gui_chat_get_first_line_displayed (window->buffer));
|
||||
window->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (window->buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
return;
|
||||
}
|
||||
@@ -680,7 +680,7 @@ gui_window_search_text (struct t_gui_window *window)
|
||||
window->start_line_pos = 0;
|
||||
window->first_line_displayed =
|
||||
(window->start_line == gui_chat_get_first_line_displayed (window->buffer));
|
||||
window->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (window->buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
return 1;
|
||||
}
|
||||
@@ -709,7 +709,7 @@ gui_window_search_text (struct t_gui_window *window)
|
||||
window->start_line_pos = 0;
|
||||
window->first_line_displayed =
|
||||
(window->start_line == window->buffer->lines);
|
||||
window->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (window->buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
return 1;
|
||||
}
|
||||
@@ -740,7 +740,7 @@ gui_window_search_start (struct t_gui_window *window)
|
||||
strdup (window->buffer->input_buffer);
|
||||
gui_input_delete_line (window->buffer);
|
||||
gui_status_refresh_needed = 1;
|
||||
window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_input_refresh (window->buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -759,7 +759,7 @@ gui_window_search_restart (struct t_gui_window *window)
|
||||
window->buffer->text_search_found = 1;
|
||||
else
|
||||
{
|
||||
window->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (window->buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
}
|
||||
}
|
||||
@@ -784,9 +784,9 @@ gui_window_search_stop (struct t_gui_window *window)
|
||||
window->start_line = NULL;
|
||||
window->start_line_pos = 0;
|
||||
gui_hotlist_remove_buffer (window->buffer);
|
||||
window->buffer->chat_refresh_needed = 2;
|
||||
gui_buffer_ask_chat_refresh (window->buffer, 2);
|
||||
gui_status_refresh_needed = 1;
|
||||
window->buffer->input_refresh_needed = 1;
|
||||
gui_buffer_ask_input_refresh (window->buffer, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -296,7 +296,7 @@ demo_infolist_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
{
|
||||
if (weechat_strcasecmp (argv[1], "buffer") == 0)
|
||||
{
|
||||
infolist = weechat_infolist_get ("buffer", NULL);
|
||||
infolist = weechat_infolist_get ("buffer", NULL, NULL);
|
||||
if (infolist)
|
||||
{
|
||||
demo_infolist_print (infolist, "buffer");
|
||||
@@ -306,7 +306,7 @@ demo_infolist_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
|
||||
}
|
||||
if (weechat_strcasecmp (argv[1], "buffer_lines") == 0)
|
||||
{
|
||||
infolist = weechat_infolist_get ("buffer_lines", NULL);
|
||||
infolist = weechat_infolist_get ("buffer_lines", NULL, NULL);
|
||||
if (infolist)
|
||||
{
|
||||
demo_infolist_print (infolist, "buffer_line");
|
||||
|
||||
@@ -348,7 +348,7 @@ irc_config_reload_servers_from_config ()
|
||||
char *name, *full_name, *server_name, *pos_option;
|
||||
int i, index_option;
|
||||
|
||||
infolist = weechat_infolist_get ("options", "irc.server.*");
|
||||
infolist = weechat_infolist_get ("options", NULL, "irc.server.*");
|
||||
while (weechat_infolist_next (infolist))
|
||||
{
|
||||
name = weechat_infolist_string (infolist, "name");
|
||||
|
||||
@@ -1006,7 +1006,7 @@ irc_server_rename (struct t_irc_server *server, char *new_name)
|
||||
if (!option_name)
|
||||
return 0;
|
||||
snprintf (option_name, length, "irc.server.%s.*", server->name);
|
||||
infolist = weechat_infolist_get ("options", option_name);
|
||||
infolist = weechat_infolist_get ("options", NULL, option_name);
|
||||
free (option_name);
|
||||
while (weechat_infolist_next (infolist))
|
||||
{
|
||||
|
||||
@@ -207,7 +207,7 @@ logger_get_filename (struct t_gui_buffer *buffer)
|
||||
|
||||
if (dir_separator && weechat_dir && log_path && log_path2)
|
||||
{
|
||||
ptr_infolist = weechat_infolist_get ("buffer", buffer);
|
||||
ptr_infolist = weechat_infolist_get ("buffer", buffer, NULL);
|
||||
if (ptr_infolist)
|
||||
{
|
||||
category2 = NULL;
|
||||
@@ -386,7 +386,7 @@ logger_start_buffer_all ()
|
||||
{
|
||||
struct t_plugin_infolist *ptr_infolist;
|
||||
|
||||
ptr_infolist = weechat_infolist_get ("buffer", NULL);
|
||||
ptr_infolist = weechat_infolist_get ("buffer", NULL, NULL);
|
||||
if (ptr_infolist)
|
||||
{
|
||||
while (weechat_infolist_next (ptr_infolist))
|
||||
|
||||
@@ -574,6 +574,13 @@ plugin_api_infolist_get_add_options (struct t_plugin_infolist *infolist,
|
||||
switch (ptr_option->type)
|
||||
{
|
||||
case CONFIG_OPTION_TYPE_BOOLEAN:
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
"type",
|
||||
"boolean"))
|
||||
{
|
||||
free (option_full_name);
|
||||
return 0;
|
||||
}
|
||||
if (CONFIG_BOOLEAN(ptr_option) == CONFIG_BOOLEAN_TRUE)
|
||||
snprintf (value, sizeof (value), "on");
|
||||
else
|
||||
@@ -598,6 +605,13 @@ plugin_api_infolist_get_add_options (struct t_plugin_infolist *infolist,
|
||||
}
|
||||
break;
|
||||
case CONFIG_OPTION_TYPE_INTEGER:
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
"type",
|
||||
"integer"))
|
||||
{
|
||||
free (option_full_name);
|
||||
return 0;
|
||||
}
|
||||
if (ptr_option->string_values)
|
||||
{
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
@@ -638,6 +652,13 @@ plugin_api_infolist_get_add_options (struct t_plugin_infolist *infolist,
|
||||
}
|
||||
break;
|
||||
case CONFIG_OPTION_TYPE_STRING:
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
"type",
|
||||
"string"))
|
||||
{
|
||||
free (option_full_name);
|
||||
return 0;
|
||||
}
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
"value",
|
||||
CONFIG_STRING(ptr_option)))
|
||||
@@ -654,6 +675,13 @@ plugin_api_infolist_get_add_options (struct t_plugin_infolist *infolist,
|
||||
}
|
||||
break;
|
||||
case CONFIG_OPTION_TYPE_COLOR:
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
"type",
|
||||
"color"))
|
||||
{
|
||||
free (option_full_name);
|
||||
return 0;
|
||||
}
|
||||
if (!plugin_infolist_new_var_string (ptr_item,
|
||||
"value",
|
||||
gui_color_get_name (CONFIG_COLOR(ptr_option))))
|
||||
@@ -689,7 +717,7 @@ plugin_api_infolist_get_add_options (struct t_plugin_infolist *infolist,
|
||||
*/
|
||||
|
||||
struct t_plugin_infolist *
|
||||
plugin_api_infolist_get (char *name, void *pointer)
|
||||
plugin_api_infolist_get (char *name, void *pointer, char *arguments)
|
||||
{
|
||||
struct t_plugin_infolist *ptr_infolist;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
@@ -766,7 +794,7 @@ plugin_api_infolist_get (char *name, void *pointer)
|
||||
ptr_infolist = plugin_infolist_new ();
|
||||
if (ptr_infolist)
|
||||
{
|
||||
if (!plugin_api_infolist_get_add_options (ptr_infolist, pointer))
|
||||
if (!plugin_api_infolist_get_add_options (ptr_infolist, arguments))
|
||||
{
|
||||
plugin_infolist_free (ptr_infolist);
|
||||
return NULL;
|
||||
|
||||
@@ -54,7 +54,8 @@ extern char *plugin_api_info_get (struct t_weechat_plugin *plugin, char *info);
|
||||
|
||||
/* infolists */
|
||||
extern struct t_plugin_infolist *plugin_api_infolist_get (char *name,
|
||||
void *pointer);
|
||||
void *pointer,
|
||||
char *arguments);
|
||||
extern int plugin_api_infolist_next (struct t_plugin_infolist *infolist);
|
||||
extern int plugin_api_infolist_prev (struct t_plugin_infolist *infolist);
|
||||
extern char *plugin_api_infolist_fields (struct t_plugin_infolist *infolist);
|
||||
|
||||
@@ -3013,12 +3013,12 @@ weechat_lua_api_unhook_all (lua_State *L)
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_lua_api_input_data_cb: callback for input data in a buffer
|
||||
* weechat_lua_api_buffer_input_data_cb: callback for input data in a buffer
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_lua_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
weechat_lua_api_buffer_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *lua_argv[3];
|
||||
@@ -3049,11 +3049,11 @@ weechat_lua_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_lua_api_close_cb: callback for buffer closed
|
||||
* weechat_lua_api_buffer_close_cb: callback for buffer closed
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_lua_api_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
weechat_lua_api_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *lua_argv[2];
|
||||
@@ -3124,9 +3124,9 @@ weechat_lua_api_buffer_new (lua_State *L)
|
||||
lua_current_script,
|
||||
(char *)category,
|
||||
(char *)name,
|
||||
&weechat_lua_api_input_data_cb,
|
||||
&weechat_lua_api_buffer_input_data_cb,
|
||||
(char *)function_input,
|
||||
&weechat_lua_api_close_cb,
|
||||
&weechat_lua_api_buffer_close_cb,
|
||||
(char *)function_close));
|
||||
|
||||
LUA_RETURN_STRING_FREE(result);
|
||||
@@ -4121,7 +4121,7 @@ weechat_lua_api_info_get (lua_State *L)
|
||||
static int
|
||||
weechat_lua_api_infolist_get (lua_State *L)
|
||||
{
|
||||
const char *name, *pointer;
|
||||
const char *name, *pointer, *arguments;
|
||||
char *value;
|
||||
int n;
|
||||
|
||||
@@ -4136,20 +4136,23 @@ weechat_lua_api_infolist_get (lua_State *L)
|
||||
|
||||
name = NULL;
|
||||
pointer = NULL;
|
||||
arguments = NULL;
|
||||
|
||||
n = lua_gettop (lua_current_interpreter);
|
||||
|
||||
if (n < 2)
|
||||
if (n < 3)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("infolist_get");
|
||||
LUA_RETURN_EMPTY;
|
||||
}
|
||||
|
||||
name = lua_tostring (lua_current_interpreter, -2);
|
||||
pointer = lua_tostring (lua_current_interpreter, -1);
|
||||
name = lua_tostring (lua_current_interpreter, -3);
|
||||
pointer = lua_tostring (lua_current_interpreter, -2);
|
||||
arguments = lua_tostring (lua_current_interpreter, -1);
|
||||
|
||||
value = script_ptr2str (weechat_infolist_get ((char *)name,
|
||||
script_str2ptr ((char *)pointer)));
|
||||
script_str2ptr ((char *)pointer),
|
||||
(char *)arguments));
|
||||
|
||||
LUA_RETURN_STRING_FREE(value);
|
||||
}
|
||||
|
||||
@@ -2517,12 +2517,12 @@ static XS (XS_weechat_unhook_all)
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_perl_api_input_data_cb: callback for input data in a buffer
|
||||
* weechat_perl_api_buffer_input_data_cb: callback for input data in a buffer
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_perl_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
weechat_perl_api_buffer_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *perl_argv[3];
|
||||
@@ -2552,11 +2552,11 @@ weechat_perl_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_perl_api_close_cb: callback for buffer closed
|
||||
* weechat_perl_api_buffer_close_cb: callback for buffer closed
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_perl_api_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
weechat_perl_api_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *perl_argv[2];
|
||||
@@ -2616,9 +2616,9 @@ static XS (XS_weechat_buffer_new)
|
||||
perl_current_script,
|
||||
category,
|
||||
name,
|
||||
&weechat_perl_api_input_data_cb,
|
||||
&weechat_perl_api_buffer_input_data_cb,
|
||||
function_input,
|
||||
&weechat_perl_api_close_cb,
|
||||
&weechat_perl_api_buffer_close_cb,
|
||||
function_close));
|
||||
|
||||
PERL_RETURN_STRING_FREE(result);
|
||||
@@ -3410,7 +3410,7 @@ static XS (XS_weechat_info_get)
|
||||
|
||||
static XS (XS_weechat_infolist_get)
|
||||
{
|
||||
char *value, *name, *pointer;
|
||||
char *value, *name, *pointer, *arguments;
|
||||
dXSARGS;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -3422,7 +3422,7 @@ static XS (XS_weechat_infolist_get)
|
||||
PERL_RETURN_EMPTY;
|
||||
}
|
||||
|
||||
if (items < 2)
|
||||
if (items < 3)
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("infolist_get");
|
||||
PERL_RETURN_EMPTY;
|
||||
@@ -3430,7 +3430,10 @@ static XS (XS_weechat_infolist_get)
|
||||
|
||||
name = SvPV (ST (0), PL_na);
|
||||
pointer = SvPV (ST (1), PL_na);
|
||||
value = script_ptr2str (weechat_infolist_get (name, script_str2ptr (pointer)));
|
||||
arguments = SvPV (ST (2), PL_na);
|
||||
value = script_ptr2str (weechat_infolist_get (name,
|
||||
script_str2ptr (pointer),
|
||||
arguments));
|
||||
|
||||
PERL_RETURN_STRING_FREE(value);
|
||||
}
|
||||
|
||||
@@ -2673,12 +2673,12 @@ weechat_python_api_unhook_all (PyObject *self, PyObject *args)
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_python_api_input_data_cb: callback for input data in a buffer
|
||||
* weechat_python_api_buffer_input_data_cb: callback for input data in a buffer
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_python_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
weechat_python_api_buffer_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *python_argv[3];
|
||||
@@ -2708,11 +2708,11 @@ weechat_python_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_python_api_close_cb: callback for buffer closed
|
||||
* weechat_python_api_buffer_close_cb: callback for buffer closed
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_python_api_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
weechat_python_api_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *python_argv[2];
|
||||
@@ -2775,9 +2775,9 @@ weechat_python_api_buffer_new (PyObject *self, PyObject *args)
|
||||
python_current_script,
|
||||
category,
|
||||
name,
|
||||
&weechat_python_api_input_data_cb,
|
||||
&weechat_python_api_buffer_input_data_cb,
|
||||
function_input,
|
||||
&weechat_python_api_close_cb,
|
||||
&weechat_python_api_buffer_close_cb,
|
||||
function_close));
|
||||
|
||||
PYTHON_RETURN_STRING_FREE(result);
|
||||
@@ -3632,7 +3632,7 @@ weechat_python_api_info_get (PyObject *self, PyObject *args)
|
||||
static PyObject *
|
||||
weechat_python_api_infolist_get (PyObject *self, PyObject *args)
|
||||
{
|
||||
char *name, *pointer, *value;
|
||||
char *name, *pointer, *arguments, *value;
|
||||
PyObject *object;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -3646,15 +3646,17 @@ weechat_python_api_infolist_get (PyObject *self, PyObject *args)
|
||||
|
||||
name = NULL;
|
||||
pointer = NULL;
|
||||
arguments = NULL;
|
||||
|
||||
if (!PyArg_ParseTuple (args, "ss", &name, &pointer))
|
||||
if (!PyArg_ParseTuple (args, "sss", &name, &pointer, &arguments))
|
||||
{
|
||||
WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("infolist_get");
|
||||
PYTHON_RETURN_EMPTY;
|
||||
}
|
||||
|
||||
value = script_ptr2str (weechat_infolist_get (name,
|
||||
script_str2ptr (pointer)));
|
||||
script_str2ptr (pointer),
|
||||
arguments));
|
||||
|
||||
PYTHON_RETURN_STRING_FREE(value);
|
||||
}
|
||||
|
||||
@@ -3078,12 +3078,12 @@ weechat_ruby_api_unhook_all (VALUE class)
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_ruby_api_input_data_cb: callback for input data in a buffer
|
||||
* weechat_ruby_api_buffer_input_data_cb: callback for input data in a buffer
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_ruby_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
weechat_ruby_api_buffer_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
char *input_data)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *ruby_argv[3];
|
||||
@@ -3114,11 +3114,11 @@ weechat_ruby_api_input_data_cb (void *data, struct t_gui_buffer *buffer,
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_ruby_api_close_cb: callback for closed buffer
|
||||
* weechat_ruby_api_buffer_close_cb: callback for closed buffer
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_ruby_api_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
weechat_ruby_api_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
|
||||
{
|
||||
struct t_script_callback *script_callback;
|
||||
char *ruby_argv[2];
|
||||
@@ -3193,9 +3193,9 @@ weechat_ruby_api_buffer_new (VALUE class, VALUE category, VALUE name,
|
||||
ruby_current_script,
|
||||
c_category,
|
||||
c_name,
|
||||
&weechat_ruby_api_input_data_cb,
|
||||
&weechat_ruby_api_buffer_input_data_cb,
|
||||
c_function_input,
|
||||
&weechat_ruby_api_close_cb,
|
||||
&weechat_ruby_api_buffer_close_cb,
|
||||
c_function_close));
|
||||
|
||||
RUBY_RETURN_STRING_FREE(result);
|
||||
@@ -4177,9 +4177,10 @@ weechat_ruby_api_info_get (VALUE class, VALUE info)
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
weechat_ruby_api_infolist_get (VALUE class, VALUE name, VALUE pointer)
|
||||
weechat_ruby_api_infolist_get (VALUE class, VALUE name, VALUE pointer,
|
||||
VALUE arguments)
|
||||
{
|
||||
char *c_name, *c_pointer, *value;
|
||||
char *c_name, *c_pointer, *c_arguments, *value;
|
||||
VALUE return_value;
|
||||
|
||||
/* make C compiler happy */
|
||||
@@ -4199,11 +4200,15 @@ weechat_ruby_api_infolist_get (VALUE class, VALUE name, VALUE pointer)
|
||||
|
||||
Check_Type (name, T_STRING);
|
||||
Check_Type (pointer, T_STRING);
|
||||
Check_Type (arguments, T_STRING);
|
||||
|
||||
c_name = STR2CSTR (name);
|
||||
c_pointer = STR2CSTR (pointer);
|
||||
c_arguments = STR2CSTR (arguments);
|
||||
|
||||
value = script_ptr2str (weechat_infolist_get (c_name, script_str2ptr (c_pointer)));
|
||||
value = script_ptr2str (weechat_infolist_get (c_name,
|
||||
script_str2ptr (c_pointer),
|
||||
c_arguments));
|
||||
|
||||
RUBY_RETURN_STRING_FREE(value);
|
||||
}
|
||||
@@ -4590,7 +4595,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat)
|
||||
rb_define_module_function (ruby_mWeechat, "bar_remove", &weechat_ruby_api_bar_remove, 1);
|
||||
rb_define_module_function (ruby_mWeechat, "command", &weechat_ruby_api_command, 2);
|
||||
rb_define_module_function (ruby_mWeechat, "info_get", &weechat_ruby_api_info_get, 1);
|
||||
rb_define_module_function (ruby_mWeechat, "infolist_get", &weechat_ruby_api_infolist_get, 2);
|
||||
rb_define_module_function (ruby_mWeechat, "infolist_get", &weechat_ruby_api_infolist_get, 3);
|
||||
rb_define_module_function (ruby_mWeechat, "infolist_next", &weechat_ruby_api_infolist_next, 1);
|
||||
rb_define_module_function (ruby_mWeechat, "infolist_prev", &weechat_ruby_api_infolist_prev, 1);
|
||||
rb_define_module_function (ruby_mWeechat, "infolist_fields", &weechat_ruby_api_infolist_fields, 1);
|
||||
|
||||
@@ -390,7 +390,8 @@ struct t_weechat_plugin
|
||||
char *(*info_get) (struct t_weechat_plugin *plugin, char *info);
|
||||
|
||||
/* infolists */
|
||||
struct t_plugin_infolist *(*infolist_get) (char *name, void *pointer);
|
||||
struct t_plugin_infolist *(*infolist_get) (char *name, void *pointer,
|
||||
char *arguments);
|
||||
int (*infolist_next) (struct t_plugin_infolist *infolist);
|
||||
int (*infolist_prev) (struct t_plugin_infolist *infolist);
|
||||
char *(*infolist_fields) (struct t_plugin_infolist *infolist);
|
||||
@@ -790,8 +791,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
|
||||
weechat_plugin->info_get(weechat_plugin, __name)
|
||||
|
||||
/* infolists */
|
||||
#define weechat_infolist_get(__name, __pointer) \
|
||||
weechat_plugin->infolist_get(__name, __pointer)
|
||||
#define weechat_infolist_get(__name, __pointer, __arguments) \
|
||||
weechat_plugin->infolist_get(__name, __pointer, __arguments)
|
||||
#define weechat_infolist_next(__list) \
|
||||
weechat_plugin->infolist_next(__list)
|
||||
#define weechat_infolist_prev(__list) \
|
||||
|
||||
Reference in New Issue
Block a user