Files
gitx/PBGitDefaults.m
2011-06-24 19:28:41 -04:00

262 lines
8.1 KiB
Objective-C

//
// PBGitDefaults.m
// GitX
//
// Created by Jeff Mesnil on 19/10/08.
// Copyright 2008 Jeff Mesnil (http://jmesnil.net/). All rights reserved.
//
#import "PBGitDefaults.h"
#import "PBHistorySearchController.h"
#define kDefaultVerticalLineLength 50
#define kCommitMessageViewVerticalLineLength @"PBCommitMessageViewVerticalLineLength"
#define kCommitMessageViewHasVerticalLine @"PBCommitMessageViewHasVerticalLine"
#define kEnableGist @"PBEnableGist"
#define kEnableGravatar @"PBEnableGravatar"
#define kConfirmPublicGists @"PBConfirmPublicGists"
#define kPublicGist @"PBGistPublic"
#define kShowWhitespaceDifferences @"PBShowWhitespaceDifferences"
#define kRefreshAutomatically @"PBRefreshAutomatically"
#define kUseAskPasswd @"PBUseAskPasswd"
#define kOpenCurDirOnLaunch @"PBOpenCurDirOnLaunch"
#define kShowOpenPanelOnLaunch @"PBShowOpenPanelOnLaunch"
#define kShouldCheckoutBranch @"PBShouldCheckoutBranch"
#define kRecentCloneDestination @"PBRecentCloneDestination"
#define kShowStageView @"PBShowStageView"
#define kOpenPreviousDocumentsOnLaunch @"PBOpenPreviousDocumentsOnLaunch"
#define kPreviousDocumentPaths @"PBPreviousDocumentPaths"
#define kBranchFilterState @"PBBranchFilter"
#define kHistorySearchMode @"PBHistorySearchMode"
#define kSuppressedDialogWarnings @"Suppressed Dialog Warnings"
#define kUseITerm2 @"PBUseITerm2"
#define kITerm2Available @"PBITerm2Available"
@implementation PBGitDefaults
+ (void)initialize
{
NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];
[defaultValues setObject:[NSNumber numberWithInt:kDefaultVerticalLineLength]
forKey:kCommitMessageViewVerticalLineLength];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kCommitMessageViewHasVerticalLine];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kEnableGist];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kEnableGravatar];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kConfirmPublicGists];
[defaultValues setObject:[NSNumber numberWithBool:NO]
forKey:kPublicGist];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kShowWhitespaceDifferences];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kRefreshAutomatically];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kUseAskPasswd];
[defaultValues setObject:[NSNumber numberWithBool:NO]
forKey:kOpenCurDirOnLaunch];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kShowOpenPanelOnLaunch];
[defaultValues setObject:[NSNumber numberWithBool:YES]
forKey:kShouldCheckoutBranch];
[defaultValues setObject:[NSNumber numberWithBool:NO]
forKey:kOpenPreviousDocumentsOnLaunch];
[defaultValues setObject:[NSNumber numberWithInteger:kGitXBasicSeachMode]
forKey:kHistorySearchMode];
[defaultValues setObject:[NSNumber numberWithBool:NO]
forKey:kUseITerm2];
[defaultValues setObject:[NSNumber numberWithBool:NO]
forKey:kITerm2Available];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"WebKitDeveloperExtras"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+ (int) commitMessageViewVerticalLineLength
{
return [[NSUserDefaults standardUserDefaults] integerForKey:kCommitMessageViewVerticalLineLength];
}
+ (BOOL) commitMessageViewHasVerticalLine
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kCommitMessageViewHasVerticalLine];
}
+ (BOOL) isGistEnabled
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kEnableGist];
}
+ (BOOL) isGravatarEnabled
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kEnableGravatar];
}
+ (BOOL) confirmPublicGists
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kConfirmPublicGists];
}
+ (BOOL) isGistPublic
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kPublicGist];
}
+ (BOOL) showWhitespaceDifferences
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kShowWhitespaceDifferences];
}
+ (BOOL) refreshAutomatically
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kRefreshAutomatically];
}
+ (BOOL) useAskPasswd
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kUseAskPasswd];
}
+ (BOOL)openCurDirOnLaunch
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kOpenCurDirOnLaunch];
}
+ (BOOL)showOpenPanelOnLaunch
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kShowOpenPanelOnLaunch];
}
+ (BOOL) shouldCheckoutBranch
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kShouldCheckoutBranch];
}
+ (void) setShouldCheckoutBranch:(BOOL)shouldCheckout
{
[[NSUserDefaults standardUserDefaults] setBool:shouldCheckout forKey:kShouldCheckoutBranch];
}
+ (NSString *) recentCloneDestination
{
return [[NSUserDefaults standardUserDefaults] stringForKey:kRecentCloneDestination];
}
+ (void) setRecentCloneDestination:(NSString *)path
{
[[NSUserDefaults standardUserDefaults] setObject:path forKey:kRecentCloneDestination];
}
+ (BOOL) showStageView
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kShowStageView];
}
+ (void) setShowStageView:(BOOL)suppress
{
return [[NSUserDefaults standardUserDefaults] setBool:suppress forKey:kShowStageView];
}
+ (BOOL) openPreviousDocumentsOnLaunch
{
return [[NSUserDefaults standardUserDefaults] boolForKey:kOpenPreviousDocumentsOnLaunch];
}
+ (void) setPreviousDocumentPaths:(NSArray *)documentPaths
{
[[NSUserDefaults standardUserDefaults] setObject:documentPaths forKey:kPreviousDocumentPaths];
}
+ (NSArray *) previousDocumentPaths
{
return [[NSUserDefaults standardUserDefaults] arrayForKey:kPreviousDocumentPaths];
}
+ (void) removePreviousDocumentPaths
{
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kPreviousDocumentPaths];
}
+ (NSInteger) branchFilter
{
return [[NSUserDefaults standardUserDefaults] integerForKey:kBranchFilterState];
}
+ (void) setBranchFilter:(NSInteger)state
{
[[NSUserDefaults standardUserDefaults] setInteger:state forKey:kBranchFilterState];
}
+ (NSInteger)historySearchMode
{
return [[NSUserDefaults standardUserDefaults] integerForKey:kHistorySearchMode];
}
+ (void)setHistorySearchMode:(NSInteger)mode
{
[[NSUserDefaults standardUserDefaults] setInteger:mode forKey:kHistorySearchMode];
}
+ (BOOL) isUseITerm2
{
[self isITerm2Available];
return [[NSUserDefaults standardUserDefaults] boolForKey:kUseITerm2];
}
+ (BOOL) isITerm2Available
{
NSString *iTermPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.googlecode.iterm2"];
[self setITerm2Available:[[NSFileManager defaultManager] fileExistsAtPath:iTermPath]];
return [[NSUserDefaults standardUserDefaults] boolForKey:kITerm2Available];
}
+ (void) setITerm2Available:(BOOL)iTerm2Available
{
if (!iTerm2Available)
[[NSUserDefaults standardUserDefaults] setBool:iTerm2Available forKey:kUseITerm2];
[[NSUserDefaults standardUserDefaults] setBool:iTerm2Available forKey:kITerm2Available];
[[NSUserDefaults standardUserDefaults] synchronize];
}
// Suppressed Dialog Warnings
//
// Represents dialogs where the user has checked the "Do not show this message again" checkbox.
// Keep these together in an array to make it easier to reset all the warnings.
+ (NSSet *)suppressedDialogWarnings
{
NSSet *suppressedDialogWarnings = [NSSet setWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:kSuppressedDialogWarnings]];
if (suppressedDialogWarnings == nil)
suppressedDialogWarnings = [NSSet set];
return suppressedDialogWarnings;
}
+ (void)suppressDialogWarningForDialog:(NSString *)dialog
{
NSSet *suppressedDialogWarnings = [[self suppressedDialogWarnings] setByAddingObject:dialog];
[[NSUserDefaults standardUserDefaults] setObject:[suppressedDialogWarnings allObjects] forKey:kSuppressedDialogWarnings];
}
+ (BOOL)isDialogWarningSuppressedForDialog:(NSString *)dialog
{
return [[self suppressedDialogWarnings] containsObject:dialog];
}
+ (void)resetAllDialogWarnings
{
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:kSuppressedDialogWarnings];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end