1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 22:36:38 +02:00

Add new bar filling types: columns_horizontal and columns_vertical

This commit is contained in:
Sebastien Helleu
2008-12-15 22:11:13 +01:00
parent 507adbe42e
commit e69a3f0f0e
15 changed files with 541 additions and 489 deletions
+1 -1
View File
@@ -1267,7 +1267,7 @@ config_weechat_init ()
config_color_separator = config_file_new_option (
weechat_config_file, ptr_section,
"separator", "color",
N_("background color for window separators (when splited)"),
N_("background color for window separators (when splitted)"),
NULL, GUI_COLOR_SEPARATOR, 0, "blue", NULL,
NULL, NULL, &config_change_color, NULL, NULL, NULL);
/* bar colors */
+144 -227
View File
@@ -237,6 +237,9 @@ gui_bar_window_print_string (struct t_gui_bar_window *bar_window,
CONFIG_INTEGER(bar_window->bar->color_bg));
string += 2;
break;
case GUI_COLOR_BAR_START_INPUT_CHAR:
string += 2;
break;
case GUI_COLOR_BAR_MOVE_CURSOR_CHAR:
/* move cursor to current position on screen */
getyx (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
@@ -298,7 +301,7 @@ gui_bar_window_print_string (struct t_gui_bar_window *bar_window,
{
if (*x + size_on_screen > bar_window->width)
{
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_VERTICAL)
if (gui_bar_get_filling (bar_window->bar) == GUI_BAR_FILLING_VERTICAL)
return 0;
if (*y >= bar_window->height - 1)
return 0;
@@ -335,11 +338,14 @@ void
gui_bar_window_draw (struct t_gui_bar_window *bar_window,
struct t_gui_window *window)
{
int x, y, i, items_count, num_lines, line;
char *content, *item_value, *item_value2, **items;
char space_with_reinit_color[32];
int length_reinit_color, content_length, length, length_on_screen;
int max_length, optimal_number_of_lines, chars_available;
int x, y, items_count, num_lines, line;
enum t_gui_bar_filling filling;
char *content, **items;
char space_with_reinit_color[32], str_start_input[16], str_cursor[16];
char *pos_start_input, *pos_cursor, *buf, *new_start_input;
int length_reinit_color, length_on_screen, chars_available;
int length_screen_before_cursor, length_screen_after_cursor;
int total_length_screen, diff, max_length, optimal_number_of_lines;
int some_data_not_displayed;
if (!gui_init_ok)
@@ -354,66 +360,38 @@ gui_bar_window_draw (struct t_gui_bar_window *bar_window,
CONFIG_COLOR(bar_window->bar->color_bg));
length_reinit_color = strlen (space_with_reinit_color);
snprintf (str_start_input, sizeof (str_start_input), "%c%c%c",
GUI_COLOR_COLOR_CHAR,
GUI_COLOR_BAR_CHAR,
GUI_COLOR_BAR_START_INPUT_CHAR);
snprintf (str_cursor, sizeof (str_cursor), "%c%c%c",
GUI_COLOR_COLOR_CHAR,
GUI_COLOR_BAR_CHAR,
GUI_COLOR_BAR_MOVE_CURSOR_CHAR);
/* these values will be overwritten later (by gui_bar_window_print_string)
if cursor has to move somewhere in bar window */
bar_window->cursor_x = -1;
bar_window->cursor_y = -1;
if (CONFIG_INTEGER(bar_window->bar->size) == 0)
filling = gui_bar_get_filling (bar_window->bar);
content = gui_bar_window_content_get_with_filling (bar_window);
if (content)
{
content = NULL;
content_length = 1;
for (i = 0; i < bar_window->bar->items_count; i++)
items = string_explode (content, "\n", 0, 0, &items_count);
if (items_count == 0)
{
item_value = gui_bar_item_get_value (bar_window->bar->items_array[i],
bar_window->bar, window,
0, 0, 0);
if (item_value)
{
if (item_value[0])
{
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_HORIZONTAL)
{
item_value2 = string_replace (item_value, "\n",
space_with_reinit_color);
}
else
item_value2 = NULL;
if (!content)
{
content_length += strlen ((item_value2) ?
item_value2 : item_value);
content = strdup ((item_value2) ?
item_value2 : item_value);
}
else
{
content_length += length_reinit_color +
strlen ((item_value2) ? item_value2 : item_value);
content = realloc (content, content_length);
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_HORIZONTAL)
strcat (content, space_with_reinit_color);
else
strcat (content, "\n");
strcat (content,
(item_value2) ? item_value2 : item_value);
}
if (item_value2)
free (item_value2);
}
free (item_value);
}
}
if (content)
{
items = string_explode (content, "\n", 0, 0, &items_count);
if (items_count == 0)
{
if (CONFIG_INTEGER(bar_window->bar->size) == 0)
gui_bar_window_set_current_size (bar_window->bar, 1);
gui_window_clear (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(bar_window->bar->color_bg));
}
else
gui_window_clear (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(bar_window->bar->color_bg));
}
else
{
/* bar with auto size ? then compute new size, according to content */
if (CONFIG_INTEGER(bar_window->bar->size) == 0)
{
/* search longer line and optimal number of lines */
max_length = 0;
@@ -422,11 +400,8 @@ gui_bar_window_draw (struct t_gui_bar_window *bar_window,
{
length_on_screen = gui_chat_strlen_screen (items[line]);
length = strlen (items[line]);
if ((length >= 3)
&& (items[line][length - 3] == GUI_COLOR_COLOR_CHAR)
&& (items[line][length - 2] == GUI_COLOR_BAR_CHAR)
&& (items[line][length - 1] == GUI_COLOR_BAR_MOVE_CURSOR_CHAR))
pos_cursor = strstr (items[line], str_cursor);
if (pos_cursor && (gui_chat_strlen_screen (pos_cursor) == 0))
length_on_screen++;
if (length_on_screen > max_length)
@@ -447,7 +422,7 @@ gui_bar_window_draw (struct t_gui_bar_window *bar_window,
{
case GUI_BAR_POSITION_BOTTOM:
case GUI_BAR_POSITION_TOP:
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_HORIZONTAL)
if (filling == GUI_BAR_FILLING_HORIZONTAL)
num_lines = optimal_number_of_lines;
else
num_lines = items_count;
@@ -462,190 +437,132 @@ gui_bar_window_draw (struct t_gui_bar_window *bar_window,
case GUI_BAR_NUM_POSITIONS:
break;
}
gui_window_clear (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(bar_window->bar->color_bg));
x = 0;
y = 0;
some_data_not_displayed = 0;
if ((bar_window->scroll_y > 0)
&& (bar_window->scroll_y >= items_count))
}
gui_window_clear (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(bar_window->bar->color_bg));
x = 0;
y = 0;
some_data_not_displayed = 0;
if ((bar_window->scroll_y > 0)
&& (bar_window->scroll_y >= items_count))
{
bar_window->scroll_y = items_count - bar_window->height;
if (bar_window->scroll_y < 0)
bar_window->scroll_y = 0;
}
for (line = 0;
(line < items_count) && (y < bar_window->height);
line++)
{
pos_start_input = strstr (items[line], str_start_input);
if (pos_start_input)
{
bar_window->scroll_y = items_count - bar_window->height;
if (bar_window->scroll_y < 0)
bar_window->scroll_y = 0;
}
for (line = 0;
(line < items_count) && (y < bar_window->height);
line++)
{
if ((bar_window->scroll_y == 0)
|| (line >= bar_window->scroll_y))
pos_cursor = strstr (items[line], str_cursor);
if (pos_cursor && (pos_cursor > pos_start_input))
{
if (!gui_bar_window_print_string (bar_window, &x, &y,
items[line], 1))
pos_start_input += strlen (str_start_input);
chars_available =
((bar_window->height - y - 1) * bar_window->width) + /* next lines */
(bar_window->width - x - 1); /* chars on current line */
length_screen_before_cursor = -1;
length_screen_after_cursor = -1;
if (pos_cursor && (pos_cursor > items[line]))
{
some_data_not_displayed = 1;
}
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_VERTICAL)
{
while (x < bar_window->width)
buf = string_strndup (items[line], pos_cursor - items[line]);
if (buf)
{
gui_bar_window_print_string (bar_window,
&x, &y,
" ", 0);
length_screen_before_cursor = gui_chat_strlen_screen (buf);
length_screen_after_cursor = gui_chat_strlen_screen (pos_cursor);
free (buf);
}
x = 0;
y++;
}
else
if ((length_screen_before_cursor < 0) || (length_screen_after_cursor < 0))
{
gui_bar_window_print_string (bar_window, &x, &y,
space_with_reinit_color, 0);
length_screen_before_cursor = gui_chat_strlen_screen (items[line]);
length_screen_after_cursor = 0;
}
total_length_screen = length_screen_before_cursor + length_screen_after_cursor;
diff = length_screen_before_cursor - chars_available;
if (diff > 0)
{
new_start_input = gui_chat_string_add_offset (pos_start_input, diff);
if (pos_cursor && (new_start_input > pos_cursor))
new_start_input = pos_cursor;
memmove (pos_start_input, new_start_input, strlen (new_start_input) + 1);
}
}
}
if ((bar_window->cursor_x < 0) && (bar_window->cursor_y < 0)
&& ((bar_window->scroll_x > 0) || (bar_window->scroll_y > 0)))
if ((bar_window->scroll_y == 0)
|| (line >= bar_window->scroll_y))
{
x = (bar_window->height > 1) ? bar_window->width - 2 : 0;
if (x < 0)
if (!gui_bar_window_print_string (bar_window, &x, &y,
items[line], 1))
{
some_data_not_displayed = 1;
}
if (filling != GUI_BAR_FILLING_HORIZONTAL)
{
while (x < bar_window->width)
{
gui_bar_window_print_string (bar_window,
&x, &y,
" ", 0);
}
x = 0;
y = 0;
gui_window_set_custom_color_fg_bg (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(config_color_bar_more),
CONFIG_INTEGER(bar_window->bar->color_bg));
mvwprintw (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar, y, x, "--");
}
if ((bar_window->cursor_x < 0) && (bar_window->cursor_y < 0)
&& (some_data_not_displayed || (line < items_count)))
{
x = bar_window->width - 2;
if (x < 0)
x = 0;
y = (bar_window->height > 1) ? bar_window->height - 1 : 0;
gui_window_set_custom_color_fg_bg (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(config_color_bar_more),
CONFIG_INTEGER(bar_window->bar->color_bg));
mvwprintw (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar, y, x, "++");
y++;
}
else
{
gui_bar_window_print_string (bar_window, &x, &y,
space_with_reinit_color, 0);
}
}
}
if (items)
string_free_exploded (items);
free (content);
}
else
{
gui_bar_window_set_current_size (bar_window->bar, 1);
gui_window_clear (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(bar_window->bar->color_bg));
if ((bar_window->cursor_x < 0) && (bar_window->cursor_y < 0)
&& ((bar_window->scroll_x > 0) || (bar_window->scroll_y > 0)))
{
x = (bar_window->height > 1) ? bar_window->width - 2 : 0;
if (x < 0)
x = 0;
y = 0;
gui_window_set_custom_color_fg_bg (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(config_color_bar_more),
CONFIG_INTEGER(bar_window->bar->color_bg));
mvwprintw (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
y, x, "--");
}
if ((bar_window->cursor_x < 0) && (bar_window->cursor_y < 0)
&& (some_data_not_displayed || (line < items_count)))
{
x = bar_window->width - 2;
if (x < 0)
x = 0;
y = (bar_window->height > 1) ? bar_window->height - 1 : 0;
gui_window_set_custom_color_fg_bg (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(config_color_bar_more),
CONFIG_INTEGER(bar_window->bar->color_bg));
mvwprintw (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
y, x, "++");
}
}
if (items)
string_free_exploded (items);
free (content);
}
else
{
if (CONFIG_INTEGER(bar_window->bar->size) == 0)
gui_bar_window_set_current_size (bar_window->bar, 1);
gui_window_clear (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(bar_window->bar->color_bg));
x = 0;
y = 0;
for (i = 0; i < bar_window->bar->items_count; i++)
{
chars_available =
((bar_window->height - y - 1) * bar_window->width) + /* next lines */
(bar_window->width - x - 1); /* chars on current line */
item_value = gui_bar_item_get_value (bar_window->bar->items_array[i],
bar_window->bar, window,
bar_window->width,
bar_window->height,
chars_available);
if (item_value)
{
if (item_value[0])
{
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_HORIZONTAL)
{
item_value2 = string_replace (item_value, "\n",
space_with_reinit_color);
}
else
item_value2 = NULL;
items = string_explode ((item_value2) ?
item_value2 : item_value,
"\n", 0, 0,
&items_count);
some_data_not_displayed = 0;
if ((bar_window->scroll_y > 0)
&& (bar_window->scroll_y >= items_count))
{
bar_window->scroll_y = items_count - bar_window->height;
if (bar_window->scroll_y < 0)
bar_window->scroll_y = 0;
}
for (line = 0;
(line < items_count) && (y < bar_window->height);
line++)
{
if ((bar_window->scroll_y == 0)
|| (line >= bar_window->scroll_y))
{
if (!gui_bar_window_print_string (bar_window, &x, &y,
items[line], 1))
{
some_data_not_displayed = 1;
}
if (CONFIG_INTEGER(gui_bar_get_option_filling (bar_window->bar)) == GUI_BAR_FILLING_VERTICAL)
{
while (x < bar_window->width)
{
gui_bar_window_print_string (bar_window,
&x, &y,
" ", 0);
}
x = 0;
y++;
}
else
{
gui_bar_window_print_string (bar_window, &x, &y,
space_with_reinit_color, 0);
}
}
}
if ((bar_window->cursor_x < 0) && (bar_window->cursor_y < 0)
&& ((bar_window->scroll_x > 0) || (bar_window->scroll_y > 0)))
{
x = (bar_window->height > 1) ? bar_window->width - 2 : 0;
if (x < 0)
x = 0;
y = 0;
gui_window_set_custom_color_fg_bg (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(config_color_bar_more),
CONFIG_INTEGER(bar_window->bar->color_bg));
mvwprintw (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar, y, x, "--");
}
if ((bar_window->cursor_x < 0) && (bar_window->cursor_y < 0)
&& (some_data_not_displayed || (line < items_count)))
{
x = bar_window->width - 2;
if (x < 0)
x = 0;
y = (bar_window->height > 1) ? bar_window->height - 1 : 0;
gui_window_set_custom_color_fg_bg (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar,
CONFIG_COLOR(config_color_bar_more),
CONFIG_INTEGER(bar_window->bar->color_bg));
mvwprintw (GUI_BAR_WINDOW_OBJECTS(bar_window)->win_bar, y, x, "++");
}
if (item_value2)
free (item_value2);
if (items)
string_free_exploded (items);
}
free (item_value);
}
}
}
/* move cursor if it was asked in an item content (input_text does that
to move cursor in user input text) */
if (window && (gui_current_window == window)
+1
View File
@@ -234,6 +234,7 @@ gui_chat_string_next_char (struct t_gui_window *window,
case GUI_COLOR_BAR_FG_CHAR:
case GUI_COLOR_BAR_DELIM_CHAR:
case GUI_COLOR_BAR_BG_CHAR:
case GUI_COLOR_BAR_START_INPUT_CHAR:
case GUI_COLOR_BAR_MOVE_CURSOR_CHAR:
string += 2;
break;
+8 -7
View File
@@ -451,7 +451,7 @@ gui_window_switch_to_buffer (struct t_gui_window *window,
struct t_gui_buffer *buffer,
int set_last_read)
{
struct t_gui_bar_window *ptr_bar_win;
struct t_gui_bar_window *ptr_bar_window;
struct t_gui_buffer *old_buffer;
if (!gui_ok)
@@ -489,10 +489,10 @@ gui_window_switch_to_buffer (struct t_gui_window *window,
if (gui_ok)
{
/* create bar windows */
for (ptr_bar_win = window->bar_windows; ptr_bar_win;
ptr_bar_win = ptr_bar_win->next_bar_window)
for (ptr_bar_window = window->bar_windows; ptr_bar_window;
ptr_bar_window = ptr_bar_window->next_bar_window)
{
gui_bar_window_create_win (ptr_bar_win);
gui_bar_window_create_win (ptr_bar_window);
}
/* destroy Curses windows */
@@ -518,10 +518,11 @@ gui_window_switch_to_buffer (struct t_gui_window *window,
}
/* redraw bars in window */
for (ptr_bar_win = window->bar_windows; ptr_bar_win;
ptr_bar_win = ptr_bar_win->next_bar_window)
for (ptr_bar_window = window->bar_windows; ptr_bar_window;
ptr_bar_window = ptr_bar_window->next_bar_window)
{
ptr_bar_win->bar->bar_refresh_needed = 1;
gui_bar_window_content_build (ptr_bar_window, window);
ptr_bar_window->bar->bar_refresh_needed = 1;
}
if (window->buffer->type == GUI_BUFFER_TYPE_FREE)
+1 -1
View File
@@ -42,7 +42,7 @@ struct t_gui_bar_window;
struct t_gui_window_curses_objects
{
WINDOW *win_chat; /* chat window (example: channel) */
WINDOW *win_separator; /* separation between 2 splited (V) win */
WINDOW *win_separator; /* separation between 2 splitted (V) win*/
};
struct t_gui_bar_window_curses_objects
+72 -190
View File
@@ -253,96 +253,6 @@ gui_bar_item_used_in_a_bar (const char *item_name, int partial_name)
return 0;
}
/*
* gui_bar_item_input_text_update_for_display: update input text item for
* display:
* - scroll if needed, to see only
* the end of input
* - insert "move cursor" id to
* move cursor to good position
*/
char *
gui_bar_item_input_text_update_for_display (const char *item_content,
struct t_gui_window *window,
int chars_available)
{
char *buf, str_cursor[16];
const char *pos_cursor, *ptr_start;
int diff, buf_pos;
int length, length_screen_before_cursor, length_screen_after_cursor;
int total_length_screen;
snprintf (str_cursor, sizeof (str_cursor), "%c%c%c",
GUI_COLOR_COLOR_CHAR,
GUI_COLOR_BAR_CHAR,
GUI_COLOR_BAR_MOVE_CURSOR_CHAR);
ptr_start = item_content;
pos_cursor = gui_chat_string_add_offset (item_content,
window->buffer->input_buffer_pos);
/* if bar size is fixed (chars_available > 0), then truncate it at
beginning if needed */
if (chars_available > 0)
{
length_screen_before_cursor = -1;
length_screen_after_cursor = -1;
if (pos_cursor && (pos_cursor > item_content))
{
buf = string_strndup (item_content, pos_cursor - item_content);
if (buf)
{
length_screen_before_cursor = gui_chat_strlen_screen (buf);
length_screen_after_cursor = gui_chat_strlen_screen (pos_cursor);
free (buf);
}
}
if ((length_screen_before_cursor < 0) || (length_screen_after_cursor < 0))
{
length_screen_before_cursor = gui_chat_strlen_screen (item_content);
length_screen_after_cursor = 0;
}
total_length_screen = length_screen_before_cursor + length_screen_after_cursor;
diff = length_screen_before_cursor - chars_available;
if (diff > 0)
{
ptr_start = gui_chat_string_add_offset (item_content, diff);
if (pos_cursor && (ptr_start > pos_cursor))
ptr_start = pos_cursor;
}
}
/* insert "move cursor" id in string and return it */
length = 16 + strlen (ptr_start);
buf = malloc (length);
if (buf)
{
buf[0] = '\0';
buf_pos = 0;
if (!pos_cursor)
pos_cursor = ptr_start;
/* add beginning of buffer */
if (pos_cursor != ptr_start)
{
memmove (buf, ptr_start, pos_cursor - ptr_start);
buf_pos = buf_pos + (pos_cursor - ptr_start);
}
/* add "move cursor here" identifier in string */
snprintf (buf + buf_pos, length - buf_pos, "%s",
str_cursor);
/* add end of buffer */
strcat (buf, pos_cursor);
}
return buf;
}
/*
* gui_bar_item_get_value: return value of a bar item
* first look for prefix/suffix in name, then run item
@@ -355,13 +265,11 @@ gui_bar_item_input_text_update_for_display (const char *item_content,
char *
gui_bar_item_get_value (const char *name, struct t_gui_bar *bar,
struct t_gui_window *window,
int width, int height,
int chars_available)
struct t_gui_window *window)
{
const char *ptr, *start, *end;
char *prefix, *item_name, *suffix;
char *item_value, *item_value2, delimiter_color[32], bar_color[32];
char *item_value, delimiter_color[32], bar_color[32];
char *result;
int valid_char, length;
struct t_gui_bar_item *ptr_item;
@@ -404,35 +312,10 @@ gui_bar_item_get_value (const char *name, struct t_gui_bar *bar,
window->buffer->plugin : NULL,
0,
item_name);
if (ptr_item)
if (ptr_item && ptr_item->build_callback)
{
if (ptr_item->build_callback)
{
item_value = (ptr_item->build_callback) (ptr_item->build_callback_data,
ptr_item, window,
width,
height);
if (window
&& (strncmp (item_name,
gui_bar_item_names[GUI_BAR_ITEM_INPUT_TEXT],
strlen (gui_bar_item_names[GUI_BAR_ITEM_INPUT_TEXT])) == 0))
{
if (prefix)
chars_available -= gui_chat_strlen_screen (prefix);
item_value2 = gui_bar_item_input_text_update_for_display (
(item_value) ? item_value : "",
window,
chars_available);
if (item_value2)
{
if (item_value)
free (item_value);
item_value = item_value2;
}
}
}
item_value = (ptr_item->build_callback) (ptr_item->build_callback_data,
ptr_item, window);
}
if (!item_value || !item_value[0])
{
@@ -509,8 +392,7 @@ struct t_gui_bar_item *
gui_bar_item_new (struct t_weechat_plugin *plugin, const char *name,
char *(*build_callback)(void *data,
struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height),
struct t_gui_window *window),
void *build_callback_data)
{
struct t_gui_bar_item *new_bar_item;
@@ -660,8 +542,7 @@ gui_bar_item_free_all_plugin (struct t_weechat_plugin *plugin)
char *
gui_bar_item_default_input_paste (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char *text_paste_pending = N_("%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No");
char *ptr_message, *buf;
@@ -670,8 +551,6 @@ gui_bar_item_default_input_paste (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
return NULL;
@@ -699,15 +578,12 @@ gui_bar_item_default_input_paste (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_input_prompt (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
/* make C compiler happy */
(void) data;
(void) item;
(void) window;
(void) max_width;
(void) max_height;
return NULL;
}
@@ -718,8 +594,7 @@ gui_bar_item_default_input_prompt (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_input_search (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char *text_search = N_("Text search");
char *text_search_exact = N_("Text search (exact)");
@@ -729,8 +604,6 @@ gui_bar_item_default_input_search (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -762,16 +635,15 @@ gui_bar_item_default_input_search (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_input_text (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char *new_input, str_buffer[128];
char *ptr_input, str_buffer[128], str_start_input[16], str_cursor[16], *buf;
const char *pos_cursor;
int length, buf_pos;
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -779,16 +651,59 @@ gui_bar_item_default_input_text (void *data, struct t_gui_bar_item *item,
snprintf (str_buffer, sizeof (str_buffer),
"0x%lx", (long unsigned int)(window->buffer));
new_input = hook_modifier_exec (NULL,
ptr_input = hook_modifier_exec (NULL,
"weechat_input_text_display",
str_buffer,
(window->buffer->input_buffer) ?
window->buffer->input_buffer : "");
if (new_input)
return new_input;
if (!ptr_input)
{
ptr_input = (window->buffer->input_buffer) ?
strdup (window->buffer->input_buffer) : NULL;
}
if (!ptr_input)
return NULL;
return (window->buffer->input_buffer) ?
strdup (window->buffer->input_buffer) : NULL;
/* insert "move cursor" id in string */
snprintf (str_start_input, sizeof (str_start_input), "%c%c%c",
GUI_COLOR_COLOR_CHAR,
GUI_COLOR_BAR_CHAR,
GUI_COLOR_BAR_START_INPUT_CHAR);
snprintf (str_cursor, sizeof (str_cursor), "%c%c%c",
GUI_COLOR_COLOR_CHAR,
GUI_COLOR_BAR_CHAR,
GUI_COLOR_BAR_MOVE_CURSOR_CHAR);
pos_cursor = gui_chat_string_add_offset (ptr_input,
window->buffer->input_buffer_pos);
length = strlen (str_start_input)+ strlen (ptr_input) +
strlen (str_cursor) + 1;
buf = malloc (length);
if (buf)
{
snprintf (buf, length, "%s", str_start_input);
buf_pos = strlen (buf);
if (!pos_cursor)
pos_cursor = ptr_input;
/* add beginning of buffer */
if (pos_cursor != ptr_input)
{
memmove (buf + buf_pos, ptr_input, pos_cursor - ptr_input);
buf_pos += (pos_cursor - ptr_input);
}
/* add "move cursor here" identifier in string */
snprintf (buf + buf_pos, length - buf_pos, "%s",
str_cursor);
/* add end of buffer */
strcat (buf, pos_cursor);
free (ptr_input);
ptr_input = buf;
}
return ptr_input;
}
/*
@@ -797,8 +712,7 @@ gui_bar_item_default_input_text (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_time (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
time_t date;
struct tm *local_time;
@@ -808,8 +722,6 @@ gui_bar_item_default_time (void *data, struct t_gui_bar_item *item,
(void) data;
(void) item;
(void) window;
(void) max_width;
(void) max_height;
date = time (NULL);
local_time = localtime (&date);
@@ -827,8 +739,7 @@ gui_bar_item_default_time (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_count (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[32];
@@ -836,8 +747,6 @@ gui_bar_item_default_buffer_count (void *data, struct t_gui_bar_item *item,
(void) data;
(void) item;
(void) window;
(void) max_width;
(void) max_height;
snprintf (buf, sizeof (buf), "%d",
(last_gui_buffer) ? last_gui_buffer->number : 0);
@@ -851,16 +760,13 @@ gui_bar_item_default_buffer_count (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_plugin (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
const char *plugin_name;
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -875,16 +781,13 @@ gui_bar_item_default_buffer_plugin (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_name (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[256];
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -905,16 +808,13 @@ gui_bar_item_default_buffer_name (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_filter (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[256];
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -938,16 +838,13 @@ gui_bar_item_default_buffer_filter (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_nicklist_count (void *data,
struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[32];
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -967,16 +864,13 @@ gui_bar_item_default_buffer_nicklist_count (void *data,
char *
gui_bar_item_default_scroll (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[64];
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -997,8 +891,7 @@ gui_bar_item_default_scroll (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_hotlist (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[1024], format[32];
struct t_gui_hotlist *ptr_hotlist;
@@ -1008,8 +901,6 @@ gui_bar_item_default_hotlist (void *data, struct t_gui_bar_item *item,
(void) data;
(void) item;
(void) window;
(void) max_width;
(void) max_height;
if (!gui_hotlist)
return NULL;
@@ -1083,8 +974,7 @@ gui_bar_item_default_hotlist (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_completion (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
int length;
char *buf, number_str[16];
@@ -1094,8 +984,6 @@ gui_bar_item_default_completion (void *data, struct t_gui_bar_item *item,
(void) data;
(void) item;
(void) window;
(void) max_width;
(void) max_height;
length = 1;
for (ptr_item = gui_completion_partial_list; ptr_item;
@@ -1136,14 +1024,11 @@ gui_bar_item_default_completion (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_title (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
@@ -1158,8 +1043,7 @@ gui_bar_item_default_buffer_title (void *data, struct t_gui_bar_item *item,
char *
gui_bar_item_default_buffer_nicklist (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
struct t_gui_nick_group *ptr_group;
struct t_gui_nick *ptr_nick;
@@ -1170,8 +1054,6 @@ gui_bar_item_default_buffer_nicklist (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = gui_current_window;
+3 -8
View File
@@ -49,8 +49,7 @@ struct t_gui_bar_item
char *name; /* bar item name */
char *(*build_callback)(void *data,
struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height);
struct t_gui_window *window);
/* callback called for building item */
void *build_callback_data; /* data for callback */
struct t_gui_bar_item *prev_item; /* link to previous bar item */
@@ -79,16 +78,12 @@ extern int gui_bar_item_used_in_a_bar (const char *item_name,
int partial_name);
extern char *gui_bar_item_get_value (const char *name,
struct t_gui_bar *bar,
struct t_gui_window *window,
int width, int height,
int chars_available);
struct t_gui_window *window);
extern struct t_gui_bar_item *gui_bar_item_new (struct t_weechat_plugin *plugin,
const char *name,
char *(*build_callback)(void *data,
struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width,
int max_height),
struct t_gui_window *window),
void *build_callback_data);
extern void gui_bar_item_update (const char *name);
extern void gui_bar_item_free (struct t_gui_bar_item *item);
+280 -14
View File
@@ -35,6 +35,7 @@
#include "gui-bar-window.h"
#include "gui-bar.h"
#include "gui-bar-item.h"
#include "gui-chat.h"
#include "gui-color.h"
#include "gui-window.h"
@@ -288,12 +289,19 @@ gui_bar_window_content_build_item (struct t_gui_bar_window *bar_window,
int item_index)
{
if (bar_window->items_content[item_index])
{
free (bar_window->items_content[item_index]);
bar_window->items_content[item_index] = NULL;
}
bar_window->items_content[item_index] =
gui_bar_item_get_value (bar_window->bar->items_array[item_index],
bar_window->bar, window,
0, 0, 0);
/* build item, but only if there's a buffer in window */
if ((window && window->buffer)
|| (gui_current_window && gui_current_window->buffer))
{
bar_window->items_content[item_index] =
gui_bar_item_get_value (bar_window->bar->items_array[item_index],
bar_window->bar, window);
}
}
/*
@@ -321,6 +329,189 @@ gui_bar_window_content_build (struct t_gui_bar_window *bar_window,
}
}
/*
* gui_bar_window_content_get_with_filling: get content of a bar window,
* formated for display, according
* to filling for bar position
*/
char *
gui_bar_window_content_get_with_filling (struct t_gui_bar_window *bar_window)
{
enum t_gui_bar_filling filling;
char *content, space_with_reinit_color[32], *item_value;
int index_content, content_length, length_reinit_color, i, j, k, index;
int length, max_length, max_length_screen, total_items, columns, lines;
char ***splitted_items, **linear_items;
snprintf (space_with_reinit_color,
sizeof (space_with_reinit_color),
"%c%c%02d,%02d ",
GUI_COLOR_COLOR_CHAR,
GUI_COLOR_FG_BG_CHAR,
CONFIG_COLOR(bar_window->bar->color_fg),
CONFIG_COLOR(bar_window->bar->color_bg));
length_reinit_color = strlen (space_with_reinit_color);
content = NULL;
content_length = 1;
filling = gui_bar_get_filling (bar_window->bar);
switch (filling)
{
case GUI_BAR_FILLING_HORIZONTAL: /* items separated by space */
case GUI_BAR_FILLING_VERTICAL: /* items separated by \n */
for (i = 0; i < bar_window->items_count; i++)
{
if (bar_window->items_content[i]
&& bar_window->items_content[i][0])
{
if (gui_bar_get_filling (bar_window->bar) == GUI_BAR_FILLING_HORIZONTAL)
{
item_value = string_replace (bar_window->items_content[i],
"\n",
space_with_reinit_color);
}
else
item_value = NULL;
if (!content)
{
content_length += strlen ((item_value) ?
item_value : bar_window->items_content[i]);
content = strdup ((item_value) ?
item_value : bar_window->items_content[i]);
}
else
{
content_length += length_reinit_color +
strlen ((item_value) ? item_value : bar_window->items_content[i]);
content = realloc (content, content_length);
if (gui_bar_get_filling (bar_window->bar) == GUI_BAR_FILLING_HORIZONTAL)
strcat (content, space_with_reinit_color);
else
strcat (content, "\n");
strcat (content,
(item_value) ? item_value : bar_window->items_content[i]);
}
if (item_value)
free (item_value);
}
}
break;
case GUI_BAR_FILLING_COLUMNS_HORIZONTAL: /* items in columns, with horizontal filling */
case GUI_BAR_FILLING_COLUMNS_VERTICAL: /* items in columns, with vertical filling */
total_items = 0;
max_length = 1;
max_length_screen = 1;
splitted_items = malloc(bar_window->items_count * sizeof(*splitted_items));
for (i = 0; i < bar_window->items_count; i++)
{
if (bar_window->items_content[i]
&& bar_window->items_content[i][0])
{
splitted_items[i] = string_explode (bar_window->items_content[i],
"\n", 0, 0, NULL);
for (j = 0; splitted_items[i][j]; j++)
{
total_items++;
length = strlen (splitted_items[i][j]);
if (length > max_length)
max_length = length;
length = gui_chat_strlen_screen (splitted_items[i][j]);
if (length > max_length_screen)
max_length_screen = length;
}
}
else
splitted_items[i] = NULL;
}
if ((CONFIG_INTEGER(bar_window->bar->position) == GUI_BAR_POSITION_BOTTOM)
|| (CONFIG_INTEGER(bar_window->bar->position) == GUI_BAR_POSITION_TOP))
{
columns = bar_window->width / (max_length_screen + 1);
if (columns == 0)
columns = 1;
lines = total_items / columns;
if (total_items % columns != 0)
lines++;
}
else
{
columns = total_items / bar_window->height;
if (total_items % bar_window->height != 0)
columns++;
lines = bar_window->height;
}
/* build array with pointers to splitted items */
linear_items = malloc (total_items * sizeof (*linear_items));
index = 0;
for (i = 0; i < bar_window->items_count; i++)
{
if (splitted_items[i])
{
for (j = 0; splitted_items[i][j]; j++)
{
linear_items[index++] = splitted_items[i][j];
}
}
}
/* build content with lines and columns */
content = malloc (1 + (lines *
((columns * (max_length + length_reinit_color)) + 1)));
content[0] = '\0';
index_content = 0;
for (i = 0; i < lines; i++)
{
for (j = 0; j < columns; j++)
{
if (filling == GUI_BAR_FILLING_COLUMNS_HORIZONTAL)
index = (i * columns) + j;
else
index = (j * lines) + i;
if (index >= total_items)
{
for (k = 0; k < max_length_screen; k++)
{
content[index_content++] = ' ';
}
}
else
{
strcpy (content + index_content, linear_items[index]);
index_content += strlen (linear_items[index]);
length = max_length_screen -
gui_chat_strlen_screen (linear_items[index]);
for (k = 0; k < length; k++)
{
content[index_content++] = ' ';
}
}
strcpy (content + index_content, space_with_reinit_color);
index_content += length_reinit_color;
}
content[index_content++] = '\n';
}
content[index_content] = '\0';
free (linear_items);
for (i = 0; i < bar_window->items_count; i++)
{
if (splitted_items[i])
string_free_exploded (splitted_items[i]);
}
free (splitted_items);
break;
case GUI_BAR_NUM_FILLING:
break;
}
return content;
}
/*
* gui_bar_window_new: create a new "window bar" for a bar, in screen or a window
* if window is not NULL, bar window will be in this window
@@ -463,6 +654,75 @@ gui_bar_window_get_current_size (struct t_gui_bar_window *bar_window)
return bar_window->current_size;
}
/*
* gui_bar_window_get_max_size_in_window: return max size for bar window
* in a window
*/
int
gui_bar_window_get_max_size_in_window (struct t_gui_bar_window *bar_window,
struct t_gui_window *window)
{
int max_size;
max_size = 1;
if (bar_window && window)
{
switch (CONFIG_INTEGER(bar_window->bar->position))
{
case GUI_BAR_POSITION_BOTTOM:
case GUI_BAR_POSITION_TOP:
max_size = (window->win_chat_height + bar_window->height) -
GUI_WINDOW_CHAT_MIN_HEIGHT;
break;
case GUI_BAR_POSITION_LEFT:
case GUI_BAR_POSITION_RIGHT:
max_size = (window->win_chat_width + bar_window->width) -
GUI_WINDOW_CHAT_MIN_HEIGHT;
break;
case GUI_BAR_NUM_POSITIONS:
break;
}
}
return max_size;
}
/*
* gui_bar_window_get_max_size: return max size for bar window
*/
int
gui_bar_window_get_max_size (struct t_gui_bar_window *bar_window,
struct t_gui_window *window)
{
int max_size_found, max_size;
struct t_gui_window *ptr_window;
if (window)
{
max_size_found = gui_bar_window_get_max_size_in_window (bar_window,
window);
}
else
{
max_size_found = INT_MAX;
for (ptr_window = gui_windows; ptr_window;
ptr_window = ptr_window->next_window)
{
max_size = gui_bar_window_get_max_size_in_window (bar_window,
ptr_window);
if (max_size < max_size_found)
max_size_found = max_size;
}
if (max_size_found == INT_MAX)
max_size_found = 1;
}
return max_size_found;
}
/*
* gui_bar_window_set_current_size: set current size of all bar windows for a bar
*/
@@ -470,9 +730,9 @@ gui_bar_window_get_current_size (struct t_gui_bar_window *bar_window)
void
gui_bar_window_set_current_size (struct t_gui_bar *bar, int size)
{
struct t_gui_window *ptr_win;
struct t_gui_bar_window *ptr_bar_win;
int new_size;
struct t_gui_window *ptr_window;
struct t_gui_bar_window *ptr_bar_window;
int new_size, max_size;
if (size == 0)
new_size = 1;
@@ -492,21 +752,27 @@ gui_bar_window_set_current_size (struct t_gui_bar *bar, int size)
{
if (bar->bar_window->current_size != new_size)
{
bar->bar_window->current_size = new_size;
max_size = gui_bar_window_get_max_size (bar->bar_window, NULL);
bar->bar_window->current_size = (max_size < new_size) ?
max_size : new_size;
gui_bar_window_recreate_bar_windows (bar);
}
}
else
{
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
for (ptr_window = gui_windows; ptr_window;
ptr_window = ptr_window->next_window)
{
for (ptr_bar_win = ptr_win->bar_windows; ptr_bar_win;
ptr_bar_win = ptr_bar_win->next_bar_window)
for (ptr_bar_window = ptr_window->bar_windows; ptr_bar_window;
ptr_bar_window = ptr_bar_window->next_bar_window)
{
if ((ptr_bar_win->bar == bar)
&& (ptr_bar_win->current_size != new_size))
if ((ptr_bar_window->bar == bar)
&& (ptr_bar_window->current_size != new_size))
{
ptr_bar_win->current_size = new_size;
max_size = gui_bar_window_get_max_size (ptr_bar_window,
ptr_window);
ptr_bar_window->current_size = (max_size < new_size) ?
max_size : new_size;
gui_bar_window_recreate_bar_windows (bar);
}
}
+3
View File
@@ -49,6 +49,9 @@ extern void gui_bar_window_calculate_pos_size (struct t_gui_bar_window *bar_wind
extern void gui_bar_window_content_build_item (struct t_gui_bar_window *bar_window,
struct t_gui_window *window,
int item_index);
extern void gui_bar_window_content_build (struct t_gui_bar_window *bar_window,
struct t_gui_window *window);
extern char *gui_bar_window_content_get_with_filling (struct t_gui_bar_window *bar_window);
extern struct t_gui_bar_window *gui_bar_window_search_bar (struct t_gui_window *window,
struct t_gui_bar *bar);
extern int gui_bar_window_get_current_size (struct t_gui_bar_window *bar_window);
+17 -17
View File
@@ -51,7 +51,7 @@ char *gui_bar_type_string[GUI_BAR_NUM_TYPES] =
char *gui_bar_position_string[GUI_BAR_NUM_POSITIONS] =
{ "bottom", "top", "left", "right" };
char *gui_bar_filling_string[GUI_BAR_NUM_FILLING] =
{ "horizontal", "vertical" };
{ "horizontal", "vertical", "columns_horizontal", "columns_vertical" };
struct t_gui_bar *gui_bars = NULL; /* first bar */
struct t_gui_bar *last_gui_bar = NULL; /* last bar */
@@ -237,7 +237,7 @@ gui_bar_get_min_height (struct t_gui_bar *bar)
int
gui_bar_check_size_add (struct t_gui_bar *bar, int add_size)
{
struct t_gui_window *ptr_win;
struct t_gui_window *ptr_window;
int sub_width, sub_height;
sub_width = 0;
@@ -257,13 +257,14 @@ gui_bar_check_size_add (struct t_gui_bar *bar, int add_size)
break;
}
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
for (ptr_window = gui_windows; ptr_window;
ptr_window = ptr_window->next_window)
{
if ((CONFIG_INTEGER(bar->type) == GUI_BAR_TYPE_ROOT)
|| (gui_bar_window_search_bar (ptr_win, bar)))
|| (gui_bar_window_search_bar (ptr_window, bar)))
{
if ((ptr_win->win_chat_width - sub_width < GUI_WINDOW_CHAT_MIN_WIDTH)
|| (ptr_win->win_chat_height - sub_height < GUI_WINDOW_CHAT_MIN_HEIGHT))
if ((ptr_window->win_chat_width - sub_width < GUI_WINDOW_CHAT_MIN_WIDTH)
|| (ptr_window->win_chat_height - sub_height < GUI_WINDOW_CHAT_MIN_HEIGHT))
return 0;
}
}
@@ -273,21 +274,18 @@ gui_bar_check_size_add (struct t_gui_bar *bar, int add_size)
}
/*
* gui_bar_get_option_filling: return pointer to filling option
* if position is top/bottom, then return pointer
* on option "filling_top_bottom"
* if position is left/right, then return pointer
* on option "filling_left_right"
* gui_bar_get_filling: return filling option for bar, according to filling
* for current bar position
*/
struct t_config_option *
gui_bar_get_option_filling (struct t_gui_bar *bar)
enum t_gui_bar_filling
gui_bar_get_filling (struct t_gui_bar *bar)
{
if ((CONFIG_INTEGER(bar->position) == GUI_BAR_POSITION_BOTTOM)
|| (CONFIG_INTEGER(bar->position) == GUI_BAR_POSITION_TOP))
return bar->filling_top_bottom;
return CONFIG_INTEGER(bar->filling_top_bottom);
return bar->filling_left_right;
return CONFIG_INTEGER(bar->filling_left_right);
}
/*
@@ -1253,7 +1251,8 @@ gui_bar_create_option (const char *bar_name, int index_option, const char *value
N_("bar filling direction (\"horizontal\" (from left to "
"right) or \"vertical\" (from top to bottom)) when bar "
"position is top or bottom"),
"horizontal|vertical", 0, 0, value, NULL,
"horizontal|vertical|columns_horizontal|columns_vertical",
0, 0, value, NULL,
NULL, NULL, &gui_bar_config_change_filling, NULL, NULL, NULL);
break;
case GUI_BAR_OPTION_FILLING_LEFT_RIGHT:
@@ -1263,7 +1262,8 @@ gui_bar_create_option (const char *bar_name, int index_option, const char *value
N_("bar filling direction (\"horizontal\" (from left to "
"right) or \"vertical\" (from top to bottom)) when bar "
"position is left or right"),
"horizontal|vertical", 0, 0, value, NULL,
"horizontal|vertical|columns_horizontal|columns_vertical",
0, 0, value, NULL,
NULL, NULL, &gui_bar_config_change_filling, NULL, NULL, NULL);
break;
case GUI_BAR_OPTION_SIZE:
+3 -1
View File
@@ -71,6 +71,8 @@ enum t_gui_bar_filling
{
GUI_BAR_FILLING_HORIZONTAL = 0,
GUI_BAR_FILLING_VERTICAL,
GUI_BAR_FILLING_COLUMNS_HORIZONTAL,
GUI_BAR_FILLING_COLUMNS_VERTICAL,
/* number of bar positions */
GUI_BAR_NUM_FILLING,
};
@@ -124,7 +126,7 @@ extern int gui_bar_valid (struct t_gui_bar *bar);
extern int gui_bar_search_option (const char *option_name);
extern int gui_bar_search_type (const char *type);
extern int gui_bar_search_position (const char *position);
extern struct t_config_option *gui_bar_get_option_filling (struct t_gui_bar *bar);
extern enum t_gui_bar_filling gui_bar_get_filling (struct t_gui_bar *bar);
extern int gui_bar_get_item_index (struct t_gui_bar *bar,
const char *item_name);
extern int gui_bar_check_conditions_for_window (struct t_gui_bar *bar,
+2
View File
@@ -103,6 +103,8 @@ enum t_gui_color_enum
#define GUI_COLOR_BAR_DELIM_STR "D"
#define GUI_COLOR_BAR_BG_CHAR 'B'
#define GUI_COLOR_BAR_BG_STR "B"
#define GUI_COLOR_BAR_START_INPUT_CHAR '_'
#define GUI_COLOR_BAR_START_INPUT_STR "_"
#define GUI_COLOR_BAR_MOVE_CURSOR_CHAR '#'
#define GUI_COLOR_BAR_MOVE_CURSOR_STR "#"
+4 -17
View File
@@ -38,8 +38,7 @@
char *
irc_bar_item_buffer_title (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
struct t_gui_buffer *buffer;
const char *title;
@@ -48,8 +47,6 @@ irc_bar_item_buffer_title (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = weechat_current_window ();
@@ -76,8 +73,7 @@ irc_bar_item_buffer_title (void *data, struct t_gui_bar_item *item,
char *
irc_bar_item_buffer_name (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[512], buf_name[256], modes[128], away[128];
const char *name;
@@ -89,8 +85,6 @@ irc_bar_item_buffer_name (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = weechat_current_window ();
@@ -196,8 +190,7 @@ irc_bar_item_buffer_name (void *data, struct t_gui_bar_item *item,
char *
irc_bar_item_lag (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
char buf[32];
struct t_gui_buffer *buffer;
@@ -206,9 +199,6 @@ irc_bar_item_lag (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) window;
(void) max_width;
(void) max_height;
buffer = weechat_window_get_pointer (window, "buffer");
@@ -236,8 +226,7 @@ irc_bar_item_lag (void *data, struct t_gui_bar_item *item,
char *
irc_bar_item_input_prompt (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width, int max_height)
struct t_gui_window *window)
{
struct t_gui_buffer *buffer;
struct t_irc_server *server;
@@ -247,8 +236,6 @@ irc_bar_item_input_prompt (void *data, struct t_gui_bar_item *item,
/* make C compiler happy */
(void) data;
(void) item;
(void) max_width;
(void) max_height;
if (!window)
window = weechat_current_window ();
+1 -3
View File
@@ -1230,9 +1230,7 @@ script_api_bar_item_new (struct t_weechat_plugin *weechat_plugin,
const char *name,
char *(*build_callback)(void *data,
struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width,
int max_height),
struct t_gui_window *window),
const char *function_build)
{
struct t_script_callback *new_script_callback;
+1 -3
View File
@@ -489,9 +489,7 @@ struct t_weechat_plugin
const char *name,
char *(*build_callback)(void *data,
struct t_gui_bar_item *item,
struct t_gui_window *window,
int max_width,
int max_height),
struct t_gui_window *window),
void *build_callback_data);
void (*bar_item_update) (const char *name);
void (*bar_item_remove) (struct t_gui_bar_item *item);