/
JSTAppDelegate.m
81 lines (56 loc) · 2.06 KB
/
JSTAppDelegate.m
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
//
// JSTAppDelegate.m
// jstalk
//
// Created by August Mueller on 1/14/09.
// Copyright 2009 Flying Meat Inc. All rights reserved.
//
#import "JSTAppDelegate.h"
#import "JSTalk.h"
@interface JSTAppDelegate (PrivateStuff)
- (void) restoreWorkspace;
- (void) saveWorkspace;
@end
@implementation JSTAppDelegate
+ (void) initialize {
NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaultValues setObject:[NSNumber numberWithBool:YES] forKey:@"rememberWorkspace"];
[defaultValues setObject:[NSNumber numberWithBool:YES] forKey:@"clearConsoleOnRun"];
[defaults registerDefaults: defaultValues];
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:defaultValues];
}
- (void)awakeFromNib {
if ([JSTPrefs boolForKey:@"rememberWorkspace"]) {
[self restoreWorkspace];
}
[JSTalk setShouldLoadExtras:YES];
[JSTalk listen];
}
- (IBAction) showPrefs:(id)sender {
if (![prefsWindow isVisible]) {
[prefsWindow center];
}
[prefsWindow makeKeyAndOrderFront:self];
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
[self saveWorkspace];
}
- (void) restoreWorkspace {
NSArray *ar = [[NSUserDefaults standardUserDefaults] objectForKey:@"workspaceOpenDocuments"];
for (NSString *path in ar) {
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfURL:[NSURL fileURLWithPath:path] display:YES error:nil];
}
}
- (void) saveWorkspace {
NSMutableArray *openDocs = [NSMutableArray array];
for (NSDocument *doc in [[NSDocumentController sharedDocumentController] documents]) {
if ([doc fileName]) {
// saving the file alias would be better.
[openDocs addObject:[doc fileName]];
}
}
[[NSUserDefaults standardUserDefaults] setObject:openDocs forKey:@"workspaceOpenDocuments"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end