Finished setting proper SVN properties on files and cleaned up some
[ITKit.git] / ITCategory-NSMenu.m
old mode 100755 (executable)
new mode 100644 (file)
index fab2497..69d3c61
@@ -1,23 +1,20 @@
-//
-//  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 <NSMenuItem>
+- (int)indentationLevel;
+- (void)setIndentationLevel:(int)indentationLevel;
+@end
 
-@implementation NSMenu (ITCategory)
+@implementation NSMenu (ITKitCategory)
 
-- (void)indentItem:(NSMenuItem *)item {
+- (void)indentItem:(id <NSMenuItem>)item {
     [self indentItem:item toLevel:1];
 }
 
@@ -25,14 +22,19 @@ extern MenuRef _NSGetCarbonMenu( NSMenu *menu);
     [self indentItemAtIndex:index toLevel:1];
 }
 
-- (void)indentItem:(NSMenuItem *)item toLevel:(int)indentLevel {
+- (void)indentItem:(id <NSMenuItem>)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 <NSMenuItem> 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