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.