forked from gnachman/iTerm2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAdvancedWorkingDirectoryWindowController.m
More file actions
112 lines (90 loc) · 3.61 KB
/
AdvancedWorkingDirectoryWindowController.m
File metadata and controls
112 lines (90 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//
// AdvancedWorkingDirectoryWindowController.m
// iTerm
//
// Created by George Nachman on 4/14/14.
//
//
#import "AdvancedWorkingDirectoryWindowController.h"
#import "ITAddressBookMgr.h"
#import "iTermProfilePreferences.h"
static const NSInteger kCustomDirectoryTag = 0;
static const NSInteger kHomeDirectoryTag = 1;
static const NSInteger kRecycleDirectoryTag = 2;
@implementation AdvancedWorkingDirectoryWindowController {
// Advanced working dir sheet
IBOutlet NSMatrix* _windowDirectoryType;
IBOutlet NSTextField* _windowDirectory;
IBOutlet NSMatrix* _tabDirectoryType;
IBOutlet NSTextField* _tabDirectory;
IBOutlet NSMatrix* _paneDirectoryType;
IBOutlet NSTextField* _paneDirectory;
}
- (id)init {
return [super initWithWindowNibName:@"AdvancedWorkingDirectoryWindow"];
}
- (void)dealloc {
[_profile release];
[super dealloc];
}
- (NSArray *)allKeys {
return @[ KEY_AWDS_WIN_OPTION,
KEY_AWDS_WIN_DIRECTORY,
KEY_AWDS_TAB_OPTION,
KEY_AWDS_TAB_DIRECTORY,
KEY_AWDS_PANE_OPTION,
KEY_AWDS_PANE_DIRECTORY ];
}
#pragma mark - Actions
- (IBAction)ok:(id)sender {
NSMutableDictionary *dict = [[_profile mutableCopy] autorelease];
dict[KEY_AWDS_WIN_OPTION] = [self valueForTag:_windowDirectoryType.selectedTag];
dict[KEY_AWDS_TAB_OPTION] = [self valueForTag:_tabDirectoryType.selectedTag];
dict[KEY_AWDS_PANE_OPTION] = [self valueForTag:_paneDirectoryType.selectedTag];
dict[KEY_AWDS_WIN_DIRECTORY] = [_windowDirectory stringValue];
dict[KEY_AWDS_TAB_DIRECTORY] = [_tabDirectory stringValue];
dict[KEY_AWDS_PANE_DIRECTORY] = [_paneDirectory stringValue];
self.profile = dict;
[NSApp endSheet:self.window];
}
#pragma mark - Private
- (void)setAdvancedBookmarkMatrix:(NSMatrix *)matrix withValue:(NSString *)value {
if ([value isEqualToString:kProfilePreferenceInitialDirectoryCustomValue]) {
[matrix selectCellWithTag:kCustomDirectoryTag];
} else if ([value isEqualToString:kProfilePreferenceInitialDirectoryRecycleValue]) {
[matrix selectCellWithTag:kRecycleDirectoryTag];
} else {
[matrix selectCellWithTag:kHomeDirectoryTag];
}
}
- (void)safelySetStringValue:(NSString *)value in:(NSTextField *)field {
[field setStringValue:value ?: @""];
}
- (NSString *)valueForTag:(NSInteger)tag {
switch (tag) {
case kCustomDirectoryTag:
return kProfilePreferenceInitialDirectoryCustomValue;
case kRecycleDirectoryTag:
return kProfilePreferenceInitialDirectoryRecycleValue;
case kHomeDirectoryTag:
default:
return kProfilePreferenceInitialDirectoryHomeValue;
}
}
- (void)setProfile:(NSDictionary *)profile {
[_profile autorelease];
_profile = [profile copy];
[self setAdvancedBookmarkMatrix:_windowDirectoryType
withValue:[_profile objectForKey:KEY_AWDS_WIN_OPTION]];
[self safelySetStringValue:[_profile objectForKey:KEY_AWDS_WIN_DIRECTORY]
in:_windowDirectory];
[self setAdvancedBookmarkMatrix:_tabDirectoryType
withValue:[_profile objectForKey:KEY_AWDS_TAB_OPTION]];
[self safelySetStringValue:[_profile objectForKey:KEY_AWDS_TAB_DIRECTORY]
in:_tabDirectory];
[self setAdvancedBookmarkMatrix:_paneDirectoryType
withValue:[_profile objectForKey:KEY_AWDS_PANE_OPTION]];
[self safelySetStringValue:[_profile objectForKey:KEY_AWDS_PANE_DIRECTORY]
in:_paneDirectory];
}
@end