Menus are now enabled/disabled whenever they should...

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@12391 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Philippe C.D. Robert 2002-02-02 21:15:38 +00:00
parent 0d86fadeb3
commit 6485275f21
5 changed files with 88 additions and 37 deletions

View file

@ -52,11 +52,12 @@
- (void)addFile:(id)sender;
- (void)openFile:(id)sender;
- (void)saveFile:(id)sender;
- (void)saveFileAs:(id)sender;
- (void)revertFile:(id)sender;
- (void)renameFile:(id)sender;
- (void)removeFile:(id)sender;
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
@end

View file

@ -122,11 +122,6 @@
[menuController saveFile:sender];
}
- (void)saveFileAs:(id)sender
{
[menuController saveFileAs:sender];
}
- (void)revertFile:(id)sender
{
[menuController revertFile:sender];
@ -142,4 +137,9 @@
[menuController removeFile:sender];
}
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem
{
return [menuController validateMenuItem:menuItem];
}
@end

View file

@ -38,6 +38,8 @@
NSBox *projectTypeAccessaryView;
id projectTypePopup;
BOOL editorIsKey;
}
//============================================================================
@ -74,7 +76,6 @@
- (void)addFile:(id)sender;
- (void)openFile:(id)sender;
- (void)saveFile:(id)sender;
- (void)saveFileAs:(id)sender;
- (void)revertFile:(id)sender;
- (void)renameFile:(id)sender;
- (void)removeFile:(id)sender;
@ -85,4 +86,7 @@
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
- (void)editorDidResignKey:(NSNotification *)aNotification;
- (void)editorDidBecomeKey:(NSNotification *)aNotification;
@end

View file

