home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / jove-4.16-src.tgz / tar.out / bsd / jove / xjove / jovewindows.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  206 lines

  1. /***************************************************************************
  2.  * This program is Copyright (C) 1991-1996 by C.H.Lindsey, University of   *
  3.  * Manchester.  (X)JOVETOOL is provided to you without charge, and with no *
  4.  * warranty.  You may give away copies of (X)JOVETOOL, including sources,  *
  5.  * provided that this notice is included in all the files, except insofar  *
  6.  * as a more specific copyright notices attaches to the file (x)jovetool.c *
  7.  ***************************************************************************/
  8.  
  9. #include <suntool/sunview.h>
  10. #include <suntool/tty.h>
  11. #include <stdio.h>
  12. #include <string.h>
  13. #include "exts.h"
  14. #include "jovewindows.h"
  15.  
  16. private char command_prefix[] = "\033X";    /* ESC-X */
  17. #define command_prefix_length    (sizeof(command_prefix) - 1)
  18.  
  19. Menu    main_menu;
  20.  
  21. private Menu
  22.     file_menu,
  23.     mode_menu,
  24.     help_menu,
  25.     move_menu,
  26.     bind_menu,
  27.     macro_menu,
  28.     buffer_menu,
  29.     window_menu,
  30.     mark_menu,
  31.     edit_menu,
  32.     directory_menu,
  33.     compile_menu,
  34.     format_menu,
  35.     search_menu,
  36.     process_menu,
  37.     abbrev_menu,
  38.     misc_menu,
  39.     variables_menu,
  40.     another_help_menu,
  41.     commands_menu,
  42.     var_files_menu,
  43.     var_modes_menu,
  44.     var_move_menu,
  45.     var_search_menu,
  46.     var_process_menu,
  47.     var_compile_menu,
  48.     var_format_menu,
  49.     var_misc_menu,
  50.     var_abbrev_menu,
  51.     empty_menu,
  52.     on_off_menu;
  53.  
  54. private Menu_item    empty_menu_item;
  55.  
  56. private int
  57.     describing,
  58.     printing;
  59.  
  60. private caddr_t
  61. print_client_data(m, mi)
  62.     Menu        m;
  63.     Menu_item    mi;
  64. {    char    *menu_string;
  65.  
  66.     menu_string = (char *)menu_get(mi, MENU_CLIENT_DATA);
  67.     ttysw_input(ttysw, menu_string, strlen(menu_string));
  68.     /* ??? What value ought to be returned?  This is a guess -- DHR */
  69.     return menu_get(mi, MENU_VALUE);
  70. }
  71.  
  72. private caddr_t
  73. main_notify(m, mi)
  74.     Menu        m;
  75.     Menu_item    mi;
  76. {
  77.     ttysw_input (ttysw, command_prefix, command_prefix_length);
  78.     print_client_data(m, mi);
  79.     ttysw_input (ttysw, "\n", 1);
  80.     /* ??? What value ought to be returned?  This is a guess -- DHR */
  81.     return NULL;
  82. }
  83.  
  84. private caddr_t
  85. sp_printit(m, mi)
  86.     Menu        m;
  87.     Menu_item    mi;
  88. {    char    *menu_string;
  89.  
  90.     menu_string = (char *)menu_get(mi, MENU_CLIENT_DATA);
  91.     if (mi != empty_menu_item)
  92.         ttysw_input(ttysw, " ", 1);
  93.     ttysw_input(ttysw, menu_string, strlen(menu_string));
  94.     /* ??? What value ought to be returned?  This is a guess -- DHR */
  95.     return menu_get(mi, MENU_VALUE);
  96. }
  97.  
  98. private Menu_item
  99. commands_proc(item, operation)
  100.     Menu_item    item;
  101.     Menu_generate    operation;
  102. {
  103.     return commands_menu;
  104. }
  105.  
  106. #ifdef    NEVER    /* ??? seems to be unused */
  107. Menu_item
  108. var_proc(item, operation, menu)
  109.     Menu_item    item;
  110.     Menu_generate    operation;
  111.     Menu        menu;
  112. {
  113.     switch (operation) {
  114.         case MENU_DISPLAY:
  115.         if (!describing)
  116.             menu_set(item, MENU_PULLRIGHT, menu, 0);
  117.         break;
  118.         case MENU_DISPLAY_DONE:
  119.         menu_set(item, MENU_PULLRIGHT, 0, 0);
  120.         break;
  121.         case MENU_NOTIFY:
  122.         break;
  123.         case MENU_NOTIFY_DONE:
  124.         break;
  125.     }
  126.     return item;
  127. }
  128. #endif
  129.  
  130. private Menu_item
  131. on_off_proc(item, operation)
  132.     Menu_item    item;
  133.     Menu_generate    operation;
  134. {
  135.     switch (operation) {
  136.         case MENU_DISPLAY:
  137.         if (!describing & !printing) {
  138.             menu_set(item, MENU_PULLRIGHT, on_off_menu, 0);
  139.         } else {
  140.             menu_set(item, MENU_PULLRIGHT, 0, 0);
  141.         }
  142.         break;
  143.         case MENU_DISPLAY_DONE:
  144.         case MENU_NOTIFY:
  145.         case MENU_NOTIFY_DONE:
  146.         break;
  147.     }
  148.     return item;
  149. }
  150.  
  151. private Menu
  152. do_set_proc(mi, operation, menu)
  153.     Menu_item    mi;
  154.     Menu_generate    operation;
  155.     Menu        menu;
  156. {
  157.     static Menu displayed;
  158.  
  159.     if (!describing) {
  160.         switch (operation) {
  161.             case MENU_DISPLAY:
  162.                 if (!strcmp(menu_get(mi, MENU_CLIENT_DATA), "print"))
  163.                     printing = 1;
  164.                 displayed = menu;
  165.                 menu_set(menu, MENU_SELECTED, 0, 0);
  166.                 break;
  167.             case MENU_DISPLAY_DONE:
  168.                 printing = 0;
  169.                 break;
  170.             case MENU_NOTIFY:
  171.             case MENU_NOTIFY_DONE:
  172.                 if (!(displayed == menu) || !menu_get(menu, MENU_SELECTED)) {
  173.                     displayed = NULL;
  174.                     return empty_menu;
  175.                 }
  176.                 displayed = NULL;
  177.                 break;
  178.         }
  179.         return menu;
  180.     } else return empty_menu;
  181. }
  182.  
  183. private Menu
  184. do_describing_proc(m, operation)
  185.     Menu        m;
  186.     Menu_generate    operation;
  187. {
  188.     switch (operation) {
  189.         case MENU_DISPLAY:
  190.         describing = 1;
  191.         break;
  192.         case MENU_DISPLAY_DONE:
  193.         describing = 0;
  194.         break;
  195.         case MENU_NOTIFY:
  196.         describing = 1;
  197.         break;
  198.         case MENU_NOTIFY_DONE:
  199.         describing = 0;
  200.         break;
  201.     }
  202.     return m;
  203. }
  204.  
  205. #include "jovemenu.c"
  206.