// This file is used to configure Studio's menus and toolpads. // Menus: // The menu syntax follows closely the syntax of .rc file. // The key difference is that popup menus and menu items can be intermingled with // conditionals ("if"s). These conditionals are checked at appropriate times // to see if anything changed. When a conditional changes, the whole block in which // it appears is re-evaluated. Thus the menu system is dynamic. // Todo: allow menus to be defined in modules. Currently, all menus are defined in // this file. The reason is mnemonics and relative order -- pulling menus together // from different modules makes it impossible to assign a particular order, // or particular mnemonics. // RAT forward declarations include("rat.ssim"); use(rat); string config_name = GetConfigName(); bool photo_studio = config_name=="mfs"; bool tuning_studio = config_name=="mts3_opt"; bool vmi_studio = config_name=="vmi"; // evaluate these expressions and make them available as // constants immediately meta { guid interact_module = "{e4b11b90-f415-11d3-ac66-00104b98ec2b}"; guid silh_module = "{90c61640-f32d-11d3-ac66-00104b98ec2b}"; guid glue_module = "{93eea9b1-f300-11d3-ac66-00104b98ec2b}"; guid ratio_module = "{1f603820-f331-11d3-ac66-00104b98ec2b}"; guid rat_module = "{58b56bd0-fa04-11d3-ac66-00104b98ec2b}"; guid ratgeom_module = "{3728F601-044D-11d4-AC6A-00104B98EC2B}"; guid ratmts3_module = "{5508188E-1E88-4379-972E-65E7A2CFC383}"; guid proghelp_module = "{4C75F7D0-8C9D-44fb-9747-2F71277831ED}"; // if this resource exists in the scene, we have an MTX host guid mts3_host = "{76A5C780-8417-11d4-9998-0050DA1FF45A}"; guid silh_host = "{4A0291B0-FF93-11d3-9966-0050DA1FF45A}"; guid html_host = "{84E89AA7-06A0-4a9d-ABAD-669883D53809}"; // this resource is present in any document guid scene_token = "{5FD4B12F-08CC-4d07-9F6D-77D187C0D18A}"; // this mode is provided in 3d environments guid threed_mode = "{A01A9414-937D-40d2-AE45-55E7EC674A73}"; } // "Provided" is a special list of scene cookies. // A mode adds this cookie to the scene to allow its tools to run function [no_side_write] ThreeDProvided() bool { return ProvidedQ(threed_mode); } function [no_side_write] DocOpenQ() bool { return HostResourcePresent(scene_token); } function [no_side_write] MtxOpenQ() bool { return HostResourcePresent(mts3_host); } function [no_side_write] SilhOpenQ() bool { return HostResourcePresent(silh_host); } function [no_side_write] HtmlOpenQ() bool { return HostResourcePresent(html_host); } // command map is checked on ActivatePaneEvent, ActivateHostEvent, // ActivateViewEvent, and CloseHostEvent. function RemapTextureTools(bool add) void { AddOrRemoveTranslateID(ID_SELECT_DELETE, ID_TXT_DELETE, add); AddOrRemoveTranslateID(ID_SELECT_ALL, ID_TXT_SEL_ALL, add); AddOrRemoveTranslateID(ID_SELECT_NONE, ID_TXT_SEL_NONE, add); AddOrRemoveTranslateID(ID_SELECT_INVERSE, ID_TXT_SEL_INV, add); AddOrRemoveTranslateID(ID_COPY, ID_TXT_COPY, add); AddOrRemoveTranslateID(ID_CUT, ID_TXT_CUT, add); AddOrRemoveTranslateID(ID_PASTE, ID_TXT_PASTE, add); AddOrRemoveTranslateID(ID_PASTE_INPLACE, ID_TXT_PASTE_ALPHA, add); } function RemapMtxTools(bool add) void { AddOrRemoveTranslateID(ID_SAVE, ID_NULL_COMMAND, add); AddOrRemoveTranslateID(ID_SAVE_AS, ID_NULL_COMMAND, add); AddOrRemoveTranslateID(ID_INSERT_OBJ, ID_NULL_COMMAND, add); AddOrRemoveTranslateID(ID_NEW_VIEW, ID_NULL_COMMAND, add); } // Present different interface for this configuration. if (tuning_studio) { ReplaceDialog(ID_CAMERA, ID_CAMERA_MTS3_OPT); ReplaceDialog(ID_TOOL_BAR, ID_TOOL_BAR_MTS3_OPT); ReplaceDialog(ID_RENDER_OPTS, ID_RENDER_OPTS_MTS3_OPT); ReplaceDialog(ID_TOOL_TXT_VIEW, ID_TOOL_TXT_VIEW_MTS3_OPT); ReplaceDialog(IDD_ABOUTBOX, IDD_ABOUTBOX_OPT); } // Define default tools. if (photo_studio || tuning_studio || vmi_studio) { AddDefaultTool(ID_TOOL_BAR); } if (photo_studio) { AddDefaultTool(ID_LOGO); } AddDefaultTool(ID_STATUS_TEXT); AddDefaultTool(ID_PROGRESS_BAR); ToolPads { if (photo_studio||vmi_studio) { AddDefaultTool(ID_CAMERA); AddDefaultTool(ID_RENDER_OPTS); AddDefaultTool(ID_DYNAMIC_RESOLUTION); AddDefaultTool(ID_FILE_INFO); AddDefaultTool(ID_SELECT_OBJECT_FROM_LIST); AddDefaultTool(ID_SELECT_TRIANGLES); AddDefaultTool(ID_SELECT_VERTICES); AddDefaultTool(ID_SELECT_REGIONS); AddDefaultTool(IDD_SEL_TXT_AREA); } else if (tuning_studio) { AddDefaultTool(ID_CAMERA); AddDefaultTool(ID_RENDER_OPTS); AddDefaultTool(ID_DYNAMIC_RESOLUTION); AddDefaultTool(ID_FILE_INFO); AddDefaultTool(ID_SELECT_OBJECT_FROM_LIST); } if (MtxOpenQ()) { //AddDefaultTool(ID_TOOLPAD_LEFT, ratmts3_module::"Render Options"); //AddDefaultTool(ID_TOOLPAD_LEFT, ratmts3_module::"Camera"); //AddDefaultTool(ID_TOOLPAD_LEFT, ratmts3_module::"Modem Simulator"); } } // CommandMap is re-evaluated when one of the following events occur: // CloseHostEvent, OpenFileEvent, ActivateHostEvent, ActivatePaneEvent, // ActivateViewEvent CommandMap { // important to keep the "if"s here, because they will be checked for. // i.e. It won't work to say RemapTextureTools(TextureViewerActiveQ()), // because that will not be memoized if (TextureViewerActiveQ()) RemapTextureTools(true); else RemapTextureTools(false); if (MtxOpenQ()) RemapMtxTools(true); else RemapMtxTools(false); } // Main menu conditionals are checked on idle. // Other menu conditionals are checked when menus are displayed. MENU "Main" { MENU "&File" { MENUITEM "&New", ID_NEW if (photo_studio) { MENUITEM "New Silhouette Project", ID_NEW_SILH } MENUITEM "&Open...", ID_OPEN if (DocOpenQ()) { if (MtxOpenQ() & tuning_studio) { MENUITEM "&Close", ID_CLOSE } else { MENUITEM "&Revert to Saved", ID_REVERT MENUITEM "&Close", ID_CLOSE MENUITEM SEPARATOR MENUITEM "&Save", ID_SAVE if(vmi_studio || photo_studio) { MENUITEM "Save &As...", ID_SAVE_AS MENUITEM SEPARATOR MENUITEM "&Insert...", ID_INSERT_OBJ MENUITEM "Sa&ve Copy As...", ID_SAVE_COPY_AS if (!MtxOpenQ()) MENUITEM "Create Web Page...", ratmts3_module::"Simple Create Web Page" else MENUITEM "Web Page Template...", ratmts3_module::"Web Page Template" } if (tuning_studio) { MENUITEM "&File Info...", ID_FILE_INFO } } } MENUITEM SEPARATOR MENUITEM "Recent File", ID_MRU_FILE1 MENUITEM SEPARATOR MENUITEM "E&xit", ID_EXIT } if (DocOpenQ()) { MENU "&Edit" { MENUITEM "&Undo", ID_UNDO MENUITEM "&Redo", ID_REDO if (MtxOpenQ()) { MENUITEM SEPARATOR MENUITEM "&Cut", ID_CUT MENUITEM "C&opy", ID_COPY MENUITEM "&Paste", ID_PASTE } else { if (TextureViewerActiveQ()) { MENUITEM SEPARATOR MENUITEM "&Cut Textures", ID_CUT MENUITEM "C&opy Textures", ID_COPY MENUITEM "&Paste Textures", ID_PASTE if (photo_studio) { MENUITEM "&Duplicate Objects", ID_DUPLICATE MENUITEM "Copy Outer Textures", ID_TXT_COPY_OUTER_TEXTURES MENUITEM "Copy Texture Outline", ID_TXT_COPY_OUTLINE } MENUITEM SEPARATOR MENUITEM "Delete Selected Textures", ID_TXT_DELETE } else if (ThreeDProvided()) { MENUITEM SEPARATOR MENUITEM "&Cut Objects", ID_CUT MENUITEM "C&opy Objects", ID_COPY MENUITEM "&Paste Objects", ID_PASTE if (!tuning_studio) { MENUITEM "&Duplicate Objects", ID_DUPLICATE } MENUITEM "Copy 3D Snapshot", ID_COPY_SNAPSHOT MENUITEM SEPARATOR if (tuning_studio) { MENUITEM "&Select All Objects", ID_SELECT_ALL MENUITEM "&Deselect All Objects", ID_SELECT_NONE MENUITEM "&Invert Object Selection", ID_SELECT_INVERSE } else { MENUITEM "Delete Selected &Triangles", ID_VS_SELECT_DELETE } MENUITEM "Delete Selected &Objects", ID_SELECT_DELETE } MENUITEM SEPARATOR MENUITEM "Colors...", ID_COLORS if (!tuning_studio) { MENUITEM "Memory Settings...", ID_MEMORY_SETTINGS } } } } else if (!tuning_studio) { MENU "&Edit" { MENUITEM "Memory Settings...", ID_MEMORY_SETTINGS } } if (!tuning_studio & !MtxOpenQ() & ThreeDProvided()) { if (DocOpenQ()) { MENU "&Select" { MENUITEM "&Select All Objects", ID_SELECT_ALL MENUITEM "&Deselect All Objects", ID_SELECT_NONE MENUITEM "&Invert Object Selection", ID_SELECT_INVERSE MENUITEM SEPARATOR MENUITEM "Select &All Triangles", ID_VS_SELECT_ALL MENUITEM "Dese&lect All Triangles", ID_VS_SELECT_NONE MENUITEM "I&nvert Triangle Selection", ID_VS_SELECT_INVERSE MENUITEM SEPARATOR MENUITEM "Select &Triangles...", ID_SELECT_TRIANGLES MENUITEM "Select &Vertices...", ID_SELECT_VERTICES MENUITEM "Select &Clusters...", ID_SELECT_CLUSTERS } MENU "&View" { MENUITEM "&Left Tool Pad", ID_TOOLPAD_LEFT MENUITEM "&Right Tool Pad", ID_TOOLPAD_RIGHT MENUITEM SEPARATOR MENUITEM "&Open GL", ID_RENDER_OPENGL MENUITEM "S&reeD", ID_RENDER_SREED MENUITEM SEPARATOR MENUITEM "&3D", ID_PROJ_3D MENUITEM "&Front View", ID_PROJ_FRONT MENUITEM "L&eft View", ID_PROJ_LEFT MENUITEM "&Top View", ID_PROJ_TOP MENUITEM SEPARATOR MENUITEM "Go to &Home Position", ID_CAMERA_RESTORE MENUITEM "Set &Home Position", ID_CAMERA_SAVE MENUITEM "View &Selected Objects", ID_FIT_SEL_TO_SCREEN MENUITEM "View &All Objects", ID_FIT_SCENE_TO_SCREEN MENUITEM SEPARATOR MENUITEM "S&how Properties...", ID_PROPERTY_TOOL MENUITEM "Sho&w Object Statistics...", ID_OBJ_INFO MENUITEM "Show Ed&ges && Creases...", ID_EDGES_AND_CREASES MENUITEM SEPARATOR MENUITEM "Reset Bounding Box", ID_MERGE_XFORMS } MENU "S&hape" { MENUITEM "Object &Statistics...", ID_OBJ_INFO MENUITEM SEPARATOR MENUITEM "&Join Objects", ID_OBJECTS_JOIN MENUITEM "&Merge Vertices...", ID_VERT_MERGE MENUITEM "Adjust &Normals...", ID_ADJUST_NORMALS MENUITEM SEPARATOR MENUITEM "Set Geometry &Quality...", ID_SET_GEOMETRY_QUALITY MENUITEM "&Turn Objects Inside Out", ID_INSIDE_OUT MENUITEM SEPARATOR MENUITEM "S&lice...", ID_TOOL_SLICE MENUITEM "&Deformation Brushes...", ID_TOOL_DISTORT MENUITEM "S&election Transformations...", ID_TOOL_SELECTION_TRANSFORMATION MENUITEM "S&mooth...", ID_TOOL_SMOOTH MENU "Stitching" { MENUITEM "&Tacks...", ID_TOOL_TACKS MENUITEM "&Stitching...", ID_TOOL_STITCH } MENUITEM SEPARATOR MENUITEM "Improve Triangles...", ID_IMPROVE_TRIANGLES MENUITEM "&Subdivide Triangles...", ID_SUBDIVIDER MENUITEM "Di&vide By Clusters", ID_OBJECTS_CLUSTERIZE MENUITEM "Fill Selected &Holes", ID_GLUESTUFF MENUITEM "Smooth Normals", ID_SMOOTH_NORMS MENUITEM SEPARATOR MENU "Advanced" { MENUITEM "C&reate Inner Surface", ID_MAKE_CAVITY MENUITEM "&Inflate Surface...", ID_INFLATE_SURFACE MENUITEM "&Fit Selection to Sphere", ID_FIT_TO_SPHERE_SEL_AREA MENUITEM "Fit Selecti&on to Plane", ID_FIT_TO_PLANE_SEL_AREA MENUITEM "Fit Selectio&n to Cone", ID_FIT_TO_CONE_SEL_AREA MENUITEM SEPARATOR MENUITEM "&Measurements...", ID_TOOL_MEASUREMENT MENUITEM "&Insert ruler into scene", ID_INSERT_RULLER MENUITEM SEPARATOR MENUITEM "&Surface Options...", ID_OBJECT_SURFACE } }// end menu shape } else {// doc not open MENU "&View" { MENUITEM "&Open GL", ID_RENDER_OPENGL MENUITEM "S&reeD", ID_RENDER_SREED } } } // end photo studio if (tuning_studio & DocOpenQ() & !MtxOpenQ()) { MENU "S&hape" { MENUITEM "Object &Statistics...", ID_OBJ_INFO MENUITEM SEPARATOR MENUITEM "&Join Objects", ID_OBJECTS_JOIN MENUITEM "&Merge Vertices...", ID_VERT_MERGE MENUITEM "Adjust &Normals...", ID_ADJUST_NORMALS MENUITEM SEPARATOR MENUITEM "Set Geometry &Quality...", ID_SET_GEOMETRY_QUALITY MENUITEM "&Turn Objects Inside Out", ID_INSIDE_OUT MENUITEM SEPARATOR MENUITEM "Show Ed&ges && Creases...", ID_EDGES_AND_CREASES } } if (MtxOpenQ()) { MENU "Scene Builder" { MENUITEM "Modem Simulator...", ratmts3_module::"Modem Simulator" MENUITEM "Animations...", ratmts3_module::"Animation" MENUITEM "Widgets...", ratmts3_module::"Widgets" if (!tuning_studio) { MENUITEM "Shadows...", ratmts3_module::"Shadows" MENUITEM SEPARATOR MENUITEM "Load Panorama...", ratmts3_module::"Load Background" } } } else { if (DocOpenQ() & ThreeDProvided()) { MENU "&Material" { MENUITEM "Image &Viewer...", ID_TOOL_TXT_VIEW MENUITEM "&Resize Textures...", ID_RESIZE_TEXTURES MENUITEM "&Set Texture Quality...", ID_SET_TXT_QUALITY MENUITEM SEPARATOR MENUITEM "Edit M&aterial...", ID_EDIT_MAT MENUITEM "&Generate Material From Texture", ID_AVG_TXT_INTO_MAT MENUITEM SEPARATOR MENUITEM "Remove &Unused Pixels", ID_REMOVE_UNUSED_PIXELS MENUITEM "&Fill Unused Pixels", ID_FILL_UNUSED_PIXELS MENUITEM "Rotate Texture...", ratgeom_module::"Rotate Texture Dialog" MENUITEM "Merge Te&xtures", ID_MERGE_TEXTURES MENUITEM SEPARATOR MENUITEM "Merge Texture &Coordinates", ID_MERGE_TXT_COORDS MENUITEM "R&emove Duplicate Images", ID_REMOVE_DUP_TEXTURES MENUITEM "Select Unused Images", ID_TXT_SELECT_UNUSED if (TextureModeQ()) { MENUITEM "Select Tiled Textures", ID_TXT_SEL_TILED MENUITEM "Clamp Tiled Textures", ID_CLAMP_TXT_COORDS } if (!tuning_studio) { MENUITEM SEPARATOR MENUITEM "A&djust Brightness/Contrast...", ID_ADJUST_PIXELS MENUITEM "Texture &Blending...", ID_TOOL_BLEND MENUITEM SEPARATOR MENUITEM "Edit &Mapping...", ID_PEDIT_MAPPING MENUITEM "Anchor Point Mapping...", ratgeom_module::"Edit Anchor points" MENUITEM "Retexturize...", ratgeom_module::"Retexturize" } MENUITEM SEPARATOR MENUITEM "Presets", ID_PRESETS } } if (SilhOpenQ()) { MENU "Silhouette" { MENUITEM "Silhouette Calibration...", silh_module::"Silhouette Calibration" MENUITEM "Silhouette Modeler...", silh_module::"Silhouette Modeler" MENUITEM "Silhouette Editor...", silh_module::"Silhouette Editor" MENUITEM "Silhouette Texturizer...", silh_module::"Silhouette Texturizer" MENUITEM "Two Camera Modeler", silh_module::"Two Camera Modeler" MENUITEM SEPARATOR MENU "Acquire" { MENUITEM "Start All Acquire Tools", silh_module::"Start All Acquire Tools" MENUITEM SEPARATOR MENUITEM "Acquire Silhouette...", silh_module::"Acquire Silhouette" MENUITEM "Acquire Textures...", silh_module::"Acquire Textures" MENUITEM "Acquire Background...", silh_module::"Acquire Background" MENUITEM "Acquire Calibration...", silh_module::"Acquire Calibration" MENUITEM "Preview...", silh_module::"Preview" MENUITEM "Camera Settings...", silh_module::"Camera Settings" MENUITEM "Platform Settings...", silh_module::"Platform Settings" } MENUITEM SEPARATOR MENU "Advanced" { MENUITEM "Lens And Camera Settings...", silh_module::"Lens and Camera Settings" MENUITEM "Loop Parameters...", silh_module::"Loop Parameters" } } } } if (HtmlOpenQ()) { MENU "&HTML" { MENUITEM "Broadcast Key...", ID_NULL_COMMAND } } if (DebugQ()) { MENU "&Debug" {// handled internally } } MENU "&Window" { MENUITEM "&New View", ID_NEW_VIEW MENUITEM SEPARATOR MENUITEM "Close &All Tools", ID_CLOSE_ALL_TOOLS MENUITEM SEPARATOR MENUITEM "&Cascade Windows", ID_W_CASCADE MENUITEM "Tile &Vertically", ID_W_TILE_VERT MENUITEM "Tile &Horizontally", ID_W_TILE_HORZ } MENU "&Help" { MENUITEM "&About...", ID_HELP_ABOUT MENUITEM "&Help...", ID_RUN_PDF_HELP MENUITEM SEPARATOR MENUITEM "&Viewpoint Web Site", ID_HELP_VIEWPOINT_WEB_SITE } }