@ -37,10 +37,24 @@
- (id)init
{
if ((self = [super init])) {
// The accessory view
if ((self = [super init]))
{
NSRect fr = NSMakeRect(20,30,160,20);
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(editorDidBecomeKey:)
name:PCEditorDidBecomeKeyNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(editorDidResignKey:)
name:PCEditorDidResignKeyNotification
object:nil];
editorIsKey = NO;
projectTypeAccessaryView = [[NSBox alloc] init];
projectTypePopup = [[[NSPopUpButton alloc] initWithFrame:NSMakeRect(20,30,160,20) pullsDown:NO] autorelease];
projectTypePopup = [[NSPopUpButton alloc] initWithFrame:fr pullsDown:NO];
[projectTypePopup addItemWithTitle:@"No type available!"];
[projectTypeAccessaryView setTitle:@"Project Types"];
@ -49,13 +63,18 @@
[projectTypeAccessaryView addSubview:projectTypePopup];
[projectTypeAccessaryView sizeToFit];
[projectTypeAccessaryView setAutoresizingMask: NSViewWidthSizable];
RELEASE(projectTypePopup);
}
return self;
}
- (void)dealloc
{
[projectTypeAccessaryView release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
RELEASE(projectTypeAccessaryView);
[super dealloc];
}
@ -63,7 +82,8 @@
{
static BOOL _firstItem = YES;
if (_firstItem) {
if (_firstItem)
{
_firstItem = NO;
[projectTypePopup removeItemWithTitle:@"No type available!"];
}
@ -106,15 +126,18 @@
retval = [openPanel runModalForDirectory:[[NSUserDefaults standardUserDefaults] objectForKey:@"LastOpenDirectory"] file:nil types:[NSArray arrayWithObjects:@"project",@"pcproj",nil]];
if (retval == NSOKButton) {
if (retval == NSOKButton)
{
BOOL isDir;
[[NSUserDefaults standardUserDefaults] setObject:[openPanel directory]
forKey:@"LastOpenDirectory"];
projPath = [[openPanel filenames] objectAtIndex:0];
if ([[NSFileManager defaultManager] fileExistsAtPath:projPath
isDirectory:&isDir] && !isDir){
isDirectory:&isDir] && !isDir)
{
if (![projectManager openProjectAt:projPath])
{
NSRunAlertPanel(@"Attention!",
@ -221,11 +244,16 @@
BOOL isDir;
[[NSUserDefaults standardUserDefaults] setObject:[openPanel directory] forKey:@"LastOpenDirectory"];
filePath = [[openPanel filenames] objectAtIndex:0];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDir] && !isDir) {
if (![projectManager openFile:filePath]) {
NSRunAlertPanel(@"Attention!",@"Couldn't open %@!",@"OK",nil,nil,filePath);
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDir] && !isDir)
{
if (![projectManager openFile:filePath])
{
NSRunAlertPanel(@"Attention!",
@"Couldn't open %@!",
@"OK",nil,nil,filePath);
}
}
}
@ -241,15 +269,6 @@
[projectManager saveFile];
}
- (void)saveFileAs:(id)sender
{
NSString *proj;
// Show open panel
[projectManager saveFileAs:proj];
}
- (void)revertFile:(id)sender
{
[projectManager revertFile];
@ -274,7 +293,8 @@
ret = NSRunAlertPanel(@"Remove File!",@"Really remove %@ in project %@?",@"Cancel",@"...from Project only",@"...from Project and Disk",file,[proj projectName]);
if (ret == NSAlertAlternateReturn || ret == NSAlertOtherReturn) {
if (ret == NSAlertAlternateReturn || ret == NSAlertOtherReturn)
{
BOOL flag = (ret == NSAlertOtherReturn) ? YES : NO;
[projectManager removeFilePermanently:flag];
@ -288,13 +308,40 @@
- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem
{
if (![[projectManager loadedProjects] count]) {
if ([menuItem title] == @"New in Project") return NO;
if ([menuItem title] == @"Add File") return NO;
if ([menuItem title] == @"Remove File") return NO;
if ([[projectManager loadedProjects] count] == 0)
{
// File related menu items
if ([[menuItem title] isEqualToString:@"New in Project"]) return NO;
if ([[menuItem title] isEqualToString:@"Add File"]) return NO;
if ([[menuItem title] isEqualToString:@"Remove File"]) return NO;
if ([[menuItem title] isEqualToString:@"Save File"]) return NO;
if ([[menuItem title] isEqualToString:@"Revert"]) return NO;
if ([[menuItem title] isEqualToString:@"Rename"]) return NO;
// Project related menu items
if ([[menuItem title] isEqualToString:@"Close"]) return NO;
if ([[menuItem title] isEqualToString:@"Save..."]) return NO;
if ([[menuItem title] isEqualToString:@"Save As..."]) return NO;
}
// File related menu items
if( editorIsKey == NO )
{
if ([[menuItem title] isEqualToString:@"Save File"]) return NO;
if ([[menuItem title] isEqualToString:@"Revert"]) return NO;
if ([[menuItem title] isEqualToString:@"Rename"]) return NO;
}
return YES;
}
- (void)editorDidResignKey:(NSNotification *)aNotification
{
editorIsKey = NO;
}
- (void)editorDidBecomeKey:(NSNotification *)aNotification
{
editorIsKey = YES;
}
@end

View file

@ -98,8 +98,8 @@ void createMenu()
[menu setSubmenu:project forItem:[menu itemWithTitle:@"Project"]];
[project addItemWithTitle:@"Open" action:@selector(openProject:) keyEquivalent:@"o"];
[project addItemWithTitle:@"New" action:@selector(newProject:) keyEquivalent:@"n"];
[project addItemWithTitle:@"Save" action:@selector(saveProject:) keyEquivalent:@"s"];
[project addItemWithTitle:@"Save As" action:@selector(saveProjectAs:) keyEquivalent:@"S"];
[project addItemWithTitle:@"Save..." action:@selector(saveProject:) keyEquivalent:@"s"];
[project addItemWithTitle:@"Save As..." action:@selector(saveProjectAs:) keyEquivalent:@"S"];
[project addItemWithTitle:@"Subprojects" action:action keyEquivalent:@""];
[project addItemWithTitle:@"Close" action:@selector(closeProject:) keyEquivalent:@""];
@ -115,12 +115,11 @@ void createMenu()
file = [[[NSMenu alloc] init] autorelease];
[menu setSubmenu:file forItem:[menu itemWithTitle:@"File"]];
[file addItemWithTitle:@"Open..." action:@selector(openFile:) keyEquivalent:@"O"];
[file addItemWithTitle:@"Add..." action:@selector(addFile:) keyEquivalent:@"A"];
[file addItemWithTitle:@"Open File" action:@selector(openFile:) keyEquivalent:@"O"];
[file addItemWithTitle:@"Add File" action:@selector(addFile:) keyEquivalent:@"A"];
[file addItemWithTitle:@"New in Project" action:@selector(newFile:) keyEquivalent:@"N"];
[file addItemWithTitle:@"Remove File" action:@selector(removeFile:) keyEquivalent:@""];
[file addItemWithTitle:@"Save..." action:@selector(saveFile:) keyEquivalent:@""];
[file addItemWithTitle:@"Save as..." action:@selector(saveFileAs:) keyEquivalent:@""];
[file addItemWithTitle:@"Save File" action:@selector(saveFile:) keyEquivalent:@""];
[file addItemWithTitle:@"Revert" action:@selector(revertFile:) keyEquivalent:@""];
[file addItemWithTitle:@"Rename" action:@selector(renameFile:) keyEquivalent:@""];