diff --git a/ChangeLog b/ChangeLog index ccbd536..9422d24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2014-03-02 German Arias + + * PCAppController.m: For Windows add a menu with all types of projects. + So the user can select directly the type of project he want. + * Headers/ProjectCenter/PCProjectManager.h: + * Framework/PCProjectManager.m: Add the neccesary changes to use the + selected type of project at main menu (on Windows). + * PCMenuController.m: Use the new method to make a new project. + 2014-01-17 German Arias * English.lproj/ProjectCenter.gorm: Connect option "Line Number..." diff --git a/Framework/PCProjectManager.m b/Framework/PCProjectManager.m index 2dba378..758c788 100644 --- a/Framework/PCProjectManager.m +++ b/Framework/PCProjectManager.m @@ -805,16 +805,20 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; return project; } -- (void)newProject +- (void)newProject: (id)sender { - NSArray *files; + NSArray *files, *types = nil; NSString *filePath; NSString *projectType; PCProject *project; +#ifdef WIN32 + types = [NSArray arrayWithObject: @"pcproj"]; +#endif + [self createProjectTypeAccessaryView]; - files = [fileManager filesOfTypes:nil + files = [fileManager filesOfTypes:types operation:PCSaveFileOperation multiple:NO title:@"New Project" @@ -837,7 +841,11 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; } } +#ifdef WIN32 + projectType = [(NSMenuItem *)sender title]; +#else projectType = [projectTypePopup titleOfSelectedItem]; +#endif if (!(project = [self createProjectOfType:projectType path:filePath])) { diff --git a/Headers/ProjectCenter/PCProjectManager.h b/Headers/ProjectCenter/PCProjectManager.h index 12021f3..4109b5f 100644 --- a/Headers/ProjectCenter/PCProjectManager.h +++ b/Headers/ProjectCenter/PCProjectManager.h @@ -142,7 +142,7 @@ extern NSString *PCActiveProjectDidChangeNotification; - (void)openProject; - (PCProject *)createProjectOfType:(NSString *)projectType path:(NSString *)aPath; -- (void)newProject; +- (void)newProject: (id)sender; - (BOOL)saveProject; // Calls saveAllProjects if the preferences are setup accordingly. diff --git a/PCAppController.m b/PCAppController.m index d0fa19e..8cea667 100644 --- a/PCAppController.m +++ b/PCAppController.m @@ -70,6 +70,40 @@ { [menuController setAppController:self]; [menuController setProjectManager:projectManager]; + +#ifdef WIN32 + NSMenuItem *item; + NSMenu *typeMenu = [NSMenu new]; + + [[typeMenu addItemWithTitle: @"Aggregate" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + [[typeMenu addItemWithTitle: @"Application" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + [[typeMenu addItemWithTitle: @"Bundle" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + [[typeMenu addItemWithTitle: @"Framework" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + [[typeMenu addItemWithTitle: @"Library" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + [[typeMenu addItemWithTitle: @"Resource Set" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + [[typeMenu addItemWithTitle: @"Tool" + action: @selector(projectNew:) + keyEquivalent: @""] setTarget: menuController]; + + item = [[[[NSApp mainMenu] itemWithTitle: _(@"Project")] submenu] + itemWithTitle: _(@"New...")]; + [item setTitle: _(@"New")]; + [item setKeyEquivalent: @""]; + [item setSubmenu: typeMenu]; + [typeMenu release]; +#endif } //============================================================================ diff --git a/PCMenuController.m b/PCMenuController.m index 7776024..0e92f89 100644 --- a/PCMenuController.m +++ b/PCMenuController.m @@ -106,7 +106,7 @@ - (void)projectNew:(id)sender { - [projectManager newProject]; + [projectManager newProject: sender]; } - (void)projectSave:(id)sender