Created
October 31, 2014 18:07
-
-
Save chockenberry/85d10a83a924e415ece6 to your computer and use it in GitHub Desktop.
xScope Status Items
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (void)createStatusItems | |
{ | |
const CGFloat itemLength = 22.0f; | |
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; | |
if ([userDefaults boolForKey:generalStatusbarSingleItemKey]) { | |
// create a single status item with a menu to access tools | |
NSMenu *statusMenu = [[[NSMenu alloc] initWithTitle:@"Status"] autorelease]; | |
if ([userDefaults boolForKey:generalStatusbarShowMirrorKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Mirror", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_mirror"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.mirrorVisible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowTextKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Text", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_text"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.textVisible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowDimensionsKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Dimensions", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_dimensions"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.measurevisible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowRulersKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Rulers", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_rulers"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.newruler-visible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowOverlayKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Overlay", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_overlay"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.overlayVisible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowScreensKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Screens", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_screens"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.screens" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowLoupeKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Loupe", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_loupe"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.loupe" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowGuidesKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Guides", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_guides"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.guidesvisible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowFramesKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Frames", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_frames"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.framesvisible" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowCrosshairKey]) { | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Crosshair", nil)]; | |
[menuItem setImage:[NSImage imageNamed:@"single_menu_crosshair"]]; | |
[menuItem bind:@"value" toObject:[NSUserDefaultsController sharedUserDefaultsController] withKeyPath:@"values.indicator" options:nil]; | |
[statusMenu addItem:menuItem]; | |
} | |
{ | |
NSMenuItem *menuItem = [NSMenuItem separatorItem]; | |
[statusMenu addItem:menuItem]; | |
} | |
{ | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem bind:@"title" toObject:self withKeyPath:@"showHideTitle" options:nil]; | |
[menuItem setAction:@selector(showHideApplication:)]; | |
[statusMenu addItem:menuItem]; | |
} | |
{ | |
NSMenuItem *menuItem = [NSMenuItem separatorItem]; | |
[statusMenu addItem:menuItem]; | |
} | |
{ | |
NSMenuItem *menuItem = [[[NSMenuItem alloc] init] autorelease]; | |
[menuItem setTitle:NSLocalizedString(@"Preferences…", nil)]; | |
[menuItem setAction:@selector(openPreferences:)]; | |
[statusMenu addItem:menuItem]; | |
} | |
if ([statusMenu numberOfItems] > 0) { | |
self.appStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[appStatusItem setHighlightMode:YES]; | |
NSImage *menuImage = [NSImage imageNamed:@"single_menu_app_normal"]; | |
[menuImage setTemplate:YES]; | |
[appStatusItem setImage:menuImage]; | |
[appStatusItem setAlternateImage:[NSImage imageNamed:@"single_menu_app_highlight"]]; | |
[appStatusItem setMenu:statusMenu]; | |
} | |
else { | |
self.appStatusItem = nil; | |
} | |
} | |
else { | |
// create a status item for each tool, they are added in reverse order | |
if ([userDefaults boolForKey:generalStatusbarShowCrosshairKey]) { | |
self.crosshairStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[crosshairStatusItem setTarget:self]; | |
[crosshairStatusItem setAction:@selector(toggleCrosshair:)]; | |
[crosshairStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_crosshair_off"]; | |
[menuImage setTemplate:YES]; | |
[crosshairStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_crosshair_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[crosshairStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowFramesKey]) { | |
self.framesStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[framesStatusItem setTarget:self]; | |
[framesStatusItem setAction:@selector(toggleFrames:)]; | |
[framesStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_frames_off"]; | |
[menuImage setTemplate:YES]; | |
[framesStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_frames_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[framesStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowGuidesKey]) { | |
self.guidesStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[guidesStatusItem setTarget:self]; | |
[guidesStatusItem setAction:@selector(toggleGuides:)]; | |
[guidesStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_guides_off"]; | |
[menuImage setTemplate:YES]; | |
[guidesStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_guides_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[guidesStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowLoupeKey]) { | |
self.loupeStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[loupeStatusItem setTarget:self]; | |
[loupeStatusItem setAction:@selector(toggleLoupe:)]; | |
[loupeStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_loupe_off"]; | |
[menuImage setTemplate:YES]; | |
[loupeStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_loupe_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[loupeStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowScreensKey]) { | |
self.screensStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[screensStatusItem setTarget:self]; | |
[screensStatusItem setAction:@selector(toggleScreens:)]; | |
[screensStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_screens_off"]; | |
[menuImage setTemplate:YES]; | |
[screensStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_screens_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[screensStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowOverlayKey]) { | |
self.overlayStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[overlayStatusItem setTarget:self]; | |
[overlayStatusItem setAction:@selector(toggleOverlay:)]; | |
[overlayStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_overlay_off"]; | |
[menuImage setTemplate:YES]; | |
[overlayStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_overlay_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[overlayStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowRulersKey]) { | |
self.rulersStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[rulersStatusItem setTarget:self]; | |
[rulersStatusItem setAction:@selector(toggleRulers:)]; | |
[rulersStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_rulers_off"]; | |
[menuImage setTemplate:YES]; | |
[rulersStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_rulers_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[rulersStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowDimensionsKey]) { | |
self.dimensionsStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[dimensionsStatusItem setTarget:self]; | |
[dimensionsStatusItem setAction:@selector(toggleDimensions:)]; | |
[dimensionsStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_dimensions_off"]; | |
[menuImage setTemplate:YES]; | |
[dimensionsStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_dimensions_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[dimensionsStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowTextKey]) { | |
self.textStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[textStatusItem setTarget:self]; | |
[textStatusItem setAction:@selector(toggleText:)]; | |
[textStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_text_off"]; | |
[menuImage setTemplate:YES]; | |
[textStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_text_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[textStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
if ([userDefaults boolForKey:generalStatusbarShowMirrorKey]) { | |
self.mirrorStatusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:itemLength]; | |
[mirrorStatusItem setTarget:self]; | |
[mirrorStatusItem setAction:@selector(toggleMirror:)]; | |
[mirrorStatusItem setHighlightMode:NO]; | |
NSImage *menuImage = [NSImage imageNamed:@"menubar_mirror_off"]; | |
[menuImage setTemplate:YES]; | |
[mirrorStatusItem setImage:menuImage]; | |
NSImage *menuAlternateImage = [NSImage imageNamed:@"menubar_mirror_on"]; | |
[menuAlternateImage setTemplate:YES]; | |
[mirrorStatusItem setAlternateImage:menuAlternateImage]; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment