mirror of
https://github.com/gnustep/apps-projectcenter.git
synced 2025-03-19 00:51:51 +00:00
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:
parent
0d86fadeb3
commit
6485275f21
5 changed files with 88 additions and 37 deletions
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:@""];
|
||||
|
||||
|
|
Loading…
Reference in a new issue