home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / mush6.0 / part03 / main_panel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-12  |  9.0 KB  |  319 lines

  1. /* "@(#)main_panel.c    (c) copyright    10/18/86 (Dan Heller) */
  2.  
  3. #include "mush.h"
  4.  
  5. make_main_panel(choice_args, button_args)
  6. char **choice_args, **button_args;
  7. {
  8.     /* main panel stuff: */
  9.     panel_sw = panel_create(tool,
  10.     PANEL_HEIGHT, 80,
  11.     0);
  12.     main_panel = (Panel)panel_sw->ts_data;
  13.  
  14.     quit_item = panel_create_item(main_panel, PANEL_CHOICE,
  15.     PANEL_ATTRIBUTE_LIST,         choice_args,
  16.     PANEL_ITEM_X,            4,
  17.     PANEL_ITEM_Y,            4,
  18.     PANEL_LABEL_IMAGE,
  19.         panel_button_image(main_panel, "Done", 6, fonts[LARGE]),
  20.     PANEL_MENU_TITLE_STRING,     "Done",
  21.     PANEL_CHOICE_STRINGS,         "Close to Icon",
  22.                     "Quit Tool",
  23.                     "Help",
  24.                     0,
  25.     PANEL_NOTIFY_PROC,         toolquit,
  26.     0);
  27.  
  28.     help_item = panel_create_item(main_panel, PANEL_CHOICE,
  29.     PANEL_ATTRIBUTE_LIST,         choice_args,
  30.     PANEL_ITEM_X,            79,
  31.     PANEL_ITEM_Y,            4,
  32.     PANEL_LABEL_IMAGE,
  33.         panel_button_image(main_panel, "Help", 4, fonts[LARGE]),
  34.     PANEL_MENU_TITLE_STRING,     "Available Help",
  35.     PANEL_CHOICE_STRINGS,         "General",
  36.                     "Help with \"help\"",
  37.                     "The Mouse",
  38.                     "Windows",
  39.                     "Function Keys",
  40.                     "Message headers",
  41.                     "Message lists",
  42.                     0,
  43.     PANEL_NOTIFY_PROC,         do_help,
  44.     0);
  45.  
  46.     read_item = panel_create_item(main_panel, PANEL_CHOICE,
  47.     PANEL_ATTRIBUTE_LIST,         choice_args,
  48.     PANEL_ITEM_X,            136,
  49.     PANEL_ITEM_Y,            4,
  50.     PANEL_LABEL_IMAGE,
  51.         panel_button_image(main_panel, "Next", 4, fonts[LARGE]),
  52.     PANEL_MENU_TITLE_STRING,     "Next Message",
  53.     PANEL_CHOICE_STRINGS,         "Read Next", "Help", 0,
  54.     PANEL_NOTIFY_PROC,         read_mail,
  55.     0);
  56.  
  57.     respond_item = panel_create_item(main_panel, PANEL_CHOICE,
  58.     PANEL_ATTRIBUTE_LIST,         choice_args,
  59.     PANEL_ITEM_X,            193,
  60.     PANEL_ITEM_Y,            4,
  61.     PANEL_LABEL_IMAGE,
  62.         panel_button_image(main_panel, "Reply", 5, fonts[LARGE]),
  63.     PANEL_MENU_TITLE_STRING,     "Respond to Current Message",
  64.     PANEL_CHOICE_STRINGS,         "Sender Only",
  65.                     "Sender Only (include msg)",
  66.                     "All Recipients",
  67.                     "All Recipients (include msg)",
  68.                     "Help", 0,
  69.     PANEL_NOTIFY_PROC,         respond_mail,
  70.     0);
  71.  
  72.     delete_item = panel_create_item(main_panel, PANEL_CHOICE,
  73.     PANEL_ATTRIBUTE_LIST,         choice_args,
  74.     PANEL_ITEM_X,            259,
  75.     PANEL_ITEM_Y,            4,
  76.     PANEL_LABEL_IMAGE,
  77.         panel_button_image(main_panel, "Delete", 6, fonts[LARGE]),
  78.     PANEL_MENU_TITLE_STRING,     "Delete/Undelete Messages",
  79.     PANEL_CHOICE_STRINGS,         "Delete",
  80.                     "Undelete",
  81.                     "Help", 0,
  82.     PANEL_NOTIFY_PROC,         delete_mail,
  83.     0);
  84.  
  85.     sort_item = panel_create_item(main_panel, PANEL_CHOICE,
  86.     PANEL_ATTRIBUTE_LIST,         choice_args,
  87.     PANEL_ITEM_X,            334,
  88.     PANEL_ITEM_Y,            4,
  89.     PANEL_LABEL_IMAGE,
  90.         panel_button_image(main_panel, "Sort", 4, fonts[LARGE]),
  91.     PANEL_MENU_TITLE_STRING,     "Sort Messages",
  92.     PANEL_CHOICE_STRINGS,         "By Date",
  93.                     "By Author",
  94.                     "By Subject",
  95.                     "By Subject (ignore Re:)",
  96.                     "By Status",
  97.                     "Help", 0,
  98.     PANEL_NOTIFY_PROC,         do_sort,
  99.     0);
  100.  
  101.     option_item = panel_create_item(main_panel, PANEL_CHOICE,
  102.     PANEL_ATTRIBUTE_LIST,         choice_args,
  103.     PANEL_ITEM_X,            391,
  104.     PANEL_ITEM_Y,            4,
  105.     PANEL_LABEL_IMAGE,
  106.         panel_button_image(main_panel, "Opts", 4, fonts[LARGE]),
  107.     PANEL_MENU_TITLE_STRING,     "Mail Options",
  108.     PANEL_CHOICE_STRINGS,         "Set Options", "Function keys",
  109.                     "Help", 0,
  110.     PANEL_NOTIFY_PROC,         p_set_opts,
  111.     0);
  112.  
  113.     alias_item = panel_create_item(main_panel, PANEL_CHOICE,
  114.     PANEL_ATTRIBUTE_LIST,         choice_args,
  115.     PANEL_ITEM_X,            448,
  116.     PANEL_ITEM_Y,            4,
  117.     PANEL_LABEL_IMAGE,
  118.         panel_button_image(main_panel, "Aliases", 7, fonts[LARGE]),
  119.     PANEL_MENU_TITLE_STRING,     "Mail Aliases",
  120.     PANEL_CHOICE_STRINGS,         "Current Aliases",
  121.                     "Add/Change alias",
  122.                     "Unalias", "Help", 0,
  123.     PANEL_NOTIFY_PROC,         p_set_opts,
  124.     0);
  125.  
  126.     comp_item = panel_create_item(main_panel, PANEL_CHOICE,
  127.     PANEL_ATTRIBUTE_LIST,         choice_args,
  128.     PANEL_ITEM_X,            532,
  129.     PANEL_ITEM_Y,            4,
  130.     PANEL_LABEL_IMAGE,
  131.         panel_button_image(main_panel, "Compose", 8, fonts[LARGE]),
  132.     PANEL_MENU_TITLE_STRING,     "Compose a letter",
  133.     PANEL_CHOICE_STRINGS,         "Help", 0,
  134.     PANEL_NOTIFY_PROC,         do_compose,
  135.     0);
  136.  
  137.     file_item = panel_create_item(main_panel, PANEL_TEXT,
  138.     PANEL_ATTRIBUTE_LIST,         choice_args,
  139.     PANEL_ITEM_X,            4,
  140.     PANEL_ITEM_Y,            30,
  141.     PANEL_LABEL_FONT,         fonts[DEFAULT],
  142.     PANEL_SHOW_MENU,        TRUE,
  143.     PANEL_LABEL_STRING,         "filename:",
  144.     PANEL_MENU_CHOICE_STRINGS,    "Save message without message header",0,
  145.     PANEL_VALUE_DISPLAY_LENGTH,     35,
  146.     PANEL_NOTIFY_STRING,         "\n\r",
  147.     PANEL_NOTIFY_PROC,         file_dir,
  148.     0);
  149.  
  150.     input_item = panel_create_item(main_panel, PANEL_TEXT,
  151.     PANEL_ATTRIBUTE_LIST,         choice_args,
  152.     PANEL_ITEM_X,            373,
  153.     PANEL_ITEM_Y,            30,
  154.     PANEL_SHOW_ITEM,         FALSE,
  155.     PANEL_SHOW_MENU,         TRUE,
  156.     PANEL_LABEL_FONT,         fonts[DEFAULT],
  157.     PANEL_VALUE_DISPLAY_LENGTH,     20,
  158.     PANEL_NOTIFY_STRING,         "\n\r",
  159.     PANEL_NOTIFY_PROC,         text_done,
  160.     0);
  161.  
  162.     print_item = panel_create_item(main_panel, PANEL_CHOICE,
  163.     PANEL_ATTRIBUTE_LIST,         choice_args,
  164.     PANEL_ITEM_X,            4,
  165.     PANEL_ITEM_Y,            50,
  166.     PANEL_LABEL_IMAGE,
  167.         panel_button_image(main_panel, "Printer", 7, fonts[LARGE]),
  168.     PANEL_MENU_TITLE_STRING,     "Printing Messages",
  169.     PANEL_CHOICE_STRINGS,         "Help", 0,
  170.     PANEL_NOTIFY_PROC,         do_lpr,
  171.     0);
  172.  
  173.     folder_item = panel_create_item(main_panel, PANEL_CHOICE,
  174.     PANEL_ATTRIBUTE_LIST,         choice_args,
  175.     PANEL_ITEM_X,            88,
  176.     PANEL_ITEM_Y,            50,
  177.     PANEL_LABEL_IMAGE,
  178.         panel_button_image(main_panel, "folder", 6, fonts[LARGE]),
  179.     PANEL_MENU_TITLE_STRING,     "Change folder",
  180.     PANEL_CHOICE_STRINGS,         "System Mailbox",
  181.                     "Main Mailbox",
  182.                     "Last Accessed Folder",
  183.                     0,
  184.     PANEL_NOTIFY_PROC,         do_file_dir,
  185.     0);
  186.  
  187.     add_folder_to_menu(folder_item, 3);
  188.  
  189.     save_item = panel_create_item(main_panel, PANEL_CHOICE,
  190.     PANEL_ATTRIBUTE_LIST,         choice_args,
  191.     PANEL_ITEM_X,            163,
  192.     PANEL_ITEM_Y,            50,
  193.     PANEL_LABEL_IMAGE,
  194.         panel_button_image(main_panel, "Save", 4, fonts[LARGE]),
  195.     PANEL_MENU_TITLE_STRING,     "Save messages",
  196.     PANEL_CHOICE_STRINGS,         "~/mbox", 0,
  197.     PANEL_NOTIFY_PROC,         do_file_dir,
  198.     0);
  199.  
  200.     add_folder_to_menu(save_item, 1);
  201.  
  202.     cd_item = panel_create_item(main_panel, PANEL_CHOICE,
  203.     PANEL_ATTRIBUTE_LIST,         choice_args,
  204.     PANEL_ITEM_X,            220,
  205.     PANEL_ITEM_Y,            50,
  206.     PANEL_LABEL_IMAGE,
  207.         panel_button_image(main_panel, "chdir", 5, fonts[LARGE]),
  208.     PANEL_MENU_TITLE_STRING,     "Change Working Directory",
  209.     PANEL_CHOICE_STRINGS,         "Print Current directory",
  210.                     "HOME directory",
  211.                     "Private Mail directory.",
  212.                     "Help", 0,
  213.     PANEL_NOTIFY_PROC,         do_file_dir,
  214.     0);
  215.  
  216.     update_item = panel_create_item(main_panel, PANEL_CHOICE,
  217.     PANEL_ATTRIBUTE_LIST,         choice_args,
  218.     PANEL_ITEM_X,            286,
  219.     PANEL_ITEM_Y,            50,
  220.     PANEL_LABEL_IMAGE,
  221.         panel_button_image(main_panel, "Update", 6, fonts[LARGE]),
  222.     PANEL_MENU_TITLE_STRING,     "Updating folders",
  223.     PANEL_CHOICE_STRINGS,         "Help", 0,
  224.     PANEL_NOTIFY_PROC,         do_update,
  225.     0);
  226.  
  227.     send_item = panel_create_item(main_panel, PANEL_CHOICE,
  228.     PANEL_ATTRIBUTE_LIST,         choice_args,
  229.     PANEL_ITEM_X,            361,
  230.     PANEL_ITEM_Y,            50,
  231.     PANEL_SHOW_ITEM,         FALSE,
  232.     PANEL_LABEL_IMAGE,
  233.         panel_button_image(main_panel, "Send", 6, fonts[LARGE]),
  234.     PANEL_MENU_TITLE_STRING,     "Send Letter",
  235.     PANEL_CHOICE_STRINGS,         "Help", 0,
  236.     PANEL_NOTIFY_PROC,         do_send,
  237.     0);
  238.  
  239.     edit_item = panel_create_item(main_panel, PANEL_CHOICE,
  240.     PANEL_ATTRIBUTE_LIST,         choice_args,
  241.     PANEL_ITEM_X,            436,
  242.     PANEL_ITEM_Y,            50,
  243.     PANEL_SHOW_ITEM,         FALSE,
  244.     PANEL_LABEL_IMAGE,
  245.         panel_button_image(main_panel, "Editor", 4, fonts[LARGE]),
  246.     PANEL_MENU_TITLE_STRING,     "Editing",
  247.     PANEL_CHOICE_STRINGS,         "Help", 0,
  248.     PANEL_NOTIFY_PROC,         do_edit,
  249.     0);
  250.  
  251.     abort_item = panel_create_item(main_panel, PANEL_BUTTON,
  252.     PANEL_ATTRIBUTE_LIST,         button_args,
  253.     PANEL_ITEM_X,            511,
  254.     PANEL_ITEM_Y,            50,
  255.     PANEL_SHOW_ITEM,         FALSE,
  256.     PANEL_LABEL_IMAGE,
  257.         panel_button_image(main_panel, "Abort", 5, fonts[LARGE]),
  258.     PANEL_NOTIFY_PROC,         abort_mail,
  259.     0);
  260.  
  261.     font_item = panel_create_item(main_panel, PANEL_CHOICE,
  262.     PANEL_ATTRIBUTE_LIST,         choice_args,
  263.     PANEL_ITEM_X,            577,
  264.     PANEL_ITEM_Y,            50,
  265.     PANEL_LABEL_IMAGE,
  266.         panel_button_image(main_panel, "Fonts", 5, fonts[LARGE]),
  267.     PANEL_MENU_TITLE_STRING,     "Fonts",
  268.     PANEL_SHOW_MENU_MARK,         TRUE,
  269.     PANEL_CHOICE_FONTS,         fonts[0], fonts[1], fonts[2], 0,
  270.     PANEL_CHOICE_STRINGS,         "Default", "Small", "Large", 0,
  271.     PANEL_NOTIFY_PROC,         change_font,
  272.     0);
  273. }
  274.  
  275. /*
  276.  * Open the user's mail folder (either user set or default path) and find all
  277.  * the files (assumed to be mail folders) and add them to the menu list of
  278.  * folders to use.
  279.  */
  280. add_folder_to_menu(item, n)
  281. struct panel_item *item;
  282. register int       n;
  283. {
  284.     register FILE     *pp = NULL_FILE;
  285.     register char    *p, *tmp = NULL;
  286.     int            x = 0;
  287.     char         buf[128], path[128];
  288.  
  289.     if (!(p = do_set(set_options, "folder")) || !*p)
  290.     p = DEF_FOLDER;
  291.     if (p) {
  292.     tmp = getpath(p, &x);
  293.     if (x == -1) {
  294.         if (errno != ENOENT)
  295.         print("%s: %s\n", p, tmp);
  296.         tmp = NULL;
  297.     }
  298.     }
  299.     if (p = tmp) {
  300.     p = sprintf(buf, "%s %s", LS_COMMAND, p);
  301.     if (!(pp = popen(buf, "r")))
  302.         error(buf);
  303.     else {
  304.         *path = '+';
  305.         while (fgets(path+1, 128, pp)) {
  306.         struct stat s_buf;
  307.         if (p = index(path+1, '\n'))
  308.             *p = 0;
  309.         (void) sprintf(buf, "%s/%s", tmp, path+1);
  310.         if (stat(buf, &s_buf) || s_buf.st_mode & S_IFDIR)
  311.             continue;
  312.         panel_set(item, PANEL_CHOICE_STRING, n++, path, 0);
  313.         }
  314.         pclose(pp);
  315.     }
  316.     }
  317.     panel_set(item, PANEL_CHOICE_STRING, n, "Help", 0);
  318. }
  319.