home *** CD-ROM | disk | FTP | other *** search
- char copyright[]="xbmbrowser Version 1.0 (c) Copyright Ashley Roll, 1992.";
- /*
- *****************************************************************************
- ** xbmbrowser version 1.0 (c) Copyright Ashley Roll, 1992.
- ** FILE: xbmbrowser.c
- **
- ** xbmbrowser is Public Domain. However it, and all the code still belong to me.
- ** I do, however grant permission for you to freely copy and distribute it on
- ** the condition that this and all other copyright notices remain unchanged in
- ** all distributions.
- **
- ** This software comes with NO warranty whatsoever. I therefore take no
- ** responsibility for any damages, losses or problems that the program may
- ** cause.
- *****************************************************************************
- */
-
- #define MAIN
- #include "xbmbrowser.h"
- #include "patchlevel.h"
- #include "icon.xbm"
-
-
- extern void DoQuit();
- extern void Ok();
- extern Widget MakeMenu();
- extern Widget AddMenuItem();
- extern void Show_Help();
- extern void Inform_User();
- extern void SetWindowIcon();
- extern void rename_bitmap();
- extern void move_bitmap();
- extern void copy_bitmap();
- extern void delete_bitmap();
- extern void edit_bitmap();
- extern void set_root();
- extern void set_root_inv();
- extern void set_name();
- extern void destroy_Callback();
- extern void rescan();
- extern FileList *get_files();
- extern void change_dir();
- extern void setup_dialog();
-
- /* -------------------------- */
- static Atom wm_delete_window; /* insure that delete window works */
-
- static XtActionsRec actions[] = { /* declare possible actions */
- /* action_name, routine */
- { "quit", DoQuit },
- { "CD", change_dir },
- { "Set_Name", set_name },
- { "Ok", Ok },
- };
-
- /* translation table for label widgets for the bitmaps */
- static char Translations[] =
- "<EnterWindow>: Set_Name() \n\
- <BtnDown>: XawPositionSimpleMenu(bitmapMenu) MenuPopup(bitmapMenu) \n\
- <BtnUp>: MenuPopdown(bitmapMenu)";
-
- /* translation table for the dialogWidget (directory name) */
- static char text_trans[] =
- "<Key>Return: CD() \n\
- Ctrl<Key>M: CD() ";
-
- /* fallback resources */
- static char *fall_back[] = {
- ".xbmbrowser.width: 450",
- ".xbmbrowser.height: 500",
- ".xbmbrowser.iconName: browser",
- ".xbmbrowser.?.TransientShell.width: 350",
- ".xbmbrowser.main.buttons.Command.width: 70",
- NULL
- };
-
- /* -------------------------- */
-
- /*
- ** this creates all the menubuttons that contain the bitmaps
- */
- void fill_bw()
- {
- FileList *x;
- Widget w;
- char b_name[255];
- Pixmap bitmap = NULL;
- int show = TRUE;
-
- /* create a menu */
- menu = MakeMenu(bw,"bitmapMenu",NULL);
-
- /* fill the menu */
- (void) AddMenuItem(menu,"Rename",rename_bitmap,NULL,show);
- (void) AddMenuItem(menu,"Copy",copy_bitmap,NULL,show);
- (void) AddMenuItem(menu,"Delete",delete_bitmap,NULL,show);
- if(EDITOR[0] == '\0')
- show = FALSE;
- (void) AddMenuItem(menu,"Edit",edit_bitmap,NULL,show);
-
- show = TRUE;
- if(SETROOT[0] == '\0')
- show = FALSE;
- (void) AddMenuItem(menu,"SetRoot",set_root,NULL,show);
- show = TRUE;
- if(SETROOTINV[0] == '\0')
- show = FALSE;
- (void) AddMenuItem(menu,"SetRoot Inv",set_root_inv,NULL,show);
-
-
- for(x = file_list; x != NULL; x = x->next)
- {
- int t;
- char *name;
-
- name = x->fname;
- if(XReadBitmapFile(XtDisplay(toplevel),
- DefaultRootWindow(XtDisplay(toplevel)),name,
- &t,&t,&bitmap,&t,&t) == BitmapSuccess) {
-
-
- /* create the menuButton for it */
- w = XtVaCreateManagedWidget(name,labelWidgetClass,bw,
- XtNbitmap,(XtArgVal)bitmap,
- NULL);
-
- XtOverrideTranslations(w,XtParseTranslationTable(Translations));
- XtAddCallback(w,"destroyCallback",destroy_Callback,(XtPointer)bitmap);
- }
- }
- }
-
- main(argc, argv)
- int argc;
- char **argv;
- {
- XtAppContext appcon;
- char wname[100];
-
- ac = argc;
- av = argv;
- bw = NULL;
- bname = NULL;
- dialogs_made = FALSE;
- file_list = NULL;
-
-
- sprintf(wname,"XbmBrowser Version 1.0 %s",PATCHLEVEL);
- toplevel = XtVaAppInitialize(
- &appcon, "XbmBrowser", /* app context, ClassName */
- NULL, 0, /* app command line options */
- &argc, argv, /* command line */
- fall_back, /* Fall back resources */
- XtNtitle,(XtArgVal)wname,
- NULL); /* End Va resource list */
- XtAppAddActions(appcon, actions, XtNumber(actions));
-
- if( argc > 2 ) useage();
- if(argc == 2) {
- if(chdir(argv[1]) != 0) {
- fprintf(stderr,"xbmbrowser: couldn't chdir to '%s'\n",argv[1]);
- exit(0);
- }
- }
-
- (void) getcwd(dname,253);
-
- /* create a paned widget to put everything into */
- mainpw = XtVaCreateManagedWidget("main",panedWidgetClass,toplevel,
- NULL);
-
- /* create the form widget to put the buttons in */
- bfw = XtVaCreateManagedWidget("buttons",formWidgetClass,mainpw,
- XtNshowGrip,(XtArgVal)False,
- XtNskipAdjust,(XtArgVal)True,NULL);
-
- {
- Widget button;
- /* create the Buttons */
- button = XtVaCreateManagedWidget("quit",commandWidgetClass,bfw,
- XtNlabel,(XtArgVal)"Quit",NULL);
- XtAddCallback(button,"callback",DoQuit,NULL);
- button = XtVaCreateManagedWidget("help",commandWidgetClass,bfw,
- XtNfromHoriz,(XtArgVal)button,
- XtNlabel,(XtArgVal)"Help",NULL);
- XtAddCallback(button,"callback",Show_Help,NULL);
- button = XtVaCreateManagedWidget("rescan",commandWidgetClass,bfw,
- XtNfromHoriz,(XtArgVal)button,
- XtNlabel,(XtArgVal)"Rescan",NULL);
- XtAddCallback(button,"callback",rescan,NULL);
- }
- /* dialogWidget to hold and get the directory to read from */
-
- atw = XtVaCreateManagedWidget("directory", dialogWidgetClass, mainpw,
- XtNlabel,(XtArgVal)"Current Directory",
- XtNvalue,(XtArgVal)dname,
- XtNshowGrip,(XtArgVal)False,
- XtNskipAdjust,(XtArgVal)True,
- NULL);
-
- XtOverrideTranslations(XtNameToWidget(atw,"value"),
- XtParseTranslationTable(text_trans));
-
- /* label widget to hold the name of the current bitmap */
- lw = XtVaCreateManagedWidget("label",labelWidgetClass,mainpw,
- XtNlabel,(XtArgVal)"No Bitmap Selected",
- XtNshowGrip,(XtArgVal)False,
- XtNskipAdjust,(XtArgVal)True,NULL);
-
- /* create a viewport widget to stick the bitmaps in */
- {
- int width;
-
- XtVaGetValues(toplevel,XtNwidth,&width,NULL);
-
- phw = XtVaCreateManagedWidget("viewport",viewportWidgetClass,mainpw,
- XtNwidth,(XtArgVal)width,
- XtNallowHoriz,(XtArgVal)False,
- XtNallowVert,(XtArgVal)True,
- XtNshowGrip,(XtArgVal)False,
- XtNskipAdjust,(XtArgVal)True,NULL);
- }
- setup();
- XtRealizeWidget(toplevel);
-
- /* set up the icon */
- {
- Pixmap icon;
- XWMHints *wmhints;
- Display *display;
- Window window;
-
- display = XtDisplay(toplevel);
- window = XtWindow(toplevel);
-
- wmhints = XGetWMHints( display, window );
-
- if ( wmhints == (XWMHints *) NULL )
- {
- wmhints = (XWMHints *) malloc( sizeof(XWMHints) );
- if ( wmhints == (XWMHints *) NULL )
-
- wmhints->flags = 0;
- }
-
- icon = XCreateBitmapFromData(display,DefaultRootWindow(display),
- icon_bits, icon_width, icon_height);
-
- wmhints->flags |= IconPixmapHint;
-
- wmhints->icon_pixmap = icon;
-
- XSetWMHints( display, window, wmhints );
-
- XFree( wmhints );
- }
-
-
- /* Set the window to call quit() action if `deleted' */
- XtOverrideTranslations(toplevel,
- XtParseTranslationTable("<Message>WM_PROTOCOLS:quit()") );
- wm_delete_window = XInternAtom(XtDisplay(toplevel),"WM_DELETE_WINDOW",False);
- (void) XSetWMProtocols(XtDisplay(toplevel), XtWindow(toplevel),
- &wm_delete_window, 1);
- XtAppMainLoop(appcon);
- exit(0);
- }
-
- /*
- ** this (re)initializes the boxWidget that contains the menubuttons
- ** by calling the fillbw() function
- */
- setup()
- {
- int width,fore,back,depth;
-
- if(bw != NULL)
- XtDestroyWidget(bw);
-
- XtVaGetValues(toplevel,XtNwidth,&width,NULL);
- XtVaSetValues(lw,XtNlabel,(XtArgVal)"No Bitmap Selected",NULL);
-
- /* create the box widget to put all the bitmaps in */
- bw = XtVaCreateManagedWidget("bitmaps",boxWidgetClass,phw,
- XtNwidth,width,
- XtNorientation,(XtArgVal)XtorientVertical,
- XtNfromVert,(XtArgVal)lw,
- NULL);
-
- XtVaGetValues(bw, XtNborderColor, &fore,
- XtNbackground, &back,
- XtNdepth, &depth, NULL);
-
- XtVaSetValues(bw, XtNbackgroundPixmap,
- (XtArgVal)XmuCreateStippledPixmap(XtScreen(phw), fore, back, depth),
- NULL);
-
- /* create all the bitmaps (each in a menubutton) */
- while(file_list != NULL) {
- FileList *t;
- t = file_list->next;
- free(file_list);
- file_list = t;
- }
- file_list = get_files(".");
- fill_bw();
- }
-
-
- useage()
- {
- fprintf(stderr,"\nxbmbrowser: Useage: \nxbmbrowser [toolkit options] [<Dir>]\n");
- fprintf(stderr,"\nWhere <Dir> is a directory name. \n");
- exit(1);
- }
-
-