All pastes #837779 Raw Edit

Menulet

public text v1 · immutable
#837779 ·published 2007-12-29 22:17 UTC
rendered paste body
#import "IPMenulet.h"


@implementation IPMenulet
-(void)dealloc
{
	[statusItem0 release];
	[statusItem1 release];
	[statusItem2 release];
	[statusItem3 release];
	[statusItem4 release];
	[super dealloc];
}
- (void)awakeFromNib
{
	NSBundle *bundle = [NSBundle bundleForClass:[self class]];
	NSString *path = [bundle pathForResource:@"window" ofType:@"tif"];
	DeskIcon = [[NSImage alloc] initWithContentsOfFile:path];
	
	path = [bundle pathForResource:@"menu" ofType:@"tif"];
	MenuIcon = [[NSImage alloc] initWithContentsOfFile:path];
	
 statusItem4 = [[[NSStatusBar systemStatusBar] statusItemWithLength:26] retain];
 	[statusItem4 setHighlightMode:YES];
	[statusItem4 setEnabled:YES];
	[statusItem4 setToolTip:@"Space4"];
	[statusItem4 setTitle:[NSString stringWithString:@""]]; 
	[statusItem4 setImage:DeskIcon];
	
 statusItem3 = [[[NSStatusBar systemStatusBar] statusItemWithLength:26] retain];
 	[statusItem3 setHighlightMode:YES];
	[statusItem3 setEnabled:YES];
	[statusItem3 setToolTip:@"Space3"];
	[statusItem3 setTitle:[NSString stringWithString:@""]]; 
	[statusItem3 setImage:DeskIcon];
	
 statusItem2 = [[[NSStatusBar systemStatusBar] statusItemWithLength:26] retain];
 	[statusItem2 setHighlightMode:YES];
	[statusItem2 setEnabled:YES];
	[statusItem2 setToolTip:@"Space2"];
	[statusItem2 setTitle:[NSString stringWithString:@""]];
	[statusItem2 setAction:@selector(test2:)];
	[statusItem2 setDoubleAction:@selector(test2:)]; 
	[statusItem1 setTarget:self];
	[statusItem2 setImage:DeskIcon];
	
 statusItem1 = [[[NSStatusBar systemStatusBar] statusItemWithLength:26] retain];
 	[statusItem1 setHighlightMode:YES];
	[statusItem1 setEnabled:YES];
	[statusItem1 setToolTip:@"Space1"];
	[statusItem1 setTitle:[NSString stringWithString:@""]]; 
	[statusItem1 setAction:@selector(scriptTest:)];
	[statusItem1 setTarget:self];
	[statusItem1 setDoubleAction:@selector(scriptTest:)]; 
	[statusItem1 setImage:DeskIcon];

 statusItem0 = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
 	[statusItem0 setHighlightMode:YES];
	[statusItem0 setEnabled:YES];
	[statusItem0 setToolTip:@"SpacesControl"];
	[statusItem0 setMenu:theMenu];
	[statusItem0 setTitle:[NSString stringWithString:@""]]; 
	[statusItem0 setImage:MenuIcon];
	
	[DeskIcon release];
	[MenuIcon release];
}

-(IBAction)test2
{
  int iResponse = 
        NSRunAlertPanel(@"Close Document", 
                        @"Are you sure you want to close the document?",
                        @"OK", @"Cancel", /*ThirdButtonHere:*/nil
                        /*, args for a printf-style msg go here */);
  switch(iResponse) {
    case NSAlertDefaultReturn:    /* user pressed OK */
      break;
    case NSAlertAlternateReturn:  /* user pressed Cancel */
      break;
    case NSAlertOtherReturn:      /* user pressed the third button */
      break;
    case NSAlertErrorReturn:      /* an error occurred */
      break;
  }
}

-(IBAction)scriptTest:(id)sender
{
    NSDictionary* errorDict;
    NSAppleEventDescriptor* returnDescriptor = NULL;

    NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:
                @"\tell application \"System Events\" to keystroke \"1\" using control down"];

    returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
    [scriptObject release];

    if (returnDescriptor != NULL)
    {
        // successful execution
        if (kAENullEvent != [returnDescriptor descriptorType])
        {
            // script returned an AppleScript result
            if (cAEList == [returnDescriptor descriptorType])
            {
                 // result is a list of other descriptors
            }
            else
            {
                // coerce the result to the appropriate ObjC type
            }
        }
    }
    else
    {
        // no script result, handle error here
    }
}
		
@end