home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win / sieciowe / oiv_demo.lzh / disk2 / DATA.2 / include / Ivf / Viewers / SoSceneMenu.h < prev    next >
C/C++ Source or Header  |  1995-04-05  |  8KB  |  229 lines

  1. #ifndef  _SO_SCENE_MENU_
  2. #define  _SO_SCENE_MENU_
  3.  
  4. // -*- C++ -*-
  5. //
  6. // header for TopbarMenu
  7. //
  8.  
  9. #ifndef WIN32
  10. #include <X11/Intrinsic.h>
  11. #endif
  12.  
  13. #include <Inventor/SbBasic.h>
  14.  
  15. enum MenuEntries {
  16.     SV_FILE = 0,  // start at 0 since we use an array
  17.     SV_FILE_ABOUT, 
  18.     SV_FILE_OPEN, 
  19.     SV_FILE_IMPORT, 
  20.     SV_FILE_NEW, 
  21.     SV_FILE_SAVE, 
  22.     SV_FILE_SAVE_AS, 
  23.     SV_FILE_SAVE_ENV, 
  24.     SV_FILE_READ_ENV, 
  25.     SV_FILE_PRINT, 
  26.     SV_FILE_QUIT, 
  27.     
  28.     SV_EDIT, 
  29.     SV_EDIT_PICK_PARENT, 
  30.     SV_EDIT_PICK_ALL, 
  31.     SV_EDIT_CUT, 
  32.     SV_EDIT_COPY, 
  33.     SV_EDIT_PASTE, 
  34.     SV_EDIT_DELETE, 
  35.     
  36.     SV_VIEW, 
  37.     SV_VIEW_PICK, 
  38. #ifdef EXPLORER
  39.     SV_VIEW_USER,
  40. #endif
  41.     SV_VIEW_EXAMINER, 
  42.     SV_VIEW_FLY, 
  43.     SV_VIEW_WALK, 
  44.     SV_VIEW_PLANE, 
  45.     SV_VIEW_SELECTION, 
  46.     SV_VIEW_FOG, 
  47.     SV_VIEW_ANTIALIASING, 
  48.     SV_VIEW_SCREEN_TRANSPARENCY, 
  49.     SV_VIEW_BLEND_TRANSPARENCY, 
  50.     SV_VIEW_DELAY_BLEND_TRANSPARENCY, 
  51.     SV_VIEW_SORT_BLEND_TRANSPARENCY, 
  52.     SV_VIEW_BKG_COLOR, 
  53.     
  54.     SV_EDITOR, 
  55.     SV_EDITOR_TRANSFORM, 
  56.     SV_EDITOR_MATERIAL, 
  57.     SV_EDITOR_COLOR, 
  58.  
  59.     SV_MANIP, 
  60.     SV_MANIP_HANDLEBOX, 
  61.     SV_MANIP_TRACKBALL, 
  62.     SV_MANIP_JACK,
  63.     SV_MANIP_CENTERBALL,
  64.     SV_MANIP_XFBOX,
  65.     SV_MANIP_TABBOX,
  66.  
  67. // rotateCylindrical rotateDisc RotateSpherical 
  68. // scale1 scale2 scale2Uniform scaleUniform 
  69. // translate1 translate2 
  70.  
  71.     SV_MANIP_NONE, 
  72.     SV_MANIP_REPLACE_ALL, 
  73.     
  74.     SV_LIGHT, 
  75.     SV_LIGHT_ADD_DIRECT, 
  76.     SV_LIGHT_ADD_POINT, 
  77.     SV_LIGHT_ADD_SPOT, 
  78.     SV_LIGHT_AMBIENT_EDIT, 
  79.     SV_LIGHT_TURN_ON, 
  80.     SV_LIGHT_TURN_OFF, 
  81.     SV_LIGHT_SHOW_ALL, 
  82.     SV_LIGHT_HIDE_ALL, 
  83.     
  84.     SV_SELECTION, 
  85.     SV_SEL_SINGLE_SELECT, 
  86.     SV_SEL_TOGGLE_SELECT, 
  87.     SV_SEL_SHIFT_SELECT, 
  88.     
  89.     SV_MENU_NUM,    // this must be the last entry
  90. };
  91.  
  92.  
  93. // different types of menu item buttons
  94. enum MenuItems {
  95.     SV_SEPARATOR, 
  96.     SV_PUSH_BUTTON, 
  97.     SV_TOGGLE_BUTTON, 
  98.     SV_RADIO_BUTTON, 
  99. };
  100.  
  101. struct SoSceneViewerButton {
  102.     char        *name;
  103.     int        id;
  104.     int      buttonType; // PUSH, TOGGLE, RADIO
  105.     char    *accelerator; // e.g. "Alt <Key> p" or "Ctrl <Key> u"
  106.     char    *accelText;   // text that appears in the menu item
  107. };
  108. struct SoSceneViewerMenu {
  109.     char        *name;
  110.     int            id;
  111.     struct     SoSceneViewerButton *subMenu;
  112.     int        subItemCount;
  113. };
  114.  
  115. #ifndef WIN32
  116. static SoSceneViewerButton fileData[] = {
  117. #ifndef EXPLORER
  118.     {"About...",        SV_FILE_ABOUT,    SV_PUSH_BUTTON, 0, 0 },
  119.     {0,                0,            SV_SEPARATOR },
  120.     {"New",            SV_FILE_NEW,    SV_PUSH_BUTTON, "Alt <Key> n", "Alt+n" },
  121.     {"Open...",            SV_FILE_OPEN,    SV_PUSH_BUTTON, "Alt <Key> o", "Alt+o" },
  122.     {"Import...",        SV_FILE_IMPORT,    SV_PUSH_BUTTON, "Alt <Key> i", "Alt+i" },
  123. #endif /* EXPLORER */
  124.     {"Save",            SV_FILE_SAVE,    SV_PUSH_BUTTON, "Alt <Key> s", "Alt+s" },
  125.     {"Save As...",        SV_FILE_SAVE_AS,    SV_PUSH_BUTTON, "Alt Shift <Key> s", "Alt+S" },
  126. #ifndef EXPLORER
  127.     {0,                0,            SV_SEPARATOR },
  128.     {"Read Environment...", SV_FILE_READ_ENV,    SV_PUSH_BUTTON, 0, 0 },
  129.     {"Save Environment...", SV_FILE_SAVE_ENV,    SV_PUSH_BUTTON, 0, 0 },
  130.     {0,                0,            SV_SEPARATOR },
  131.     {"Print...",        SV_FILE_PRINT,    SV_PUSH_BUTTON, "Alt <Key> p", "Alt+p" },
  132.     {"Quit",            SV_FILE_QUIT,    SV_PUSH_BUTTON, "Alt <Key> q", "Alt+q" },
  133. #endif /* EXPLORER */
  134. };
  135.  
  136. #ifndef EXPLORER
  137. static SoSceneViewerButton editData[] = {
  138.     {"Pick Parent",    SV_EDIT_PICK_PARENT, SV_PUSH_BUTTON, 0, 0 },
  139.     {"Pick All",    SV_EDIT_PICK_ALL, SV_PUSH_BUTTON, "Alt <Key> a", "Alt+a" },
  140.     {0,                0,            SV_SEPARATOR },
  141.     {"Cut",        SV_EDIT_CUT,    SV_PUSH_BUTTON, "Alt <Key> x", "Alt+x" },
  142.     {"Copy",        SV_EDIT_COPY,    SV_PUSH_BUTTON, "Alt <Key> c", "Alt+c" },
  143.     {"Paste",        SV_EDIT_PASTE,    SV_PUSH_BUTTON, "Alt <Key> v", "Alt+v" },
  144.     {"Delete",        SV_EDIT_DELETE,    SV_PUSH_BUTTON, "<Key> BackSpace", 0 },
  145. };
  146. #endif /* EXPLORER */
  147.  
  148. static SoSceneViewerButton viewData[] = {
  149.     {"Pick/Edit",  SV_VIEW_PICK,           SV_TOGGLE_BUTTON, 0, 0},
  150. #ifdef EXPLORER
  151.     {"User Pick Mode",  SV_VIEW_USER,    SV_TOGGLE_BUTTON, 0, 0},
  152. #endif /* EXPLORER */
  153.     {0,                0,            SV_SEPARATOR },
  154.     {"Examiner",   SV_VIEW_EXAMINER,        SV_RADIO_BUTTON, 0, 0},
  155.     {"Fly",       SV_VIEW_FLY,           SV_RADIO_BUTTON, 0, 0},
  156.     {"Walk",       SV_VIEW_WALK,           SV_RADIO_BUTTON, 0, 0},
  157.     {"Plane",       SV_VIEW_PLANE,           SV_RADIO_BUTTON, 0, 0},
  158.     {0,                0,            SV_SEPARATOR },
  159.     {"View Selection",SV_VIEW_SELECTION,     SV_PUSH_BUTTON, 0, 0},
  160.     {"Fog",        SV_VIEW_FOG,            SV_TOGGLE_BUTTON, 0, 0},
  161.     {"Antialiasing",SV_VIEW_ANTIALIASING,   SV_TOGGLE_BUTTON, 0, 0},
  162.     {0,                0,            SV_SEPARATOR },
  163.     {"Screen Door Transparency", SV_VIEW_SCREEN_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  164.     {"Blended Transparency", SV_VIEW_BLEND_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  165.     {"Delayed Blended Transparency", SV_VIEW_DELAY_BLEND_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  166.     {"Sorted Blended Transparency", SV_VIEW_SORT_BLEND_TRANSPARENCY,  SV_RADIO_BUTTON, 0, 0},
  167.     {0,                0,            SV_SEPARATOR },
  168.     {"Edit Background Color...", SV_VIEW_BKG_COLOR,  SV_PUSH_BUTTON, 0, 0}
  169. };
  170.  
  171. static SoSceneViewerButton editorData[] = {
  172.     {"Material Editor...",    SV_EDITOR_MATERIAL,    SV_PUSH_BUTTON, 0, 0},
  173.     {"Color Editor...",       SV_EDITOR_COLOR,       SV_PUSH_BUTTON, 0, 0},
  174.     {"Transform Sliders...",  SV_EDITOR_TRANSFORM,   SV_PUSH_BUTTON, 0, 0},
  175. };
  176.  
  177. static SoSceneViewerButton manipData[] = {
  178.     {"Trackball",   SV_MANIP_TRACKBALL,      SV_RADIO_BUTTON, 0, 0},
  179.     {"HandleBox",   SV_MANIP_HANDLEBOX,      SV_RADIO_BUTTON, 0, 0},
  180.     {"Jack",        SV_MANIP_JACK,           SV_RADIO_BUTTON, 0, 0},
  181.     {"Centerball",  SV_MANIP_CENTERBALL,     SV_RADIO_BUTTON, 0, 0},
  182.     {"TransformBox",SV_MANIP_XFBOX,          SV_RADIO_BUTTON, 0, 0},
  183.     {"TabBox",      SV_MANIP_TABBOX,         SV_RADIO_BUTTON, 0, 0},
  184.     {"None",        SV_MANIP_NONE,           SV_RADIO_BUTTON, 0, 0},
  185.     {0,                0,            SV_SEPARATOR },
  186.     {"Replace",     SV_MANIP_REPLACE_ALL,    SV_TOGGLE_BUTTON, 0, 0}
  187. };
  188.  
  189. static SoSceneViewerButton lightData[] = {
  190.     {"Create Dir Light",        SV_LIGHT_ADD_DIRECT,    SV_PUSH_BUTTON, 0, 0},
  191.     {"Create Point Light",        SV_LIGHT_ADD_POINT,        SV_PUSH_BUTTON, 0, 0},
  192.     {"Create Spot Light",        SV_LIGHT_ADD_SPOT,        SV_PUSH_BUTTON, 0, 0},
  193.     {0,                0,            SV_SEPARATOR },
  194.     {"Ambient Lighting...",        SV_LIGHT_AMBIENT_EDIT,  SV_PUSH_BUTTON, 0, 0},
  195.     {0,                0,            SV_SEPARATOR },
  196.     {"Turn all ON",            SV_LIGHT_TURN_ON,        SV_PUSH_BUTTON, 0, 0},
  197.     {"Turn all OFF",            SV_LIGHT_TURN_OFF,        SV_PUSH_BUTTON, 0, 0},
  198.     {"Show all Icons",            SV_LIGHT_SHOW_ALL,        SV_PUSH_BUTTON, 0, 0},
  199.     {"Hide all Icons",            SV_LIGHT_HIDE_ALL,        SV_PUSH_BUTTON, 0, 0},
  200.     {0,                0,            SV_SEPARATOR },
  201. };
  202.  
  203. #ifndef EXPLORER
  204. static SoSceneViewerButton selData[] = {
  205.     {"Single Selection", SV_SEL_SINGLE_SELECT,  SV_RADIO_BUTTON, 0, 0},
  206.     {"Toggle Selection", SV_SEL_TOGGLE_SELECT,  SV_RADIO_BUTTON, 0, 0},
  207.     {"Shift Selection",    SV_SEL_SHIFT_SELECT,    SV_RADIO_BUTTON, 0, 0},
  208. };
  209. #endif /* EXPLORER */
  210.  
  211. static SoSceneViewerMenu pulldownData[] = {
  212. //  {name,     id,            subMenu,    subItemCount}
  213.     {"File",    SV_FILE,     fileData,   XtNumber(fileData)   },
  214. #ifndef EXPLORER
  215.     {"Edit",    SV_EDIT,     editData,   XtNumber(editData)   },
  216. #endif /* EXPLORER */
  217.     {"Viewing", SV_VIEW,     viewData,   XtNumber(viewData)   },
  218. #ifndef EXPLORER
  219.     {"Selection", SV_SELECTION, selData, XtNumber(selData)     },
  220. #endif /* EXPLORER */
  221.     {"Editors", SV_EDITOR,     editorData, XtNumber(editorData) },
  222.     {"Manips",  SV_MANIP,     manipData,  XtNumber(manipData)  },
  223.     {"Lights",  SV_LIGHT,     lightData,  XtNumber(lightData)  }
  224. };
  225.  
  226. #endif
  227.  
  228. #endif
  229.