home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / programming / gnusmalltalk / examples / win.c < prev   
C/C++ Source or Header  |  1992-02-15  |  16KB  |  594 lines

  1. /***********************************************************************
  2.  *
  3.  *    This file is used in conjunction with suntool.st to provide an example
  4.  *    interface to the SunTool/SunView windowing system.  You link this
  5.  *    file into the GNU Smalltalk image, and uncomment a #define in mstcint.c
  6.  *    called SUN_WIN_HACKS.  You then load in suntools.st into and you're
  7.  *    ready to go (assuming that you're using the CFuncs.st in this
  8.  *    directory). 
  9.  *
  10.  ***********************************************************************/
  11.  
  12. /***********************************************************************
  13.  *
  14.  * Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
  15.  * Written by Steve Byrne.
  16.  *
  17.  * This file is part of GNU Smalltalk.
  18.  *
  19.  * GNU Smalltalk is free software; you can redistribute it and/or modify it
  20.  * under the terms of the GNU General Public License as published by the Free
  21.  * Software Foundation; either version 1, or (at your option) any later 
  22.  * version.
  23.  * 
  24.  * GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
  25.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  26.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  27.  * more details.
  28.  * 
  29.  * You should have received a copy of the GNU General Public License along with
  30.  * GNU Smalltalk; see the file COPYING.  If not, write to the Free Software
  31.  * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  
  32.  *
  33.  ***********************************************************************/
  34.  
  35.  
  36.  
  37.  
  38. #include <stdio.h>
  39. #include <ctype.h>
  40. #include <suntool/sunview.h>
  41. #include <suntool/panel.h>
  42. #include <suntool/canvas.h>
  43. #include <suntool/window.h>
  44. #include <suntool/textsw.h>
  45. #include <suntool/panel.h>
  46. #include <suntool/walkmenu.h>
  47. #include <suntool/icon.h>
  48.  
  49. #if defined(__STDC__)
  50. #define ATTR_TAB(attr_name)  #attr_name, (caddr_t)(attr_name)
  51. #else
  52. #define ATTR_TAB(attr_name)  "attr_name", (caddr_t)(attr_name)
  53. #endif
  54.  
  55. int        windowLoop(), my_panel_set_value();
  56. caddr_t        my_panel_get_value(), lookupCAddr();
  57.  
  58. typedef struct addrEntryStruct {
  59.   char        *name;
  60.   caddr_t    addr;
  61. } *addrEntry;
  62.  
  63. struct addrEntryStruct cAddrs[] = {
  64.   ATTR_TAB(FRAME),
  65.  
  66.   ATTR_TAB(PANEL),
  67.   ATTR_TAB(PANEL_MESSAGE),
  68.   ATTR_TAB(PANEL_BUTTON),
  69.   ATTR_TAB(PANEL_CHOICE),
  70.   ATTR_TAB(PANEL_SLIDER),
  71.   ATTR_TAB(PANEL_TEXT),
  72. /*  ATTR_TAB(PANEL_TOGGLE), */
  73.   ATTR_TAB(PANEL_LINE),
  74.  
  75.   ATTR_TAB(PANEL_ITEM_X),
  76.   ATTR_TAB(PANEL_ITEM_X_GAP),
  77.   ATTR_TAB(PANEL_LABEL_X),
  78.   ATTR_TAB(PANEL_VALUE_X),
  79.   ATTR_TAB(PANEL_SLIDER_WIDTH),
  80.   ATTR_TAB(PANEL_WIDTH),
  81.   ATTR_TAB(PANEL_CHOICE_X),
  82.   ATTR_TAB(PANEL_MARK_X),
  83.   ATTR_TAB(PANEL_CHOICE_XS),
  84.   ATTR_TAB(PANEL_MARK_XS),
  85.   ATTR_TAB(PANEL_ITEM_Y),
  86.   ATTR_TAB(PANEL_ITEM_Y_GAP),
  87.   ATTR_TAB(PANEL_LABEL_Y),
  88.   ATTR_TAB(PANEL_VALUE_Y),
  89.   ATTR_TAB(PANEL_HEIGHT),
  90.   ATTR_TAB(PANEL_CHOICE_Y),
  91.   ATTR_TAB(PANEL_MARK_Y),
  92.   ATTR_TAB(PANEL_CHOICE_YS),
  93.   ATTR_TAB(PANEL_MARK_YS),
  94.   ATTR_TAB(PANEL_VALUE),
  95.   ATTR_TAB(PANEL_LABEL_DISPLAY_LENGTH),
  96.   ATTR_TAB(PANEL_VALUE_DISPLAY_LENGTH),
  97.   ATTR_TAB(PANEL_VALUE_STORED_LENGTH),
  98.   ATTR_TAB(PANEL_MIN_VALUE),
  99.   ATTR_TAB(PANEL_MAX_VALUE),
  100.   ATTR_TAB(PANEL_CHOICE_OFFSET),
  101.   ATTR_TAB(PANEL_TIMER_SECS),
  102.   ATTR_TAB(PANEL_TIMER_USECS),
  103.   ATTR_TAB(PANEL_MENU_CHOICE_VALUES),
  104.   ATTR_TAB(PANEL_VALUE_UNDERLINED),
  105.   ATTR_TAB(PANEL_ITEM_BOXED),
  106.   ATTR_TAB(PANEL_LABEL_BOLD),
  107.   ATTR_TAB(PANEL_CHOICES_BOLD),
  108.   ATTR_TAB(PANEL_SHOW_ITEM),
  109.   ATTR_TAB(PANEL_SHOW_VALUE),
  110.   ATTR_TAB(PANEL_SHOW_RANGE),
  111.   ATTR_TAB(PANEL_SHOW_MENU),
  112.   ATTR_TAB(PANEL_SHOW_MENU_MARK),
  113.   ATTR_TAB(PANEL_CHOOSE_ONE),
  114.   ATTR_TAB(PANEL_ADJUSTABLE),
  115.   ATTR_TAB(PANEL_BLINK_CARET),
  116.   ATTR_TAB(PANEL_ACCEPT_KEYSTROKE),
  117.   ATTR_TAB(PANEL_LABEL_SHADED),
  118.   ATTR_TAB(PANEL_TOGGLE_VALUE),
  119.   ATTR_TAB(PANEL_NOTIFY_LEVEL),
  120.   ATTR_TAB(PANEL_DISPLAY_LEVEL),
  121.   ATTR_TAB(PANEL_LAYOUT),
  122.   ATTR_TAB(PANEL_FEEDBACK),
  123.   ATTR_TAB(PANEL_PAINT),
  124.   ATTR_TAB(PANEL_MOUSE_STATE),
  125.   ATTR_TAB(PANEL_MASK_CHAR),
  126.   ATTR_TAB(PANEL_LABEL_STRING),
  127.   ATTR_TAB(PANEL_VALUE_STRING),
  128.   ATTR_TAB(PANEL_NOTIFY_STRING),
  129.   ATTR_TAB(PANEL_MENU_TITLE_STRING),
  130.   ATTR_TAB(PANEL_NAME),
  131.   ATTR_TAB(PANEL_CHOICE_STRINGS),
  132.   ATTR_TAB(PANEL_MENU_CHOICE_STRINGS),
  133.   ATTR_TAB(PANEL_CHOICE_STRING),
  134.   ATTR_TAB(PANEL_LABEL_IMAGE),
  135.   ATTR_TAB(PANEL_MENU_TITLE_IMAGE),
  136.   ATTR_TAB(PANEL_MENU_MARK_IMAGE),
  137.   ATTR_TAB(PANEL_MENU_NOMARK_IMAGE),
  138.   ATTR_TAB(PANEL_TYPE_IMAGE),
  139.   ATTR_TAB(PANEL_CHOICE_IMAGES),
  140.   ATTR_TAB(PANEL_MENU_CHOICE_IMAGES),
  141.   ATTR_TAB(PANEL_MARK_IMAGES),
  142.   ATTR_TAB(PANEL_NOMARK_IMAGES),
  143.   ATTR_TAB(PANEL_CHOICE_IMAGE),
  144.   ATTR_TAB(PANEL_MARK_IMAGE),
  145.   ATTR_TAB(PANEL_NOMARK_IMAGE),
  146.   ATTR_TAB(PANEL_LABEL_FONT),
  147.   ATTR_TAB(PANEL_VALUE_FONT),
  148.   ATTR_TAB(PANEL_MENU_TITLE_FONT),
  149.   ATTR_TAB(PANEL_FONT),
  150.   ATTR_TAB(PANEL_CHOICE_FONTS),
  151.   ATTR_TAB(PANEL_MENU_CHOICE_FONTS),
  152.   ATTR_TAB(PANEL_NOTIFY_PROC),
  153.   ATTR_TAB(PANEL_TIMER_PROC),
  154.   ATTR_TAB(PANEL_EVENT_PROC),
  155.   ATTR_TAB(PANEL_BACKGROUND_PROC),
  156.   ATTR_TAB(PANEL_ITEM_RECT),
  157.   ATTR_TAB(PANEL_PIXWIN),
  158.   ATTR_TAB(PANEL_CLIENT_DATA),
  159.   ATTR_TAB(PANEL_VERTICAL_SCROLLBAR),
  160.   ATTR_TAB(PANEL_HORIZONTAL_SCROLLBAR),
  161.   ATTR_TAB(PANEL_CURSOR),
  162.   ATTR_TAB(PANEL_CARET_ITEM),
  163.   ATTR_TAB(PANEL_FIRST_ITEM),
  164.   ATTR_TAB(PANEL_NEXT_ITEM),
  165.   ATTR_TAB(PANEL_PARENT_PANEL),
  166.  
  167.   ATTR_TAB(FRAME_CLOSED),
  168.   ATTR_TAB(FRAME_INHERIT_COLORS),
  169.   ATTR_TAB(FRAME_SHOW_LABEL),
  170.   ATTR_TAB(FRAME_SUBWINDOWS_ADJUSTABLE),
  171.   ATTR_TAB(FRAME_LABEL),
  172.   ATTR_TAB(FRAME_FOREGROUND_COLOR),
  173.   ATTR_TAB(FRAME_BACKGROUND_COLOR),
  174.   ATTR_TAB(FRAME_ICON),
  175.   ATTR_TAB(FRAME_CLOSED_X),
  176.   ATTR_TAB(FRAME_CLOSED_Y),
  177.   ATTR_TAB(FRAME_CLOSED_RECT),
  178.   ATTR_TAB(FRAME_CURRENT_RECT),
  179.   ATTR_TAB(FRAME_OPEN_RECT),
  180.   ATTR_TAB(FRAME_ARGS),
  181.   ATTR_TAB(FRAME_ARGC_PTR_ARGV),
  182.   ATTR_TAB(FRAME_CMDLINE_HELP_PROC),
  183.   ATTR_TAB(FRAME_BORDER_STYLE),
  184.   ATTR_TAB(FRAME_EMBOLDEN_LABEL),
  185.   ATTR_TAB(FRAME_NTH_WINDOW),
  186.   ATTR_TAB(FRAME_NTH_SUBWINDOW),
  187.   ATTR_TAB(FRAME_NTH_SUBFRAME),
  188.   ATTR_TAB(FRAME_DONE_PROC),
  189.   ATTR_TAB(FRAME_DEFAULT_DONE_PROC),
  190.   ATTR_TAB(FRAME_NO_CONFIRM),
  191.   ATTR_TAB(FRAME_NULL_ATTR),
  192.  
  193.   ATTR_TAB(CANVAS_PIXWIN),
  194.   ATTR_TAB(CANVAS_LEFT),
  195.   ATTR_TAB(CANVAS_TOP),
  196.   ATTR_TAB(CANVAS_WIDTH),
  197.   ATTR_TAB(CANVAS_HEIGHT),
  198.   ATTR_TAB(CANVAS_DEPTH),
  199.   ATTR_TAB(CANVAS_MARGIN),
  200.   ATTR_TAB(CANVAS_RETAINED),
  201.   ATTR_TAB(CANVAS_FIXED_IMAGE),
  202.   ATTR_TAB(CANVAS_REPAINT_PROC),
  203.   ATTR_TAB(CANVAS_RESIZE_PROC),
  204.   ATTR_TAB(CANVAS_AUTO_CLEAR),
  205.   ATTR_TAB(CANVAS_AUTO_EXPAND),
  206.   ATTR_TAB(CANVAS_AUTO_SHRINK),
  207.   ATTR_TAB(CANVAS_FAST_MONO),
  208.  
  209.   ATTR_TAB(WIN_ERROR_MSG),
  210.   ATTR_TAB(WIN_X),
  211.   ATTR_TAB(WIN_Y),
  212.   ATTR_TAB(WIN_RIGHT_OF),
  213.   ATTR_TAB(WIN_BELOW),
  214.   ATTR_TAB(WIN_WIDTH),
  215.   ATTR_TAB(WIN_HEIGHT),
  216.   ATTR_TAB(WIN_PERCENT_WIDTH),
  217.   ATTR_TAB(WIN_PERCENT_HEIGHT),
  218.   ATTR_TAB(WIN_COLUMNS),
  219.   ATTR_TAB(WIN_ROWS),
  220.   ATTR_TAB(WIN_RECT),
  221.   ATTR_TAB(WIN_SCREEN_RECT),
  222.   ATTR_TAB(WIN_FIT_HEIGHT),
  223.   ATTR_TAB(WIN_FIT_WIDTH),
  224.   ATTR_TAB(WIN_SHOW),
  225.   ATTR_TAB(WIN_MENU),
  226.   ATTR_TAB(WIN_CURSOR),
  227.   ATTR_TAB(WIN_HORIZONTAL_SCROLLBAR),
  228.   ATTR_TAB(WIN_VERTICAL_SCROLLBAR),
  229.   ATTR_TAB(WIN_EVENT_PROC),
  230.   ATTR_TAB(WIN_INPUT_DESIGNEE),
  231.   ATTR_TAB(WIN_GRAB_ALL_INPUT),
  232.   ATTR_TAB(WIN_KBD_INPUT_MASK),
  233.   ATTR_TAB(WIN_CONSUME_KBD_EVENT),
  234.   ATTR_TAB(WIN_IGNORE_KBD_EVENT),
  235.   ATTR_TAB(WIN_CONSUME_KBD_EVENTS),
  236.   ATTR_TAB(WIN_IGNORE_KBD_EVENTS),
  237.   ATTR_TAB(WIN_PICK_INPUT_MASK),
  238.   ATTR_TAB(WIN_CONSUME_PICK_EVENT),
  239.   ATTR_TAB(WIN_IGNORE_PICK_EVENT),
  240.   ATTR_TAB(WIN_CONSUME_PICK_EVENTS),
  241.   ATTR_TAB(WIN_IGNORE_PICK_EVENTS),
  242.   ATTR_TAB(WIN_FONT),
  243.   ATTR_TAB(WIN_TOP_MARGIN),
  244.   ATTR_TAB(WIN_BOTTOM_MARGIN),
  245.   ATTR_TAB(WIN_LEFT_MARGIN),
  246.   ATTR_TAB(WIN_RIGHT_MARGIN),
  247.   ATTR_TAB(WIN_ROW_HEIGHT),
  248.   ATTR_TAB(WIN_COLUMN_WIDTH),
  249.   ATTR_TAB(WIN_ROW_GAP),
  250.   ATTR_TAB(WIN_COLUMN_GAP),
  251.   ATTR_TAB(WIN_TYPE),
  252.   ATTR_TAB(WIN_OWNER),
  253.   ATTR_TAB(WIN_NAME),
  254.   ATTR_TAB(WIN_CLIENT_DATA),
  255.   ATTR_TAB(WIN_IMPL_DATA),
  256.   ATTR_TAB(WIN_FD),
  257.   ATTR_TAB(WIN_DEVICE_NAME),
  258.   ATTR_TAB(WIN_DEVICE_NUMBER),
  259.   ATTR_TAB(WIN_PIXWIN),
  260.   ATTR_TAB(WIN_MOUSE_XY),
  261.   ATTR_TAB(WIN_SHOW_UPDATES),
  262.   ATTR_TAB(WIN_OBJECT),
  263.   ATTR_TAB(WIN_GET_PROC),
  264.   ATTR_TAB(WIN_SET_PROC),
  265.   ATTR_TAB(WIN_PRESET_PROC),
  266.   ATTR_TAB(WIN_POSTSET_PROC),
  267.   ATTR_TAB(WIN_LAYOUT_PROC),
  268.   ATTR_TAB(WIN_NOTIFY_DESTROY_PROC),
  269.   ATTR_TAB(WIN_NOTIFY_EVENT_PROC),
  270.   ATTR_TAB(WIN_DEFAULT_EVENT_PROC),
  271.   ATTR_TAB(WIN_CREATED),
  272.   ATTR_TAB(WIN_COMPATIBILITY),
  273.   ATTR_TAB(WIN_COMPATIBILITY_INFO),
  274.   ATTR_TAB(WIN_REGISTER),
  275.   ATTR_TAB(WIN_NOTIFY_INFO),
  276.   ATTR_TAB(WIN_NULL_ATTR),
  277.   ATTR_TAB(WIN_KBD_FOCUS),
  278.   ATTR_TAB(WIN_EVENT_STATE),
  279.  
  280.   ATTR_TAB(TEXTSW_ADJUST_IS_PENDING_DELETE),
  281.   ATTR_TAB(TEXTSW_AGAIN_LIMIT),
  282.   ATTR_TAB(TEXTSW_AGAIN_RECORDING),
  283.   ATTR_TAB(TEXTSW_AUTO_INDENT),
  284.   ATTR_TAB(TEXTSW_AUTO_SCROLL_BY),
  285.   ATTR_TAB(TEXTSW_BLINK_CARET),
  286.   ATTR_TAB(TEXTSW_BROWSING),
  287.   ATTR_TAB(TEXTSW_CHECKPOINT_FREQUENCY),
  288.   ATTR_TAB(TEXTSW_CLIENT_DATA),
  289.   ATTR_TAB(TEXTSW_CONFIRM_OVERWRITE),
  290.   ATTR_TAB(TEXTSW_CONTENTS),
  291.   ATTR_TAB(TEXTSW_CONTROL_CHARS_USE_FONT),
  292.   ATTR_TAB(TEXTSW_DESTROY_ALL_VIEWS),
  293.   ATTR_TAB(TEXTSW_DISABLE_CD),
  294.   ATTR_TAB(TEXTSW_DISABLE_LOAD),
  295.   ATTR_TAB(TEXTSW_EDIT_BACK_CHAR),
  296.   ATTR_TAB(TEXTSW_EDIT_BACK_LINE),
  297.   ATTR_TAB(TEXTSW_EDIT_BACK_WORD),
  298.   ATTR_TAB(TEXTSW_EDIT_COUNT),
  299.   ATTR_TAB(TEXTSW_ERROR_MSG),
  300.   ATTR_TAB(TEXTSW_ES_CREATE_PROC),
  301.   ATTR_TAB(TEXTSW_FILE),
  302.   ATTR_TAB(TEXTSW_FONT),
  303.   ATTR_TAB(TEXTSW_HEIGHT),
  304.   ATTR_TAB(TEXTSW_HISTORY_LIMIT),
  305.   ATTR_TAB(TEXTSW_IGNORE_LIMIT),
  306.   ATTR_TAB(TEXTSW_INSERT_MAKES_VISIBLE),
  307.   ATTR_TAB(TEXTSW_INSERT_ONLY),
  308.   ATTR_TAB(TEXTSW_INSERTION_POINT),
  309.   ATTR_TAB(TEXTSW_LENGTH),
  310.   ATTR_TAB(TEXTSW_LOAD_DIR_IS_CD),
  311.   ATTR_TAB(TEXTSW_LOWER_CONTEXT),
  312.   ATTR_TAB(TEXTSW_MEMORY_MAXIMUM),
  313.   ATTR_TAB(TEXTSW_MENU),
  314.   ATTR_TAB(TEXTSW_MODIFIED),
  315.   ATTR_TAB(TEXTSW_MULTI_CLICK_SPACE),
  316.   ATTR_TAB(TEXTSW_MULTI_CLICK_TIMEOUT),
  317.   ATTR_TAB(TEXTSW_MUST_SHOW_CARET),
  318.   ATTR_TAB(TEXTSW_NAME),
  319.   ATTR_TAB(TEXTSW_NAME_TO_USE),
  320. /*  ATTR_TAB(TEXTSW_NO_PIECE_INSERT), */
  321.   ATTR_TAB(TEXTSW_NO_RESET_TO_SCRATCH),
  322.   ATTR_TAB(TEXTSW_NO_SELECTION_SERVICE),
  323.   ATTR_TAB(TEXTSW_NOTIFY_LEVEL),
  324.   ATTR_TAB(TEXTSW_NOTIFY_PROC),
  325.   ATTR_TAB(TEXTSW_PIXWIN),
  326.   ATTR_TAB(TEXTSW_READ_ONLY),
  327.   ATTR_TAB(TEXTSW_RESET_MODE),
  328.   ATTR_TAB(TEXTSW_STATUS),
  329.   ATTR_TAB(TEXTSW_STORE_CHANGES_FILE),
  330.   ATTR_TAB(TEXTSW_STORE_SELF_IS_SAVE),
  331.   ATTR_TAB(TEXTSW_TAB_WIDTH),
  332.   ATTR_TAB(TEXTSW_TOOL),
  333.   ATTR_TAB(TEXTSW_UPPER_CONTEXT),
  334.   ATTR_TAB(TEXTSW_WIDTH),
  335.   ATTR_TAB(TEXTSW_COALESCE_WITH),
  336.   ATTR_TAB(TEXTSW_END_ALL_VIEWS),
  337.   ATTR_TAB(TEXTSW_FOR_ALL_VIEWS),
  338.   ATTR_TAB(TEXTSW_FIRST),
  339.   ATTR_TAB(TEXTSW_FIRST_LINE),
  340.   ATTR_TAB(TEXTSW_LEFT_MARGIN),
  341.   ATTR_TAB(TEXTSW_LINE_BREAK_ACTION),
  342.   ATTR_TAB(TEXTSW_RIGHT_MARGIN),
  343.   ATTR_TAB(TEXTSW_SCROLLBAR),
  344.   ATTR_TAB(TEXTSW_UPDATE_SCROLLBAR),
  345.   ATTR_TAB(TEXTSW_SPARE_1),
  346.   ATTR_TAB(TEXTSW_SPARE_2),
  347.  
  348.   ATTR_TAB(MENU_ACTION_PROC),
  349.   ATTR_TAB(MENU_ACTION),
  350.   ATTR_TAB(MENU_ACTION_IMAGE),
  351.   ATTR_TAB(MENU_ACTION_ITEM),
  352.   ATTR_TAB(MENU_APPEND_ITEM),
  353.   ATTR_TAB(MENU_APPEND),
  354.   ATTR_TAB(MENU_BOXED),
  355.   ATTR_TAB(MENU_CENTER),
  356.   ATTR_TAB(MENU_CLIENT_DATA),
  357.   ATTR_TAB(MENU_COLUMN_MAJOR),
  358.   ATTR_TAB(MENU_DEFAULT),
  359.   ATTR_TAB(MENU_DEFAULT_ITEM),
  360.   ATTR_TAB(MENU_DEFAULT_IMAGE),
  361.   ATTR_TAB(MENU_DISABLE_ITEM),
  362.   ATTR_TAB(MENU_DEFAULT_SELECTION),
  363.   ATTR_TAB(MENU_DESCEND_FIRST),
  364.   ATTR_TAB(MENU_FEEDBACK),
  365.   ATTR_TAB(MENU_FIRST_EVENT),
  366.   ATTR_TAB(MENU_FONT),
  367.   ATTR_TAB(MENU_GEN_PULLRIGHT),
  368.   ATTR_TAB(MENU_GEN_PULLRIGHT_IMAGE),
  369.   ATTR_TAB(MENU_GEN_PULLRIGHT_ITEM),
  370.   ATTR_TAB(MENU_GEN_PROC),
  371.   ATTR_TAB(MENU_GEN_PROC_IMAGE),
  372.   ATTR_TAB(MENU_GEN_PROC_ITEM),
  373.   ATTR_TAB(MENU_HEIGHT),
  374.   ATTR_TAB(MENU_IMAGE),
  375.   ATTR_TAB(MENU_IMAGE_ITEM),
  376.   ATTR_TAB(MENU_IMAGES),
  377.   ATTR_TAB(MENU_INITIAL_SELECTION),
  378.   ATTR_TAB(MENU_INITIAL_SELECTION_SELECTED),
  379.   ATTR_TAB(MENU_INITIAL_SELECTION_EXPANDED),
  380.   ATTR_TAB(MENU_INACTIVE),
  381.   ATTR_TAB(MENU_INSERT),
  382.   ATTR_TAB(MENU_INSERT_ITEM),
  383.   ATTR_TAB(MENU_ITEM),
  384.   ATTR_TAB(MENU_INVERT),
  385.   ATTR_TAB(MENU_JUMP_AFTER_SELECTION),
  386.   ATTR_TAB(MENU_JUMP_AFTER_NO_SELECTION),
  387.   ATTR_TAB(MENU_LAST_EVENT),
  388.   ATTR_TAB(MENU_LEFT_MARGIN),
  389.   ATTR_TAB(MENU_LIKE),
  390.   ATTR_TAB(MENU_MARGIN),
  391.   ATTR_TAB(MENU_MENU),
  392.   ATTR_TAB(MENU_NITEMS),
  393.   ATTR_TAB(MENU_NOTIFY_PROC),
  394.   ATTR_TAB(MENU_NTH_ITEM),
  395.   ATTR_TAB(MENU_NCOLS),
  396.   ATTR_TAB(MENU_NROWS),
  397.   ATTR_TAB(MENU_PARENT),
  398.   ATTR_TAB(MENU_PULLRIGHT),
  399.   ATTR_TAB(MENU_PULLRIGHT_DELTA),
  400.   ATTR_TAB(MENU_PULLRIGHT_IMAGE),
  401.   ATTR_TAB(MENU_PULLRIGHT_ITEM),
  402.   ATTR_TAB(MENU_RELEASE),
  403.   ATTR_TAB(MENU_RELEASE_IMAGE),
  404.   ATTR_TAB(MENU_REMOVE),
  405.   ATTR_TAB(MENU_REMOVE_ITEM),
  406.   ATTR_TAB(MENU_REPLACE),
  407.   ATTR_TAB(MENU_REPLACE_ITEM),
  408.   ATTR_TAB(MENU_RIGHT_MARGIN),
  409.   ATTR_TAB(MENU_SELECTED),
  410.   ATTR_TAB(MENU_SELECTED_ITEM),
  411.   ATTR_TAB(MENU_SHADOW),
  412.   ATTR_TAB(MENU_STAY_UP),
  413.   ATTR_TAB(MENU_STRING),
  414.   ATTR_TAB(MENU_STRING_ITEM),
  415.   ATTR_TAB(MENU_STRINGS),
  416.   ATTR_TAB(MENU_TITLE_ITEM),
  417.   ATTR_TAB(MENU_TITLE_IMAGE),
  418.   ATTR_TAB(MENU_TYPE),
  419.   ATTR_TAB(MENU_VALID_RESULT),
  420.   ATTR_TAB(MENU_VALUE),
  421.   ATTR_TAB(MENU_WIDTH),
  422.   ATTR_TAB(MENU_NOP),
  423.   ATTR_TAB(MENU_BUTTON),
  424.   ATTR_TAB(MENU_FD),
  425.   ATTR_TAB(MENU_IE),
  426.   ATTR_TAB(MENU_POS),
  427.  
  428.   ATTR_TAB(ICON_X),
  429.   ATTR_TAB(ICON_Y),
  430.   ATTR_TAB(ICON_WIDTH),
  431.   ATTR_TAB(ICON_HEIGHT),
  432.   ATTR_TAB(ICON_IMAGE_RECT),
  433.   ATTR_TAB(ICON_LABEL_RECT),
  434.   ATTR_TAB(ICON_IMAGE),
  435.   ATTR_TAB(ICON_LABEL),
  436.   ATTR_TAB(ICON_FONT),
  437.  
  438.   ATTR_TAB(PANEL_CLEAR),
  439.   ATTR_TAB(PANEL_NO_CLEAR),
  440.   ATTR_TAB(PANEL_NONE),
  441.   ATTR_TAB(PANEL_ALL),
  442.   ATTR_TAB(PANEL_NON_PRINTABLE),
  443.   ATTR_TAB(PANEL_SPECIFIED),
  444.   ATTR_TAB(PANEL_CURRENT),
  445.   ATTR_TAB(PANEL_DONE),
  446.   ATTR_TAB(PANEL_MARKED),
  447.   ATTR_TAB(PANEL_VERTICAL),
  448.   ATTR_TAB(PANEL_HORIZONTAL),
  449.   ATTR_TAB(PANEL_INVERTED),
  450.   ATTR_TAB(PANEL_INSERT),
  451.   ATTR_TAB(PANEL_NEXT),
  452.   ATTR_TAB(PANEL_PREVIOUS),
  453.   ATTR_TAB(PANEL_NONE_DOWN),
  454.   ATTR_TAB(PANEL_LEFT_DOWN),
  455.   ATTR_TAB(PANEL_MIDDLE_DOWN),
  456.   ATTR_TAB(PANEL_RIGHT_DOWN),
  457.   ATTR_TAB(PANEL_CHORD_DOWN),
  458.   NULL, NULL
  459. };
  460.  
  461. defineWindowFuncs()
  462. {
  463.   defineCFunc("lookupCAddr", lookupCAddr);
  464.  
  465.   defineCFunc("windowLoop", windowLoop);
  466.   defineCFunc("windowGet", window_get);
  467.   defineCFunc("windowSet", window_set);
  468.   defineCFunc("windowCreate", window_create);
  469.  
  470.   defineCFunc("panelGet", panel_get);
  471.   defineCFunc("panelSet", panel_set);
  472.   defineCFunc("panelCreateItem", panel_create_item);
  473.   defineCFunc("panelGetValue", my_panel_get_value);
  474.   defineCFunc("panelSetValue", my_panel_set_value);
  475. }
  476.  
  477. caddr_t lookupCAddr(str)
  478. char    *str;
  479. {
  480.   addrEntry    ap;
  481.  
  482.   for (ap = cAddrs; ap->name; ap++) {
  483.     if (strcmp(str, ap->name) == 0) {
  484.       return (ap->addr);
  485.     }
  486.   }
  487.  
  488.   return (NULL);
  489. }
  490.  
  491.  
  492. windowLoop(frame)
  493. Frame frame;
  494. {
  495.   window_main_loop(frame);
  496. }
  497.  
  498. caddr_t my_panel_get_value(item)
  499. Panel_item item;
  500. {
  501.   return (panel_get_value(item));
  502. }
  503.  
  504. my_panel_set_value(item, value)
  505. Panel_item item;
  506. caddr_t value;
  507. {
  508.   panel_set_value(item, value);
  509. }
  510.  
  511.  
  512.  
  513. #ifdef old_code /* Sat Sep 30 22:20:10 1989 */
  514. /**/void *jeff(width, height)
  515. /**/{
  516. /**/  Frame frame;
  517. /**/  Panel panel;
  518. /**/  Canvas canvas;
  519. /**/  
  520. /**/  frame = window_create(0, FRAME, FRAME_LABEL, "Go",
  521. /**/            WIN_WIDTH, width,
  522. /**/            WIN_HEIGHT, height,
  523. /**/            0);
  524. /**/
  525. /**/  panel = window_create(frame, PANEL, 0);
  526. /**/
  527. /**/  panel_create_item(panel, PANEL_BUTTON,
  528. /**/            PANEL_LABEL_IMAGE, panel_button_image(panel, "Start", 0, 0),
  529. /**/            0);
  530. /**/
  531. /**/  panel_create_item(panel, PANEL_BUTTON,
  532. /**/            PANEL_LABEL_IMAGE, panel_button_image(panel, "Quit", 0, 0),
  533. /**/            0);
  534. /**/
  535. /**/  window_fit_height(panel);
  536. /**/
  537. /**/  canvas = window_create(frame, CANVAS,
  538. /**/             CANVAS_HEIGHT, window_get(frame, WIN_HEIGHT) -
  539. /**/                            window_get(panel, WIN_HEIGHT),
  540. /**/             0);
  541. /**/
  542. /**/printf("returning %x\n", frame);
  543. /**/  return (frame);
  544. /**/}
  545. #endif /* old_code Sat Sep 30 22:20:10 1989 */
  546.  
  547. #ifdef old_code /* Sat Sep 30 22:19:39 1989 */
  548. /**/void *getAttrValue(index)
  549. /**/int    index;
  550. /**/{
  551. /**/  return ((void *)attrs[index].value);
  552. /**/}
  553. /**/
  554. /**/char *getAttrName(index)
  555. /**/int    index;
  556. /**/{
  557. /**/  static char lb[50], *sp, *dp;
  558. /**/  int upper;
  559. /**/
  560. /**/  if (attrs[index].name == 0) {
  561. /**/    return ("");
  562. /**/  }
  563. /**/
  564. /**/  sp = attrs[index].name;
  565. /**/  dp = lb;
  566. /**/
  567. /**/  upper = 1;
  568. /**/
  569. /**/  for (; *sp; sp++) {
  570. /**/    if (*sp == '_') {
  571. /**/      upper = 1;
  572. /**/      continue;
  573. /**/    }
  574. /**/
  575. /**/    if (upper) {
  576. /**/      *dp++ = *sp;
  577. /**/      upper = 0;
  578. /**/    } else {
  579. /**/      if (isupper(*sp)) {
  580. /**/    *dp++ = tolower(*sp);
  581. /**/      } else {
  582. /**/    *dp++ = *sp;
  583. /**/      }
  584. /**/    }
  585. /**/    
  586. /**/  }
  587. /**/
  588. /**/  *dp = '\0';
  589. /**/  return (lb);
  590. /**/}
  591. /**/
  592. /**/
  593. #endif /* old_code Sat Sep 30 22:19:39 1989 */
  594.