Annotation of coherent/g/usr/bin/vsh/winlib/dialbox.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *      Create a dialog box and edit the fields
        !             3:  *
        !             4:  *      Copyright (c) 1991-93 Udo Munk
        !             5:  */
        !             6: 
        !             7: #ifdef AIX
        !             8: #define NLS
        !             9: #endif
        !            10: 
        !            11: #include <curses.h>
        !            12: #include <string.h>
        !            13: #include "winfun.h"     
        !            14: 
        !            15: extern WINDOW *open_window();
        !            16: extern int close_window();
        !            17: extern int tab_active;
        !            18: 
        !            19: dialog_box(bp)
        !            20: struct dial *bp;
        !            21: {
        !            22:        register WINDOW *w;
        !            23:        register int i, j;
        !            24:        int bw, bh, ret;
        !            25:        int active = 0;
        !            26:        int eoj = 1;
        !            27: 
        !            28:        bh = bp->d_anz * 2 + 3;         /* compute high of box */
        !            29:        bw = strlen(bp->d_text) + 2;    /* compute width of box */
        !            30:        for (i = 0; i < bp->d_anz; i++) {
        !            31:                j = bp->d_ptr[i]->e_len + strlen(bp->d_ptr[i]->e_text) + 3;
        !            32:                if (j > bw)
        !            33:                        bw = j;
        !            34:        }
        !            35: 
        !            36:        if ((w = open_window(bh, bw, (LINES-bh)/2, (COLS-bw)/2)) == (WINDOW *) 0)
        !            37:                nomem();
        !            38: 
        !            39:        wattron(w, A_REVERSE);          /* output inverted box */
        !            40:        for (i = 0; i < bh; i++)
        !            41:                for (j = 0; j < bw; j++)
        !            42:                        mvwaddch(w, i, j, ' ');
        !            43:        mvwaddstr(w, 1, 1, bp->d_text);   /* output title */
        !            44:        for (i = 0; i < bp->d_anz; i++) { /* output label and field of element */
        !            45:                mvwaddstr(w, i*2+3, 1, bp->d_ptr[i]->e_text);
        !            46:                waddch(w, ' ');
        !            47:                wattroff(w, A_REVERSE);
        !            48:                for (j = 0; j < bp->d_ptr[i]->e_len; j++)
        !            49:                        waddch(w, ' ');
        !            50:                mvwaddstr(w, i*2+3, strlen(bp->d_ptr[i]->e_text)+2, bp->d_ptr[i]->e_data);
        !            51:                wattron(w, A_REVERSE);
        !            52:        }
        !            53:        wattroff(w, A_REVERSE);
        !            54:        wrefresh(w);
        !            55: 
        !            56:        tab_active = 1; /* activate TAB key to switch between elements */
        !            57:        while (eoj) {   /* edit the elements */
        !            58:                ret = edit_field(w, active*2+3, strlen(bp->d_ptr[active]->e_text)+2, bp->d_ptr[active]->e_data, bp->d_ptr[active]->e_len, 1, NULL);
        !            59:                switch (ret) {
        !            60:                case WIN_OK:
        !            61:                case WIN_ABORT:
        !            62:                        eoj = 0;
        !            63:                        break;
        !            64:                case WIN_PREVFIE:
        !            65:                        if (--active < 0)
        !            66:                                active = bp->d_anz - 1;
        !            67:                        break;
        !            68:                case WIN_NEXTFIE:
        !            69:                        if (++active > (bp->d_anz - 1))
        !            70:                                active = 0;
        !            71:                        break;
        !            72:                }
        !            73:        }
        !            74:        close_window(w);
        !            75:        tab_active = 0;
        !            76:        return(ret);
        !            77: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.