/* GNUstep ProjectCenter - http://www.gnustep.org Copyright (C) 2001 Free Software Foundation Author: Philippe C.D. Robert This file is part of GNUstep. This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This application is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. $Id$ */ #include #include #include"PCAppController.h" void createMenu(); int main(int argc, const char **argv) { #ifdef GNUSTEP_BASE_VERSION NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; PCAppController *controller; [NSApplication sharedApplication]; createMenu(); controller = [[PCAppController alloc] init]; [NSApp setDelegate:controller]; RELEASE(pool); #endif return NSApplicationMain (argc, argv); } void createMenu() { NSMenu *menu; NSMenu *info; NSMenu *project; #ifdef ENABLE_SUBPROJECTS NSMenu *subprojects; #endif NSMenu *file; #ifdef ENABLE_ALL_FILE_OPERATIONS NSMenu *file_view; #endif NSMenu *edit; NSMenu *edit_find; NSMenu *edit_undo; NSMenu *edit_indent; NSMenu *format; NSMenu *format_text; NSMenu *tools; NSMenu *tools_build; #ifdef ENABLE_PROJECTFIND NSMenu *tools_find; #endif #ifdef ENABLE_LOADEDFILES NSMenu *tools_files; #endif NSMenu *tools_launcher; #ifdef ENABLE_INDEXER NSMenu *tools_indexer; #endif NSMenu *windows; NSMenu *services; SEL action = @selector(method:); menu = [[NSMenu alloc] initWithTitle: @"ProjectCenter"]; /* * The main menu */ [menu addItemWithTitle:@"Info" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Project" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"File" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Edit" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Format" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Tools" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Windows" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Print..." action:action keyEquivalent:@"p"]; [menu addItemWithTitle:@"Services" action:action keyEquivalent:@""]; [menu addItemWithTitle:@"Hide" action:@selector(hide:) keyEquivalent:@"h"]; [menu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"]; /* * Info submenu */ info = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:info forItem:[menu itemWithTitle:@"Info"]]; [info addItemWithTitle:@"Info Panel..." action:@selector(showInfoPanel:) keyEquivalent:@""]; [info addItemWithTitle:@"Preferences..." action:@selector(showPrefWindow:) keyEquivalent:@""]; [info addItemWithTitle:@"Help" action:action keyEquivalent:@"?"]; /* * Project submenu */ project = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:project forItem:[menu itemWithTitle:@"Project"]]; [project addItemWithTitle:@"Open..." action:@selector(projectOpen:) keyEquivalent:@"O"]; [project addItemWithTitle:@"New..." action:@selector(projectNew:) keyEquivalent:@"N"]; [project addItemWithTitle:@"Save" action:@selector(projectSave:) keyEquivalent:@"S"]; [project addItemWithTitle:@"Save As..." action:@selector(projectSaveAs:) keyEquivalent:@""]; [project addItemWithTitle:@"Add Files..." action:@selector(projectAddFiles:) keyEquivalent:@"A"]; [project addItemWithTitle:@"Save Files..." action:@selector(projectSaveFiles:) keyEquivalent:@"Q"]; [project addItemWithTitle:@"Remove Files..." action:@selector(projectRemoveFiles:) keyEquivalent:@"r"]; #ifdef ENABLE_SUBPROJECTS [project addItemWithTitle:@"Subprojects" action:action keyEquivalent:@""]; #endif [project addItemWithTitle:@"Close" action:@selector(projectClose:) keyEquivalent:@""]; #ifdef ENABLE_SUBPROJECTS subprojects = [[[NSMenu alloc] init] autorelease]; [project setSubmenu:subprojects forItem:[project itemWithTitle:@"Subprojects"]]; [subprojects addItemWithTitle:@"New..." action:@selector(newSubproject:) keyEquivalent:@""]; [subprojects addItemWithTitle:@"Add..." action:@selector(addSubproject:) keyEquivalent:@""]; [subprojects addItemWithTitle:@"Remove..." action:@selector(removeSubproject:) keyEquivalent:@""]; #endif /* * File submenu */ file = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:file forItem:[menu itemWithTitle:@"File"]]; [file addItemWithTitle:@"Open..." action:@selector(fileOpen:) keyEquivalent:@"o"]; [file addItemWithTitle:@"New in Project" action:@selector(fileNew:) keyEquivalent:@"n"]; [file addItemWithTitle:@"Save" action:@selector(fileSave:) keyEquivalent:@"s"]; [file addItemWithTitle:@"Save As..." action:@selector(fileSaveAs:) keyEquivalent:@""]; [file addItemWithTitle:@"Save To..." action:@selector(fileSaveTo:) keyEquivalent:@""]; [file addItemWithTitle:@"Revert to Saved" action:@selector(fileRevertToSaved:) keyEquivalent:@"u"]; [file addItemWithTitle:@"Close" action:@selector(fileClose:) keyEquivalent:@"W"]; #ifdef ENABLE_ALL_FILE_OPERATIONS [file addItemWithTitle:@"View" action:action keyEquivalent:@""]; [file addItemWithTitle:@"Open Quickly..." action:@selector(fileOpenQuickly:) keyEquivalent:@"D"]; [file addItemWithTitle:@"Rename" action:@selector(fileRename:) keyEquivalent:@""]; [file addItemWithTitle:@"New Untitled" action:@selector(fileNewUntitled:) keyEquivalent:@""]; file_view = [[[NSMenu alloc] init] autorelease]; [file setSubmenu:file_view forItem:[file itemWithTitle:@"View"]]; [file_view addItemWithTitle:@"Split" action:action keyEquivalent:@"2"]; [file_view addItemWithTitle:@"Maximize" action:action keyEquivalent:@"1"]; [file_view addItemWithTitle:@"Tear Off" action:action keyEquivalent:@"T"]; #endif /* * Edit submenu */ edit = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:edit forItem:[menu itemWithTitle:@"Edit"]]; [edit addItemWithTitle:@"Cut" action:@selector(cut:) keyEquivalent:@"x"]; [edit addItemWithTitle:@"Copy" action:@selector(copy:) keyEquivalent:@"c"]; [edit addItemWithTitle:@"Paste" action:@selector(paste:) keyEquivalent:@"v"]; [edit addItemWithTitle:@"Delete" action:@selector(delete:) keyEquivalent:@""]; [edit addItemWithTitle:@"Select All" action:@selector(selectAll:) keyEquivalent:@"a"]; [edit addItemWithTitle:@"Find" action:action keyEquivalent:@""]; [edit addItemWithTitle:@"Undo" action:action keyEquivalent:@""]; [edit addItemWithTitle:@"Indentation" action:action keyEquivalent:@""]; [edit addItemWithTitle:@"Spelling..." action:action keyEquivalent:@""]; [edit addItemWithTitle:@"Check Spelling" action:action keyEquivalent:@";"]; // Find edit_find = [[[NSMenu alloc] init] autorelease]; [edit setSubmenu:edit_find forItem:[edit itemWithTitle:@"Find"]]; [edit_find addItemWithTitle:@"Find Panel..." action:@selector(findShowPanel:) keyEquivalent:@"f"]; [edit_find addItemWithTitle:@"Find Next" action:@selector(findNext:) keyEquivalent:@"g"]; [edit_find addItemWithTitle:@"Find Previous" action:@selector(findPrevious:) keyEquivalent:@"d"]; [edit_find addItemWithTitle:@"Enter Selection" action:action keyEquivalent:@"e"]; [edit_find addItemWithTitle:@"Jump to Selection" action:action keyEquivalent:@"j"]; [edit_find addItemWithTitle:@"Line Number..." action:action keyEquivalent:@"I"]; [edit_find addItemWithTitle:@"Man Page" action:action keyEquivalent:@"M"]; // Undo edit_undo = [[[NSMenu alloc] init] autorelease]; [edit setSubmenu:edit_undo forItem:[edit itemWithTitle:@"Undo"]]; [edit_undo addItemWithTitle:@"Undo" action:action keyEquivalent:@"z"]; [edit_undo addItemWithTitle:@"Redo" action:action keyEquivalent:@"Z"]; [edit_undo addItemWithTitle:@"Undo Region" action:action keyEquivalent:@""]; // Indentation edit_indent = [[[NSMenu alloc] init] autorelease]; [edit setSubmenu:edit_indent forItem:[edit itemWithTitle:@"Indentation"]]; [edit_indent addItemWithTitle:@"Indent" action:action keyEquivalent:@"i"]; [edit_indent addItemWithTitle:@"Shift Left" action:action keyEquivalent:@"["]; [edit_indent addItemWithTitle:@"Shift Right" action:action keyEquivalent:@"]"]; [edit_indent addItemWithTitle:@"Compress Whitesapce" action:action keyEquivalent:@"{"]; [edit_indent addItemWithTitle:@"Expand Message Expression" action:action keyEquivalent:@"}"]; /* * Format submenu */ format = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:format forItem:[menu itemWithTitle:@"Format"]]; [format addItemWithTitle:@"Font" action:action keyEquivalent:@""]; [format addItemWithTitle:@"Text" action:action keyEquivalent:@""]; [format addItemWithTitle:@"Make Rich Text" action:action keyEquivalent:@"R"]; [format addItemWithTitle:@"Show All Characters" action:action keyEquivalent:@""]; [format addItemWithTitle:@"Page Layout..." action:action keyEquivalent:@"P"]; // Font [format setSubmenu:[[NSFontManager sharedFontManager] fontMenu: YES] forItem:[format itemWithTitle:@"Font"]]; // Text format_text = [[[NSMenu alloc] init] autorelease]; [format setSubmenu:format_text forItem:[format itemWithTitle:@"Text"]]; [format_text addItemWithTitle:@"Align Left" action:action keyEquivalent:@""]; [format_text addItemWithTitle:@"Center" action:action keyEquivalent:@""]; [format_text addItemWithTitle:@"Align Right" action:action keyEquivalent:@""]; [format_text addItemWithTitle:@"Show Ruler" action:action keyEquivalent:@""]; [format_text addItemWithTitle:@"Copy Ruler" action:action keyEquivalent:@""]; [format_text addItemWithTitle:@"Paste Ruler" action:action keyEquivalent:@""]; /* * Tools submenu */ tools = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:tools forItem:[menu itemWithTitle:@"Tools"]]; // probert: either use a NSToolbar or remove that! #ifdef ENABLE_TOOLBAR [tools addItemWithTitle:@"Hide Tool Bar" action:action keyEquivalent:@""]; #endif [tools addItemWithTitle:@"Inspector..." action:@selector(showInspector:) keyEquivalent:@""]; #ifdef ENABLE_LOADEDPROJECTS [tools addItemWithTitle:@"Loaded Projects..." action:action keyEquivalent:@""]; #endif [tools addItemWithTitle:@"Project Build" action:action keyEquivalent:@""]; #ifdef ENABLE_PROJECTFIND [tools addItemWithTitle:@"Project Find" action:action keyEquivalent:@""]; #endif #ifdef ENABLE_LOADEDFILES [tools addItemWithTitle:@"Loaded Files" action:action keyEquivalent:@""]; #endif [tools addItemWithTitle:@"Launcher" action:action keyEquivalent:@""]; #ifdef ENABLE_INDEXER [tools addItemWithTitle:@"Indexer" action:action keyEquivalent:@""]; #endif // Project Build tools_build = [[[NSMenu alloc] init] autorelease]; [tools setSubmenu:tools_build forItem:[tools itemWithTitle:@"Project Build"]]; [tools_build addItemWithTitle:@"Show Panel..." action:@selector(showBuildPanel:) keyEquivalent:@""]; [tools_build addItemWithTitle:@"Build" action:action keyEquivalent:@"B"]; [tools_build addItemWithTitle:@"Stop Build" action:action keyEquivalent:@"/"]; [tools_build addItemWithTitle:@"Clean" action:action keyEquivalent:@""]; [tools_build addItemWithTitle:@"Next Error" action:action keyEquivalent:@">"]; [tools_build addItemWithTitle:@"Previous Error" action:action keyEquivalent:@"<"]; // Project Find #ifdef ENABLE_PROJECTFIND tools_find = [[[NSMenu alloc] init] autorelease]; [tools setSubmenu:tools_find forItem:[tools itemWithTitle:@"Project Find"]]; [tools_find addItemWithTitle:@"Show Panel..." action:action keyEquivalent:@"F"]; [tools_find addItemWithTitle:@"Find References" action:action keyEquivalent:@"0"]; [tools_find addItemWithTitle:@"Find Definitions" action:action keyEquivalent:@"9"]; [tools_find addItemWithTitle:@"Find Text" action:action keyEquivalent:@"8"]; [tools_find addItemWithTitle:@"Find Regular Expr" action:action keyEquivalent:@"7"]; [tools_find addItemWithTitle:@"Next match" action:action keyEquivalent:@""]; [tools_find addItemWithTitle:@"Previuos match" action:action keyEquivalent:@""]; #endif // Loaded Files #ifdef ENABLE_LOADEDFILES tools_files = [[[NSMenu alloc] init] autorelease]; [tools setSubmenu:tools_files forItem:[tools itemWithTitle:@"Loaded Files"]]; [tools_files addItemWithTitle:@"Show Panel..." action:action keyEquivalent:@"L"]; [tools_files addItemWithTitle:@"Sort by Time Viewed" action:action keyEquivalent:@""]; [tools_files addItemWithTitle:@"Sort by Name" action:action keyEquivalent:@""]; [tools_files addItemWithTitle:@"Next File" action:action keyEquivalent:@"+"]; [tools_files addItemWithTitle:@"Previuos File" action:action keyEquivalent:@"_"]; #endif // Launcher tools_launcher = [[[NSMenu alloc] init] autorelease]; [tools setSubmenu:tools_launcher forItem:[tools itemWithTitle:@"Launcher"]]; [tools_launcher addItemWithTitle:@"Show Panel..." action:@selector(showRunPanel:) keyEquivalent:@""]; [tools_launcher addItemWithTitle:@"Run" action:@selector(runTarget:) keyEquivalent:@""]; [tools_launcher addItemWithTitle:@"Debug" action:action keyEquivalent:@""]; #ifdef ENABLE_INDEXER // Indexer tools_indexer = [[[NSMenu alloc] init] autorelease]; [tools setSubmenu:tools_indexer forItem:[tools itemWithTitle:@"Indexer"]]; [tools_indexer addItemWithTitle:@"Show Panel..." action:action keyEquivalent:@""]; [tools_indexer addItemWithTitle:@"Purge Indices" action:action keyEquivalent:@""]; [tools_indexer addItemWithTitle:@"Index Subproject" action:action keyEquivalent:@"|"]; [tools_indexer addItemWithTitle:@"Index File" action:action keyEquivalent:@"*"]; #endif /* * Windows submenu */ windows = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:windows forItem:[menu itemWithTitle:@"Windows"]]; [windows addItemWithTitle:@"Arrange in Front" action:@selector(arrangeInFront:) keyEquivalent:@""]; [windows addItemWithTitle:@"Miniaturize Window" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [windows addItemWithTitle:@"Close Window" action:@selector(performClose:) keyEquivalent:@"w"]; /* * Services submenu */ services = [[[NSMenu alloc] init] autorelease]; [menu setSubmenu:services forItem:[menu itemWithTitle:@"Services"]]; [[NSApplication sharedApplication] setWindowsMenu: windows]; [[NSApplication sharedApplication] setServicesMenu: services]; [[NSApplication sharedApplication] setMainMenu:menu]; }