Nathan Whitehorn 4c8945a06b Update dialog to version 20100428. This changes the license under which
dialog is distributed from GPLv2 to LGPLv2 and introduces a number of new
features and a new and better libdialog API. The existing libdialog will
be kept temporarily as libodialog for compatibility purposes until sade,
sysinstall and tzsetup have been either updated or replaced.

__FreeBSD_version is now 900030.

Discussed on:	-current
Approved by:	core
Obtained from:	http://invisible-island.net/dialog
2011-01-12 14:55:02 +00:00

80 lines
1.8 KiB
C

/*
* gauge.c
*
* progress indicator for libdialog
*
*
* Copyright (c) 1995, Marc van Kempen
*
* All rights reserved.
*
* This software may be used, modified, copied, distributed, and
* sold, in both source and binary form provided that the above
* copyright and these terms are retained, verbatim, as the first
* lines of this file. Under no circumstances is the author
* responsible for the proper functioning of this software, nor does
* the author assume any responsibility for damages incurred with
* its use.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <stdlib.h>
#include <string.h>
#include "dialog.h"
void
dialog_gauge(char *title, char *prompt, int y, int x,
int height, int width, int perc)
/*
* Desc: display a progress bar, progress indicated by <perc>
*/
{
WINDOW *gw;
int glen, i;
char percs[5];
gw = newwin(height, width, y, x);
if (!gw) {
fprintf(stderr, "dialog_gauge: Error creating window (%d, %d, %d, %d)",
height, width, y, x);
exit(-1);
}
draw_box(gw, 0, 0, height, width, dialog_attr, border_attr);
draw_shadow(stdscr, y, x, height, width);
wattrset(gw, title_attr);
if (title) {
wmove(gw, 0, (width - strlen(title))/2 - 1);
waddstr(gw, "[ ");
waddstr(gw, title);
waddstr(gw, " ]");
}
wattrset(gw, dialog_attr);
if (prompt) {
wmove(gw, 1, (width - strlen(prompt))/2 - 1);
waddstr(gw, prompt);
}
draw_box(gw, 2, 2, 3, width-4, dialog_attr, border_attr);
glen = (int) ((float) perc/100 * (width-6));
wattrset(gw, dialog_attr);
sprintf(percs, "%3d%%", perc);
wmove(gw, 5, width/2 - 2);
waddstr(gw, percs);
wattrset(gw, A_BOLD);
wmove(gw, 3, 3);
for (i=0; i<glen; i++) waddch(gw, ' ');
wrefresh(gw);
delwin(gw);
return;
} /* dialog_gauge() */