Annotation of researchv9/X11/src/X.V11R1/clients/xedit/xedit.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char rcs_id[] = "$Header: xedit.c,v 1.10 87/09/11 08:22:18 toddb Exp $";
        !             3: #endif
        !             4: 
        !             5: /*
        !             6:  *                       COPYRIGHT 1987
        !             7:  *                DIGITAL EQUIPMENT CORPORATION
        !             8:  *                    MAYNARD, MASSACHUSETTS
        !             9:  *                     ALL RIGHTS RESERVED.
        !            10:  *
        !            11:  * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
        !            12:  * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
        !            13:  * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
        !            14:  * ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
        !            15:  *
        !            16:  * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS,
        !            17:  * APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT
        !            18:  * SET FORTH ABOVE.
        !            19:  *
        !            20:  *
        !            21:  * Permission to use, copy, modify, and distribute this software and its
        !            22:  * documentation for any purpose and without fee is hereby granted, provided
        !            23:  * that the above copyright notice appear in all copies and that both that
        !            24:  * copyright notice and this permission notice appear in supporting documentation,
        !            25:  * and that the name of Digital Equipment Corporation not be used in advertising
        !            26:  * or publicity pertaining to distribution of the software without specific, 
        !            27:  * written prior permission.
        !            28:  */
        !            29: 
        !            30: #include "xedit.h"
        !            31: 
        !            32: int Editable;
        !            33: int saved;
        !            34: int backedup;
        !            35: int lastChangeNumber;
        !            36: char *displayname;
        !            37: char *filename;
        !            38: char *loadedfile;
        !            39: char *savedfile;
        !            40: char *searchstring;
        !            41: char *replacestring;
        !            42: 
        !            43: Window master;
        !            44: Window Row1;
        !            45: Window Row2;
        !            46: Window fileBox;
        !            47: Window replaceBox;
        !            48: Window searchBox;
        !            49: Window textwindow;
        !            50: Window messwindow;
        !            51: Window undoBox;
        !            52: Window labelwindow;
        !            53: 
        !            54: Window quitbutton;
        !            55: Window loadbutton;
        !            56: Window savebutton;
        !            57: Window editbutton;
        !            58: Window filenamewindow;
        !            59: 
        !            60: Window searchstringwindow;
        !            61: Window replacestringwindow;
        !            62: Window qbutton;
        !            63: Window ubutton;
        !            64: Window umbutton;
        !            65: Window searchbutton;
        !            66: Window lsearchbutton;
        !            67: Window replacebutton;
        !            68: Window replaceallbutton;
        !            69: Window jumpbutton;
        !            70: 
        !            71: Display *CurDpy;
        !            72: 
        !            73: XtTextSource *source, *asource, *dsource, *psource, *messsource;
        !            74: XtTextSink *sink;
        !            75: 
        !            76: extern DoQ();
        !            77: 
        !            78: static Arg Row1Desc[]={
        !            79:         { XtNwindow,    (caddr_t) &quitbutton },
        !            80:         { XtNwindow,    (caddr_t) &savebutton },
        !            81:         { XtNwindow,    (caddr_t) &editbutton },
        !            82: /*        { XtNwindow,    (caddr_t) &qbutton },   */
        !            83:         { XtNwindow,    (caddr_t) &loadbutton },
        !            84:         { XtNwindow,   (caddr_t) &filenamewindow },
        !            85:         { XtNwindow,    (caddr_t) &ubutton },
        !            86:         { XtNwindow,    (caddr_t) &umbutton },
        !            87:         { XtNwindow,    (caddr_t) &jumpbutton },
        !            88: /*        { XtNwindow,    (caddr_t) &linebutton }, */
        !            89:        { NULL, NULL }
        !            90: };
        !            91: 
        !            92: static Arg Row2Desc[]={
        !            93:         { XtNwindow,    (caddr_t) &lsearchbutton },
        !            94:         { XtNwindow,    (caddr_t) &searchbutton },
        !            95:         { XtNwindow,    (caddr_t) &searchstringwindow },
        !            96:         { XtNwindow,    (caddr_t) &replacebutton },
        !            97:         { XtNwindow,    (caddr_t) &replaceallbutton },
        !            98:         { XtNwindow,    (caddr_t) &replacestringwindow },
        !            99:        { NULL, NULL }
        !           100: };
        !           101: 
        !           102: 
        !           103: Arg *fixup(args)
        !           104:   Arg *args;
        !           105: {
        !           106:   Arg *arglist = args;
        !           107:         while(arglist->name){
        !           108:             arglist->value = *((caddr_t*)arglist->value);
        !           109:            arglist++;
        !           110:         }
        !           111:     return args;
        !           112: }
        !           113: 
        !           114: makeButtonsAndBoxes()
        !           115: {
        !           116:   int boxHeight;
        !           117:   static Arg TextArgDesc[] = {
        !           118:        { XtNtextOptions , (caddr_t)(scrollVertical | wordBreak) }, 
        !           119:        { XtNname,    (caddr_t)"EditWindow" },
        !           120:   };
        !           121:   static Arg MessArgs[] = {
        !           122:        { XtNtextOptions, (caddr_t)(scrollVertical | wordBreak) }, 
        !           123:        { XtNname,    (caddr_t)"MessageWindow" },
        !           124:   };
        !           125:   static Arg labelArgs[] = {
        !           126:        { XtNjustify,    (caddr_t)XtjustifyCenter },
        !           127:        { XtNlabel,     (caddr_t)"no file yet" },
        !           128:   };
        !           129:     Row1 =  QXtButtonBoxCreate(CurDpy, master, 0,0);
        !           130:         quitbutton = makeCommandButton(Row1, "Quit", DoQuit);
        !           131:         savebutton = makeCommandButton(Row1, "Save", DoSave);
        !           132:         editbutton = makeCommandButton(Row1, "Edit", DoEdit);
        !           133: /*        qbutton = makeCommandButton(Row1, "q", DoQ);   */
        !           134:         loadbutton = makeCommandButton(Row1, "Load", DoLoad);
        !           135:         filenamewindow = makeStringBox(Row1, filename,110);
        !           136:         ubutton = makeCommandButton(Row1, "Undo", DoUndo);
        !           137:         umbutton = makeCommandButton(Row1, "More", DoUndoMore);
        !           138:         jumpbutton = makeCommandButton(Row1, "Jump", DoJump);
        !           139: /*        linebutton = makeCommandButton(Row1, "Line?", DoLine);  */
        !           140:     Row2 =  QXtButtonBoxCreate(CurDpy, master, 0,0 );
        !           141:         lsearchbutton = makeCommandButton(Row2, "<< ", DoSearchLeft);
        !           142:         searchbutton = makeCommandButton(Row2,"Search >>",DoSearchRight); 
        !           143:         searchstringwindow = makeStringBox(Row2, searchstring, 120);
        !           144:         replacebutton= makeCommandButton(Row2, "Replace", DoReplaceOne);
        !           145:         replaceallbutton = makeCommandButton(Row2, "All", DoReplaceAll);
        !           146:         replacestringwindow = makeStringBox(Row2, replacestring, 120);
        !           147:     QXtButtonBoxAddButton(CurDpy, Row1, fixup(Row1Desc), XtNumber(Row1Desc)); 
        !           148:     QXtButtonBoxAddButton(CurDpy, Row2, fixup(Row2Desc), XtNumber(Row2Desc)); 
        !           149:     {
        !           150:        static Arg getargs[] = {
        !           151:            { XtNheight, 0 }
        !           152:         };
        !           153:         QXtButtonBoxGetValues(CurDpy, Row1, getargs, XtNumber(getargs));
        !           154:        boxHeight = (int)(getargs[0].value);
        !           155:     }
        !           156: 
        !           157:     messsource = (XtTextSource*)TCreateEDiskSource("/dev/null", XttextEdit);; 
        !           158:     messwindow = QXtTextSourceCreate(CurDpy, master, MessArgs,
        !           159:                                    XtNumber(MessArgs), messsource);
        !           160:     labelwindow=  QXtLabelCreate(CurDpy,master, labelArgs, XtNumber(labelArgs)); 
        !           161:     textwindow = QXtTextSourceCreate(CurDpy, master, TextArgDesc, 
        !           162:                                    XtNumber(TextArgDesc), source);
        !           163:     QXtVPanedRefigureMode(CurDpy, master, FALSE);
        !           164:     QXtVPanedWindowAddPane(CurDpy, master, Row1, 0, boxHeight, 100, FALSE);
        !           165:     QXtVPanedWindowAddPane(CurDpy, master, Row2, 1, boxHeight,100, FALSE);
        !           166:     QXtVPanedWindowAddPane(CurDpy, master, messwindow, 2, 30, 5000,TRUE);
        !           167:     QXtVPanedWindowAddPane(CurDpy, master, labelwindow, 3, 5, 50,FALSE); 
        !           168:     QXtVPanedWindowAddPane(CurDpy, master, textwindow, 4, 50, 5000,TRUE);
        !           169:     QXtVPanedRefigureMode(CurDpy, master, TRUE);
        !           170: }
        !           171: 
        !           172: static XrmResourceDataBase  rdb;
        !           173: static int mHeight, mWidth, mX, mY;
        !           174: static char *geometry;
        !           175: int false = 0;
        !           176: char *backupNamePrefix;
        !           177: char *backupNameSuffix;
        !           178: int editInPlace;
        !           179: int enableBackups;
        !           180: 
        !           181: static Resource resourcelist[] = {
        !           182:    {XtNwidth, XtCWidth, XrmRInt, sizeof(int),
        !           183:          (caddr_t)&mWidth, (caddr_t)NULL},
        !           184:    {XtNheight, XtCHeight, XrmRInt, sizeof(int),
        !           185:          (caddr_t)&mHeight, (caddr_t)NULL},
        !           186:    {XtNx, XtCX, XrmRInt, sizeof(int),
        !           187:          (caddr_t)&mX, (caddr_t)NULL},
        !           188:    {XtNy, XtCY, XrmRInt, sizeof(int),
        !           189:          (caddr_t)&mY, (caddr_t)NULL},
        !           190:    {"geometry", "Geometry", XrmRString, sizeof(char *),
        !           191:          (caddr_t)&geometry, NULL},
        !           192:    {"EditInPlace", "editInPlace", XrmRBoolean, sizeof(int),
        !           193:          (XtArgVal)&editInPlace, (caddr_t)&false},
        !           194:    {"EnableBackups", "enableBackups", XrmRBoolean, sizeof(int),
        !           195:          (XtArgVal)&enableBackups, (caddr_t)&false},
        !           196:    {"BackupNamePrefix", "backupNamePrefix", XrmRString, sizeof(char *),
        !           197:          (XtArgVal)&backupNamePrefix, NULL},
        !           198:    {"BackupNameSuffix", "backupNameSuffix", XrmRString, sizeof(char *),
        !           199:          (XtArgVal)&backupNameSuffix, NULL},
        !           200: };
        !           201: 
        !           202: 
        !           203: initResources(argc, argv)
        !           204:   int argc;
        !           205:   char **argv;
        !           206: {
        !           207:   FILE *rfile;
        !           208:   char str[1024], *displayName;
        !           209:   int numargs;
        !           210:   XrmNameList name;
        !           211:   XrmClassList class;
        !           212:   static XrmOptionDescRec opTable[] = {
        !           213:        {"=", "geometry", XrmoptionStickyArg,  (caddr_t)NULL },
        !           214:   };
        !           215:   Arg args[5];
        !           216:     numargs = 0;
        !           217:    XtInitialize();
        !           218:     sprintf(str, "%s/.Xdefaults", getenv("HOME"));
        !           219:     if (rfile = fopen(str, "r")){
        !           220:         XrmGetDataBase(rfile, &rdb);
        !           221:         XrmSetCurrentDataBase(rdb);
        !           222:         fclose(rfile);
        !           223:     } else {
        !           224:     /*  use system defaults here? */
        !           225:     }
        !           226:     XrmParseCommand(opTable, XtNumber(opTable), "xedit", &argc, argv);
        !           227:     if(argv[1] && rindex(argv[1], ':')){
        !           228:                displayName = argv[1];
        !           229:            argc--; argv++;
        !           230:     } else
        !           231:               displayName = "";
        !           232:     if ((CurDpy = XOpenDisplay(displayName)) == 0) {
        !           233:         printf("xedit: Error While trying to open display!\n");
        !           234:         exit(1);
        !           235:     }
        !           236:      QXtGetResources(CurDpy, resourcelist, XtNumber(resourcelist),
        !           237:                0,0, QRootWindow(CurDpy, DefaultScreen(CurDpy)),
        !           238:                         "xedit","Xedit", &name, &class);
        !           239:     XParseGeometry(geometry, &mX, &mY, &mWidth, &mHeight);
        !           240:     if((!mHeight) || (!mWidth)){
        !           241: #ifdef X11
        !           242:         mWidth = 500;
        !           243:         mHeight = 500;
        !           244: #endif X11
        !           245: #ifdef X10
        !           246:         OpaqueFrame frame;
        !           247:         int cwidth, cheight;
        !           248:         WindowInfo  info;
        !           249:         frame.bdrwidth = 1;
        !           250:         frame.border = BlackPixmap;
        !           251:         frame.background = WhitePixmap;
        !           252:         master = XCreate(argv[0], argv[0], geometry, "=504x470-0-300",
        !           253:             &frame, 400, 250);
        !           254:         XQueryWindow(master, &info);
        !           255:         XDestroyWindow(master);
        !           256:         mX = info.x;             
        !           257:         mY = info.y;
        !           258:         mWidth = info.width;
        !           259:         mHeight = info.height;
        !           260: #endif X10
        !           261:     }
        !           262:     MakeArg(XtNname, (caddr_t) "xedit");
        !           263:     MakeArg(XtNheight, (caddr_t) mHeight);
        !           264:     MakeArg(XtNwidth, (caddr_t) mWidth);
        !           265:     MakeArg(XtNx, (caddr_t) mX);
        !           266:     MakeArg(XtNy, (caddr_t) mY);
        !           267:     master = QXtVPanedWindowCreate(CurDpy, QRootWindow(CurDpy, 
        !           268:                                        DefaultScreen(CurDpy)),
        !           269:                                                             args, numargs); 
        !           270: #ifdef X11
        !           271:     XtMakeMaster(CurDpy, master);
        !           272: #endif X11
        !           273:     QXStoreName(CurDpy, master, "xedit");
        !           274: #ifdef X11
        !           275:     XDefineCursor(CurDpy, master, XtGetCursor(CurDpy, XC_left_ptr));  
        !           276: #endif X11
        !           277: #ifdef X10
        !           278:     XDefineCursor(master, XtGetCursor("left_ptr")); 
        !           279: #endif X10
        !           280:     if(argv[1]) strcpy(filename, argv[1]);
        !           281: }
        !           282: 
        !           283: main(argc, argv)
        !           284:   int argc;
        !           285:   char **argv;
        !           286: {
        !           287:   XEvent event;
        !           288:     backedup = 0;
        !           289:     saved = 0;
        !           290:     filename = malloc(1000);
        !           291:     searchstring = malloc(1000);
        !           292:     replacestring = malloc(1000);
        !           293:     initResources(argc, argv);
        !           294:     dsource = (XtTextSource*)TCreateEDiskSource("/dev/null", XttextRead); 
        !           295:     asource = TCreateApAsSource(); 
        !           296:     source = CreatePSource(dsource, asource);  
        !           297:     makeButtonsAndBoxes();
        !           298:     QXMapWindow(CurDpy, master); 
        !           299:     if (*filename) DoLoad();
        !           300:     while (1) {
        !           301:        QXNextEvent(CurDpy, &event);
        !           302:        XtDispatchEvent(&event);
        !           303:     }
        !           304: }
        !           305: 

unix.superglobalmegacorp.com

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