-
Notifications
You must be signed in to change notification settings - Fork 2
/
ScriptBrowserDocument.m
146 lines (118 loc) · 3.22 KB
/
ScriptBrowserDocument.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
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//
// ScriptBrowserDocument.m
// Pipe
//
// Created by RenŽ Puls on 14.02.05.
// Copyright 2005 RenŽ Puls. All rights reserved.
//
#import "ScriptBrowserDocument.h"
#import "ScriptBrowserController.h"
@implementation ScriptBrowserDocument
#pragma mark Init and Cleanup
+ (id)sharedDocument
{
static id sharedInstance = nil;
if (sharedInstance == nil) {
sharedInstance = [[self alloc] init];
[sharedInstance makeWindowControllers];
}
return sharedInstance;
}
- (void)dealloc
{
[browserWindowController release];
[lastScriptAlias release];
[lastModificationDate release];
[super dealloc];
}
#pragma mark NSDocument
- (void)makeWindowControllers
{
if (browserWindowController == nil) {
browserWindowController = [[ScriptBrowserController alloc] init];
[self addWindowController:browserWindowController];
}
}
- (void)close
{
// ignore
}
- (void)removeWindowController:(NSWindowController *)windowController
{
// ignore
}
- (BOOL)isDocumentEdited
{
return NO;
}
- (void)updateChangeCount:(NSDocumentChangeType)changeType
{
// do nothing
}
- (BOOL)validateMenuItem:(NSMenuItem *)anItem
{
SEL action = [anItem action];
if (action == @selector(saveDocument:))
return NO;
else if (action == @selector(saveDocumentAs:))
return NO;
else if (action == @selector(print:))
return NO;
else if (action == @selector(runPageLayout:))
return NO;
else
return [super validateMenuItem:anItem];
}
#pragma mark Script Management
- (void)loadScript:(ScriptDocument *)scriptDocument
{
NSParameterAssert(scriptDocument != nil);
[self setScript:[scriptDocument script]];
[self setArgumentString:[scriptDocument argumentString]];
[self setRunCommand:[scriptDocument runCommand]];
[self setExecutesDirectly:[scriptDocument executesDirectly]];
[self setLastScriptAlias:[NDAlias aliasWithPath:[scriptDocument fileName]]];
[self setUsageInfo:[scriptDocument usageInfo]];
[self setHomeURL:[scriptDocument homeURL]];
[[self mutableArrayValueForKey:@"supportFiles"] setArray:[scriptDocument valueForKey:@"supportFiles"]];
[[self mutableArrayValueForKey:@"variables"] setArray:[scriptDocument valueForKey:@"variables"]];
if ([self outputType] != [scriptDocument outputType])
[self setOutputData:nil];
[self setOutputType:[scriptDocument outputType]];
[[self undoManager] removeAllActions];
}
- (IBAction)openScriptInEditor:(id)sender;
{
NSString *scriptPath;
scriptPath = [[self lastScriptAlias] path];
if (scriptPath != nil) {
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfFile:scriptPath display:YES];
}
}
- (IBAction)openLoadedScript:(id)sender
{
[self openScriptInEditor:sender];
}
#pragma mark Accessors
- (NSDate *)lastModificationDate
{
return lastModificationDate;
}
- (NSString *)displayName
{
return NSLocalizedString(@"Script Browser", @"Title of the script browser window");
}
- (NDAlias *)lastScriptAlias
{
return lastScriptAlias;
}
- (void)setLastScriptAlias:(NDAlias *)newAlias
{
if (lastScriptAlias != newAlias) {
[lastScriptAlias release];
lastScriptAlias = [newAlias retain];
[lastModificationDate release];
lastModificationDate = [[[[NSFileManager defaultManager] fileAttributesAtPath:[newAlias path] traverseLink:YES] objectForKey:NSFileModificationDate] copy];
}
}
@end