home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume11 / mush5.7 / part01 / hdr_procs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-09-16  |  3.9 KB  |  155 lines

  1. /* @(#)hdr_procs.c    (c) copyright    10/18/86 (Dan Heller) */
  2.  
  3. /* hdr_procs.c  -- panel item procedures for the message hdrs */
  4. #include "mush.h"
  5.  
  6. /* which message headers are to be displayed */
  7. do_hdr(foo, value, event)
  8. Panel_item foo;
  9. int value;
  10. struct inputevent *event;
  11. {
  12.     register char *argv[3];
  13.     argv[2] = NULL;
  14.     argv[0] = "headers";
  15.  
  16.     if (!msg_cnt) {
  17.     print("No Mail.");
  18.     return;
  19.     }
  20.     if (!value || event->ie_code == MS_LEFT)
  21.     argv[1] = (foo == next_scr)? "+": "-";
  22.     else
  23.     argv[1] = (foo == next_scr)? "-": "+";
  24.  
  25.     panel_set(foo, PANEL_VALUE, 0, 0);
  26.     (void) do_hdrs(2, argv, NULL);
  27. }
  28.  
  29. /* alters display of the message headers */
  30. display_hdrs(foo, value, event)
  31. Panel_item foo;
  32. int value;
  33. struct inputevent *event;
  34. {
  35.     int show_deleted = !!do_set(set_options, "show_deleted");
  36.  
  37.     if (event->ie_code != MS_LEFT) {
  38.     switch(value) {
  39.         case 0 : case 1: {
  40.         char buf[25];
  41.         show_deleted = !value;
  42.         (void) cmd_line(sprintf(buf, "%sset show_deleted",
  43.             (value == 0)? "" : "un"), msg_list);
  44.         }
  45.         when 2 :
  46.         turnoff(glob_flags, REV_VIDEO);
  47.         when 3 :
  48.         turnon(glob_flags, REV_VIDEO);
  49.         when 4:
  50.         return help(hdr_panel_sw->ts_windowfd, "headers", tool_help);
  51.     }
  52.     (void) do_hdrs(0, DUBL_NULL, NULL);
  53.     }
  54.     print("%sShow Deleted headers, \"Current Message\" header in %s",
  55.             (show_deleted)? NO_STRING: "Don't ",
  56.             (ison(glob_flags, REV_VIDEO))? "reverse": "boldface");
  57. }
  58.  
  59. p_set_opts(item, value, event)
  60. Panel_item item;
  61. int value;
  62. struct inputevent *event;
  63. {
  64.     static char   *p, *oldp;
  65.     static char   buf[8];
  66.  
  67.     if (event->ie_code == MS_LEFT)
  68.     value = 0;
  69.     if (value && (value != 3 || value != 2)
  70.           && panel_get(input_item, PANEL_SHOW_ITEM)) {
  71.     print("Need value for %s first!", oldp);
  72.     return;
  73.     } else if (!value && ison(glob_flags, IS_GETTING)) {
  74.     print("Finish editing letter first");
  75.     return;
  76.     } else if (item == option_item) {
  77.     if (!value) /* first menu item */
  78.         view_options();
  79.     else if (value == 1)
  80.         set_fkeys();
  81.     else
  82.         (void) help(panel_sw->ts_windowfd, "opts", tool_help);
  83.     return;
  84.     } else if (item == ignore_item)
  85.     if (value == 3)
  86.         return help(hdr_panel_sw->ts_windowfd, "ignore", tool_help);
  87.     else
  88.         oldp = p = strcpy(buf, "ignore");
  89.     else if (item == alias_item)
  90.     if (value == 3)
  91.         return help(panel_sw->ts_windowfd, "aliases", tool_help);
  92.     else
  93.         oldp = p = strcpy(buf, "alias");
  94.     if (value) {
  95.     char tmp[30];
  96.     (void) sprintf(tmp, "%set %s:", (value == 1)? "S": "Uns", p);
  97.     panel_set(input_item,
  98.         PANEL_LABEL_STRING, tmp,
  99.         PANEL_MENU_CHOICE_STRINGS, "Abort", 0,
  100.         PANEL_SHOW_ITEM, TRUE,
  101.         0);
  102.     oldp = p;
  103.     return;
  104.     }
  105.     panel_set(item, PANEL_VALUE, 0, 0);
  106.     do_clear();
  107.     pw_text(msg_win, l_width(DEFAULT), 15, PIX_SRC, fonts[LARGE], p);
  108.     if (item != ignore_item)
  109.     pw_text(msg_win, 30*l_width(DEFAULT),15,PIX_SRC,fonts[LARGE],"Values");
  110.     (void) cmd_line(p, msg_list);
  111. }
  112.  
  113. msg_num_done(item, event)
  114. Panel_item item;
  115. struct inputevent *event;
  116. {
  117.     char buf[82];
  118.     register char *p;
  119.     int n;
  120.  
  121.     if (event->ie_code != '\n' && event->ie_code != '\r')
  122.     return help(hdr_panel_sw->ts_windowfd, "message range", tool_help);
  123.     (void) sprintf(buf, "headers %s", (p = (char *)panel_get_value(item)));
  124.     panel_set(item, PANEL_VALUE, NO_STRING, 0);
  125.     if (!(n = chk_msg(p)))
  126.     return;
  127.     current_msg = --n;
  128.     (void) cmd_line(buf, msg_list);
  129.     display_msg(n, (long)0);
  130. }
  131.  
  132. do_sort(item, value, event)
  133. Panel_item item;
  134. int value;
  135. struct inputevent *event;
  136. {
  137.     register char *argv[3];
  138.     argv[0] = "sort";
  139.     argv[2] = NULL;
  140.     if (event->ie_code == MS_LEFT)
  141.     argv[1] = do_set(set_options, "sort");
  142.     else switch(value) {
  143.     case 0: argv[1] = "d";
  144.     when 1: argv[1] = "a";
  145.     when 2: argv[1] = "s";
  146.     when 3: argv[1] = "S";
  147.     when 4: argv[1] = "R";
  148.     when 5: argv[1] = "-?";
  149.     }
  150.     (void) sort(2, argv, NULL);
  151.     if (value != 5)
  152.     (void) do_hdrs(0, DUBL_NULL, NULL);
  153.     panel_set(item, PANEL_VALUE, 0, 0);
  154. }
  155.