Annotation of 43BSDReno/contrib/isode-beta/others/quipu/uips/xd/Xd.c, revision 1.1

1.1     ! root        1: /* $Header: /f/osi/others/quipu/uips/xd/RCS/Xd.c,v 7.0 90/06/12 13:10:46 mrose Exp $ */
        !             2: #ifndef lint
        !             3:        static char *rcsid = "$Id: Xd.c,v 7.0 90/06/12 13:10:46 mrose Exp $";
        !             4: #endif
        !             5: /*
        !             6:  $Log: Xd.c,v $
        !             7:  * Revision 7.0  90/06/12  13:10:46  mrose
        !             8:  * *** empty log message ***
        !             9:  * 
        !            10:  * Revision 1.5  90/04/26  10:22:32  emsrssn
        !            11:  * Installation fixed
        !            12:  * 
        !            13:  * 
        !            14:  * Revision 1.4  90/04/25  17:28:02  emsrssn
        !            15:  * Lint tidy up
        !            16:  * 
        !            17:  * 
        !            18:  * Revision 1.3  90/04/19  13:54:00  emsrssn
        !            19:  * keyboard accelerator now activates button highlight.
        !            20:  * 
        !            21:  * search types available is dependent on current position
        !            22:  * to prevent unreasonable searches.
        !            23:  * 
        !            24:  * the help popup changes automatically depending on the 
        !            25:  * position of the cursor
        !            26:  * 
        !            27:  * buttons remain a fixed size when the application is
        !            28:  * resized
        !            29:  * 
        !            30:  * command line options are now handled properly
        !            31:  * 
        !            32:  * logging added
        !            33:  * 
        !            34:  * "reads" are now sorted to show mail address at top etc.
        !            35:  * 
        !            36:  * 
        !            37:  * Revision 1.2  90/03/09  15:57:25  emsrssn
        !            38:  * First public distribution
        !            39:  * 
        !            40:  * 
        !            41:  * Revision 1.1  90/03/08  13:18:43  emsrssn
        !            42:  * Initial revision
        !            43:  * 
        !            44:  * 
        !            45: */
        !            46: 
        !            47: #include <stdio.h>
        !            48: #include "sequence.h"
        !            49: #include "dirtitle.h"
        !            50: 
        !            51: #include <X11/Xatom.h>
        !            52: #include <X11/Intrinsic.h>
        !            53: #include <X11/StringDefs.h>
        !            54: 
        !            55: #include <X11/Xaw/AsciiText.h>
        !            56: #include <X11/Xaw/Box.h>
        !            57: #include <X11/Xaw/Clock.h>
        !            58: #include <X11/Xaw/Command.h>
        !            59: #include <X11/Xaw/Dialog.h>
        !            60: #include <X11/Xaw/Form.h>
        !            61: #include <X11/Xaw/Label.h>
        !            62: #include <X11/Xaw/List.h>
        !            63: #include <X11/Xaw/Logo.h>
        !            64: #include <X11/Xaw/MenuButton.h>
        !            65: #include <X11/Xaw/Scrollbar.h>
        !            66: #include <X11/Xaw/SimpleMenu.h>
        !            67: #include <X11/Xaw/Sme.h>
        !            68: #include <X11/Xaw/SmeBSB.h>
        !            69: #include <X11/Xaw/SmeLine.h>
        !            70: #include <X11/Xaw/StripChart.h>
        !            71: #include <X11/Xaw/Paned.h>
        !            72: #include <X11/Xaw/Text.h>
        !            73: #include <X11/Xaw/Toggle.h>
        !            74: #include <X11/Xaw/Viewport.h>
        !            75: 
        !            76: #include <X11/Xaw/Cardinals.h>
        !            77: #include <X11/cursorfont.h>
        !            78: 
        !            79: #define ASIZELIMIT 50   /* used for result list size and directory limits */
        !            80: 
        !            81: #define MAXLOOKBACKLENGTH 10
        !            82: #define MAXLENGTH 255
        !            83: #define MAXRESULTLISTLENGTH ASIZELIMIT
        !            84: #define NOHISTORY "You've not been anywhere yet"
        !            85: 
        !            86: extern char base_path[];
        !            87: extern char friendly_base_path[];
        !            88: extern char goto_path[];
        !            89: extern char mvalue[];
        !            90: extern int filt_num;
        !            91: extern unsigned int typeindx;
        !            92: extern char *filtvalue[];
        !            93: extern char *filttype[];
        !            94: extern char dua_help_dir[];
        !            95: extern int *av_typeindx;
        !            96: extern D_seq showseq, dnseq;
        !            97: extern int entry_number;
        !            98: 
        !            99: int element_number = 0;
        !           100: int asizelimit = ASIZELIMIT;
        !           101: 
        !           102: void add_to_lookback(), xprint(), CreatePopupHelp(), Change_Help();
        !           103: 
        !           104: static void Call_Change_Help();
        !           105: static void Quit(), create_genform(), create_inputform();
        !           106: static void create_viewlist(), create_commandform(), create_outputform();
        !           107: static void PopupList(), PopupTypelist(), Quit_Popup();
        !           108: static void PopupHelp(), PopdownHelp(), Change_Type(), Change_Search_Area();
        !           109: static void Search(), List(), widen_search();
        !           110: 
        !           111: static Boolean lookback_open = False; /* is there a look back popup? */
        !           112: static Boolean help_popped_up= False; /* is the help window up? */
        !           113: 
        !           114: String result_list[MAXRESULTLISTLENGTH];
        !           115: String lookback_list[MAXLOOKBACKLENGTH];
        !           116: Widget toplevel;
        !           117: XtAppContext app_con;
        !           118: 
        !           119: static XtActionsRec buttonActionsTable[] = {
        !           120:   {"Call_Change_Help", (XtActionProc) Call_Change_Help},
        !           121: };
        !           122: 
        !           123: 
        !           124: 
        !           125: 
        !           126: 
        !           127: void
        !           128: init_widgets ()
        !           129: {
        !           130:   Arg args[1];
        !           131:   Widget outer;
        !           132:   int count;
        !           133: 
        !           134:   outer = XtCreateManagedWidget("outer", panedWidgetClass, toplevel,
        !           135:                                   args, 0);
        !           136: 
        !           137:   XtAppAddActions(app_con, buttonActionsTable, XtNumber(buttonActionsTable));
        !           138: 
        !           139:   create_genform(outer);
        !           140:   create_inputform(outer);
        !           141:   create_outputform(outer);
        !           142:   create_commandform(outer);
        !           143:   create_viewlist(outer);
        !           144: 
        !           145:   for(count=0; count < MAXRESULTLISTLENGTH; count++) {
        !           146:     result_list[count] = XtMalloc(MAXLENGTH);
        !           147:   }
        !           148: 
        !           149:   for(count=0; count < MAXLOOKBACKLENGTH; count++) {
        !           150:     lookback_list[count] = XtMalloc(MAXLENGTH);
        !           151:   }
        !           152:   /* add text to stop widget assuming daft size */
        !           153:   (void) strcpy(lookback_list[0], NOHISTORY );  
        !           154:     
        !           155: }
        !           156: 
        !           157: free_memory()
        !           158: {
        !           159:   int count;
        !           160: 
        !           161:   for(count=0; count < MAXRESULTLISTLENGTH; count++) {
        !           162:     XtFree(result_list[count]);
        !           163:   }
        !           164: 
        !           165:   for(count=0; count < MAXLOOKBACKLENGTH; count++) {
        !           166:     XtFree(lookback_list[count]);
        !           167:   }
        !           168: }
        !           169: 
        !           170: 
        !           171: void
        !           172: Loop()
        !           173: {
        !           174:   Arg args[5];
        !           175:   Pixmap title_pix;
        !           176:   String title_name = "outer.genform.title";
        !           177:   Widget title_widg = XtNameToWidget(toplevel,title_name);
        !           178: 
        !           179:   XtRealizeWidget(toplevel);
        !           180:   XFlush(XtDisplay(toplevel));    /* this ensures that all requests are sent */
        !           181:                                   /* without this line, linking with cc means */
        !           182:                                  /* that the requests are not all sent */
        !           183: 
        !           184:   title_pix =  XCreateBitmapFromData(XtDisplay(title_widg),
        !           185:                  XtWindow(title_widg), stef_bits, stef_width,
        !           186:                  stef_height);
        !           187:   XtSetArg(args[0], XtNbitmap, title_pix);
        !           188:   XtSetValues(title_widg, args, 1);
        !           189: 
        !           190:   XtAppMainLoop(app_con);
        !           191: }
        !           192: 
        !           193: 
        !           194: /*ARGSUSED*/
        !           195: static void
        !           196: Call_Change_Help(w, event, params, num_params)
        !           197: Widget w;
        !           198: XEvent *event;
        !           199: String *params;
        !           200: int num_params;
        !           201: {
        !           202:   Change_Help(params[0]);
        !           203: }
        !           204: 
        !           205: 
        !           206: static void
        !           207: create_viewlist(parent)
        !           208: Widget parent;
        !           209: {
        !           210:   Widget view_list, list_area;
        !           211:   Arg args[10];
        !           212: 
        !           213:   view_list = XtCreateManagedWidget("view_list", viewportWidgetClass, parent,
        !           214:                                   args, 0);
        !           215: 
        !           216:   XtSetArg(args[0], XtNlist, result_list);
        !           217:   XtSetArg(args[1], XtNdefaultColumns, (int) 1);
        !           218:   XtSetArg(args[2], XtNverticalList, True );
        !           219:   list_area = XtCreateManagedWidget("list_area", listWidgetClass,
        !           220:                                          view_list, args, 3);
        !           221:   XtAddCallback(list_area, XtNcallback, Change_Search_Area, (XtPointer) 0 );
        !           222: 
        !           223: }
        !           224: 
        !           225: 
        !           226: 
        !           227: static void
        !           228: create_outputform(parent)
        !           229: Widget parent;
        !           230: {
        !           231:   Arg args[10];
        !           232:   static XawTextSelectType sarray[] = {
        !           233:     XawselectLine,
        !           234:     XawselectPosition,
        !           235:     XawselectAll,
        !           236:     XawselectNull
        !           237:   };
        !           238: 
        !           239:   XtSetArg(args[0], XtNselectTypes, sarray);
        !           240:   (void) XtCreateManagedWidget("result_area", asciiTextWidgetClass,
        !           241:                                 parent, args, 1);
        !           242: 
        !           243: }
        !           244: 
        !           245: 
        !           246: 
        !           247: static void
        !           248: create_commandform(parent)
        !           249: Widget parent;
        !           250: {
        !           251:   Arg args[1];      /* used to pass zero args...to be consistent for lint */
        !           252:   Widget form, widen_but;
        !           253:   Widget search_but, list_but, lookback_but;
        !           254: 
        !           255: 
        !           256:   form = XtCreateManagedWidget("commandform", formWidgetClass, parent,
        !           257:                                args, 0 );
        !           258: 
        !           259:   search_but = XtCreateManagedWidget("search_but", commandWidgetClass,
        !           260:                                form, args, 0 );
        !           261:   XtAddCallback(search_but, XtNcallback, Search, (XtPointer)0 );
        !           262: 
        !           263:  
        !           264:   list_but = XtCreateManagedWidget("list_but", commandWidgetClass,
        !           265:                                form, args, 0 );
        !           266:   XtAddCallback(list_but,  XtNcallback, List, (XtPointer)0 );
        !           267: 
        !           268: 
        !           269:   lookback_but = XtCreateManagedWidget("lookback_but", commandWidgetClass,
        !           270:                                form, args, 0);
        !           271:   XtAddCallback(lookback_but, XtNcallback, PopupList, (XtPointer)0 );
        !           272: 
        !           273: 
        !           274:   widen_but = XtCreateManagedWidget("widen_but", commandWidgetClass, form,
        !           275:                                args, 0 );
        !           276:   XtAddCallback(widen_but, XtNcallback, widen_search, (XtPointer)0 );
        !           277: }
        !           278: 
        !           279: 
        !           280: 
        !           281:   
        !           282: void
        !           283: Searchpress()
        !           284: {
        !           285:   XEvent search_event;
        !           286:   Widget search_but = XtNameToWidget(toplevel, "outer.commandform.search_but");
        !           287: 
        !           288:   search_event.type = ButtonPress;
        !           289:   search_event.xbutton.button = Button1;
        !           290:   search_event.xany.display = XtDisplay(search_but);
        !           291:   search_event.xany.window = XtWindow(search_but);
        !           292: 
        !           293:   XSendEvent(XtDisplay(search_but), XtWindow(search_but), True, 
        !           294:             ButtonPressMask | ButtonReleaseMask, &search_event);
        !           295: 
        !           296:   search_event.type = ButtonRelease;
        !           297:   XSendEvent(XtDisplay(search_but), XtWindow(search_but), True,
        !           298:              ButtonPressMask | ButtonReleaseMask, &search_event);
        !           299: }
        !           300: 
        !           301: 
        !           302: 
        !           303: static Widget
        !           304: create_type_menu(parent)
        !           305: Widget parent;
        !           306: {
        !           307:   Arg args[1];    /* used to pass zero args...to be consistent for lint */
        !           308:   Widget menu, button;
        !           309:   int n;
        !           310: 
        !           311:   menu = XtCreatePopupShell("menu", simpleMenuWidgetClass,
        !           312:                                 parent, args, 0 );
        !           313: 
        !           314:   n = 0;
        !           315:   while (av_typeindx[n] != -1) {
        !           316:     button = XtCreateManagedWidget((String) filttype[av_typeindx[n]],
        !           317:                                    smeBSBObjectClass,
        !           318:                                    menu, args, 0);
        !           319:     XtAddCallback(button, XtNcallback, Change_Type, (XtPointer) av_typeindx[n]);
        !           320:     n++;
        !           321:   }
        !           322:   return menu;
        !           323: }
        !           324: 
        !           325:   
        !           326: 
        !           327: static void
        !           328: create_inputform(parent)
        !           329: Widget parent;
        !           330: {
        !           331:   Widget form, area_form, for_form, type_form;
        !           332:   Widget type_but;
        !           333:   Widget search_for;
        !           334: 
        !           335:   Arg args[10];
        !           336: 
        !           337: 
        !           338:   static XtActionsRec actionsTable[] = {
        !           339:     {"Searchpress", (XtActionProc) Searchpress},
        !           340:   };
        !           341: 
        !           342:   static char defaultTranslations[] =
        !           343:     "<Key>Return: Searchpress() \n\
        !           344:      Ctrl<Key>M:  Searchpress() \n\
        !           345:      Ctrl<Key>O:  Searchpress()";
        !           346: 
        !           347:   XtTranslations trans_table;
        !           348: 
        !           349:   form = XtCreateManagedWidget("inputform", formWidgetClass, parent,
        !           350:                                args, 0 );
        !           351: 
        !           352:   area_form = XtCreateManagedWidget("area_form", formWidgetClass, form,
        !           353:                                args, 0 );
        !           354: 
        !           355:   (void) XtCreateManagedWidget("search_area_label", 
        !           356:                                labelWidgetClass, area_form, args, 0);
        !           357: 
        !           358: 
        !           359:   XtSetArg(args[0], XtNstring, friendly_base_path);
        !           360:   XtSetArg(args[1], XtNwidth, (Dimension) 300);
        !           361:   (void) XtCreateManagedWidget("search_area", asciiTextWidgetClass,
        !           362:                                      area_form, args, 2);
        !           363: 
        !           364:   for_form = XtCreateManagedWidget("for_form", formWidgetClass, form,
        !           365:                                args, 0);
        !           366: 
        !           367:   (void) XtCreateManagedWidget("search_for_label", labelWidgetClass,
        !           368:                                     for_form, args, 0);
        !           369: 
        !           370:   search_for = XtCreateManagedWidget("search_for", asciiTextWidgetClass,
        !           371:                                      for_form, args, 0);
        !           372:   
        !           373:   XtAppAddActions(app_con, actionsTable, XtNumber(actionsTable));
        !           374:   trans_table = XtParseTranslationTable(defaultTranslations);
        !           375:   XtOverrideTranslations(search_for, trans_table);
        !           376: 
        !           377:   type_form = XtCreateManagedWidget("type_form", formWidgetClass, form,
        !           378:                                args, 0 );
        !           379: 
        !           380:   type_but = XtCreateManagedWidget("type_but", menuButtonWidgetClass,
        !           381:                                      type_form, args, 0);
        !           382: 
        !           383:   (void) XtCreateManagedWidget("search_type", asciiTextWidgetClass,
        !           384:                                      type_form, args, 0);
        !           385: 
        !           386:   (void) create_type_menu(type_but);
        !           387: }  
        !           388: 
        !           389: 
        !           390: 
        !           391: 
        !           392:   
        !           393: static void
        !           394: create_genform(parent)
        !           395: Widget parent;
        !           396: {
        !           397:   Widget form, quit_but, help_but;
        !           398:   Arg args[10];
        !           399: 
        !           400:   form = XtCreateManagedWidget("genform", formWidgetClass, parent,
        !           401:                               args, 0 );
        !           402: 
        !           403:   XtSetArg(args[0], XtNheight, stef_height);
        !           404:   XtSetArg(args[1], XtNwidth, stef_width);
        !           405:   (void) XtCreateManagedWidget("title", labelWidgetClass,form,
        !           406:                                    args, 2);
        !           407: 
        !           408:   quit_but = XtCreateManagedWidget("quit_but", commandWidgetClass, form,
        !           409:                                   args, 0);
        !           410:   XtAddCallback(quit_but, XtNcallback, Quit, (XtPointer) toplevel);
        !           411:                           
        !           412: 
        !           413:   help_but = XtCreateManagedWidget("help_but", commandWidgetClass, form, 
        !           414:                                   args, 0);
        !           415:   CreatePopupHelp(help_but);
        !           416:   XtAddCallback(help_but, XtNcallback, PopupHelp, (XtPointer)0 );
        !           417: }
        !           418: 
        !           419: 
        !           420: 
        !           421: /*ARGSUSED*/  
        !           422: static void
        !           423: Quit(widget, closure, callData)
        !           424: Widget widget;
        !           425: XtPointer closure, callData;
        !           426: {
        !           427:   XtDestroyWidget((Widget) closure);
        !           428:   exit(0);
        !           429: }
        !           430: 
        !           431: 
        !           432: void
        !           433: CreatePopupHelp(button)
        !           434: Widget  button;
        !           435: {
        !           436:   Widget      popup, form, quit_but;
        !           437:   Arg args[5];
        !           438:   FILE *file;
        !           439:   char fullname[MAXLENGTH];
        !           440:   char filename[MAXLENGTH];
        !           441: 
        !           442:   (void) strcpy(filename, "xd.help");
        !           443: 
        !           444:   popup = XtCreatePopupShell("popup", transientShellWidgetClass, button,
        !           445:                                args, 0);
        !           446: 
        !           447:   form = XtCreateManagedWidget("form", formWidgetClass, popup,
        !           448:                                    args, 0);
        !           449: 
        !           450:   quit_but = XtCreateManagedWidget("quit_but", commandWidgetClass, form,
        !           451:                                    args, 0);
        !           452:   XtAddCallback(quit_but, XtNcallback, PopdownHelp, (XtPointer)0 );
        !           453: 
        !           454:   (void) strcpy(fullname, dua_help_dir);
        !           455:   (void) strcat(fullname, filename);
        !           456:   if (!(file = fopen(fullname, "r"))) {
        !           457:     (void) strcpy(fullname, "./xd/helpdir/");
        !           458:     (void) strcat(fullname, filename);
        !           459:     if (!(file = fopen(fullname, "r"))) (void) printf("Helpfile not found");
        !           460:   }
        !           461: 
        !           462:   if(file != NULL) {
        !           463:     (void) fclose(file);
        !           464:     XtSetArg(args[0], XtNstring, fullname );
        !           465:   }
        !           466:   (void) XtCreateManagedWidget("help_text", asciiTextWidgetClass, form,
        !           467:                                args, 1);
        !           468: }
        !           469: 
        !           470: 
        !           471: /*ARGSUSED*/
        !           472: static void
        !           473: PopupHelp(button, client_data, call_data)
        !           474: Widget  button;
        !           475: XtPointer client_data, call_data;
        !           476: {
        !           477:   Widget pop_widg = XtNameToWidget(button, "popup");
        !           478:   Arg         args[5];
        !           479:   Position    x, y;
        !           480:   Cardinal    n;
        !           481: 
        !           482: 
        !           483:   XtTranslateCoords(button, (Position) 0, (Position) 0,
        !           484:                     &x, &y);
        !           485: 
        !           486:   n = 0;
        !           487:   XtSetArg(args[n], XtNx, x);           n++;
        !           488:   XtSetArg(args[n], XtNy, y-245);       n++;
        !           489:   XtSetValues(pop_widg, args, n);
        !           490: 
        !           491:   help_popped_up = TRUE;
        !           492:   XtPopup(pop_widg, XtGrabNone);
        !           493: 
        !           494: }
        !           495: 
        !           496: /*ARGSUSED*/
        !           497: static void
        !           498: PopdownHelp(button, client_data, call_data)
        !           499: Widget  button;
        !           500: XtPointer client_data, call_data;
        !           501: {
        !           502:   Widget pop_widg = XtParent( XtParent(button) );
        !           503: 
        !           504:   help_popped_up = FALSE;
        !           505:   XtPopdown(pop_widg);
        !           506: }
        !           507: 
        !           508: void
        !           509: Change_Help(filename)
        !           510: String filename;
        !           511: {
        !           512:   Arg args[5];
        !           513:   FILE *file;
        !           514:   char *fullname;
        !           515:   static char * old_pointer = 0;
        !           516: 
        !           517:   /* this gets around a problem  mine or athena widgets ? */
        !           518:   /* does usestringinplace=false work for type = file */
        !           519:   /*  when using asciitext widgets? */
        !           520: 
        !           521:   if(help_popped_up){
        !           522:     fullname = XtMalloc(MAXLENGTH * sizeof(char));
        !           523:     if(old_pointer != 0) {
        !           524:       XtFree((char *) old_pointer);
        !           525:       old_pointer = fullname;
        !           526:     }
        !           527: 
        !           528:     (void) strcpy(fullname, dua_help_dir);
        !           529:     (void) strcat(fullname, filename);
        !           530:     if (!(file = fopen(fullname, "r"))) {
        !           531:       (void) strcpy(fullname, "./Xd/helpdir/");
        !           532:       (void) strcat(fullname, filename);
        !           533:       if (!(file = fopen(fullname, "r"))) (void) fprintf(stderr, "Helpfile not found\n");
        !           534:     }
        !           535: 
        !           536:     if(file != NULL) {
        !           537:       (void) fclose(file);
        !           538:       XtSetArg(args[0], XtNstring, fullname );
        !           539:       XtSetValues( XtNameToWidget(toplevel,
        !           540:                "outer.genform.help_but.popup.form.help_text"), args, 1);
        !           541:     }
        !           542:     XFlush(XtDisplay(toplevel));
        !           543:   }
        !           544: }
        !           545: 
        !           546: 
        !           547: /*ARGSUSED*/
        !           548: static void
        !           549: PopupList(button, client_data, call_data)
        !           550: Widget  button;
        !           551: XtPointer client_data, call_data;
        !           552: {
        !           553:   Arg         args[5];
        !           554:   Widget      popup, form, list_places, quit_but;
        !           555:   Position    x, y;
        !           556:   Dimension   width, height;
        !           557:   Cardinal    n;
        !           558:   String widget_name = "outer.commandform.lookback_but.popup";
        !           559: 
        !           560: 
        !           561:   if(lookback_open == True) {
        !           562:     XtPopup(XtNameToWidget(toplevel, widget_name), XtGrabNone);
        !           563:     return;
        !           564:   }
        !           565: 
        !           566: 
        !           567:   n = 0;
        !           568:   XtSetArg(args[0], XtNwidth, &width); n++;
        !           569:   XtSetArg(args[1], XtNheight, &height); n++;
        !           570:   XtGetValues(button, args, n);
        !           571:   XtTranslateCoords(button, (Position) (width / 2), (Position) (height / 2),
        !           572:                     &x, &y);
        !           573: 
        !           574:   n = 0;
        !           575:   XtSetArg(args[n], XtNx, x);                         n++;
        !           576:   XtSetArg(args[n], XtNy, y);                         n++;
        !           577: 
        !           578:   popup = XtCreatePopupShell("popup", transientShellWidgetClass, button,
        !           579:                                args, n);
        !           580:   
        !           581:   form = XtCreateManagedWidget("form", formWidgetClass, popup,
        !           582:                                    args, 0);
        !           583: 
        !           584:   XtSetArg(args[0], XtNlabel, (String) "Quit");
        !           585:   quit_but = XtCreateManagedWidget("quit_but", commandWidgetClass, form,
        !           586:                                    args, 1);
        !           587:   XtAddCallback(quit_but, XtNcallback, Quit_Popup, (XtPointer) form);
        !           588: 
        !           589:   XtSetArg(args[0], XtNlist, lookback_list);
        !           590:   XtSetArg(args[1], XtNfromVert, quit_but);
        !           591:   XtSetArg(args[2], XtNverticalList, True );
        !           592:   XtSetArg(args[3], XtNnumberStrings, MAXLOOKBACKLENGTH );
        !           593:   list_places = XtCreateManagedWidget("list_places", listWidgetClass, form,
        !           594:                                args, 4);
        !           595:   XtAddCallback(list_places, XtNcallback, Change_Search_Area, (XtPointer)0 );
        !           596: 
        !           597:   lookback_open = True;
        !           598: 
        !           599:   XtPopup(popup, XtGrabNone);
        !           600: }
        !           601: 
        !           602: 
        !           603: 
        !           604: 
        !           605: void
        !           606: Add_To_Results(add_this)
        !           607: String add_this;
        !           608: {
        !           609:   Arg args[10];
        !           610:   String str;
        !           611:   char new_str[2000];
        !           612:   Widget result_widg = XtNameToWidget(toplevel, "outer.result_area");
        !           613: 
        !           614:   XtSetArg(args[0], XtNstring, &str);
        !           615:   XtGetValues(result_widg, args, ONE);
        !           616: 
        !           617:   if(*str == '\0')
        !           618:     (void) strcpy(new_str, add_this);
        !           619:   else
        !           620:     (void) sprintf((char *)new_str,"%s\n%s", str, add_this);
        !           621: 
        !           622:   XtSetArg(args[0], XtNstring, new_str);
        !           623:   XtSetValues(result_widg, args, 1);
        !           624: }
        !           625: 
        !           626: 
        !           627: 
        !           628: void Clear_Results()
        !           629: {
        !           630:   Arg args[10];
        !           631:   Widget result_widg = XtNameToWidget(toplevel, "outer.result_area");
        !           632: 
        !           633:   XtSetArg(args[0], XtNstring, "\0");
        !           634:   XtSetValues(result_widg, args, 1);
        !           635: }
        !           636: 
        !           637: 
        !           638: 
        !           639: Switch_Off_Result_Update()
        !           640: {
        !           641:   Widget result_widg = XtNameToWidget(toplevel, "outer.result_area");
        !           642:   XawTextDisableRedisplay(result_widg);
        !           643: }
        !           644: 
        !           645: 
        !           646: Switch_On_Result_Update()
        !           647: {
        !           648:   Widget result_widg = XtNameToWidget(toplevel, "outer.result_area");
        !           649:   XawTextEnableRedisplay(result_widg);
        !           650: }
        !           651: 
        !           652: 
        !           653: 
        !           654: /*ARGSUSED*/
        !           655: static void
        !           656: Search(w, client_data, call_data)
        !           657: Widget w;
        !           658: XtPointer client_data, call_data;
        !           659: {
        !           660:   Arg args[10];
        !           661:   int n, numb;
        !           662:   String str;
        !           663:   String string;
        !           664:   Widget list_widg = XtNameToWidget(toplevel, "outer.view_list.list_area");
        !           665:   Widget widg = XtNameToWidget(toplevel, 
        !           666:                              "outer.inputform.for_form.search_for");
        !           667: 
        !           668:   Clear_Results();
        !           669:   XtSetArg(args[0], XtNstring, &str);
        !           670:   XtGetValues(widg, args, ONE);
        !           671:   (void) strcpy(mvalue, str);
        !           672:   srch_start();
        !           673:   xprint("Search completed");
        !           674:   showseq = dnseq;
        !           675:   element_number = entry_number;
        !           676: 
        !           677:   numb = element_number;
        !           678:   if(numb >= MAXRESULTLISTLENGTH)
        !           679:     numb = MAXRESULTLISTLENGTH-1;
        !           680: 
        !           681:   for (n = 0; n < numb; n++) {
        !           682:     string = get_from_seq(n+1, showseq);
        !           683:     (void) strcpy(result_list[n], string);
        !           684:   }
        !           685: 
        !           686:   for(; n<MAXRESULTLISTLENGTH; n++) {
        !           687:     (void) strcpy(result_list[n], "");
        !           688:   }
        !           689: 
        !           690:   XawListChange(list_widg, result_list, MAXRESULTLISTLENGTH, 0, True);
        !           691: }
        !           692: 
        !           693: 
        !           694: 
        !           695: /*ARGSUSED*/
        !           696: static void
        !           697: List(w, client_data, call_data)
        !           698: Widget w;
        !           699: XtPointer client_data, call_data;
        !           700: {
        !           701:   String string;
        !           702:   int n, numb;
        !           703:   Arg args[10];
        !           704:   Widget list_widg = XtNameToWidget(toplevel, "outer.view_list.list_area");
        !           705:   Widget top_widg= XtNameToWidget(toplevel, "outer");
        !           706:   Display *this_display = XtDisplay(top_widg);
        !           707:   Cursor time_cur = XCreateFontCursor(this_display, XC_watch);
        !           708:   Cursor normal_cur;
        !           709: 
        !           710:   Clear_Results();
        !           711:   (void) strcpy(mvalue, "");
        !           712: 
        !           713:   XtSetArg(args[0], XtNcursor, &normal_cur );
        !           714:   XtGetValues(top_widg, args, 1);
        !           715: 
        !           716:   XtSetArg(args[0], XtNcursor, time_cur );
        !           717:   XtSetValues(top_widg, args, 1);
        !           718:   XFlush(this_display);
        !           719: 
        !           720: 
        !           721:   srch_start();
        !           722:   set_default_type();
        !           723:   showseq = dnseq;
        !           724:   element_number = entry_number;
        !           725: 
        !           726:   numb = element_number;
        !           727:   if(numb >= MAXRESULTLISTLENGTH)
        !           728:     numb = MAXRESULTLISTLENGTH-1;
        !           729: 
        !           730:   for (n = 0; n < numb; n++) {
        !           731:     string = get_from_seq(n+1, showseq);
        !           732:     (void) strcpy(result_list[n], string);
        !           733:   }
        !           734: 
        !           735:   for(; n<MAXRESULTLISTLENGTH; n++) {
        !           736:     (void) strcpy(result_list[n], "");
        !           737:   }
        !           738: 
        !           739:   XtSetArg(args[0], XtNcursor, normal_cur);
        !           740:   XtSetValues(top_widg, args, 1);
        !           741: 
        !           742:   XawListChange(list_widg, result_list, MAXRESULTLISTLENGTH, 0, True);
        !           743: }
        !           744: 
        !           745: 
        !           746: 
        !           747: /*ARGSUSED*/
        !           748: static void
        !           749: Change_Type(w, client_data, call_data)
        !           750: Widget w;
        !           751: XtPointer client_data, call_data;
        !           752: {
        !           753:   typeindx = (unsigned int) client_data;
        !           754:   Set_Search_Type(filttype[(int) client_data]);
        !           755: }
        !           756: 
        !           757: 
        !           758: 
        !           759: Set_Search_Type(string)
        !           760: String string;
        !           761: {
        !           762:   Arg         args[5];
        !           763:   Widget search_w = XtNameToWidget(toplevel, "outer.inputform.type_form.search_type");
        !           764:   Widget typebut_w = XtNameToWidget(toplevel,
        !           765:                                     "outer.inputform.type_form.type_but");
        !           766:   Widget typemenu_w = XtNameToWidget(toplevel,
        !           767:                                     "outer.inputform.type_form.type_but.menu");
        !           768: 
        !           769:   XtDestroyWidget(typemenu_w);
        !           770:   (void) create_type_menu(typebut_w);
        !           771: 
        !           772:   XtSetArg(args[0], XtNstring, string);
        !           773:   XtSetValues( search_w, args, 1);
        !           774: }
        !           775: 
        !           776: 
        !           777: /*ARGSUSED*/
        !           778: static void
        !           779: Change_Search_Area(w, client_data, call_data)
        !           780: Widget w;
        !           781: XtPointer client_data, call_data;
        !           782: {
        !           783: 
        !           784:   XawListReturnStruct *item = (XawListReturnStruct*)call_data;
        !           785: 
        !           786:   Clear_Results();
        !           787: 
        !           788:   if((strlen(item->string) != 0) && (strcmp(item->string, NOHISTORY))){
        !           789:     Set_Search_Area(item->string);
        !           790:     rd_start();
        !           791:     add_to_lookback(base_path);
        !           792:   }
        !           793: 
        !           794:   XawListUnhighlight(w);
        !           795: }
        !           796: 
        !           797: 
        !           798: 
        !           799: Set_Search_Area(string)
        !           800: String string;
        !           801: {
        !           802:   Arg   args[10];
        !           803:   String widget_name = "outer.inputform.area_form.search_area";
        !           804:   Widget search_w = XtNameToWidget(toplevel, widget_name);
        !           805: 
        !           806:   XtSetArg(args[0], XtNstring, string);
        !           807:   XtSetValues(search_w, args, 1);
        !           808: 
        !           809:   (void) strcpy(base_path, string);
        !           810:   set_default_type();
        !           811: }
        !           812: 
        !           813: /*ARGSUSED*/
        !           814: static void
        !           815: Quit_Popup(widget, client_data, call_data)
        !           816: Widget  widget;
        !           817: XtPointer client_data, call_data;
        !           818: {
        !           819:     Widget popup = XtParent((Widget) client_data);
        !           820: 
        !           821:     if(lookback_open == True)
        !           822:       if(XtNameToWidget(toplevel,
        !           823:          "outer.commandform.lookback_but.popup.form.quit_but") == widget)
        !           824:              lookback_open = False; 
        !           825: 
        !           826:     XtDestroyWidget(popup);
        !           827: }
        !           828: 
        !           829: 
        !           830: void
        !           831: xprint(str)
        !           832: String str;
        !           833: {
        !           834:   Add_To_Results(str);  
        !           835: }
        !           836: 
        !           837: /*ARGSUSED*/
        !           838: static void
        !           839: widen_search()
        !           840: {
        !           841:   Arg   args[10];
        !           842:   String widget_name = "outer.inputform.area_form.search_area";
        !           843:   Widget search_w = XtNameToWidget(toplevel, widget_name);
        !           844: 
        !           845:   widen();
        !           846:   XtSetArg(args[0], XtNstring, base_path);
        !           847:   XtSetValues(search_w, args, 1);
        !           848: }
        !           849:  
        !           850: 
        !           851: void
        !           852: add_to_lookback(addthis)
        !           853: String addthis;
        !           854: {
        !           855:   int count;
        !           856:   String widget_name = "outer.commandform.lookback_but.popup.form.list_places";
        !           857:   Widget list_w;
        !           858: 
        !           859:   for(count=0; count<MAXLOOKBACKLENGTH; count++ ) 
        !           860:     if(!strcmp(lookback_list[count], addthis))
        !           861:       return;    /* no duplicates thankyou! */
        !           862: 
        !           863:   for(count=0; count<MAXLOOKBACKLENGTH-1; ) {
        !           864:     (void) strcpy(lookback_list[count], lookback_list[count+1]);
        !           865:     count++;
        !           866:   }
        !           867:   (void) strcpy(lookback_list[count++], addthis);
        !           868:   
        !           869:   if(lookback_open == True) {
        !           870:     list_w = XtNameToWidget(toplevel,widget_name);
        !           871:     XawListChange(list_w, lookback_list, MAXLOOKBACKLENGTH, 0, True);
        !           872:   }
        !           873:  
        !           874:   XFlush(XtDisplay(toplevel));
        !           875: }

unix.superglobalmegacorp.com

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