X-Git-Url: http://git.ithinksw.org/ITKit.git/blobdiff_plain/bdd55e54cd41b9deceb02c64d9345e91246f61d4..7a218424c6a92eb4979564a7260f862edd46052d:/ITCategory-NSMenu.m diff --git a/ITCategory-NSMenu.m b/ITCategory-NSMenu.m old mode 100755 new mode 100644 index fd048e1..69d3c61 --- a/ITCategory-NSMenu.m +++ b/ITCategory-NSMenu.m @@ -1,38 +1,40 @@ -// -// ITCategory-NSMenu.m -// ITKit -// -// Created by Joseph Spiros on Sat Sep 27 2003. -// Copyright (c) 2003 __MyCompanyName__. All rights reserved. -// - #import "ITCategory-NSMenu.h" -@interface NSMenu (HACKHACKHACKHACK) +extern void _NSGetMenuItemForCommandKeyEvent(NSMenu *menu, void *chicken, void *taco, void *food); +extern MenuRef _NSGetCarbonMenu(NSMenu *menu); + +@interface NSMenu (ITKitCategoryHacks) - (id)_menuImpl; @end -extern void _NSGetMenuItemForCommandKeyEvent (NSMenu *menu, void *chicken, void *taco, void *food); -extern MenuRef _NSGetCarbonMenu( NSMenu *menu); +@protocol _ITKitCategoryNSMenuItemPantherCompatability +- (int)indentationLevel; +- (void)setIndentationLevel:(int)indentationLevel; +@end -@implementation NSMenu (ITCategory) +@implementation NSMenu (ITKitCategory) -- (void)indentItem:(NSMenuItem *)item { - [self indentItem:item toLevel:2]; +- (void)indentItem:(id )item { + [self indentItem:item toLevel:1]; } - (void)indentItemAtIndex:(int)index { - [self indentItemAtIndex:index toLevel:2]; + [self indentItemAtIndex:index toLevel:1]; } -- (void)indentItem:(NSMenuItem *)item toLevel:(int)indentLevel { +- (void)indentItem:(id )item toLevel:(int)indentLevel { [self indentItemAtIndex:[self indexOfItem:item] toLevel:indentLevel]; } - (void)indentItemAtIndex:(int)index toLevel:(int)indentLevel { - MenuRef carbonMenu = [self menuRef]; - if (carbonMenu) { - SetMenuItemIndent(carbonMenu, index + 1, indentLevel); + id theItem = [self itemAtIndex:index]; + if ([theItem respondsToSelector:@selector(setIndentationLevel:)]) { + [(id <_ITKitCategoryNSMenuItemPantherCompatability>)theItem setIndentationLevel:indentLevel]; + } else { + MenuRef carbonMenu = [self menuRef]; + if (carbonMenu) { + SetMenuItemIndent(carbonMenu, index + 1, indentLevel); + } } } @@ -40,8 +42,8 @@ extern MenuRef _NSGetCarbonMenu( NSMenu *menu); MenuRef carbonMenu; int w00t, m00f; - if( [self respondsToSelector:@selector(_menuImpl)] ) { - [self _menuImpl]; + if ([self respondsToSelector:@selector(_menuImpl)]) { + (void)[self _menuImpl]; } else { return nil; } @@ -51,4 +53,14 @@ extern MenuRef _NSGetCarbonMenu( NSMenu *menu); return carbonMenu; } -@end +- (void)removeAllItems { + int numOfItems = [self numberOfItems]; + int i = numOfItems; + + while (i != 0) { + [self removeItemAtIndex:(i-1)]; + i--; + } +} + +@end \ No newline at end of file