home *** CD-ROM | disk | FTP | other *** search
- /* 005 24-Jan-87 ovselect.c
-
- Copyright (c) 1987 by Blue Sky Software. All rights reserved.
- */
-
- #include "ov.h"
-
- extern MENU top_file_menu[], *top_menu;
-
- int selatr_quit();
- int selatr_set(), selatr_a(), selatr_d(), selatr_h(), selatr_r(), selatr_s();
-
- MENU top_selatr_menu[] = {
- { "Enter", "Change the selection attributes as shown", selatr_set, top_file_menu },
- { "Archive", "Toggle selection of entries with Archive attribute", selatr_a, NULL },
- { "Dir", "Toggle selection of directory entries", selatr_d, NULL },
- { "Hidden", "Toggle selection of entries with Hidden attribute", selatr_h, NULL },
- { "Read/only", "Toggle selection of entries with Read/Only attribute", selatr_r, NULL },
- { "System", "Toggle selection of entries with System attribute", selatr_s, NULL },
- { "Quit", "Don't change the current selection attributes", selatr_quit, top_file_menu },
- { NULL, NULL, NULL, NULL }
- };
-
- static unsigned char selatr_to_set;
-
- extern WINDOW cw;
- extern FILE_ENT files[];
- extern unsigned char restricted;
-
- char *strupr();
-
-
- /****************************************************************************
- S E L _ A T T R I B
- ****************************************************************************/
-
- sel_attrib() { /* set the selection attributes */
-
- top_menu = top_selatr_menu; /* setup the select attrib menu as main menu */
-
- restricted = TRUE; /* disable cursor movement, etc */
-
- selatr_to_set = cw.selatrs; /* initial attribs to select */
- }
-
-
- /*****************************************************************************
- S E L A T R _ S E T
- *****************************************************************************/
-
- selatr_set() { /* set the selection attributes as show */
-
- cw.selatrs = selatr_to_set; /* assign selection attributes */
-
- renew_window(); /* reget/display files */
-
- selatr_quit(); /* back to normal display mode */
- }
-
-
- /*****************************************************************************
- S E L A T R _ Q U I T
- *****************************************************************************/
-
- selatr_quit() { /* exit back to normal file display mode */
-
- top_menu = top_file_menu; /* restore file menu as main */
-
- restricted = FALSE; /* enable all commands */
- }
-
-
- /*****************************************************************************
- S E L A T R _ x
- *****************************************************************************/
-
- selatr_a() { /* toggle selection archive attribute */
-
- selatr_toggle(ARCHIVE);
- }
-
- selatr_d() { /* toggle selection dir attribute */
-
- selatr_toggle(DIR);
- }
-
- selatr_h() { /* toggle selection hidden attribute */
-
- selatr_toggle(HIDDEN);
- }
-
- selatr_r() { /* toggle selection read/only attribute */
-
- selatr_toggle(RDONLY);
- }
-
- selatr_s() { /* toggle selection system attribute */
-
- selatr_toggle(SYSTEM);
- }
-
-
- /*****************************************************************************
- S E L A T R _ T O G G L E
- *****************************************************************************/
-
- selatr_toggle(at) /* toggle the state of the passed attribute */
- int at;
- {
- selatr_to_set ^= at; /* toggle the attribute */
-
- gotorc(MASK_ROW+1,MASK_COL-1); /* then redisplay the current settings */
- disp_attrib(selatr_to_set);
-
- if (at == DIR) /* disp_attrib() doesn't do dirs */
- disp_str(selatr_to_set & DIR ? " D" : " .");
- }
-
-
- /*****************************************************************************
- S E L _ A L L
- *****************************************************************************/
-
- sel_all() { /* select everything in directory */
-
- cw.selatrs = ARCHIVE | DIR | HIDDEN | RDONLY | SYSTEM;
-
- mask_off(); /* clear selection mask and renew window */
- }
-
-
- /*****************************************************************************
- S E T _ M A S K
- *****************************************************************************/
-
- set_mask() { /* set the file selection mask */
-
- char *mask;
-
- mask = strupr(prompt("","Enter Selection Mask: ",NULL,0,MASK_LEN));
- if (strlen(mask) == 0)
- return;
-
- strcpy(cw.mask,mask); /* copy new mask to window */
-
- renew_window(); /* renew the window */
- }
-
-
- /*****************************************************************************
- C L R _ M A S K
- *****************************************************************************/
-
- clr_mask() { /* clear the file selection mask */
-
- int ans;
-
- ans = ask("Clear the selection mask? (y/N): ");
- if (yes(ans))
- mask_off(); /* wipe out the mask */
- }
-
-
- /*****************************************************************************
- M A S K _ O F F
- *****************************************************************************/
-
- static int
- mask_off() { /* force the selection mask off */
-
- *cw.mask = '\0'; /* wipe out the mask */
- cw.maskcmp = 1; /* mask means include next time */
- renew_window(); /* update the file display */
- }
-
- /*****************************************************************************
- I N V E R T _ M A S K
- *****************************************************************************/
-
- invert_mask() { /* invert the include/exclude meaning of the mask */
-
- cw.maskcmp ^= 1; /* invert the flag */
- renew_window(); /* update the file display */
- }
-
-
- /*****************************************************************************
- S E L _ T A G G E D
- *****************************************************************************/
-
- sel_tagged() { /* "Select" the tagged files */
-
- register int i;
- register struct file_ent *fp;
-
- /* to select the tagged files, we delete every files[] that isn't tagged,
- note that the file isn't deleted, just the files[] entry */
-
- for (i = 0, fp = files; i < cw.nfiles; i++, fp++)
- if (!(fp->flags & TAGGED))
- delent(fp);
-
- disp_file_stats(); /* disp updated file stats */
- packfiles(); /* pack the files structure */
- adjust_window(); /* redisplay window */
- update_window(1);
- }