874 |
gui_draw_buffer_nick (t_gui_buffer *buffer, int erase) |
gui_draw_buffer_nick (t_gui_buffer *buffer, int erase) |
875 |
{ |
{ |
876 |
t_gui_window *ptr_win; |
t_gui_window *ptr_win; |
877 |
int i, x, y, column, max_length; |
int i, j, x, y, column, max_length, nicks_displayed; |
878 |
char format[32], format_empty[32]; |
char format[32], format_empty[32]; |
879 |
t_irc_nick *ptr_nick; |
t_irc_nick *ptr_nick; |
880 |
|
|
957 |
x = 0; |
x = 0; |
958 |
y = (cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM) ? 1 : 0; |
y = (cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM) ? 1 : 0; |
959 |
column = 0; |
column = 0; |
960 |
for (ptr_nick = CHANNEL(buffer)->nicks; ptr_nick; |
|
961 |
ptr_nick = ptr_nick->next_nick) |
if ((cfg_look_nicklist_position == CFG_LOOK_NICKLIST_TOP) || |
962 |
|
(cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM)) |
963 |
|
nicks_displayed = (ptr_win->win_width / (max_length + 2)) * (ptr_win->win_height - 1); |
964 |
|
else |
965 |
|
nicks_displayed = ptr_win->win_height; |
966 |
|
|
967 |
|
ptr_nick = CHANNEL(buffer)->nicks; |
968 |
|
for (i = 0; i < ptr_win->win_nick_start; i++) |
969 |
{ |
{ |
970 |
switch (cfg_look_nicklist_position) |
if (!ptr_nick) |
971 |
{ |
break; |
972 |
case CFG_LOOK_NICKLIST_LEFT: |
ptr_nick = ptr_nick->next_nick; |
973 |
x = 0; |
} |
974 |
break; |
if (ptr_nick) |
975 |
case CFG_LOOK_NICKLIST_RIGHT: |
{ |
976 |
x = 1; |
for (i = 0; i < nicks_displayed; i++) |
|
break; |
|
|
case CFG_LOOK_NICKLIST_TOP: |
|
|
case CFG_LOOK_NICKLIST_BOTTOM: |
|
|
x = column; |
|
|
break; |
|
|
} |
|
|
if (ptr_nick->is_chanowner) |
|
|
{ |
|
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANOWNER); |
|
|
mvwprintw (ptr_win->win_nick, y, x, "~"); |
|
|
x++; |
|
|
} |
|
|
else if (ptr_nick->is_chanadmin) |
|
|
{ |
|
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANADMIN); |
|
|
mvwprintw (ptr_win->win_nick, y, x, "&"); |
|
|
x++; |
|
|
} |
|
|
else if (ptr_nick->is_op) |
|
|
{ |
|
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_OP); |
|
|
mvwprintw (ptr_win->win_nick, y, x, "@"); |
|
|
x++; |
|
|
} |
|
|
else if (ptr_nick->is_halfop) |
|
|
{ |
|
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_HALFOP); |
|
|
mvwprintw (ptr_win->win_nick, y, x, "%%"); |
|
|
x++; |
|
|
} |
|
|
else if (ptr_nick->has_voice) |
|
|
{ |
|
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_VOICE); |
|
|
mvwprintw (ptr_win->win_nick, y, x, "+"); |
|
|
x++; |
|
|
} |
|
|
else |
|
|
{ |
|
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK); |
|
|
mvwprintw (ptr_win->win_nick, y, x, " "); |
|
|
x++; |
|
|
} |
|
|
gui_window_set_color (ptr_win->win_nick, |
|
|
(ptr_nick->is_away) ? |
|
|
COLOR_WIN_NICK_AWAY : COLOR_WIN_NICK); |
|
|
mvwprintw (ptr_win->win_nick, y, x, format, ptr_nick->nick); |
|
|
y++; |
|
|
if ((cfg_look_nicklist_position == CFG_LOOK_NICKLIST_TOP) || |
|
|
(cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM)) |
|
977 |
{ |
{ |
978 |
if (y - ((cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM) ? 1 : 0) >= ptr_win->win_nick_height - 1) |
switch (cfg_look_nicklist_position) |
979 |
|
{ |
980 |
|
case CFG_LOOK_NICKLIST_LEFT: |
981 |
|
x = 0; |
982 |
|
break; |
983 |
|
case CFG_LOOK_NICKLIST_RIGHT: |
984 |
|
x = 1; |
985 |
|
break; |
986 |
|
case CFG_LOOK_NICKLIST_TOP: |
987 |
|
case CFG_LOOK_NICKLIST_BOTTOM: |
988 |
|
x = column; |
989 |
|
break; |
990 |
|
} |
991 |
|
if ((i == 0) && (ptr_win->win_nick_start > 0)) |
992 |
|
{ |
993 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_MORE); |
994 |
|
j = (max_length + 1) >= 4 ? 4 : max_length + 1; |
995 |
|
for (x = 1; x <= j; x++) |
996 |
|
mvwprintw (ptr_win->win_nick, y, x, "+"); |
997 |
|
} |
998 |
|
else |
999 |
|
{ |
1000 |
|
if (ptr_nick->is_chanowner) |
1001 |
|
{ |
1002 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANOWNER); |
1003 |
|
mvwprintw (ptr_win->win_nick, y, x, "~"); |
1004 |
|
x++; |
1005 |
|
} |
1006 |
|
else if (ptr_nick->is_chanadmin) |
1007 |
|
{ |
1008 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANADMIN); |
1009 |
|
mvwprintw (ptr_win->win_nick, y, x, "&"); |
1010 |
|
x++; |
1011 |
|
} |
1012 |
|
else if (ptr_nick->is_op) |
1013 |
|
{ |
1014 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_OP); |
1015 |
|
mvwprintw (ptr_win->win_nick, y, x, "@"); |
1016 |
|
x++; |
1017 |
|
} |
1018 |
|
else if (ptr_nick->is_halfop) |
1019 |
|
{ |
1020 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_HALFOP); |
1021 |
|
mvwprintw (ptr_win->win_nick, y, x, "%%"); |
1022 |
|
x++; |
1023 |
|
} |
1024 |
|
else if (ptr_nick->has_voice) |
1025 |
|
{ |
1026 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_VOICE); |
1027 |
|
mvwprintw (ptr_win->win_nick, y, x, "+"); |
1028 |
|
x++; |
1029 |
|
} |
1030 |
|
else |
1031 |
|
{ |
1032 |
|
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK); |
1033 |
|
mvwprintw (ptr_win->win_nick, y, x, " "); |
1034 |
|
x++; |
1035 |
|
} |
1036 |
|
gui_window_set_color (ptr_win->win_nick, |
1037 |
|
(ptr_nick->is_away) ? |
1038 |
|
COLOR_WIN_NICK_AWAY : COLOR_WIN_NICK); |
1039 |
|
mvwprintw (ptr_win->win_nick, y, x, format, ptr_nick->nick); |
1040 |
|
|
1041 |
|
ptr_nick = ptr_nick->next_nick; |
1042 |
|
|
1043 |
|
if (!ptr_nick) |
1044 |
|
break; |
1045 |
|
} |
1046 |
|
y++; |
1047 |
|
if ((cfg_look_nicklist_position == CFG_LOOK_NICKLIST_TOP) || |
1048 |
|
(cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM)) |
1049 |
{ |
{ |
1050 |
column += max_length + 2; |
if (y - ((cfg_look_nicklist_position == CFG_LOOK_NICKLIST_BOTTOM) ? 1 : 0) >= ptr_win->win_nick_height - 1) |
1051 |
y = (cfg_look_nicklist_position == CFG_LOOK_NICKLIST_TOP) ? |
{ |
1052 |
0 : 1; |
column += max_length + 2; |
1053 |
|
y = (cfg_look_nicklist_position == CFG_LOOK_NICKLIST_TOP) ? |
1054 |
|
0 : 1; |
1055 |
|
} |
1056 |
} |
} |
1057 |
} |
} |
1058 |
} |
} |
1597 |
gui_current_window->buffer->num_displayed--; |
gui_current_window->buffer->num_displayed--; |
1598 |
|
|
1599 |
window->buffer = buffer; |
window->buffer = buffer; |
1600 |
|
window->win_nick_start = 0; |
1601 |
gui_calculate_pos_size (window); |
gui_calculate_pos_size (window); |
1602 |
|
|
1603 |
/* destroy Curses windows */ |
/* destroy Curses windows */ |
1847 |
} |
} |
1848 |
|
|
1849 |
/* |
/* |
1850 |
|
* gui_nick_move_beginning: go to beginning of nicklist |
1851 |
|
*/ |
1852 |
|
|
1853 |
|
void |
1854 |
|
gui_nick_move_beginning (t_gui_window *window) |
1855 |
|
{ |
1856 |
|
if (!gui_ok) |
1857 |
|
return; |
1858 |
|
|
1859 |
|
if (gui_buffer_has_nicklist (window->buffer)) |
1860 |
|
{ |
1861 |
|
if (window->win_nick_start > 0) |
1862 |
|
{ |
1863 |
|
window->win_nick_start = 0; |
1864 |
|
gui_draw_buffer_nick (window->buffer, 1); |
1865 |
|
} |
1866 |
|
} |
1867 |
|
} |
1868 |
|
|
1869 |
|
/* |
1870 |
|
* gui_nick_move_end: go to the end of nicklist |
1871 |
|
*/ |
1872 |
|
|
1873 |
|
void |
1874 |
|
gui_nick_move_end (t_gui_window *window) |
1875 |
|
{ |
1876 |
|
int new_start; |
1877 |
|
|
1878 |
|
if (!gui_ok) |
1879 |
|
return; |
1880 |
|
|
1881 |
|
if (gui_buffer_has_nicklist (window->buffer)) |
1882 |
|
{ |
1883 |
|
new_start = CHANNEL(window->buffer)->nicks_count - window->win_nick_height; |
1884 |
|
if (new_start < 0) |
1885 |
|
new_start = 0; |
1886 |
|
else if (new_start >= 1) |
1887 |
|
new_start++; |
1888 |
|
|
1889 |
|
if (new_start != window->win_nick_start) |
1890 |
|
{ |
1891 |
|
window->win_nick_start = new_start; |
1892 |
|
gui_draw_buffer_nick (window->buffer, 1); |
1893 |
|
} |
1894 |
|
} |
1895 |
|
} |
1896 |
|
|
1897 |
|
/* |
1898 |
|
* gui_nick_move_page_up: scroll one page up in nicklist |
1899 |
|
*/ |
1900 |
|
|
1901 |
|
void |
1902 |
|
gui_nick_move_page_up (t_gui_window *window) |
1903 |
|
{ |
1904 |
|
if (!gui_ok) |
1905 |
|
return; |
1906 |
|
|
1907 |
|
if (gui_buffer_has_nicklist (window->buffer)) |
1908 |
|
{ |
1909 |
|
if (window->win_nick_start > 0) |
1910 |
|
{ |
1911 |
|
window->win_nick_start -= (window->win_nick_height - 1); |
1912 |
|
if (window->win_nick_start <= 1) |
1913 |
|
window->win_nick_start = 0; |
1914 |
|
gui_draw_buffer_nick (window->buffer, 1); |
1915 |
|
} |
1916 |
|
} |
1917 |
|
} |
1918 |
|
|
1919 |
|
/* |
1920 |
|
* gui_nick_move_page_down: scroll one page down in nicklist |
1921 |
|
*/ |
1922 |
|
|
1923 |
|
void |
1924 |
|
gui_nick_move_page_down (t_gui_window *window) |
1925 |
|
{ |
1926 |
|
if (!gui_ok) |
1927 |
|
return; |
1928 |
|
|
1929 |
|
if (gui_buffer_has_nicklist (window->buffer)) |
1930 |
|
{ |
1931 |
|
if (window->win_nick_start + window->win_nick_height < CHANNEL(window->buffer)->nicks_count) |
1932 |
|
{ |
1933 |
|
if (window->win_nick_start == 0) |
1934 |
|
window->win_nick_start += window->win_nick_height; |
1935 |
|
else |
1936 |
|
window->win_nick_start += (window->win_nick_height - 1); |
1937 |
|
gui_draw_buffer_nick (window->buffer, 1); |
1938 |
|
} |
1939 |
|
} |
1940 |
|
} |
1941 |
|
|
1942 |
|
/* |
1943 |
* gui_window_init_subviews: init subviews for a WeeChat window |
* gui_window_init_subviews: init subviews for a WeeChat window |
1944 |
*/ |
*/ |
1945 |
|
|
2326 |
cfg_col_nick_halfop & A_CHARTEXT, cfg_col_nick_bg); |
cfg_col_nick_halfop & A_CHARTEXT, cfg_col_nick_bg); |
2327 |
init_pair (COLOR_WIN_NICK_VOICE, |
init_pair (COLOR_WIN_NICK_VOICE, |
2328 |
cfg_col_nick_voice & A_CHARTEXT, cfg_col_nick_bg); |
cfg_col_nick_voice & A_CHARTEXT, cfg_col_nick_bg); |
2329 |
|
init_pair (COLOR_WIN_NICK_MORE, |
2330 |
|
cfg_col_nick_more & A_CHARTEXT, cfg_col_nick_bg); |
2331 |
init_pair (COLOR_WIN_NICK_SEP, |
init_pair (COLOR_WIN_NICK_SEP, |
2332 |
cfg_col_nick_sep & A_CHARTEXT, cfg_col_nick_bg); |
cfg_col_nick_sep & A_CHARTEXT, cfg_col_nick_bg); |
2333 |
init_pair (COLOR_WIN_NICK_SELF, |
init_pair (COLOR_WIN_NICK_SELF, |
2387 |
color_attr[COLOR_WIN_NICK_OP - 1] = (cfg_col_nick_op >= 0) ? cfg_col_nick_op & A_BOLD : 0; |
color_attr[COLOR_WIN_NICK_OP - 1] = (cfg_col_nick_op >= 0) ? cfg_col_nick_op & A_BOLD : 0; |
2388 |
color_attr[COLOR_WIN_NICK_HALFOP - 1] = (cfg_col_nick_halfop >= 0) ? cfg_col_nick_halfop & A_BOLD : 0; |
color_attr[COLOR_WIN_NICK_HALFOP - 1] = (cfg_col_nick_halfop >= 0) ? cfg_col_nick_halfop & A_BOLD : 0; |
2389 |
color_attr[COLOR_WIN_NICK_VOICE - 1] = (cfg_col_nick_voice >= 0) ? cfg_col_nick_voice & A_BOLD : 0; |
color_attr[COLOR_WIN_NICK_VOICE - 1] = (cfg_col_nick_voice >= 0) ? cfg_col_nick_voice & A_BOLD : 0; |
2390 |
|
color_attr[COLOR_WIN_NICK_MORE - 1] = (cfg_col_nick_more >= 0) ? cfg_col_nick_more & A_BOLD : 0; |
2391 |
color_attr[COLOR_WIN_NICK_SEP - 1] = 0; |
color_attr[COLOR_WIN_NICK_SEP - 1] = 0; |
2392 |
color_attr[COLOR_WIN_NICK_SELF - 1] = (cfg_col_nick_self >= 0) ? cfg_col_nick_self & A_BOLD : 0; |
color_attr[COLOR_WIN_NICK_SELF - 1] = (cfg_col_nick_self >= 0) ? cfg_col_nick_self & A_BOLD : 0; |
2393 |
color_attr[COLOR_WIN_NICK_PRIVATE - 1] = (cfg_col_nick_private >= 0) ? cfg_col_nick_private & A_BOLD : 0; |
color_attr[COLOR_WIN_NICK_PRIVATE - 1] = (cfg_col_nick_private >= 0) ? cfg_col_nick_private & A_BOLD : 0; |