home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / mush6.0 / part02 / hdr_procs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-12  |  4.1 KB  |  164 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.     u_long bang = ison(glob_flags, IGN_BANG);
  67.  
  68.     if (event->ie_code == MS_LEFT)
  69.     value = 0;
  70.     if (value && (value != 3 || value != 2)
  71.           && panel_get(input_item, PANEL_SHOW_ITEM)) {
  72.     print("Need value for %s first!", oldp);
  73.     return;
  74.     } else if (!value && ison(glob_flags, IS_GETTING)) {
  75.     print("Finish editing letter first");
  76.     return;
  77.     } else if (item == option_item) {
  78.     if (!value) /* first menu item */
  79.         view_options();
  80.     else if (value == 1)
  81.         set_fkeys();
  82.     else
  83.         (void) help(panel_sw->ts_windowfd, "opts", tool_help);
  84.     return;
  85.     } else if (item == ignore_item)
  86.     if (value == 3)
  87.         return help(hdr_panel_sw->ts_windowfd, "ignore", tool_help);
  88.     else
  89.         oldp = p = strcpy(buf, "ignore");
  90.     else if (item == alias_item)
  91.     if (value == 3)
  92.         return help(panel_sw->ts_windowfd, "aliases", tool_help);
  93.     else
  94.         oldp = p = strcpy(buf, "alias");
  95.     if (value) {
  96.     char tmp[30];
  97.     (void) sprintf(tmp, "%set %s:", (value == 1)? "S": "Uns", p);
  98.     panel_set(input_item,
  99.         PANEL_LABEL_STRING, tmp,
  100.         PANEL_MENU_CHOICE_STRINGS, "Abort", 0,
  101.         PANEL_SHOW_ITEM, TRUE,
  102.         0);
  103.     oldp = p;
  104.     return;
  105.     }
  106.     panel_set(item, PANEL_VALUE, 0, 0);
  107.     do_clear();
  108.     pw_text(msg_win, l_width(DEFAULT), 15, PIX_SRC, fonts[LARGE], p);
  109.     if (item != ignore_item)
  110.     pw_text(msg_win, 30*l_width(DEFAULT),15,PIX_SRC,fonts[LARGE],"Values");
  111.     turnon(glob_flags, IGN_BANG);
  112.     (void) cmd_line(p, msg_list);
  113.     if (!bang)
  114.     turnoff(glob_flags, IGN_BANG);
  115. }
  116.  
  117. msg_num_done(item, event)
  118. Panel_item item;
  119. struct inputevent *event;
  120. {
  121.     char buf[82];
  122.     u_long bang = ison(glob_flags, IGN_BANG);
  123.     register char *p;
  124.     int n;
  125.  
  126.     if (event->ie_code != '\n' && event->ie_code != '\r')
  127.     return help(hdr_panel_sw->ts_windowfd, "message range", tool_help);
  128.     (void) sprintf(buf, "headers %s", (p = (char *)panel_get_value(item)));
  129.     panel_set(item, PANEL_VALUE, NO_STRING, 0);
  130.     if (!(n = chk_msg(p)))
  131.     return;
  132.     current_msg = --n;
  133.     turnon(glob_flags, IGN_BANG);
  134.     (void) cmd_line(buf, msg_list);
  135.     if (!bang)
  136.     turnoff(glob_flags, IGN_BANG);
  137.     display_msg(n, (long)0);
  138. }
  139.  
  140. do_sort(item, value, event)
  141. Panel_item item;
  142. int value;
  143. struct inputevent *event;
  144. {
  145.     register char *argv[3];
  146.     argv[0] = "sort";
  147.     argv[2] = NULL;
  148.     if (event->ie_code == MS_LEFT)
  149.     argv[1] = do_set(set_options, "sort");
  150.     else switch(value) {
  151.     case 0: argv[1] = "d";
  152.     when 1: argv[1] = "a";
  153.     when 2: argv[1] = "s";
  154.     when 3: argv[1] = "S";
  155.     when 4: argv[1] = "R";
  156.     when 5: help(hdr_panel_sw->ts_windowfd, "sort", tool_help);
  157.     }
  158.     if (value != 5) {
  159.     (void) sort(2, argv, NULL);
  160.     (void) do_hdrs(0, DUBL_NULL, NULL);
  161.     }
  162.     panel_set(item, PANEL_VALUE, 0, 0);
  163. }
  164.