]> git.decadent.org.uk Git - ap-utils.git/blob - lib/scr.c
72807a575af3123af3dbc2b4e426f75540d1d718
[ap-utils.git] / lib / scr.c
1 /*
2  *      scr.c from Access Point SNMP Utils for Linux
3  *      program output & screen related functions
4  *
5  * Copyright (c) 2002 Roman Festchook <roma at polesye dot net>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License Version 2 from
9  * June 1991 as published by the Free Software Foundation.
10  *
11  * This program is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  *
20  */
21 #include <stdlib.h>
22 #include <unistd.h>
23 #include <string.h>
24 #include "ap-utils.h"
25 #include "ap-curses.h"
26 #include <menu.h>
27
28 extern WINDOW *main_sub, *win_for_help, *main_win;
29
30 void
31 scroll_rows(struct MacListStat *first, int begin, int end, int row,
32             int stat)
33 {
34     int i = 1;
35     struct MacListStat *curr = first;
36     char message[100];
37
38     clear_main(3);
39
40     while (i++ < begin)
41         curr = curr->next;
42     i = 0;
43     while (end-- > begin) {
44         if (stat==1) {
45             sprintf(message,
46                     "%4u       %02X%02X%02X%02X%02X%02X        %3u%5u   %3u",
47                     begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
48                     curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
49                     curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
50                     curr->quality, curr->idle, curr->rssi);
51         } else if(stat==2) {
52             sprintf(message,
53                     "%2u %02X%02X%02X%02X%02X%02X %3d%% %4ddBm  %3u    %2u   %s",
54                     begin + i,
55                     curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
56                     curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
57                     curr->addr[4] & 0xFF, curr->addr[5] & 0xFF,
58                     curr->quality, curr->rssi, curr->Status, curr->Port, inet_ntoa(curr->IP));
59         } else {
60             sprintf(message, "%4u       %02X%02X%02X%02X%02X%02X",
61                     begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF,
62                     curr->addr[2] & 0xFF, curr->addr[3] & 0xFF,
63                     curr->addr[4] & 0xFF, curr->addr[5] & 0xFF);
64         }
65         mvwaddstr(main_sub, row + i, 0, message);
66         i++;
67         curr = curr->next;
68     }
69     wrefresh(main_sub);
70
71 }
72
73 void print_help(char *mess)
74 {
75     unsigned short int j, len = (COLS - strlen(mess))/2;
76
77     werase(win_for_help);
78
79     for (j = 0; j <= len; j++) {
80         mvwaddch(win_for_help, 0, j, ' ');
81         mvwaddch(win_for_help, 0, COLS - j - 1, ' ');
82     }
83     
84     mvwaddstr(win_for_help, 0, len, mess);
85     wrefresh(win_for_help);
86 }
87
88 void print_helperr(char *mess)
89 {
90     wattrset(win_for_help, COLOR_PAIR(4) | A_BOLD);
91     print_help(mess);
92     wattrset(win_for_help, COLOR_PAIR(1));
93 }
94
95 void print_title(char *mess)
96 {
97     int i;
98     /* íÁÌÀÀ ÒÁÍËÕ */
99     for (i = 0; i < COLS - MCOLS - 1; i++)
100         mvwaddch(main_win, 0, i, ACS_BSBS);
101     wattrset(main_win, A_BOLD);
102     mvwaddstr(main_win, 0, COLS - MCOLS - strlen(mess) - 2, mess);
103     wattrset(main_win, A_NORMAL);
104     wrefresh(main_win);
105 }
106
107 void print_viewtype(int v)
108 {
109     char message[7];
110
111     sprintf(message, "View: %c", v + '0');
112     wattrset(main_win, A_BOLD);
113     mvwaddstr(main_win, 0, 1, message);
114     wattrset(main_win, A_NORMAL);
115     wrefresh(main_win);
116 }
117
118 void print_menusel(int y, int x, char *mess1, char *mess2)
119 {
120     mvwaddstr(main_sub, y, x, mess1);
121     wattrset(main_sub, A_BOLD);
122     waddstr(main_sub, mess2);
123     wattrset(main_sub, A_NORMAL);
124     wrefresh(main_sub);
125 }
126
127 void print_bottom(char *mess)
128 {
129     int i;
130     char message[100];
131     extern short ap_type;
132     extern char *ap_types[];
133
134     sprintf(message, _("Current AP: %s Type: %s"), mess, ap_types[ap_type]);
135     /* íÁÌÀÀ ÒÁÍËÕ */
136     for (i = 0; i < COLS - MCOLS - 1; i++)
137         mvwaddch(main_win, LINES - 3, i, ACS_BSBS);
138     wattrset(main_win, A_BOLD);
139     mvwaddstr(main_win, LINES - 3, COLS - MCOLS - strlen(message) - 1,
140               message);
141     wattrset(main_win, A_NORMAL);
142     wrefresh(main_win);
143 }
144
145
146 void clear_main(int m)
147 {
148     clear_main_new(m, LINES - 4);
149 }
150
151 void clear_main_new(int m, int n)
152 {
153     int i, j;
154     wmove(main_sub, m, 0);
155     for (i = m; i < n; i++)
156         for (j = 0; j < COLS - MCOLS - 1; j++)
157             waddch(main_sub, ' ');
158     wrefresh(main_sub);
159 }