summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-06-17 17:01:45 (UTC)
committer kergoth <kergoth>2003-06-17 17:01:45 (UTC)
commit384b7f1a42f9f2f101dc8fe11c3625055d96f672 (patch) (unidiff)
treee4c0c83db7e60715be715f06fa221c45e616b00e
parent154d6deef15b9f7f83ea7a25f2079d9fca034910 (diff)
downloadopie-384b7f1a42f9f2f101dc8fe11c3625055d96f672.zip
opie-384b7f1a42f9f2f101dc8fe11c3625055d96f672.tar.gz
opie-384b7f1a42f9f2f101dc8fe11c3625055d96f672.tar.bz2
Update lxdialog version, and *build* lxdialog. no binary in cvs.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/lxdialog/Makefile34
-rwxr-xr-xscripts/lxdialog/lxdialogbin37159 -> 0 bytes
-rw-r--r--scripts/lxdialog/util.c2
3 files changed, 21 insertions, 15 deletions
diff --git a/scripts/lxdialog/Makefile b/scripts/lxdialog/Makefile
index 75b7bac..b34bbc3 100644
--- a/scripts/lxdialog/Makefile
+++ b/scripts/lxdialog/Makefile
@@ -1,44 +1,50 @@
1HOST_CFLAGS := -DLOCALE 1HOST_EXTRACFLAGS := -DLOCALE
2HOST_LDFLAGS := -lncurses 2HOST_LOADLIBES := -lncurses
3HOSTCC = gcc
3 4
4ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) 5ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
5 HOST_CFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>" 6 HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
6else 7else
7ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h)) 8ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
8 HOST_CFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>" 9 HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
9else 10else
10ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) 11ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
11 HOST_CFLAGS += -DCURSES_LOC="<ncurses.h>" 12 HOST_EXTRACFLAGS += -DCURSES_LOC="<ncurses.h>"
12else 13else
13 HOST_CFLAGS += -DCURSES_LOC="<curses.h>" 14 HOST_EXTRACFLAGS += -DCURSES_LOC="<curses.h>"
14endif 15endif
15endif 16endif
16endif 17endif
17 18
18host-progs := lxdialog 19 host-progs:= lxdialog
20 always := $(host-progs)
19 21
20lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \ 22lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \
21 util.o lxdialog.o msgbox.o 23 util.o lxdialog.o msgbox.o
22 24
23EXTRA_TARGETS := lxdialog 25first_rule: ncurses lxdialog
24
25first_rule: ncurses
26
27include $(TOPDIR)/Rules.make
28 26
29.PHONY: ncurses 27.PHONY: ncurses
30
31ncurses: 28ncurses:
32 @echo "main() {}" > lxtemp.c 29 @echo "main() {}" > lxtemp.c
33 @if $(HOSTCC) $(HOST_CFLAGS) lxtemp.c $(HOST_LDFLAGS); then \ 30 @if $(HOSTCC) lxtemp.c $(HOST_LOADLIBES); then \
34 rm -f lxtemp.c a.out; \ 31 rm -f lxtemp.c a.out; \
35 else \ 32 else \
36 rm -f lxtemp.c; \ 33 rm -f lxtemp.c; \
37 echo -e "\007" ;\ 34 echo -e "\007" ;\
38 echo ">> Unable to find the Ncurses libraries." ;\ 35 echo ">> Unable to find the Ncurses libraries." ;\
39 echo ">>" ;\ 36 echo ">>" ;\
40 echo ">> You must have Ncurses installed in order" ;\ 37 echo ">> You must have Ncurses installed in order" ;\
41 echo ">> to use 'make menuconfig'" ;\ 38 echo ">> to use 'make menuconfig'" ;\
42 echo ;\ 39 echo ;\
43 exit 1 ;\ 40 exit 1 ;\
44 fi 41 fi
42
43clean:
44 rm -f $(lxdialog-objs) lxdialog
45
46%.o: %.c
47 $(HOSTCC) $(HOST_EXTRACFLAGS) -fPIC -c $^ -o $@
48
49lxdialog: $(lxdialog-objs)
50 $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES) $^ -o $@
diff --git a/scripts/lxdialog/lxdialog b/scripts/lxdialog/lxdialog
deleted file mode 100755
index f0dca91..0000000
--- a/scripts/lxdialog/lxdialog
+++ b/dev/null
Binary files differ
diff --git a/scripts/lxdialog/util.c b/scripts/lxdialog/util.c
index b3a7af9..e7bce9b 100644
--- a/scripts/lxdialog/util.c
+++ b/scripts/lxdialog/util.c
@@ -159,201 +159,201 @@ init_dialog (void)
159 159
160/* 160/*
161 * Setup for color display 161 * Setup for color display
162 */ 162 */
163void 163void
164color_setup (void) 164color_setup (void)
165{ 165{
166 int i; 166 int i;
167 167
168 if (has_colors ()) {/* Terminal supports color? */ 168 if (has_colors ()) {/* Terminal supports color? */
169 start_color (); 169 start_color ();
170 170
171 /* Initialize color pairs */ 171 /* Initialize color pairs */
172 for (i = 0; i < ATTRIBUTE_COUNT; i++) 172 for (i = 0; i < ATTRIBUTE_COUNT; i++)
173 init_pair (i + 1, color_table[i][0], color_table[i][1]); 173 init_pair (i + 1, color_table[i][0], color_table[i][1]);
174 174
175 /* Setup color attributes */ 175 /* Setup color attributes */
176 for (i = 0; i < ATTRIBUTE_COUNT; i++) 176 for (i = 0; i < ATTRIBUTE_COUNT; i++)
177 attributes[i] = C_ATTR (color_table[i][2], i + 1); 177 attributes[i] = C_ATTR (color_table[i][2], i + 1);
178 } 178 }
179} 179}
180 180
181/* 181/*
182 * End using dialog functions. 182 * End using dialog functions.
183 */ 183 */
184void 184void
185end_dialog (void) 185end_dialog (void)
186{ 186{
187 endwin (); 187 endwin ();
188} 188}
189 189
190 190
191/* 191/*
192 * Print a string of text in a window, automatically wrap around to the 192 * Print a string of text in a window, automatically wrap around to the
193 * next line if the string is too long to fit on one line. Newline 193 * next line if the string is too long to fit on one line. Newline
194 * characters '\n' are replaced by spaces. We start on a new line 194 * characters '\n' are replaced by spaces. We start on a new line
195 * if there is no room for at least 4 nonblanks following a double-space. 195 * if there is no room for at least 4 nonblanks following a double-space.
196 */ 196 */
197void 197void
198print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x) 198print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
199{ 199{
200 int newl, cur_x, cur_y; 200 int newl, cur_x, cur_y;
201 int i, prompt_len, room, wlen; 201 int i, prompt_len, room, wlen;
202 char tempstr[MAX_LEN + 1], *word, *sp, *sp2; 202 char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
203 203
204 strcpy (tempstr, prompt); 204 strcpy (tempstr, prompt);
205 205
206 prompt_len = strlen(tempstr); 206 prompt_len = strlen(tempstr);
207 207
208 /* 208 /*
209 * Remove newlines 209 * Remove newlines
210 */ 210 */
211 for(i=0; i<prompt_len; i++) { 211 for(i=0; i<prompt_len; i++) {
212 if(tempstr[i] == '\n') tempstr[i] = ' '; 212 if(tempstr[i] == '\n') tempstr[i] = ' ';
213 } 213 }
214 214
215 if (prompt_len <= width - x * 2) {/* If prompt is short */ 215 if (prompt_len <= width - x * 2) {/* If prompt is short */
216 wmove (win, y, (width - prompt_len) / 2); 216 wmove (win, y, (width - prompt_len) / 2);
217 waddstr (win, tempstr); 217 waddstr (win, tempstr);
218 } else { 218 } else {
219 cur_x = x; 219 cur_x = x;
220 cur_y = y; 220 cur_y = y;
221 newl = 1; 221 newl = 1;
222 word = tempstr; 222 word = tempstr;
223 while (word && *word) { 223 while (word && *word) {
224 sp = index(word, ' '); 224 sp = index(word, ' ');
225 if (sp) 225 if (sp)
226 *sp++ = 0; 226 *sp++ = 0;
227 227
228 /* Wrap to next line if either the word does not fit, 228 /* Wrap to next line if either the word does not fit,
229 or it is the first word of a new sentence, and it is 229 or it is the first word of a new sentence, and it is
230 short, and the next word does not fit. */ 230 short, and the next word does not fit. */
231 room = width - cur_x; 231 room = width - cur_x;
232 wlen = strlen(word); 232 wlen = strlen(word);
233 if (wlen > room || 233 if (wlen > room ||
234 (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room 234 (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room
235 && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) { 235 && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) {
236 cur_y++; 236 cur_y++;
237 cur_x = x; 237 cur_x = x;
238 } 238 }
239 wmove (win, cur_y, cur_x); 239 wmove (win, cur_y, cur_x);
240 waddstr (win, word); 240 waddstr (win, word);
241 getyx (win, cur_y, cur_x); 241 getyx (win, cur_y, cur_x);
242 cur_x++; 242 cur_x++;
243 if (sp && *sp == ' ') { 243 if (sp && *sp == ' ') {
244 cur_x++;/* double space */ 244 cur_x++;/* double space */
245 while (*++sp == ' '); 245 while (*++sp == ' ');
246 newl = 1; 246 newl = 1;
247 } else 247 } else
248 newl = 0; 248 newl = 0;
249 word = sp; 249 word = sp;
250 } 250 }
251 } 251 }
252} 252}
253 253
254/* 254/*
255 * Print a button 255 * Print a button
256 */ 256 */
257void 257void
258print_button (WINDOW * win, const char *label, int y, int x, int selected) 258print_button (WINDOW * win, const char *label, int y, int x, int selected)
259{ 259{
260 int i, temp; 260 int i, temp;
261 261
262 wmove (win, y, x); 262 wmove (win, y, x);
263 wattrset (win, selected ? button_active_attr : button_inactive_attr); 263 wattrset (win, selected ? button_active_attr : button_inactive_attr);
264 waddstr (win, "<"); 264 waddstr (win, "<");
265 temp = strspn (label, " "); 265 temp = strspn (label, " ");
266 label += temp; 266 label += temp;
267 wattrset (win, selected ? button_label_active_attr 267 wattrset (win, selected ? button_label_active_attr
268 : button_label_inactive_attr); 268 : button_label_inactive_attr);
269 for (i = 0; i < temp; i++) 269 for (i = 0; i < temp; i++)
270 waddch (win, ' '); 270 waddch (win, ' ');
271 wattrset (win, selected ? button_key_active_attr 271 wattrset (win, selected ? button_key_active_attr
272 : button_key_inactive_attr); 272 : button_key_inactive_attr);
273 waddch (win, label[0]); 273 waddch (win, label[0]);
274 wattrset (win, selected ? button_label_active_attr 274 wattrset (win, selected ? button_label_active_attr
275 : button_label_inactive_attr); 275 : button_label_inactive_attr);
276 waddstr (win, (char *)label + 1); 276 waddstr (win, (char *)label + 1);
277 wattrset (win, selected ? button_active_attr : button_inactive_attr); 277 wattrset (win, selected ? button_active_attr : button_inactive_attr);
278 waddstr (win, ">"); 278 waddstr (win, ">");
279 wmove (win, y, x + temp + 1); 279 wmove (win, y, x + temp + 1);
280} 280}
281 281
282/* 282/*
283 * Draw a rectangular box with line drawing characters 283 * Draw a rectangular box with line drawing characters
284 */ 284 */
285void 285void
286draw_box (WINDOW * win, int y, int x, int height, int width, 286draw_box (WINDOW * win, int y, int x, int height, int width,
287 chtype box, chtype border) 287 chtype box, chtype border)
288{ 288{
289 int i, j; 289 int i, j;
290 290
291 wattrset (win, 0); 291 wattrset (win, 0);
292 for (i = 0; i < height; i++) { 292 for (i = 0; i < height; i++) {
293 wmove (win, y + i, x); 293 wmove (win, y + i, x);
294 for (j = 0; j < width; j++) 294 for (j = 0; j < width; j++)
295 if (!i && !j) 295 if (!i && !j)
296 waddch (win, border | ACS_ULCORNER); 296 waddch (win, border | ACS_ULCORNER);
297 else if (i == height - 1 && !j) 297 else if (i == height - 1 && !j)
298 waddch (win, border | ACS_LLCORNER); 298 waddch (win, border | ACS_LLCORNER);
299 else if (!i && j == width - 1) 299 else if (!i && j == width - 1)
300 waddch (win, box | ACS_URCORNER); 300 waddch (win, box | ACS_URCORNER);
301 else if (i == height - 1 && j == width - 1) 301 else if (i == height - 1 && j == width - 1)
302 waddch (win, box | ACS_LRCORNER); 302 waddch (win, box | ACS_LRCORNER);
303 else if (!i) 303 else if (!i)
304 waddch (win, border | ACS_HLINE); 304 waddch (win, border | ACS_HLINE);
305 else if (i == height - 1) 305 else if (i == height - 1)
306 waddch (win, box | ACS_HLINE); 306 waddch (win, box | ACS_HLINE);
307 else if (!j) 307 else if (!j)
308 waddch (win, border | ACS_VLINE); 308 waddch (win, border | ACS_VLINE);
309 else if (j == width - 1) 309 else if (j == width - 1)
310 waddch (win, box | ACS_VLINE); 310 waddch (win, box | ACS_VLINE);
311 else 311 else
312 waddch (win, box | ' '); 312 waddch (win, box | ' ');
313 } 313 }
314} 314}
315 315
316/* 316/*
317 * Draw shadows along the right and bottom edge to give a more 3D look 317 * Draw shadows along the right and bottom edge to give a more 3D look
318 * to the boxes 318 * to the boxes
319 */ 319 */
320void 320void
321draw_shadow (WINDOW * win, int y, int x, int height, int width) 321draw_shadow (WINDOW * win, int y, int x, int height, int width)
322{ 322{
323 int i; 323 int i;
324 324
325 if (has_colors ()) {/* Whether terminal supports color? */ 325 if (has_colors ()) {/* Whether terminal supports color? */
326 wattrset (win, shadow_attr); 326 wattrset (win, shadow_attr);
327 wmove (win, y + height, x + 2); 327 wmove (win, y + height, x + 2);
328 for (i = 0; i < width; i++) 328 for (i = 0; i < width; i++)
329 waddch (win, winch (win) & A_CHARTEXT); 329 waddch (win, winch (win) & A_CHARTEXT);
330 for (i = y + 1; i < y + height + 1; i++) { 330 for (i = y + 1; i < y + height + 1; i++) {
331 wmove (win, i, x + width); 331 wmove (win, i, x + width);
332 waddch (win, winch (win) & A_CHARTEXT); 332 waddch (win, winch (win) & A_CHARTEXT);
333 waddch (win, winch (win) & A_CHARTEXT); 333 waddch (win, winch (win) & A_CHARTEXT);
334 } 334 }
335 wnoutrefresh (win); 335 wnoutrefresh (win);
336 } 336 }
337} 337}
338 338
339/* 339/*
340 * Return the position of the first alphabetic character in a string. 340 * Return the position of the first alphabetic character in a string.
341 */ 341 */
342int 342int
343first_alpha(const char *string, const char *exempt) 343first_alpha(const char *string, const char *exempt)
344{ 344{
345 int i, in_paren=0, c; 345 int i, in_paren=0, c;
346 346
347 for (i = 0; i < strlen(string); i++) { 347 for (i = 0; i < strlen(string); i++) {
348 c = tolower(string[i]); 348 c = tolower(string[i]);
349 349
350 if (strchr("<[(", c)) ++in_paren; 350 if (strchr("<[(", c)) ++in_paren;
351 if (strchr(">])", c)) --in_paren; 351 if (strchr(">])", c) && in_paren > 0) --in_paren;
352 352
353 if ((! in_paren) && isalpha(c) && 353 if ((! in_paren) && isalpha(c) &&
354 strchr(exempt, c) == 0) 354 strchr(exempt, c) == 0)
355 return i; 355 return i;
356 } 356 }
357 357
358 return 0; 358 return 0;
359} 359}