#include <Global/Main_Global.h>         

      
Object * Create_Menus( void )
{
  
  static const struct Hook File_NewHook                 = { { NULL,NULL },(VOID *)FileMenu_New,NULL,NULL        };
  static const struct Hook File_OpenHook                = { { NULL,NULL },(VOID *)FileMenu_Open,NULL,NULL       };
  static const struct Hook File_SaveHook                = { { NULL,NULL },(VOID *)FileMenu_Save,NULL,NULL       };
  static const struct Hook File_SaveAsHook              = { { NULL,NULL },(VOID *)FileMenu_SaveAs,NULL,NULL     };
  static const struct Hook File_SaveAllHook             = { { NULL,NULL },(VOID *)FileMenu_SaveAll,NULL,NULL    };
  
  static const struct Hook Edit_CopyHook                = { { NULL,NULL },(VOID *)EditMenu_Copy,NULL,NULL       };
  static const struct Hook Edit_PasteHook               = { { NULL,NULL },(VOID *)EditMenu_Paste,NULL,NULL      };
  static const struct Hook Edit_CutHook                 = { { NULL,NULL },(VOID *)EditMenu_Cut,NULL,NULL        };
  
  static const struct Hook Project_AddItemHook          = { { NULL,NULL },(VOID *)Proj_AddItem,NULL,NULL        };
  static const struct Hook Project_RemItemHook          = { { NULL,NULL },(VOID *)Proj_RemItem,NULL,NULL        }; 
  
  static const struct Hook Project_OpenHook             = { { NULL,NULL },(VOID *)Proj_Open,NULL,NULL           };  
  static const struct Hook Project_CloseHook            = { { NULL,NULL },(VOID *)Proj_Close,NULL,NULL        };
  
  static const struct Hook Enviroment_PrefsHook         = { { NULL,NULL },(VOID *)Enviroment_Prefs,NULL,NULL    };
  static const struct Hook Help_AboutHook               = { { NULL,NULL },(VOID *)Help_About,NULL,NULL          };
  
  Object *OutMenu;
  Object *Temp;
      
static struct NewMenu MenuData1[] =
{
        { NM_TITLE ,"File"              , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "New"             , 0 ,0  ,0             ,(APTR)File_New         },
        {  NM_ITEM ,  "Open"            , 0 ,0  ,0             ,(APTR)File_Open        },
        {  NM_ITEM ,  "Save"            , 0 ,0,0             ,(APTR)File_Save        },
        {  NM_ITEM ,  "Save As"         , 0 ,0,0             ,(APTR)File_SaveAs      },
        {  NM_ITEM ,  "Save All"        , 0 ,0,0             ,(APTR)File_SaveAll     },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Print"           , 0 ,0,0             ,(APTR)File_Print       },
        {  NM_ITEM ,  "Print Setup     ", 0 ,0  ,0             ,(APTR)File_PrintSetup  },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Exit.."          , 0 ,0  ,0             ,(APTR)File_Exit        },
        
        { NM_TITLE ,"Edit"              , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Undo"            , 0 ,0,0             ,(APTR)Edit_Undo        },
        {  NM_ITEM ,  "Redo"            , 0 ,0,0             ,(APTR)Edit_Redo        },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Cut"             , "x" ,0,0             ,(APTR)Edit_Cut         },
        {  NM_ITEM ,  "Copy"            , "c" ,0,0             ,(APTR)Edit_Copy        },
        {  NM_ITEM ,  "Paste           ", "v" ,0,0             ,(APTR)Edit_Paste       },
        {  NM_ITEM ,  "Clear"           , "z" ,0,0             ,(APTR)Edit_Clear       },
        
        { NM_TITLE ,"Search"            , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Find"            , 0 ,0,0             ,(APTR)Search_Find      },
        {  NM_ITEM ,  "Replace"         , 0 ,0,0             ,(APTR)Search_Replace   },
        {  NM_ITEM ,  "Search Again"    , 0 ,0,0             ,(APTR)Search_Again     },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Go To Line #"    , 0 ,0,0             ,(APTR)Search_GoTo      },
        {  NM_ITEM ,  "Previous Error  ", 0 ,0,0             ,(APTR)Search_PrevErr   },
        {  NM_ITEM ,  "Next Error"      , 0 ,0,0             ,(APTR)Search_NextErr   },
        
        { NM_TITLE ,"Run"               , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Run"             , 0 ,0,0             ,(APTR)Run_Run          },
        {  NM_ITEM ,  "Arguments.."     , 0 ,0  ,0             ,(APTR)Run_Args         },
        {  NM_ITEM ,  "Debugger"        , 0 ,0,0             ,(APTR)Run_Debug        },
        {  NM_ITEM ,  "Debugger...     ", 0 ,0  ,0             ,(APTR)Run_DebugArgs    },
        
        { NM_TITLE ,"Compile"           , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Compile"         , 0 ,0,0             ,(APTR)Compile_Compile  },
        {  NM_ITEM ,  "Make"            , 0 ,0,0             ,(APTR)Compile_Make     },
        {  NM_ITEM ,  "Link"            , 0 ,0,0             ,(APTR)Compile_Link     },
        {  NM_ITEM ,  "Build All"       , 0 ,0,0             ,(APTR)Compile_Build    },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Information"     , 0 ,0  ,0             ,(APTR)Compile_Info     },
        {  NM_ITEM ,  "Remove Messages ", 0 ,0,0             ,(APTR)Compile_RemMess  },
        
        { NM_TITLE ,"Project"           , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Open Project"    , 0 ,0  ,0             ,(APTR)Project_Open     },
        {  NM_ITEM ,  "Close Project"   , 0 ,0,0             ,(APTR)Project_Close    },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Add Item"        , 0 ,0,0             ,(APTR)Project_Add      },
        {  NM_ITEM ,  "Delete Item"     , 0 ,0,0             ,(APTR)Project_Rem      },
        {  NM_ITEM ,  "Include Files.. ", 0 ,0,0             ,(APTR)Project_Include  },
        
        { NM_TITLE ,"Browse"            , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Classes"         , 0 ,0  ,0             ,(APTR)Browse_Classes   },
        {  NM_ITEM ,  "Functions"       , 0 ,0  ,0             ,(APTR)Browse_Functions },
        {  NM_ITEM ,  "Variables"       , 0 ,0  ,0             ,(APTR)Browse_Variables },
        {  NM_ITEM ,  "Symbol at Cursor", 0 ,0  ,0             ,(APTR)Browse_Symbol    },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0  ,0             ,(APTR)0                },
        {  NM_ITEM ,  "Rewind"          , 0 ,0,0             ,(APTR)Browse_Rewind    },
        {  NM_ITEM ,  "Overview"        , 0 ,0,0             ,(APTR)Browse_Overview  },
        {  NM_ITEM ,  "Inspect"         , 0 ,0,0             ,(APTR)Browse_Inspect   },
        {  NM_ITEM ,  "Goto"            , 0 ,0,0             ,(APTR)Browse_Goto      },
        
        { NM_TITLE ,"Options"           , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Application..   ", 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Compile.."       , 0 ,0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Code generation..."         , 0, 0 ,0,(APTR)0            },
        {   NM_SUB ,    "Advanced code generation...", 0, 0 ,0,(APTR)0            },
        {   NM_SUB ,    "Entry/Exit code.."          , 0, 0 ,0,(APTR)0            }, 
        {   NM_SUB ,    "C++ Options"   , 0, 0 ,0             ,(APTR)0            }, 
        {   NM_SUB ,    "Optimizations" , 0, 0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Source.."      , 0, 0 ,0             ,(APTR)0            },          
        {   NM_SUB ,    "Names..."      , 0, 0 ,0             ,(APTR)0            }, 
        {  NM_ITEM ,  "Make.."          , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Linkers.."       , 0 ,0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Setting..."    , 0, 0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Libraries..."  , 0, 0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Librarian"       , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Directories"     , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Resources.."     , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Enviroment.."    , 0 ,0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Preferences...", 0, 0 ,0             ,(APTR)Env_Prefs    },        
        {   NM_SUB ,    "Editor..."     , 0, 0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Highlight..."  , 0, 0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Mouse..."      , 0, 0 ,0             ,(APTR)0            },
        {   NM_SUB ,    "Desktop..."    , 0, 0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Save.."          , 0 ,0 ,0             ,(APTR)0            },
        
        { NM_TITLE ,"Windows"           , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Cascade.."       , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Tile.."          , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Arrange Icons.      "    , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Close All.."     , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Message"         , 0 ,CHECKIT|MENUTOGGLE ,0             ,(APTR)Win_Msg           },
        {  NM_ITEM ,  "Project"         , 0 ,CHECKIT|MENUTOGGLE ,0             ,(APTR)Win_Prj           },

        { NM_TITLE ,"Help"              , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Index"           , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Topic Search      "      , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "Using Help"      , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  NM_BARLABEL       , 0 ,0 ,0             ,(APTR)0            },
        {  NM_ITEM ,  "About.."         , 0 ,0 ,0             ,(APTR)Hlp_About   },        
        { NM_END,NULL,0,0,0,(APTR)0 },
};
 
                  
      OutMenu = MUI_MakeObject(MUIO_MenustripNM,MenuData1,0);    
              
      Temp = DoMethod(OutMenu,MUIM_FindUData,File_Exit);
      
      DoMethod(Temp,MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime,
               MUIV_Notify_Application,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit);
                                               
      InstallCallHook(File_New,File_NewHook);         
      InstallCallHook(File_Open,File_OpenHook);
      InstallCallHook(File_Save,File_SaveHook);
      InstallCallHook(File_SaveAs,File_SaveAsHook);
      InstallCallHook(File_SaveAll,File_SaveAllHook);
      
      InstallCallHook(Edit_Copy,Edit_CopyHook);
      InstallCallHook(Edit_Paste,Edit_PasteHook);
      InstallCallHook(Edit_Cut,Edit_CutHook);
      
      InstallCallHook(Project_Open,Project_OpenHook);      
      InstallCallHook(Project_Close,Project_CloseHook);
      InstallCallHook(Project_Rem,Project_RemItemHook);
      
      InstallCallHook(Project_Add,Project_AddItemHook);
      InstallCallHook(Env_Prefs,Enviroment_PrefsHook);
      InstallCallHook(Hlp_About,Help_AboutHook);
                                                 
               
      return(OutMenu);

}















