1
0
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:
Sebastien Helleu
2008-04-16 14:44:02 +02:00
parent 7489ec9a40
commit ae98666bc6
24 changed files with 305 additions and 339 deletions
+1 -1
View File
@@ -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;
}
+17 -7
View File
@@ -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
View File
@@ -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
+95 -239
View File
@@ -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;
}
}
}
+6 -6
View File
@@ -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);
}
}
}
+9 -9
View File
@@ -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;
}
}
+3
View File
@@ -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
View File
@@ -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);
}
}
/*
+8
View File
@@ -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
View File
@@ -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);
+1 -1
View File
@@ -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;
+4 -4
View File
@@ -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--;
+7 -7
View File
@@ -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);
}
/*
+2 -2
View File
@@ -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");
+1 -1
View File
@@ -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");
+1 -1
View File
@@ -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))
{
+2 -2
View File
@@ -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))
+30 -2
View File
@@ -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;
+2 -1
View File
@@ -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);
+15 -12
View File
@@ -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);
}
+13 -10
View File
@@ -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);
}
+12 -10
View File
@@ -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);
}
+16 -11
View File
@@ -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);
+4 -3
View File
@@ -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) \