Skip to content

Instantly share code, notes, and snippets.

@chockenberry
Created October 31, 2014 18:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chockenberry/85d10a83a924e415ece6 to your computer and use it in GitHub Desktop.
Save chockenberry/85d10a83a924e415ece6 to your computer and use it in GitHub Desktop.
xScope Status Items
- (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