Annotation of sbbs/src/uifc/uifctest.c, revision 1.1.1.1

1.1       root        1: /* uedit.c */
                      2: 
                      3: /* Synchronet for *nix user editor */
                      4: 
                      5: /* $Id: uifctest.c,v 1.7 2005/06/04 01:54:48 deuce Exp $ */
                      6: 
                      7: /****************************************************************************
                      8:  * @format.tab-size 4          (Plain Text/Source Code File Header)                    *
                      9:  * @format.use-tabs true       (see http://www.synchro.net/ptsc_hdr.html)              *
                     10:  *                                                                                                                                                     *
                     11:  * Copyright 2003 Rob Swindell - http://www.synchro.net/copyright.html         *
                     12:  *                                                                                                                                                     *
                     13:  * This program is free software; you can redistribute it and/or                       *
                     14:  * modify it under the terms of the GNU General Public License                         *
                     15:  * as published by the Free Software Foundation; either version 2                      *
                     16:  * of the License, or (at your option) any later version.                                      *
                     17:  * See the GNU General Public License for more details: gpl.txt or                     *
                     18:  * http://www.fsf.org/copyleft/gpl.html                                                                                *
                     19:  *                                                                                                                                                     *
                     20:  * Anonymous FTP access to the most recent released source is available at     *
                     21:  * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net     *
                     22:  *                                                                                                                                                     *
                     23:  * Anonymous CVS access to the development source and modification history     *
                     24:  * is available at cvs.synchro.net:/cvsroot/sbbs, example:                                     *
                     25:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs login                       *
                     26:  *     (just hit return, no password is necessary)                                                     *
                     27:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src                *
                     28:  *                                                                                                                                                     *
                     29:  * For Synchronet coding style and modification guidelines, see                                *
                     30:  * http://www.synchro.net/source.html                                                                          *
                     31:  *                                                                                                                                                     *
                     32:  * You are encouraged to submit any modifications (preferably in Unix diff     *
                     33:  * format) via e-mail to [email protected]                                                                      *
                     34:  *                                                                                                                                                     *
                     35:  * Note: If this box doesn't appear square, then you need to fix your tabs.    *
                     36:  ****************************************************************************/
                     37: 
                     38: #include <signal.h>
                     39: #include <stdio.h>
                     40: /* #include "curs_fix.h" */
                     41: #include "filepick.h"
                     42: #include "uifc.h"
                     43: 
                     44: /********************/
                     45: /* Global Variables */
                     46: /********************/
                     47: uifcapi_t uifc; /* User Interface (UIFC) Library API */
                     48: char YesStr[]="Yes";
                     49: char NoStr[]="No";
                     50: char *ok[2]={"OK",""};
                     51: 
                     52: int main(int argc, char** argv)  {
                     53:        char**  opt;
                     54:        char**  mopt;
                     55:        int             main_dflt=0;
                     56:        int             main_bar=0;
                     57:        char    revision[16];
                     58:        char    str[256],ctrl_dir[41],*p;
                     59:        char    title[256];
                     60:        int             i,j;
                     61:        int             done;
                     62:        int             last;
                     63:        int             edtuser=0;
                     64:        char    longtitle[1024];
                     65:        struct file_pick fper;
                     66:        /******************/
                     67:        /* Ini file stuff */
                     68:        /******************/
                     69:        char    ini_file[MAX_PATH+1];
                     70:        FILE*                           fp;
                     71: 
                     72:        sscanf("$Revision: 1.7 $", "%*s %s", revision);
                     73: 
                     74:     printf("\nSynchronet UIFC Test Suite Copyright 2004 "
                     75:         "Rob Swindell\n");
                     76: 
                     77:     memset(&uifc,0,sizeof(uifc));
                     78: 
                     79:        uifc.esc_delay=500;
                     80: 
                     81:        for(i=1;i<argc;i++) {
                     82:         if(argv[i][0]=='-')
                     83:             switch(toupper(argv[i][1])) {
                     84:                 case 'C':
                     85:                                uifc.mode|=UIFC_COLOR;
                     86:                     break;
                     87:                 case 'L':
                     88:                     uifc.scrn_len=atoi(argv[i]+2);
                     89:                     break;
                     90:                 case 'E':
                     91:                     uifc.esc_delay=atoi(argv[i]+2);
                     92:                     break;
                     93:                                case 'I':
                     94:                                        /* Set up ex-ascii codes */
                     95:                                        uifc.mode|=UIFC_IBM;
                     96:                                        break;
                     97:                 default:
                     98:                     printf("\nusage: %s [ctrl_dir] [options]"
                     99:                         "\n\noptions:\n\n"
                    100:                         "-c  =  force color mode\n"
                    101:                         "-e# =  set escape delay to #msec\n"
                    102:                                                "-i  =  force IBM charset\n"
                    103:                         "-l# =  set screen lines to #\n"
                    104:                                                ,argv[0]
                    105:                         );
                    106:                                exit(0);
                    107:                }
                    108:                if(atoi(argv[i]))
                    109:                        edtuser=atoi(argv[i]);
                    110:     }
                    111: 
                    112: #ifdef __unix__
                    113:        signal(SIGPIPE, SIG_IGN);
                    114: #endif
                    115: 
                    116:        uifc.size=sizeof(uifc);
                    117: #ifdef USE_CURSES
                    118:        i=uifcinic(&uifc);  /* curses */
                    119: #else
                    120:        i=uifcini32(&uifc);  /* curses */
                    121: #endif
                    122:        if(i!=0) {
                    123:                printf("uifc library init returned error %d\n",i);
                    124:                exit(1);
                    125:        }
                    126: 
                    127:        opt=(char **)malloc(sizeof(char *)*(MAX_OPTS+1));
                    128:        for(i=0;i<(MAX_OPTS+1);i++)
                    129:                opt[i]=(char *)malloc(MAX_OPLN);
                    130: 
                    131:        mopt=(char **)malloc(sizeof(char *)*MAX_OPTS);
                    132:        for(i=0;i<MAX_OPTS;i++)
                    133:                mopt[i]=(char *)malloc(MAX_OPLN);
                    134: 
                    135:        sprintf(title,"Synchronet Test Suite");
                    136:        if(uifc.scrn(title)) {
                    137:                printf(" USCRN (len=%d) failed!\n",uifc.scrn_len+1);
                    138:                return(1);
                    139:        }
                    140: 
                    141:        strcpy(mopt[0],"Long Title");
                    142:        strcpy(mopt[1],"String Input");
                    143:        strcpy(mopt[2],"File picker");
                    144:        mopt[3][0]=0;
                    145: 
                    146:        uifc.helpbuf=   "`Test Suite:`\n"
                    147:                                        "\nToDo: Add Help";
                    148: 
                    149:        while(1) {
                    150:                j=uifc.list(WIN_L2R|WIN_ESC|WIN_ACT|WIN_DYN|WIN_ORG,0,5,70,&main_dflt,&main_bar
                    151:                        ,title,mopt);
                    152: 
                    153:                if(j <= -2)
                    154:                        continue;
                    155: 
                    156:                if(j==-1) {
                    157:                        uifc.bail();
                    158:                        return(0);
                    159:                }
                    160: 
                    161:                if(j==0) {
                    162:                        /* Long Title */
                    163:                        strcpy(longtitle,"This is a long title...");
                    164:                        for(p=strchr(longtitle,0);p<longtitle+sizeof(longtitle)-1;p++)
                    165:                                *p='.';
                    166:                        *p=0;
                    167:                        done=0;
                    168:                        uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,longtitle,ok);
                    169:                }
                    170:                if(j==1) {
                    171:                        /* String input */
                    172:                        strcpy(longtitle,"This is a test if string input... enter/edit this field");
                    173:                        uifc.input(WIN_MID|WIN_NOBRDR,0,0,"Input",longtitle,sizeof(longtitle),K_EDIT);
                    174:                        uifc.showbuf(WIN_MID, 0, 0, uifc.scrn_width-4, uifc.scrn_len-4, "Result:", longtitle, NULL, NULL);
                    175:                }
                    176:                if(j==2) {
                    177:                        /* File picker */
                    178:                        if(filepick(&uifc, "Bob", &fper, NULL, NULL, UIFC_FP_ALLOWENTRY)!=-1) {
                    179:                                if(fper.files==1) {
                    180:                                        sprintf(str,"File selected: %-.200s",fper.selected[0]);
                    181:                                        uifc.msg(str);
                    182:                                }
                    183:                                filepick_free(&fper);
                    184:                        }
                    185:                }
                    186:        }
                    187: }

unix.superglobalmegacorp.com

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