Changeset 2128

Show
Ignore:
Timestamp:
11/20/04 23:33:35 (4 years ago)
Author:
timothy
Message:

Same as r2127. AppleScripts? can pass a color list or HTML hex color as the icon value for menu items.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/overhaul/MVApplicationController.m

    r2102 r2128  
    44#import <ChatCore/NSMethodSignatureAdditions.h> 
    55#import <ChatCore/MVChatScriptPlugin.h> 
     6#import <ChatCore/NSColorAdditions.h> 
    67#import "NSURLAdditions.h" 
    78#import "MVColorPanel.h" 
     
    413414                                NSNumber *indent = [item objectForKey:@"indent"]; 
    414415                                NSNumber *alternate = [item objectForKey:@"alternate"]; 
    415                                 NSString *iconPath = [item objectForKey:@"icon"]; 
     416                                id iconPath = [item objectForKey:@"icon"]; 
    416417                                id iconSize = [item objectForKey:@"iconsize"]; 
    417418                                NSString *tooltip = [item objectForKey:@"tooltip"]; 
     
    424425                                if( ! [indent isKindOfClass:[NSNumber class]] ) indent = nil; 
    425426                                if( ! [alternate isKindOfClass:[NSNumber class]] ) alternate = nil; 
    426                                 if( ! [iconPath isKindOfClass:[NSString class]] ) iconPath = nil; 
     427                                if( ! [iconPath isKindOfClass:[NSString class]] && ! [iconPath isKindOfClass:[NSArray class]] ) iconPath = nil; 
    427428                                if( ! [iconSize isKindOfClass:[NSArray class]] && ! [iconSize isKindOfClass:[NSNumber class]] ) iconSize = nil; 
    428429                                if( ! [sub isKindOfClass:[NSArray class]] && ! [sub isKindOfClass:[NSDictionary class]] ) sub = nil; 
    429                                  
     430 
    430431                                NSMenuItem *mitem = [[[NSMenuItem alloc] initWithTitle:title action:@selector( performContextualMenuItemAction: ) keyEquivalent:@""] autorelease]; 
    431432                                if( context ) [mitem setRepresentedObject:context]; 
     
    448449                                } 
    449450 
    450                                 if( [iconPath length] ) { 
    451                                         NSURL *iconURL; 
    452                                         if( iconURL = [NSURL URLWithString:iconPath] ) { 
     451                                if( [iconPath isKindOfClass:[NSString class]] && [(NSString *)iconPath length] ) { 
     452                                        NSURL *iconURL = nil; 
     453                                        if( [iconPath hasPrefix:@"#"] ) { 
     454                                                NSSize size = NSZeroSize; 
     455                                                if( [iconSize isKindOfClass:[NSArray class]] && [(NSArray *)iconSize count] == 2 ) { 
     456                                                        size = NSMakeSize( [[iconSize objectAtIndex:0] unsignedIntValue], [[iconSize objectAtIndex:1] unsignedIntValue] ); 
     457                                                } else if( [iconSize isKindOfClass:[NSNumber class]] ) { 
     458                                                        size = NSMakeSize( [iconSize unsignedIntValue], [iconSize unsignedIntValue] ); 
     459                                                } else size = NSMakeSize( 24., 12. ); 
     460 
     461                                                NSColor *color = [NSColor colorWithHTMLAttributeValue:iconPath]; 
     462                                                NSImage *icon = [[[NSImage alloc] initWithSize:size] autorelease]; 
     463 
     464                                                [icon lockFocus]; 
     465                                                [[color shadowWithLevel:0.1] set]; 
     466                                                [NSBezierPath fillRect:NSMakeRect( 0., 0., size.width, size.height )]; 
     467                                                [color drawSwatchInRect:NSMakeRect( 1., 1., size.width - 2., size.height - 2. )]; 
     468                                                [icon unlockFocus]; 
     469 
     470                                                [mitem setImage:icon]; 
     471                                        } else if( ( iconURL = [NSURL URLWithString:iconPath] ) ) { 
    453472                                                // NSImage *icon = [[[NSImage allocWithZone:[self zone]] initByReferencingURL:[NSURL URLWithString:iconPath]] autorelease]; 
    454473                                                // Lets download the icon with a 1-second timeout 
     
    479498                                                [[mitem image] setSize:size]; 
    480499                                        } 
     500                                } else if( [iconPath isKindOfClass:[NSArray class]] && [(NSArray *)iconPath count] == 3 ) { 
     501                                        NSSize size = NSZeroSize; 
     502                                        if( [iconSize isKindOfClass:[NSArray class]] && [(NSArray *)iconSize count] == 2 ) { 
     503                                                size = NSMakeSize( [[iconSize objectAtIndex:0] unsignedIntValue], [[iconSize objectAtIndex:1] unsignedIntValue] ); 
     504                                        } else if( [iconSize isKindOfClass:[NSNumber class]] ) { 
     505                                                size = NSMakeSize( [iconSize unsignedIntValue], [iconSize unsignedIntValue] ); 
     506                                        } else size = NSMakeSize( 24., 12. ); 
     507 
     508                                        NSColor *color = [NSColor colorWithCalibratedRed:( [[iconPath objectAtIndex:0] unsignedIntValue] / 65535. ) green:( [[iconPath objectAtIndex:1] unsignedIntValue] / 65535. ) blue:( [[iconPath objectAtIndex:2] unsignedIntValue] / 65535. ) alpha:1.]; 
     509                                        NSImage *icon = [[[NSImage alloc] initWithSize:size] autorelease]; 
     510 
     511                                        [icon lockFocus]; 
     512                                        [[color shadowWithLevel:0.1] set]; 
     513                                        [NSBezierPath fillRect:NSMakeRect( 0., 0., size.width, size.height )]; 
     514                                        [color drawSwatchInRect:NSMakeRect( 1., 1., size.width - 2., size.height - 2. )]; 
     515                                        [icon unlockFocus]; 
     516 
     517                                        [mitem setImage:icon]; 
    481518                                } 
    482519