|
|
1.1 root 1: /* uedit.c */
2:
3: /* Synchronet for *nix user editor */
4:
5: /* $Id: uifctest.c,v 1.4 2004/07/26 22:06:35 rswindell 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 "uifc.h"
42:
43: /********************/
44: /* Global Variables */
45: /********************/
46: uifcapi_t uifc; /* User Interface (UIFC) Library API */
47: char YesStr[]="Yes";
48: char NoStr[]="No";
49: char *ok[2]={"OK",""};
50:
51: int main(int argc, char** argv) {
52: char** opt;
53: char** mopt;
54: int main_dflt=0;
55: int main_bar=0;
56: char revision[16];
57: char str[256],ctrl_dir[41],*p;
58: char title[256];
59: int i,j;
60: int done;
61: int last;
62: int edtuser=0;
63: char longtitle[1024];
64: /******************/
65: /* Ini file stuff */
66: /******************/
67: char ini_file[MAX_PATH+1];
68: FILE* fp;
69:
70: sscanf("$Revision: 1.4 $", "%*s %s", revision);
71:
72: printf("\nSynchronet UIFC Test Suite Copyright 2004 "
73: "Rob Swindell\n");
74:
75: memset(&uifc,0,sizeof(uifc));
76:
77: uifc.esc_delay=500;
78:
79: for(i=1;i<argc;i++) {
80: if(argv[i][0]=='-')
81: switch(toupper(argv[i][1])) {
82: case 'C':
83: uifc.mode|=UIFC_COLOR;
84: break;
85: case 'L':
86: uifc.scrn_len=atoi(argv[i]+2);
87: break;
88: case 'E':
89: uifc.esc_delay=atoi(argv[i]+2);
90: break;
91: case 'I':
92: /* Set up ex-ascii codes */
93: uifc.mode|=UIFC_IBM;
94: break;
95: default:
96: printf("\nusage: %s [ctrl_dir] [options]"
97: "\n\noptions:\n\n"
98: "-c = force color mode\n"
99: "-e# = set escape delay to #msec\n"
100: "-i = force IBM charset\n"
101: "-l# = set screen lines to #\n"
102: ,argv[0]
103: );
104: exit(0);
105: }
106: if(atoi(argv[i]))
107: edtuser=atoi(argv[i]);
108: }
109:
110: #ifdef __unix__
111: signal(SIGPIPE, SIG_IGN);
112: #endif
113:
114: uifc.size=sizeof(uifc);
115: #ifdef USE_CURSES
116: i=uifcinic(&uifc); /* curses */
117: #else
118: i=uifcini32(&uifc); /* curses */
119: #endif
120: if(i!=0) {
121: printf("uifc library init returned error %d\n",i);
122: exit(1);
123: }
124:
125: opt=(char **)malloc(sizeof(char *)*(MAX_OPTS+1));
126: for(i=0;i<(MAX_OPTS+1);i++)
127: opt[i]=(char *)malloc(MAX_OPLN);
128:
129: mopt=(char **)malloc(sizeof(char *)*MAX_OPTS);
130: for(i=0;i<MAX_OPTS;i++)
131: mopt[i]=(char *)malloc(MAX_OPLN);
132:
133: sprintf(title,"Synchronet Test Suite");
134: if(uifc.scrn(title)) {
135: printf(" USCRN (len=%d) failed!\n",uifc.scrn_len+1);
136: return(1);
137: }
138:
139: strcpy(mopt[0],"Long Title");
140: strcpy(mopt[1],"String Input");
141: mopt[2][0]=0;
142:
143: uifc.helpbuf= "`Test Suite:`\n"
144: "\nToDo: Add Help";
145:
146: while(1) {
147: j=uifc.list(WIN_L2R|WIN_ESC|WIN_ACT|WIN_DYN|WIN_ORG,0,5,70,&main_dflt,&main_bar
148: ,title,mopt);
149:
150: if(j <= -2)
151: continue;
152:
153: if(j==-1) {
154: uifc.bail();
155: return(0);
156: }
157:
158: if(j==0) {
159: /* Long Title */
160: strcpy(longtitle,"This is a long title...");
161: for(p=strchr(longtitle,0);p<longtitle+sizeof(longtitle)-1;p++)
162: *p='.';
163: *p=0;
164: done=0;
165: uifc.list(WIN_ORG|WIN_MID|WIN_ACT,0,0,0,&i,0,longtitle,ok);
166: }
167: if(j==1) {
168: /* String input */
169: strcpy(longtitle,"This is a test if string input... enter/edit this field");
170: uifc.input(WIN_MID,0,0,"Input",longtitle,sizeof(longtitle),K_EDIT);
171: uifc.showbuf(WIN_MID, 0, 0, uifc.scrn_width-4, uifc.scrn_len-4, "Result:", longtitle, NULL, NULL);
172: }
173: }
174: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.