/[weechat]/weechat/src/gui/curses/gui-display.c
ViewVC logotype

Diff of /weechat/src/gui/curses/gui-display.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.91 by flashcode, Sat Apr 23 18:13:25 2005 UTC revision 1.92 by flashcode, Sat Apr 30 19:21:28 2005 UTC
# Line 874  void Line 874  void
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            
# Line 957  gui_draw_buffer_nick (t_gui_buffer *buff Line 957  gui_draw_buffer_nick (t_gui_buffer *buff
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                  }                  }
# Line 1566  gui_switch_to_buffer (t_gui_window *wind Line 1597  gui_switch_to_buffer (t_gui_window *wind
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 */
# Line 1815  gui_move_page_down (t_gui_window *window Line 1847  gui_move_page_down (t_gui_window *window
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    
# Line 2201  gui_init_colors () Line 2326  gui_init_colors ()
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,
# Line 2260  gui_init_colors () Line 2387  gui_init_colors ()
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;

Legend:
Removed from v.1.91  
changed lines
  Added in v.1.92

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26