This is STMenuCategory.m in view mode; [Download] [Up]
/* STMenuCategory.m - written by Robert Vasvari 6/94
this class is created solely for the purpose of dealing with
menus */
#import "STMenuCategory.h"
@implementation STAppController(MenuController)
- setupMenus:sender
{
id matrix;
/* take care of the document menu */
matrix=[documentMenu itemList];
[[matrix cellAt:2 :0] //save
setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
[[matrix cellAt:3 :0] //saveAs
setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
[[matrix cellAt:4 :0] //SaveTo
setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
[[matrix cellAt:5 :0] //SaveAll
setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
[[matrix cellAt:6 :0] //Revert
setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
[[matrix cellAt:7 :0] //Close
setUpdateAction:@selector(updateDocMenus:) forMenu:documentMenu];
/* take care of the window menu */
[windowsMiniaturize setUpdateAction:
@selector(updateWindowsMiniaturize:) forMenu:[NXApp windowsMenu]];
[windowsClose setUpdateAction:
@selector(updateWindowsClose:) forMenu:[NXApp windowsMenu]];
/* this will fix all of the edit menus */
matrix=[editMenu itemList];
[[matrix cellAt:0 :0] setUpdateAction:
@selector(updateEditMenus:) forMenu:editMenu];
[[matrix cellAt:1 :0] setUpdateAction:
@selector(updateEditMenus:) forMenu:editMenu];
[[matrix cellAt:2 :0] setUpdateAction:
@selector(updateEditMenus:) forMenu:editMenu];
[[matrix cellAt:3 :0] setUpdateAction:
@selector(updateEditMenus:) forMenu:editMenu];
[[matrix cellAt:4 :0] setUpdateAction:
@selector(updateEditMenus:) forMenu:editMenu];
return self;
}
/* menu update methods */
- (BOOL)updateDocMenus:aMenuCell
{
return [self setMenu:aMenuCell
enable:([self currentDoc]!=nil)];
}
- (BOOL)updateWindowsMiniaturize:aMenuCell
{
id t;
t=[NXApp calcTargetForAction:[aMenuCell action]];
return [self setMenu:aMenuCell
enable:(t && ([t buttonMask]&NX_MINIATURIZEBUTTONMASK)!=0)];
}
- (BOOL)updateWindowsClose:aMenuCell
{
id t=[NXApp calcTargetForAction:[aMenuCell action]];
return [self setMenu:aMenuCell
enable:(t && ([t buttonMask]&NX_CLOSEBUTTONMASK)!=0)];
}
- (BOOL)updateEditMenus:aMenuCell
{
return [self setMenu:aMenuCell
enable:[[[NXApp keyWindow] firstResponder]
respondsTo:@selector(paste:)]];
}
- (BOOL)isDeleteEnabled
{ return [editDelete isEnabled];
}
- (BOOL)setMenu:aMenuCell enable:(BOOL)flag
{ if(flag)
{ if(![aMenuCell isEnabled])
{ [aMenuCell setEnabled:YES];
return YES;
}
}
else
{ if([aMenuCell isEnabled])
{ [aMenuCell setEnabled:NO];
return YES;
}
}
return NO;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.