home *** CD-ROM | disk | FTP | other *** search
- /* Systems Sciences Laboratory, Webster Research Center */
-
- static char *PROGRAM_information[] =
- {
- "Copyright (c) 1988 Xerox Corporation. All rights reserved.",
- "$Header$",
- "$Locker$"
- }
- ;
-
- /*
- * Copyright protection claimed includes all forms and matters of copyrightable
- * material and information now allowed by statutory or judicial lay or
- * herinafter granted, including without limitation, material generated from
- * the software programs which are displayed on the screen such as icons,
- * screen display looks, etc.
- */
-
- #include "xfilebrowser.h"
- #include "xbrowser.icon"
-
-
- char *filepattern;
- char *searchpattern;
- char *curdirectory;
- char *oldpattern;
- char *cmdline;
-
- struct afile **files = NULL;
- SearchElement **hitfiles = NULL;
- int numfiles = 0;
- int numhitfiles = 0;
- int allowedit = 0;
-
- Widget toplevel;
- Widget outer;
- Widget Row1;
- Widget Row2;
- Widget Row3;
-
- Widget messwidget; /* text widget for displaying messages */
- Widget dirwidget; /* label widget for current directory */
- Widget listwidget; /* text widget for directory listing */
- Widget grepwidget; /* text widget for searched files */
-
- Widget quitbutton; /* command button for quit */
- Widget listbutton; /* command button for list */
- Widget editbutton; /* command button for edit file selected
- in directory listing */
- Widget parentdirbutton; /* command button for selecting
- parent directory */
- Widget shellbutton; /* command button for invoking shell */
- Widget copybutton; /* command button for invoking copy */
- Widget renamebutton; /* command button for invoking rename */
- Widget deletebutton; /* command button for invoking delete on files */
-
- Widget fpatwindow; /* string box for providing the file pattern
- used to list directories */
-
- Widget grepbutton; /* command button for invoking grep on files */
- Widget grepwindow; /* string box to specify the grep search pattern */
- Widget grepeditbutton; /* command button for edit file selected
- in list of searched files */
-
- Display *curdisplay;
- XtTextSource messsource, listsource, grepsource;
-
- int viewEdit;
-
- static XtResource resources[] = {
- {"viewEdit", "ViewEdit", XtRBoolean, sizeof(int),
- (Cardinal)&viewEdit, XtRString, "False"}
- };
-
- makeButtonsAndBoxes()
- {
- Cursor hand;
- static XtTextSelectType listselect[] = {
- XtselectLine, XtselectAll, XtselectNull, XtselectNull};
-
- static Arg paneargs[] = {
- { XtNallowResize, (XtArgVal)True },
- };
- static Arg ListArgs[] = {
- { XtNtextSource, NULL },
- { XtNtextSink, NULL },
- { XtNcursor, NULL },
- { XtNtextOptions ,
- (XtArgVal)(scrollVertical | scrollHorizontal | resizeWidth) },
- { XtNselectTypes, (XtArgVal)listselect },
- };
- static Arg MessArgs[] = {
- { XtNtextSource, NULL },
- { XtNtextSink, NULL },
- { XtNtextOptions, (XtArgVal)(scrollVertical | wordBreak) },
- };
- static Arg labelArgs[] = {
- { XtNjustify, (XtArgVal)XtJustifyCenter },
- { XtNlabel, NULL },
- };
- static Arg grepArgs[] = {
- { XtNtextSource, NULL },
- { XtNtextSink, NULL },
- { XtNcursor, NULL },
- { XtNtextOptions ,
- (XtArgVal)(scrollVertical | scrollHorizontal | resizeWidth) },
- { XtNselectTypes, (XtArgVal)listselect },
- };
-
-
- outer = XtCreateManagedWidget( "vpaned", vPanedWidgetClass, toplevel,
- paneargs , XtNumber(paneargs) );
- XtPanedSetRefigureMode(outer, FALSE);
-
- /* create first row */
- Row1 = XtCreateManagedWidget("row1", boxWidgetClass, outer, NULL,0);
- quitbutton = makeCommandButton(Row1, "Quit", DoQuit);
- listbutton = makeCommandButton(Row1, "List", DoList);
- ModCommand_Init(listbutton);
-
- editbutton = makeCommandButton(Row1, "View/Edit", DoEdit);
- ModCommand_Init(editbutton);
- parentdirbutton = makeCommandButton(Row1, "Parent", DoParent);
- ModCommand_Init(parentdirbutton);
- shellbutton = makeCommandButton(Row1, "Shell", DoShell);
- ModCommand_Init(shellbutton);
-
- copybutton = makeCommandButton(Row1, "Copy", DoCopy);
- renamebutton = makeCommandButton(Row1, "Move", DoRename);
- deletebutton = makeCommandButton(Row1, "Delete", DoDelete);
-
- /* create second row */
- Row2 = XtCreateManagedWidget("row2", boxWidgetClass, outer, NULL,0);
- fpatwindow = makeStringBox(Row2, filepattern, 254);
-
- /* create label for current directory */
- labelArgs[1].value = (XtArgVal)curdirectory;
- dirwidget = XtCreateManagedWidget("labelWindow",labelWidgetClass,
- outer, labelArgs, XtNumber(labelArgs));
- XtPanedSetMinMax((Widget)dirwidget, 14, 14);
-
- /* create message window */
- messsource = TCreateApAsSource();
- MessArgs[0].value = (XtArgVal)messsource;
- MessArgs[1].value = (XtArgVal)XtAsciiSinkCreate(outer, NULL, 0);
- messwidget = XtCreateManagedWidget("messageWindow",
- textWidgetClass, outer, MessArgs, XtNumber(MessArgs));
- XtPanedSetMinMax((Widget) messwidget, 40, 40);
-
- /* create cursor hand */
- hand = XCreateFontCursor(curdisplay, XC_hand1);
-
- /* create text for displaying directory listings */
- listsource = TCreateApAsSource();
- ListArgs[0].value = (XtArgVal)listsource;
- ListArgs[1].value = (XtArgVal)XtAsciiSinkCreate(outer, NULL, 0);
- ListArgs[2].value = (XtArgVal)hand;
- listwidget = XtCreateManagedWidget("listWindow",
- textWidgetClass, outer, ListArgs, XtNumber(ListArgs));
- XtPanedSetMinMax((Widget) listwidget, 250, 65535);
- Modtext_Init(listwidget);
-
- /* create third row */
- Row3 = XtCreateManagedWidget("row3", boxWidgetClass, outer, NULL,0);
- grepeditbutton = makeCommandButton(Row3, "View/Edit", DoGrepEdit);
- ModCommand_Init(grepeditbutton);
- grepbutton = makeCommandButton(Row3, "Grep", DoGrep);
- ModCommand_Init(grepbutton);
- grepwindow = makeStringBox(Row3, searchpattern, 120);
-
- /* create text for displaying directory listings */
- grepsource = TCreateApAsSource();
- grepArgs[0].value = (XtArgVal)grepsource;
- grepArgs[1].value = (XtArgVal)XtAsciiSinkCreate(outer, NULL, 0);
- grepArgs[2].value = (XtArgVal)hand;
- grepwidget = XtCreateManagedWidget("grepWindow",
- textWidgetClass, outer, grepArgs, XtNumber(grepArgs));
- XtPanedSetMinMax((Widget) grepwidget, 150, 65535);
- Modtext_Init(grepwidget);
-
- {
- static Dimension boxHeight;
- static Arg getargs[] = {
- { XtNheight, (XtArgVal)&boxHeight }
- };
-
- XtGetValues(quitbutton, getargs, XtNumber(getargs));
- boxHeight += 8;
- XtPanedSetMinMax((Widget) Row1, boxHeight, 65535);
- XtPanedSetMinMax((Widget) Row2, boxHeight, 65535);
- XtPanedSetMinMax((Widget) Row3, boxHeight, 65535);
- }
-
- XtPanedSetRefigureMode(outer, TRUE);
- }
-
-
- main(argc, argv)
- int argc;
- char **argv;
- {
- char *cwd;
- Pixmap icon;
- Arg iconargs[1];
-
- static Dimension width, height;
- static Arg args[]={
- {XtNwidth, (XtArgVal) &width},
- {XtNheight, (XtArgVal)&height} };
- static Arg setargs[]={
- {XtNwidth, 500},
- {XtNheight,700} };
-
- filepattern = XtMalloc(255);
- searchpattern = XtMalloc(255);
- curdirectory = XtMalloc(255);
- oldpattern = XtMalloc(64);
- cmdline = XtCalloc(1024, 1);
-
- toplevel = XtInitialize( "xbrowser", "XBrowser",
- NULL, 0, &argc, argv);
- XtGetValues(toplevel, args, XtNumber(args));
- if(!width || !height){
- XtSetValues(toplevel, setargs, XtNumber(setargs));
- }
-
- XtGetApplicationResources(toplevel, 0, resources,
- XtNumber(resources),NULL, 0);
- curdisplay = XtDisplay(toplevel);
-
- if ( (cwd = getcwd((char *)NULL, 255)) == (char *)NULL)
- XtError("\nxbrowser: cannot get current directory");
-
- if (argv[1]) {
- strcpy(curdirectory, cwd);
- get_dirpat(argv[1], curdirectory, filepattern);
- }
- else get_dirpat(cwd, curdirectory, filepattern);
-
- strcpy(oldpattern, filepattern);
- reset_ownercache();
-
- makeButtonsAndBoxes();
-
- XtRealizeWidget(toplevel);
- XDefineCursor( XtDisplay(toplevel), XtWindow(toplevel),
- XCreateFontCursor(XtDisplay(toplevel), XC_left_ptr) );
- setup_iconname();
-
- /* define icon pixmap */
- icon = XCreateBitmapFromData(curdisplay,
- DefaultRootWindow(curdisplay),
- xbrowser_bits,
- xbrowser_width,
- xbrowser_height);
- XtSetArg(iconargs[0], XtNiconPixmap, (XtArgVal)icon);
- XtSetValues(toplevel, iconargs, XtNumber(iconargs));
-
- create_log(); /* create log window; it must be created before
- the popup window for the list options; otherwise
- it does not create the scrollbar correctly;
- I have no idea why */
-
- XtMainLoop();
- }
-
-