home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume18 / mush6.4 / part02 / edit_menu.c < prev    next >
C/C++ Source or Header  |  1989-03-12  |  3KB  |  101 lines

  1. /* @(#)edit_menu.c    (c) copyright    10/18/86 (Dan Heller) */
  2.  
  3. /* edit_menu.c
  4.  * 
  5.  * Routine which handles the menu you get when in the msg_win while editing
  6.  * a letter.  This is just a fancy front end for ~ commands (nyuk, nyuk).
  7.  */
  8. #include "mush.h"
  9.  
  10. #define EDIT_IT         (char *)'e'
  11. #define PAGE         (char *)'p'
  12. #define INC          (char *)'i'
  13. #define INC_HDR        (char *)'H'
  14. #define FWD_MSG        (char *)'f'
  15. #define TO_LIST        (char *)'t'
  16. #define SUBJECT        (char *)'s'
  17. #define CC_LIST        (char *)'c'
  18. #define BC_LIST        (char *)'b'
  19. #define ALL_HDR        (char *)'h'
  20. #define SIGN_IT        (char *)'S'
  21. #define NO_SIGN        (char *)'n'
  22. #define FORT        (char *)'F'
  23. #define NO_FORT        (char *)'N'
  24. #define ERASE       (char *)'E'
  25. #define SEND           (char *)'X'
  26. #define ABORT       (char *)'q'
  27. #define MENU_HELP    (char *)'?'
  28.  
  29. static struct menuitem edit_items[] = {
  30.     { MENU_IMAGESTRING,  "Enter Editor",    EDIT_IT  },
  31.     { MENU_IMAGESTRING,  "Send Letter",        SEND     },
  32.     { MENU_IMAGESTRING,  "Abort Letter",    ABORT    },
  33.     { MENU_IMAGESTRING,  "Review Letter",    PAGE     },
  34.     { MENU_IMAGESTRING,  "Include Message",    INC      },
  35.     { MENU_IMAGESTRING,  "Inc. msg w/hdr",    INC_HDR  },
  36.     { MENU_IMAGESTRING,  "Forward message",    FWD_MSG  },
  37.     { MENU_IMAGESTRING,  "Change To line",    TO_LIST  },
  38.     { MENU_IMAGESTRING,  "Change Subject",    SUBJECT  },
  39.     { MENU_IMAGESTRING,  "Change Cc list",    CC_LIST  },
  40.     { MENU_IMAGESTRING,  "Change Bcc list",    BC_LIST  },
  41.     { MENU_IMAGESTRING,  "Change All hdrs",    ALL_HDR  },
  42.     { MENU_IMAGESTRING,  "Add .signature",    SIGN_IT  },
  43.     { MENU_IMAGESTRING,  "No .signature",    NO_SIGN  },
  44.     { MENU_IMAGESTRING,  "Add a fortune",    FORT     },
  45.     { MENU_IMAGESTRING,  "No fortune",        NO_FORT  },
  46.     { MENU_IMAGESTRING,  "Erase Message",    ERASE    },
  47.     { MENU_IMAGESTRING,  "Help",        MENU_HELP  }
  48. };
  49.  
  50. static struct menu menu = {
  51.     MENU_IMAGESTRING, "Editing options",
  52.     sizeof (edit_items) / sizeof (struct menuitem), edit_items,
  53.     (struct menu *)NULL,
  54.     NULL
  55. };
  56.  
  57. edit_menu(event, fd)
  58. struct inputevent *event;
  59. {
  60.     static char buf[5];
  61.     struct menuitem *m_item;
  62.     register char *action, *p = buf+1;
  63.     struct menu *menu_ptr = &menu;
  64.  
  65.     if (!(m_item = menu_display(&menu_ptr, event, fd)) || get_hdr_field) {
  66.     if (get_hdr_field)
  67.         print("Finish the message header first.");
  68.     return;
  69.     }
  70.     action = m_item->mi_data;
  71.     if (txt.x > 5)
  72.     add_to_letter(rite('\n'));  /* flush line for him */
  73.  
  74.     if (!msg_cnt && (action == INC || action == INC_HDR || action == FWD_MSG)) {
  75.     print("No messages to include");
  76.     return;
  77.     }
  78.     buf[0] = *escape;
  79.     switch(action) {
  80.     case EDIT_IT  : (void) strcpy(p, "v");
  81.     when PAGE     : (void) strcpy(p, "p");
  82.     when INC      : (void) strcpy(p, "i");
  83.     when INC_HDR  : (void) strcpy(p, "H");
  84.     when ALL_HDR  : (void) strcpy(p, "h");
  85.     when SUBJECT  : (void) strcpy(p, "s");
  86.     when TO_LIST  : (void) strcpy(p, "t");
  87.     when CC_LIST  : (void) strcpy(p, "c");
  88.     when BC_LIST  : (void) strcpy(p, "b");
  89.     when FWD_MSG  : (void) strcpy(p, "f");
  90.     when SIGN_IT  : (void) strcpy(p, "S");
  91.     when NO_SIGN  : (void) strcpy(p, "S!");
  92.     when FORT     : (void) strcpy(p, "F");
  93.     when NO_FORT  : (void) strcpy(p, "F!");
  94.     when ERASE    : (void) strcpy(p, "E");
  95.     when ABORT    : (void) strcpy(p, "q");
  96.     when SEND     : finish_up_letter(); return;
  97.     otherwise     : (void) strcpy(p, "?");
  98.     }
  99.     add_to_letter(buf);
  100. }
  101.