BathyScapheで画像のインラインプレビューを可能にするプラグイン
Revision | 49215d493b426b23f09ac77cc806b60794c3faef (tree) |
---|---|
Time | 2010-08-22 16:31:46 |
Author | masakih <masakih@user...> |
Commiter | masakih |
initial import.
git-svn-id: svn+ssh://macmini/usr/local/svnrepos/BSInlinePreviewer/BSInlinePreviewer@2 7fee4f74-e693-48a2-b912-3ead09a14818
@@ -0,0 +1,22 @@ | ||
1 | +// | |
2 | +// BSILinkInfomation.h | |
3 | +// BSInlinePreviewer | |
4 | +// | |
5 | +// Created by Hori,Masaki on 10/08/21. | |
6 | +// Copyright 2010 masakih. All rights reserved. | |
7 | +// | |
8 | + | |
9 | +#import <Cocoa/Cocoa.h> | |
10 | + | |
11 | + | |
12 | +@interface BSILinkInfomation : NSObject | |
13 | +{ | |
14 | + NSString *urlString; | |
15 | + NSRange range; | |
16 | + NSImage *image; | |
17 | +} | |
18 | + | |
19 | +@property (nonatomic, retain) NSString *urlString; | |
20 | +@property (nonatomic) NSRange range; | |
21 | +@property (nonatomic, retain) NSImage *image; | |
22 | +@end |
@@ -0,0 +1,23 @@ | ||
1 | +// | |
2 | +// BSILinkInfomation.m | |
3 | +// BSInlinePreviewer | |
4 | +// | |
5 | +// Created by Hori,Masaki on 10/08/21. | |
6 | +// Copyright 2010 masakih. All rights reserved. | |
7 | +// | |
8 | + | |
9 | +#import "BSILinkInfomation.h" | |
10 | + | |
11 | + | |
12 | +@implementation BSILinkInfomation | |
13 | + | |
14 | +@synthesize urlString, range, image; | |
15 | + | |
16 | +- (id)description | |
17 | +{ | |
18 | + return [NSString stringWithFormat:@"URL String -> %@\nRange -> %@\nImage -> %@", | |
19 | + urlString, | |
20 | + NSStringFromRange(range), | |
21 | + image]; | |
22 | +} | |
23 | +@end |
@@ -0,0 +1,42 @@ | ||
1 | +// | |
2 | +// BSImagePreviewerInterface.h | |
3 | +// BathyScaphe | |
4 | +// | |
5 | +// Created by Tsutomu Sawada on 05/10/15, Last Modified on 07/10/24. | |
6 | +// Copyright 2005-2007 BathyScaphe Project. All rights reserved. | |
7 | +// encoding="UTF-8" | |
8 | +// | |
9 | + | |
10 | +@class AppDefaults; | |
11 | + | |
12 | +@protocol BSImagePreviewerProtocol | |
13 | +// Designated Initializer | |
14 | +- (id)initWithPreferences:(AppDefaults *)prefs; | |
15 | +// Accessor | |
16 | +- (AppDefaults *)preferences; | |
17 | +- (void)setPreferences:(AppDefaults *)aPreferences; | |
18 | +// Action | |
19 | +- (BOOL)showImageWithURL:(NSURL *)imageURL; | |
20 | +- (BOOL)validateLink:(NSURL *)anURL; | |
21 | +@end | |
22 | + | |
23 | +@interface NSObject(BSImagePreviewerInformalProtocol) | |
24 | +// MeteorSweeper Addition - optional method information | |
25 | +// このメソッドはプロトコル定義には含まれませんが、BathyScaphe 1.3 以降でプラグインの Principal class に | |
26 | +// このメソッドを実装しておくと、BathyScaphe の「ウインドウ」>「プレビュー」メニュー項目が有効になります。 | |
27 | +// BathyScaphe は「ウインドウ」>「プレビュー」が選択されると、プラグインに対してこのメソッドを実行するようメッセージを送信します。 | |
28 | +- (IBAction)togglePreviewPanel:(id)sender; | |
29 | + | |
30 | +// Available in BathyScaphe 1.6 and later. | |
31 | +- (BOOL)showImagesWithURLs:(NSArray *)urls; | |
32 | +- (IBAction)showPreviewerPreferences:(id)sender; | |
33 | +@end | |
34 | + | |
35 | +@interface NSObject(IPPAdditions) | |
36 | +// Storage for plugin-specific settings | |
37 | +- (NSMutableDictionary *)imagePreviewerPrefsDict; | |
38 | + | |
39 | +// Accessor for useful BathyScaphe global settings | |
40 | +- (BOOL)openInBg; | |
41 | +- (BOOL)isOnlineMode; | |
42 | +@end |
@@ -0,0 +1,45 @@ | ||
1 | +// | |
2 | +// BSInlinePreviewer.h | |
3 | +// BSInlinePreviewer | |
4 | +// | |
5 | +// Created by Hori,Masaki on 08/08/14. | |
6 | +// Copyright 2008 masakih. All rights reserved. | |
7 | +// | |
8 | + | |
9 | +#import <Cocoa/Cocoa.h> | |
10 | +#import "BSImagePreviewerInterface.h" | |
11 | + | |
12 | +#import "BSPreviewPluginInterface.h" | |
13 | + | |
14 | +@interface BSInlinePreviewer : NSObject <BSImagePreviewerProtocol, BSLinkPreviewing> | |
15 | +{ | |
16 | + AppDefaults *preference; | |
17 | + | |
18 | + id threadView; | |
19 | + NSTextStorage *textStrage; | |
20 | + unsigned actionIndex; | |
21 | + | |
22 | + id previewAttributes; | |
23 | + | |
24 | + IBOutlet NSWindow *progressPanel; | |
25 | + IBOutlet NSProgressIndicator *progress; | |
26 | + | |
27 | + NSUInteger totalDownloads; | |
28 | + NSUInteger remainder; | |
29 | +} | |
30 | + | |
31 | +@property (nonatomic) NSUInteger totalDownloads; | |
32 | +@property (nonatomic) NSUInteger remainder; | |
33 | + | |
34 | +- (NSSize)previewSize; | |
35 | +- (void)setTargetThreadView:(id)view; | |
36 | +- (id)targetThreadView; | |
37 | +- (void)setTargetTextStorage:(NSTextStorage *)ts; | |
38 | +- (NSTextStorage *)targetTextStorage; | |
39 | +- (void)setActionIndex:(unsigned)p; | |
40 | +- (unsigned)actionIndex; | |
41 | +- (BOOL)prepareTarget; | |
42 | + | |
43 | +- (id)previewAttributes; | |
44 | + | |
45 | +@end |
@@ -0,0 +1,467 @@ | ||
1 | +// | |
2 | +// BSInlinePreviewer.m | |
3 | +// BSInlinePreviewer | |
4 | +// | |
5 | +// Created by Hori,Masaki on 08/08/14. | |
6 | +// Copyright 2008 masakih. All rights reserved. | |
7 | +// | |
8 | + | |
9 | +#import "BSInlinePreviewer.h" | |
10 | +#import "BSILinkInfomation.h" | |
11 | + | |
12 | + | |
13 | +@interface BSInlinePreviewer(Private) | |
14 | +- (NSRange)linkRange; | |
15 | +- (NSImage *)downloadImageURL:(NSURL *)imageURL; | |
16 | +- (NSAttributedString *)attachmentAttributedStringWithImage:(NSImage *)image; | |
17 | +- (NSImage *)notFoundImage; | |
18 | +- (NSImage *)fitImage:(NSImage *)image toSize:(NSSize)targetSize; | |
19 | + | |
20 | +- (void)showProgressPanel; | |
21 | +- (void)closeProgressPanel; | |
22 | +@end | |
23 | + | |
24 | +@interface NSObject(BSInlinePreviewerDummy) | |
25 | +- (id)threadLayout; | |
26 | + | |
27 | +- (float)messageHeadIndent; | |
28 | +@end | |
29 | + | |
30 | +@implementation BSInlinePreviewer | |
31 | + | |
32 | +static NSString *const BSInlinePreviewerPreviewed = @"BSInlinePreviewerPreviewed"; | |
33 | +const unsigned alreadyPreviewed = NSNotFound - 1; | |
34 | + | |
35 | +@synthesize totalDownloads, remainder; | |
36 | + | |
37 | +#pragma mark ## BSImagePreviewerProtocol | |
38 | +// Designated Initializer | |
39 | +- (id)initWithPreferences:(AppDefaults *)prefs | |
40 | +{ | |
41 | + if(self = [super init]) { | |
42 | + [self setPreferences:prefs]; | |
43 | + } | |
44 | + | |
45 | + return self; | |
46 | +} | |
47 | +// Accessor | |
48 | +- (AppDefaults *)preferences | |
49 | +{ | |
50 | + return preference; | |
51 | +} | |
52 | +- (void)setPreferences:(AppDefaults *)aPreferences | |
53 | +{ | |
54 | + preference = aPreferences; | |
55 | +} | |
56 | +// Action | |
57 | +- (BOOL)showImageWithURL:(NSURL *)imageURL | |
58 | +{ | |
59 | + return [self previewLink:imageURL]; | |
60 | +} | |
61 | +- (BOOL)previewLink:(NSURL *)url | |
62 | +{ | |
63 | + // get document. | |
64 | + if(![self prepareTarget]) { | |
65 | + NSLog(@"%@ can not prepared.", NSStringFromClass([self class])); | |
66 | + return NO; | |
67 | + } | |
68 | + | |
69 | + // get insert position. | |
70 | + NSRange linkRange = [self linkRange]; | |
71 | + if(linkRange.location == NSNotFound) { | |
72 | + NSLog(@"con not found insert position."); | |
73 | + return NO; | |
74 | + } | |
75 | + if(linkRange.location == alreadyPreviewed) return NO; | |
76 | + unsigned insertIndex = linkRange.location; | |
77 | + | |
78 | + // download image. | |
79 | + self.totalDownloads = self.remainder = 1; | |
80 | + [self showProgressPanel]; | |
81 | + NSImage *image = [self downloadImageURL:url]; | |
82 | + self.remainder = 0; | |
83 | + [self closeProgressPanel]; | |
84 | + if(!image) { NSBeep(); return NO; } | |
85 | + | |
86 | + // insert image. | |
87 | + NSTextStorage *ts = [self targetTextStorage]; | |
88 | + [ts beginEditing]; | |
89 | + { | |
90 | + [ts addAttribute:BSInlinePreviewerPreviewed | |
91 | + value:[NSNumber numberWithBool:YES] | |
92 | + range:linkRange]; | |
93 | + | |
94 | + id newInsertion = [self attachmentAttributedStringWithImage:image]; | |
95 | + [ts insertAttributedString:newInsertion atIndex:insertIndex]; | |
96 | + } | |
97 | + [ts endEditing]; | |
98 | + | |
99 | + return YES; | |
100 | +} | |
101 | + | |
102 | +- (BOOL)previewLinks:(NSArray *)urls | |
103 | +{ | |
104 | + // get document. | |
105 | + if(![self prepareTarget]) { | |
106 | + NSLog(@"%@ can not prepared.", NSStringFromClass([self class])); | |
107 | + return NO; | |
108 | + } | |
109 | + | |
110 | + // get insert position. | |
111 | + NSMutableArray *links = [NSMutableArray array]; | |
112 | + | |
113 | + NSRange selectedRange = [threadView selectedRange]; | |
114 | + NSTextStorage *ts = [self targetTextStorage]; | |
115 | + | |
116 | + NSUInteger selectionMax = NSMaxRange(selectedRange); | |
117 | + id attr = nil; | |
118 | + BOOL didChecked = NO; | |
119 | + NSUInteger location = selectedRange.location; | |
120 | + NSRange longest; | |
121 | + NSRange range = selectedRange; | |
122 | + do { | |
123 | + attr = [ts attribute:NSLinkAttributeName | |
124 | + atIndex:location | |
125 | + longestEffectiveRange:&longest | |
126 | + inRange:range]; | |
127 | + didChecked = ([ts attribute:BSInlinePreviewerPreviewed | |
128 | + atIndex:location | |
129 | + longestEffectiveRange:NULL | |
130 | + inRange:range]) ? YES : NO; | |
131 | + if(!didChecked && attr | |
132 | + && ![attr hasPrefix:@"cmonar"] | |
133 | + && ![attr hasPrefix:@"cmbe"] | |
134 | + && ![attr hasPrefix:@"mailto"]) { | |
135 | + BSILinkInfomation *link = [[[BSILinkInfomation alloc] init] autorelease]; | |
136 | + link.urlString = attr; | |
137 | + link.range = longest; | |
138 | + [links addObject:link]; | |
139 | + } | |
140 | + location = range.location = NSMaxRange(longest); | |
141 | + range.length - longest.length; | |
142 | + } while(location < selectionMax); | |
143 | + | |
144 | + // download images. | |
145 | + self.totalDownloads = self.remainder = [links count]; | |
146 | + | |
147 | + [self showProgressPanel]; | |
148 | + for(BSILinkInfomation *link in links) { | |
149 | + NSURL *url = [NSURL URLWithString:link.urlString]; | |
150 | + if([self validateLink:url]) { | |
151 | + link.image = [self downloadImageURL:url]; | |
152 | + } | |
153 | + self.remainder--; | |
154 | + [progressPanel displayIfNeeded]; | |
155 | + } | |
156 | + [self closeProgressPanel]; | |
157 | + | |
158 | + | |
159 | + // insert images. | |
160 | +// [ts beginEditing]; | |
161 | + NSUInteger linkOffset = 0; | |
162 | + for(BSILinkInfomation *link in links) { | |
163 | + if(!link.image) continue; | |
164 | + NSRange linkRange = link.range; | |
165 | + linkRange.location += linkOffset; | |
166 | + [ts addAttribute:BSInlinePreviewerPreviewed | |
167 | + value:[NSNumber numberWithBool:YES] | |
168 | + range:linkRange]; | |
169 | + | |
170 | + id newInsertion = [self attachmentAttributedStringWithImage:link.image]; | |
171 | + [ts insertAttributedString:newInsertion atIndex:linkRange.location]; | |
172 | + | |
173 | + linkOffset += [newInsertion length]; | |
174 | + [[threadView window] displayIfNeeded]; | |
175 | + } | |
176 | +// [ts endEditing]; | |
177 | + | |
178 | + return YES; | |
179 | +} | |
180 | + | |
181 | +- (BOOL)validateLink:(NSURL *)anURL | |
182 | +{ | |
183 | + NSArray *imageExtensions; | |
184 | + NSString *extension; | |
185 | + | |
186 | + extension = [[[anURL path] pathExtension] lowercaseString]; | |
187 | + if(!extension) return NO; | |
188 | + | |
189 | + imageExtensions = [NSImage imageFileTypes]; | |
190 | + | |
191 | + return [imageExtensions containsObject:extension]; | |
192 | +} | |
193 | + | |
194 | +#pragma mark ## Accessor | |
195 | +- (void)loadProgressPanel | |
196 | +{ | |
197 | + if(progressPanel) return; | |
198 | + | |
199 | + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; | |
200 | + [bundle loadNibFile:@"Panel" | |
201 | + externalNameTable:[NSDictionary dictionaryWithObject:self forKey:NSNibOwner] | |
202 | + withZone:[self zone]]; | |
203 | + | |
204 | + [progress setUsesThreadedAnimation:YES]; | |
205 | +} | |
206 | +- (void)showProgressPanel | |
207 | +{ | |
208 | + [self loadProgressPanel]; | |
209 | + | |
210 | + NSWindow *mainWindow = [NSApp mainWindow]; | |
211 | + if(!mainWindow) { | |
212 | + NSBeep();NSBeep(); | |
213 | + [NSThread sleepForTimeInterval:0.01]; | |
214 | + mainWindow = [NSApp mainWindow]; | |
215 | + } | |
216 | + [NSApp beginSheet:progressPanel | |
217 | + modalForWindow:mainWindow | |
218 | + modalDelegate:nil | |
219 | + didEndSelector:Nil | |
220 | + contextInfo:NULL]; | |
221 | + [progress startAnimation:self]; | |
222 | +} | |
223 | +- (void)closeProgressPanel | |
224 | +{ | |
225 | + [progress stopAnimation:self]; | |
226 | + [progressPanel orderOut:self]; | |
227 | + [NSApp endSheet:progressPanel]; | |
228 | +} | |
229 | +- (NSSize)previewSize | |
230 | +{ | |
231 | + return NSMakeSize(100.0, 100.0); | |
232 | +} | |
233 | +- (NSTimeInterval)timeoutInterval | |
234 | +{ | |
235 | + return 20.0; | |
236 | +} | |
237 | +- (id)previewAttributes | |
238 | +{ | |
239 | + if (!previewAttributes) { | |
240 | + float indent_; | |
241 | + NSMutableParagraphStyle *messageParagraphStyle_; | |
242 | + | |
243 | + indent_ = [[self preferences] messageHeadIndent]; | |
244 | + | |
245 | + messageParagraphStyle_ = [[[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; | |
246 | + [messageParagraphStyle_ setFirstLineHeadIndent:indent_]; | |
247 | + [messageParagraphStyle_ setHeadIndent:indent_]; | |
248 | + | |
249 | + previewAttributes = [NSDictionary dictionaryWithObjectsAndKeys: | |
250 | + messageParagraphStyle_, NSParagraphStyleAttributeName, | |
251 | + nil]; | |
252 | + [previewAttributes retain]; | |
253 | + } | |
254 | + return previewAttributes; | |
255 | +} | |
256 | + | |
257 | +- (void)setTargetThreadView:(id)view | |
258 | +{ | |
259 | + static Class theCMRThreadViewClass = NULL; | |
260 | + if(!theCMRThreadViewClass) { | |
261 | + theCMRThreadViewClass = NSClassFromString(@"CMRThreadView"); | |
262 | + } | |
263 | + | |
264 | + if(!view) { | |
265 | + threadView = nil; | |
266 | + return; | |
267 | + } | |
268 | + if(![view isKindOfClass:theCMRThreadViewClass]) return; | |
269 | + | |
270 | + threadView = view; | |
271 | +} | |
272 | +- (id)targetThreadView | |
273 | +{ | |
274 | + return threadView; | |
275 | +} | |
276 | +- (void)setTargetTextStorage:(NSTextStorage *)ts | |
277 | +{ | |
278 | + textStrage = ts; | |
279 | +} | |
280 | +- (NSTextStorage *)targetTextStorage | |
281 | +{ | |
282 | + return textStrage; | |
283 | +} | |
284 | +- (void)setActionIndex:(unsigned)p | |
285 | +{ | |
286 | + actionIndex = p; | |
287 | +} | |
288 | +- (unsigned)actionIndex | |
289 | +{ | |
290 | + return actionIndex; | |
291 | +} | |
292 | +- (NSImage *)notFoundImage | |
293 | +{ | |
294 | + NSBundle *myBundle = [NSBundle bundleForClass:[self class]]; | |
295 | + NSString *path = [myBundle pathForImageResource:@"notFound"]; | |
296 | + NSImage *image; | |
297 | + | |
298 | + if(!path) return nil; | |
299 | + | |
300 | + image = [[[NSImage alloc] initWithContentsOfFile:path] autorelease]; | |
301 | + | |
302 | + return [self fitImage:image toSize:[self previewSize]]; | |
303 | +} | |
304 | +#pragma mark ## Prepare | |
305 | +- (BOOL)prepareTarget | |
306 | +{ | |
307 | + [self setTargetThreadView:nil]; | |
308 | + [self setTargetTextStorage:nil]; | |
309 | + | |
310 | + id window = [NSApp keyWindow]; | |
311 | + id firstResponder = [window firstResponder]; | |
312 | + | |
313 | +// NSLog(@"first responder -> %@", firstResponder); | |
314 | + // firstresponder is CMRThreadView. | |
315 | + | |
316 | + [self setTargetThreadView:firstResponder]; | |
317 | + if(![self targetThreadView]) return NO; | |
318 | + | |
319 | + | |
320 | + id layout = [firstResponder threadLayout]; | |
321 | + NSTextStorage *ts = [layout textStorage]; | |
322 | + [self setTargetTextStorage:ts]; | |
323 | + | |
324 | + | |
325 | + NSEvent *event = [window currentEvent]; | |
326 | + NSPoint mouseLocation_; | |
327 | + unsigned charIndex_; | |
328 | + | |
329 | + mouseLocation_ = [event locationInWindow]; | |
330 | + mouseLocation_ = [window convertBaseToScreen:mouseLocation_]; | |
331 | + charIndex_ = [firstResponder characterIndexForPoint:mouseLocation_]; | |
332 | + [self setActionIndex:charIndex_]; | |
333 | + | |
334 | + return YES; | |
335 | +} | |
336 | + | |
337 | +#pragma mark- | |
338 | + | |
339 | +- (NSAttributedString *)attachmentAttributedStringWithImage:(NSImage *)image | |
340 | +{ | |
341 | + NSTextAttachment *attachment_; | |
342 | + NSMutableAttributedString *attrs_ = nil; | |
343 | + id<NSTextAttachmentCell> cell_; | |
344 | + Class aClass = NSClassFromString(@"CMXImageAttachmentCell"); | |
345 | + if(!aClass) return nil; | |
346 | + | |
347 | + // 画像リソースをNSTextAttachmentにする。 | |
348 | + attachment_ = [[[NSTextAttachment alloc] init] autorelease]; | |
349 | + cell_ = [[[aClass alloc] initImageCell:image] autorelease]; | |
350 | + [attachment_ setAttachmentCell:cell_]; | |
351 | + | |
352 | + attrs_ = (NSMutableAttributedString *)[NSMutableAttributedString attributedStringWithAttachment:attachment_]; | |
353 | + [attrs_ appendAttributedString:[[[NSAttributedString alloc] initWithString:@"\n"] autorelease]]; | |
354 | + [attrs_ addAttributes:[self previewAttributes] | |
355 | + range:NSMakeRange(0, [attrs_ length])]; | |
356 | + | |
357 | + return attrs_; | |
358 | +} | |
359 | + | |
360 | +- (NSRange)linkRange | |
361 | +{ | |
362 | + unsigned charIndex_ = [self actionIndex]; | |
363 | + NSTextStorage *ts = [self targetTextStorage]; | |
364 | + | |
365 | + NSRange limit; | |
366 | + NSRange longest; | |
367 | + if(charIndex_ > 100) { | |
368 | + limit = NSMakeRange(charIndex_ - 100, 200); | |
369 | + } else { | |
370 | + limit = NSMakeRange(0, 200); | |
371 | + } | |
372 | + unsigned over = NSMaxRange(limit) - [ts length]; | |
373 | + if(over > 0) { | |
374 | + limit.length -= over; | |
375 | + } | |
376 | + | |
377 | + id attr = nil; | |
378 | + id checked = nil; | |
379 | + @try { | |
380 | + attr = [ts attribute:NSLinkAttributeName | |
381 | + atIndex:charIndex_ | |
382 | + longestEffectiveRange:&longest | |
383 | + inRange:limit]; | |
384 | + // NSLog(@"link attr -> %@", attr); | |
385 | + // NSLog(@"attr range -> %@", NSStringFromRange(longest)); | |
386 | + | |
387 | + checked = [ts attribute:BSInlinePreviewerPreviewed | |
388 | + atIndex:charIndex_ | |
389 | + longestEffectiveRange:NULL | |
390 | + inRange:limit]; | |
391 | + } | |
392 | + @catch(NSException *ex) { | |
393 | + if([[ex name] isEqualToString:NSRangeException]) { | |
394 | + longest.location = NSNotFound; | |
395 | + } else { | |
396 | + @throw; | |
397 | + } | |
398 | + } | |
399 | + | |
400 | + if(!attr) { | |
401 | + longest.location = NSNotFound; | |
402 | + } | |
403 | + if(checked) { | |
404 | + longest.location = alreadyPreviewed; | |
405 | + } | |
406 | + | |
407 | + return longest; | |
408 | +} | |
409 | + | |
410 | +- (NSImage *)fitImage:(NSImage *)image toSize:(NSSize)targetSize | |
411 | +{ | |
412 | + if(!image) return nil; | |
413 | + | |
414 | + NSSize imageSize = [image size]; | |
415 | + | |
416 | + float targetAspect = targetSize.width / targetSize.height; | |
417 | + float imageAspect = imageSize.width / imageSize.height; | |
418 | + float ratio; | |
419 | + if(targetAspect > imageAspect) { | |
420 | + ratio = targetSize.height / imageSize.height; | |
421 | + } else { | |
422 | + ratio = targetSize.width / imageSize.width; | |
423 | + } | |
424 | + imageSize.width *= ratio; | |
425 | + imageSize.height *= ratio; | |
426 | + | |
427 | + [image setScalesWhenResized:YES]; | |
428 | + [image setSize:imageSize]; | |
429 | + | |
430 | + return image; | |
431 | +} | |
432 | + | |
433 | +- (NSImage *)downloadImageURL:(NSURL *)imageURL | |
434 | +{ | |
435 | + NSURLRequest *req; | |
436 | + | |
437 | + req = [NSURLRequest requestWithURL:imageURL | |
438 | + cachePolicy:NSURLRequestUseProtocolCachePolicy | |
439 | + timeoutInterval:[self timeoutInterval]]; | |
440 | + | |
441 | + NSData *imageData; | |
442 | + NSURLResponse *res = NULL; | |
443 | + NSError *err = NULL; | |
444 | + imageData = [NSURLConnection sendSynchronousRequest:req | |
445 | + returningResponse:&res | |
446 | + error:&err]; | |
447 | + if(err) { | |
448 | + NSLog(@"Fail download. reason(%@)", [err localizedDescription]); | |
449 | + return [self notFoundImage]; | |
450 | + } | |
451 | + if(res) { | |
452 | + if(![[res MIMEType] hasPrefix:@"image/"]) { | |
453 | + NSLog(@"Fail download. reason(target type is %@)", [res MIMEType]); | |
454 | + return [self notFoundImage]; | |
455 | + } | |
456 | + } | |
457 | + | |
458 | + NSImage *image = [[[NSImage alloc] initWithData:imageData] autorelease]; | |
459 | + if(!image) { | |
460 | + NSLog(@"Can not create image."); | |
461 | + return [self notFoundImage]; | |
462 | + } | |
463 | + | |
464 | + return [self fitImage:image toSize:[self previewSize]]; | |
465 | +} | |
466 | + | |
467 | +@end |
@@ -0,0 +1,313 @@ | ||
1 | +// !$*UTF8*$! | |
2 | +{ | |
3 | + archiveVersion = 1; | |
4 | + classes = { | |
5 | + }; | |
6 | + objectVersion = 44; | |
7 | + objects = { | |
8 | + | |
9 | +/* Begin PBXBuildFile section */ | |
10 | + 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; | |
11 | + 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; | |
12 | + F468C5C912201875009EFA3E /* BSILinkInfomation.m in Sources */ = {isa = PBXBuildFile; fileRef = F468C5C812201875009EFA3E /* BSILinkInfomation.m */; }; | |
13 | + F468C69D1220CA07009EFA3E /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F468C69C1220CA07009EFA3E /* WebKit.framework */; }; | |
14 | + F4C8070C0E53CCB000BF4144 /* BSInlinePreviewer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C8070B0E53CCB000BF4144 /* BSInlinePreviewer.m */; }; | |
15 | + F4F1DC700E546EC800055177 /* notFound.png in Resources */ = {isa = PBXBuildFile; fileRef = F4F1DC6F0E546EC800055177 /* notFound.png */; }; | |
16 | + F4FE88A010F772DD0076B366 /* Panel.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4FE889E10F772DD0076B366 /* Panel.xib */; }; | |
17 | +/* End PBXBuildFile section */ | |
18 | + | |
19 | +/* Begin PBXFileReference section */ | |
20 | + 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; | |
21 | + 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; }; | |
22 | + 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; | |
23 | + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; | |
24 | + 32DBCF630370AF2F00C91783 /* BSInlinePreviewer_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSInlinePreviewer_Prefix.pch; sourceTree = "<group>"; }; | |
25 | + 8D5B49B6048680CD000E48DA /* BSInlinePreviewer.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BSInlinePreviewer.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; | |
26 | + 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | |
27 | + D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; | |
28 | + F468C45612200CA2009EFA3E /* BSPreviewPluginInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSPreviewPluginInterface.h; sourceTree = "<group>"; }; | |
29 | + F468C5C712201875009EFA3E /* BSILinkInfomation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSILinkInfomation.h; sourceTree = "<group>"; }; | |
30 | + F468C5C812201875009EFA3E /* BSILinkInfomation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSILinkInfomation.m; sourceTree = "<group>"; }; | |
31 | + F468C69C1220CA07009EFA3E /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; | |
32 | + F4C807090E53CBE500BF4144 /* BSImagePreviewerInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSImagePreviewerInterface.h; sourceTree = "<group>"; }; | |
33 | + F4C8070A0E53CCB000BF4144 /* BSInlinePreviewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSInlinePreviewer.h; sourceTree = "<group>"; }; | |
34 | + F4C8070B0E53CCB000BF4144 /* BSInlinePreviewer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BSInlinePreviewer.m; sourceTree = "<group>"; }; | |
35 | + F4F1DC6F0E546EC800055177 /* notFound.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = notFound.png; sourceTree = "<group>"; }; | |
36 | + F4FE889F10F772DD0076B366 /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Japanese; path = Japanese.lproj/Panel.xib; sourceTree = "<group>"; }; | |
37 | +/* End PBXFileReference section */ | |
38 | + | |
39 | +/* Begin PBXFrameworksBuildPhase section */ | |
40 | + 8D5B49B3048680CD000E48DA /* Frameworks */ = { | |
41 | + isa = PBXFrameworksBuildPhase; | |
42 | + buildActionMask = 2147483647; | |
43 | + files = ( | |
44 | + 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, | |
45 | + F468C69D1220CA07009EFA3E /* WebKit.framework in Frameworks */, | |
46 | + ); | |
47 | + runOnlyForDeploymentPostprocessing = 0; | |
48 | + }; | |
49 | +/* End PBXFrameworksBuildPhase section */ | |
50 | + | |
51 | +/* Begin PBXGroup section */ | |
52 | + 089C166AFE841209C02AAC07 /* BSInlinePreviewer */ = { | |
53 | + isa = PBXGroup; | |
54 | + children = ( | |
55 | + F468C45612200CA2009EFA3E /* BSPreviewPluginInterface.h */, | |
56 | + F4C807090E53CBE500BF4144 /* BSImagePreviewerInterface.h */, | |
57 | + 08FB77AFFE84173DC02AAC07 /* Classes */, | |
58 | + 32C88E010371C26100C91783 /* Other Sources */, | |
59 | + 089C167CFE841241C02AAC07 /* Resources */, | |
60 | + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, | |
61 | + 19C28FB8FE9D52D311CA2CBB /* Products */, | |
62 | + ); | |
63 | + name = BSInlinePreviewer; | |
64 | + sourceTree = "<group>"; | |
65 | + }; | |
66 | + 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = { | |
67 | + isa = PBXGroup; | |
68 | + children = ( | |
69 | + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */, | |
70 | + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */, | |
71 | + ); | |
72 | + name = "Frameworks and Libraries"; | |
73 | + sourceTree = "<group>"; | |
74 | + }; | |
75 | + 089C167CFE841241C02AAC07 /* Resources */ = { | |
76 | + isa = PBXGroup; | |
77 | + children = ( | |
78 | + F4FE889E10F772DD0076B366 /* Panel.xib */, | |
79 | + F4F1DC6F0E546EC800055177 /* notFound.png */, | |
80 | + 8D5B49B7048680CD000E48DA /* Info.plist */, | |
81 | + 089C167DFE841241C02AAC07 /* InfoPlist.strings */, | |
82 | + ); | |
83 | + name = Resources; | |
84 | + sourceTree = "<group>"; | |
85 | + }; | |
86 | + 08FB77AFFE84173DC02AAC07 /* Classes */ = { | |
87 | + isa = PBXGroup; | |
88 | + children = ( | |
89 | + F4C8070A0E53CCB000BF4144 /* BSInlinePreviewer.h */, | |
90 | + F4C8070B0E53CCB000BF4144 /* BSInlinePreviewer.m */, | |
91 | + F468C5C712201875009EFA3E /* BSILinkInfomation.h */, | |
92 | + F468C5C812201875009EFA3E /* BSILinkInfomation.m */, | |
93 | + ); | |
94 | + name = Classes; | |
95 | + sourceTree = "<group>"; | |
96 | + }; | |
97 | + 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { | |
98 | + isa = PBXGroup; | |
99 | + children = ( | |
100 | + 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, | |
101 | + ); | |
102 | + name = "Linked Frameworks"; | |
103 | + sourceTree = "<group>"; | |
104 | + }; | |
105 | + 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = { | |
106 | + isa = PBXGroup; | |
107 | + children = ( | |
108 | + 089C167FFE841241C02AAC07 /* AppKit.framework */, | |
109 | + D2F7E65807B2D6F200F64583 /* CoreData.framework */, | |
110 | + 089C1672FE841209C02AAC07 /* Foundation.framework */, | |
111 | + F468C69C1220CA07009EFA3E /* WebKit.framework */, | |
112 | + ); | |
113 | + name = "Other Frameworks"; | |
114 | + sourceTree = "<group>"; | |
115 | + }; | |
116 | + 19C28FB8FE9D52D311CA2CBB /* Products */ = { | |
117 | + isa = PBXGroup; | |
118 | + children = ( | |
119 | + 8D5B49B6048680CD000E48DA /* BSInlinePreviewer.plugin */, | |
120 | + ); | |
121 | + name = Products; | |
122 | + sourceTree = "<group>"; | |
123 | + }; | |
124 | + 32C88E010371C26100C91783 /* Other Sources */ = { | |
125 | + isa = PBXGroup; | |
126 | + children = ( | |
127 | + 32DBCF630370AF2F00C91783 /* BSInlinePreviewer_Prefix.pch */, | |
128 | + ); | |
129 | + name = "Other Sources"; | |
130 | + sourceTree = "<group>"; | |
131 | + }; | |
132 | +/* End PBXGroup section */ | |
133 | + | |
134 | +/* Begin PBXNativeTarget section */ | |
135 | + 8D5B49AC048680CD000E48DA /* BSInlinePreviewer */ = { | |
136 | + isa = PBXNativeTarget; | |
137 | + buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "BSInlinePreviewer" */; | |
138 | + buildPhases = ( | |
139 | + 8D5B49AF048680CD000E48DA /* Resources */, | |
140 | + 8D5B49B1048680CD000E48DA /* Sources */, | |
141 | + 8D5B49B3048680CD000E48DA /* Frameworks */, | |
142 | + F4C8073C0E53CFBD00BF4144 /* ShellScript */, | |
143 | + ); | |
144 | + buildRules = ( | |
145 | + ); | |
146 | + dependencies = ( | |
147 | + ); | |
148 | + name = BSInlinePreviewer; | |
149 | + productInstallPath = "$(HOME)/Library/Bundles"; | |
150 | + productName = BSInlinePreviewer; | |
151 | + productReference = 8D5B49B6048680CD000E48DA /* BSInlinePreviewer.plugin */; | |
152 | + productType = "com.apple.product-type.bundle"; | |
153 | + }; | |
154 | +/* End PBXNativeTarget section */ | |
155 | + | |
156 | +/* Begin PBXProject section */ | |
157 | + 089C1669FE841209C02AAC07 /* Project object */ = { | |
158 | + isa = PBXProject; | |
159 | + buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "BSInlinePreviewer" */; | |
160 | + compatibilityVersion = "Xcode 3.0"; | |
161 | + hasScannedForEncodings = 1; | |
162 | + mainGroup = 089C166AFE841209C02AAC07 /* BSInlinePreviewer */; | |
163 | + projectDirPath = ""; | |
164 | + projectRoot = ""; | |
165 | + targets = ( | |
166 | + 8D5B49AC048680CD000E48DA /* BSInlinePreviewer */, | |
167 | + ); | |
168 | + }; | |
169 | +/* End PBXProject section */ | |
170 | + | |
171 | +/* Begin PBXResourcesBuildPhase section */ | |
172 | + 8D5B49AF048680CD000E48DA /* Resources */ = { | |
173 | + isa = PBXResourcesBuildPhase; | |
174 | + buildActionMask = 2147483647; | |
175 | + files = ( | |
176 | + 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */, | |
177 | + F4F1DC700E546EC800055177 /* notFound.png in Resources */, | |
178 | + F4FE88A010F772DD0076B366 /* Panel.xib in Resources */, | |
179 | + ); | |
180 | + runOnlyForDeploymentPostprocessing = 0; | |
181 | + }; | |
182 | +/* End PBXResourcesBuildPhase section */ | |
183 | + | |
184 | +/* Begin PBXShellScriptBuildPhase section */ | |
185 | + F4C8073C0E53CFBD00BF4144 /* ShellScript */ = { | |
186 | + isa = PBXShellScriptBuildPhase; | |
187 | + buildActionMask = 12; | |
188 | + files = ( | |
189 | + ); | |
190 | + inputPaths = ( | |
191 | + ); | |
192 | + outputPaths = ( | |
193 | + ); | |
194 | + runOnlyForDeploymentPostprocessing = 0; | |
195 | + shellPath = /bin/sh; | |
196 | + shellScript = "dest=\"/Users/masaki/Library/Application support/BathyScaphe/PlugIns/\"\nsrcname=${PRODUCT_NAME}.${WRAPPER_EXTENSION}\n\ncp -r ${CONFIGURATION_BUILD_DIR}/${srcname} \"${dest}\"\n"; | |
197 | + showEnvVarsInLog = 0; | |
198 | + }; | |
199 | +/* End PBXShellScriptBuildPhase section */ | |
200 | + | |
201 | +/* Begin PBXSourcesBuildPhase section */ | |
202 | + 8D5B49B1048680CD000E48DA /* Sources */ = { | |
203 | + isa = PBXSourcesBuildPhase; | |
204 | + buildActionMask = 2147483647; | |
205 | + files = ( | |
206 | + F4C8070C0E53CCB000BF4144 /* BSInlinePreviewer.m in Sources */, | |
207 | + F468C5C912201875009EFA3E /* BSILinkInfomation.m in Sources */, | |
208 | + ); | |
209 | + runOnlyForDeploymentPostprocessing = 0; | |
210 | + }; | |
211 | +/* End PBXSourcesBuildPhase section */ | |
212 | + | |
213 | +/* Begin PBXVariantGroup section */ | |
214 | + 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { | |
215 | + isa = PBXVariantGroup; | |
216 | + children = ( | |
217 | + 089C167EFE841241C02AAC07 /* English */, | |
218 | + ); | |
219 | + name = InfoPlist.strings; | |
220 | + sourceTree = "<group>"; | |
221 | + }; | |
222 | + F4FE889E10F772DD0076B366 /* Panel.xib */ = { | |
223 | + isa = PBXVariantGroup; | |
224 | + children = ( | |
225 | + F4FE889F10F772DD0076B366 /* Japanese */, | |
226 | + ); | |
227 | + name = Panel.xib; | |
228 | + sourceTree = "<group>"; | |
229 | + }; | |
230 | +/* End PBXVariantGroup section */ | |
231 | + | |
232 | +/* Begin XCBuildConfiguration section */ | |
233 | + 1DEB913B08733D840010E9CD /* Debug */ = { | |
234 | + isa = XCBuildConfiguration; | |
235 | + buildSettings = { | |
236 | + COPY_PHASE_STRIP = NO; | |
237 | + GCC_DYNAMIC_NO_PIC = NO; | |
238 | + GCC_ENABLE_FIX_AND_CONTINUE = YES; | |
239 | + GCC_MODEL_TUNING = G5; | |
240 | + GCC_OPTIMIZATION_LEVEL = 0; | |
241 | + GCC_PRECOMPILE_PREFIX_HEADER = YES; | |
242 | + GCC_PREFIX_HEADER = BSInlinePreviewer_Prefix.pch; | |
243 | + INFOPLIST_FILE = Info.plist; | |
244 | + INSTALL_PATH = "$(HOME)/Library/Bundles"; | |
245 | + PRODUCT_NAME = BSInlinePreviewer; | |
246 | + WRAPPER_EXTENSION = plugin; | |
247 | + ZERO_LINK = YES; | |
248 | + }; | |
249 | + name = Debug; | |
250 | + }; | |
251 | + 1DEB913C08733D840010E9CD /* Release */ = { | |
252 | + isa = XCBuildConfiguration; | |
253 | + buildSettings = { | |
254 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | |
255 | + GCC_MODEL_TUNING = G5; | |
256 | + GCC_PRECOMPILE_PREFIX_HEADER = YES; | |
257 | + GCC_PREFIX_HEADER = BSInlinePreviewer_Prefix.pch; | |
258 | + INFOPLIST_FILE = Info.plist; | |
259 | + INSTALL_PATH = "$(HOME)/Library/Bundles"; | |
260 | + PRODUCT_NAME = BSInlinePreviewer; | |
261 | + WRAPPER_EXTENSION = plugin; | |
262 | + }; | |
263 | + name = Release; | |
264 | + }; | |
265 | + 1DEB913F08733D840010E9CD /* Debug */ = { | |
266 | + isa = XCBuildConfiguration; | |
267 | + buildSettings = { | |
268 | + GCC_WARN_ABOUT_RETURN_TYPE = YES; | |
269 | + GCC_WARN_UNUSED_VARIABLE = YES; | |
270 | + PREBINDING = NO; | |
271 | + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; | |
272 | + }; | |
273 | + name = Debug; | |
274 | + }; | |
275 | + 1DEB914008733D840010E9CD /* Release */ = { | |
276 | + isa = XCBuildConfiguration; | |
277 | + buildSettings = { | |
278 | + ARCHS = ( | |
279 | + ppc, | |
280 | + i386, | |
281 | + ); | |
282 | + GCC_WARN_ABOUT_RETURN_TYPE = YES; | |
283 | + GCC_WARN_UNUSED_VARIABLE = YES; | |
284 | + PREBINDING = NO; | |
285 | + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; | |
286 | + }; | |
287 | + name = Release; | |
288 | + }; | |
289 | +/* End XCBuildConfiguration section */ | |
290 | + | |
291 | +/* Begin XCConfigurationList section */ | |
292 | + 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "BSInlinePreviewer" */ = { | |
293 | + isa = XCConfigurationList; | |
294 | + buildConfigurations = ( | |
295 | + 1DEB913B08733D840010E9CD /* Debug */, | |
296 | + 1DEB913C08733D840010E9CD /* Release */, | |
297 | + ); | |
298 | + defaultConfigurationIsVisible = 0; | |
299 | + defaultConfigurationName = Release; | |
300 | + }; | |
301 | + 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "BSInlinePreviewer" */ = { | |
302 | + isa = XCConfigurationList; | |
303 | + buildConfigurations = ( | |
304 | + 1DEB913F08733D840010E9CD /* Debug */, | |
305 | + 1DEB914008733D840010E9CD /* Release */, | |
306 | + ); | |
307 | + defaultConfigurationIsVisible = 0; | |
308 | + defaultConfigurationName = Release; | |
309 | + }; | |
310 | +/* End XCConfigurationList section */ | |
311 | + }; | |
312 | + rootObject = 089C1669FE841209C02AAC07 /* Project object */; | |
313 | +} |
@@ -0,0 +1,7 @@ | ||
1 | +// | |
2 | +// Prefix header for all source files of the 'BSInlinePreviewer' target in the 'BSInlinePreviewer' project. | |
3 | +// | |
4 | + | |
5 | +#ifdef __OBJC__ | |
6 | + #import <Cocoa/Cocoa.h> | |
7 | +#endif |
@@ -0,0 +1,40 @@ | ||
1 | +// | |
2 | +// BSPreviewPluginInterface.h | |
3 | +// BathyScaphe | |
4 | +// | |
5 | +// Created by Tsutomu Sawada on 10/03/21. | |
6 | +// Copyright 2010 BathyScaphe Project. All rights reserved. | |
7 | +// encoding="UTF-8" | |
8 | +// | |
9 | + | |
10 | +@class AppDefaults, CMRThreadViewer; | |
11 | + | |
12 | +@protocol BSLinkPreviewing | |
13 | +// Designated Initializer | |
14 | +- (id)initWithPreferences:(AppDefaults *)prefs; | |
15 | + | |
16 | +// Action | |
17 | +- (BOOL)previewLink:(NSURL *)url; | |
18 | +- (BOOL)validateLink:(NSURL *)url; | |
19 | + | |
20 | +@optional | |
21 | +//- (BOOL)previewLink:(NSURL *)url atThread:(CMRThreadViewer *)threadViewer; | |
22 | +//- (BOOL)previewLink:(NSURL *)url atThread:(CMRThreadViewer *)threadViewer mouseLocation:(NSPoint)point linkBounds:(NSRect)bounds; | |
23 | +//- (BOOL)validateLink:(NSURL *)url atThread:(CMRThreadViewer *)threadViewer; | |
24 | +- (BOOL)previewLinks:(NSArray *)urls; | |
25 | +//- (BOOL)previewLinks:(NSArray *)urls atThread:(CMRThreadViewer *)threadViewer; | |
26 | +//- (BOOL)previewLinks:(NSArray *)urls atThread:(CMRThreadViewer *)threadViewer linksBounds:(NSRect)bounds; | |
27 | +- (IBAction)togglePreviewPanel:(id)sender; | |
28 | +- (IBAction)showPreviewerPreferences:(id)sender; | |
29 | +@end | |
30 | + | |
31 | + | |
32 | +@interface NSObject(BSPreviewPluginAdditions) | |
33 | +// Storage for plugin-specific settings | |
34 | +- (NSMutableDictionary *)previewerPrefsDict; | |
35 | + | |
36 | +// Accessor for useful BathyScaphe global settings | |
37 | +- (BOOL)openInBg; | |
38 | +- (BOOL)isOnlineMode; | |
39 | +- (NSString *)linkDownloaderDestination; // 「リンク先のファイルをダウンロード」時の「保存先」 | |
40 | +@end |
@@ -0,0 +1,12 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
3 | +<plist version="1.0"> | |
4 | +<dict> | |
5 | + <key>BSPreviewerDisplayName</key> | |
6 | + <string>BSInlinePreviewer</string> | |
7 | + <key>CFBundleGetInfoString</key> | |
8 | + <string>BSInlinePreviewer 2.0</string> | |
9 | + <key>NSHumanReadableCopyright</key> | |
10 | + <string>© masakih, 2008,2010</string> | |
11 | +</dict> | |
12 | +</plist> |
@@ -0,0 +1,28 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
3 | +<plist version="1.0"> | |
4 | +<dict> | |
5 | + <key>CFBundleDevelopmentRegion</key> | |
6 | + <string>English</string> | |
7 | + <key>CFBundleExecutable</key> | |
8 | + <string>${EXECUTABLE_NAME}</string> | |
9 | + <key>CFBundleIconFile</key> | |
10 | + <string></string> | |
11 | + <key>CFBundleIdentifier</key> | |
12 | + <string>com.masakih.BSInlinePreviewer</string> | |
13 | + <key>CFBundleInfoDictionaryVersion</key> | |
14 | + <string>6.0</string> | |
15 | + <key>CFBundleName</key> | |
16 | + <string>${PRODUCT_NAME}</string> | |
17 | + <key>CFBundlePackageType</key> | |
18 | + <string>BNDL</string> | |
19 | + <key>CFBundleShortVersionString</key> | |
20 | + <string>1.1</string> | |
21 | + <key>CFBundleSignature</key> | |
22 | + <string>????</string> | |
23 | + <key>CFBundleVersion</key> | |
24 | + <string>2.0</string> | |
25 | + <key>NSPrincipalClass</key> | |
26 | + <string>BSInlinePreviewer</string> | |
27 | +</dict> | |
28 | +</plist> |
@@ -0,0 +1,868 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> | |
3 | + <data> | |
4 | + <int key="IBDocument.SystemTarget">1050</int> | |
5 | + <string key="IBDocument.SystemVersion">10F569</string> | |
6 | + <string key="IBDocument.InterfaceBuilderVersion">788</string> | |
7 | + <string key="IBDocument.AppKitVersion">1038.29</string> | |
8 | + <string key="IBDocument.HIToolboxVersion">461.00</string> | |
9 | + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> | |
10 | + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> | |
11 | + <string key="NS.object.0">788</string> | |
12 | + </object> | |
13 | + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> | |
14 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
15 | + <integer value="4"/> | |
16 | + </object> | |
17 | + <object class="NSArray" key="IBDocument.PluginDependencies"> | |
18 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
19 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
20 | + </object> | |
21 | + <object class="NSMutableDictionary" key="IBDocument.Metadata"> | |
22 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
23 | + <object class="NSArray" key="dict.sortedKeys" id="0"> | |
24 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
25 | + </object> | |
26 | + <object class="NSMutableArray" key="dict.values"> | |
27 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
28 | + </object> | |
29 | + </object> | |
30 | + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> | |
31 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
32 | + <object class="NSCustomObject" id="1001"> | |
33 | + <string key="NSClassName">BSInlinePreviewer</string> | |
34 | + </object> | |
35 | + <object class="NSCustomObject" id="1003"> | |
36 | + <string key="NSClassName">FirstResponder</string> | |
37 | + </object> | |
38 | + <object class="NSCustomObject" id="1004"> | |
39 | + <string key="NSClassName">NSApplication</string> | |
40 | + </object> | |
41 | + <object class="NSWindowTemplate" id="142754705"> | |
42 | + <int key="NSWindowStyleMask">31</int> | |
43 | + <int key="NSWindowBacking">2</int> | |
44 | + <string key="NSWindowRect">{{162, 373}, {246, 106}}</string> | |
45 | + <int key="NSWTFlags">-461897728</int> | |
46 | + <string key="NSWindowTitle">Window</string> | |
47 | + <string key="NSWindowClass">NSPanel</string> | |
48 | + <nil key="NSViewClass"/> | |
49 | + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> | |
50 | + <object class="NSView" key="NSWindowView" id="299369692"> | |
51 | + <reference key="NSNextResponder"/> | |
52 | + <int key="NSvFlags">256</int> | |
53 | + <object class="NSMutableArray" key="NSSubviews"> | |
54 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
55 | + <object class="NSProgressIndicator" id="707824324"> | |
56 | + <reference key="NSNextResponder" ref="299369692"/> | |
57 | + <int key="NSvFlags">1292</int> | |
58 | + <object class="NSPSMatrix" key="NSDrawMatrix"/> | |
59 | + <string key="NSFrame">{{18, 41}, {210, 20}}</string> | |
60 | + <reference key="NSSuperview" ref="299369692"/> | |
61 | + <int key="NSpiFlags">16394</int> | |
62 | + <double key="NSMaxValue">100</double> | |
63 | + </object> | |
64 | + <object class="NSTextField" id="864997461"> | |
65 | + <reference key="NSNextResponder" ref="299369692"/> | |
66 | + <int key="NSvFlags">268</int> | |
67 | + <string key="NSFrame">{{17, 69}, {212, 17}}</string> | |
68 | + <reference key="NSSuperview" ref="299369692"/> | |
69 | + <bool key="NSEnabled">YES</bool> | |
70 | + <object class="NSTextFieldCell" key="NSCell" id="590038331"> | |
71 | + <int key="NSCellFlags">68288064</int> | |
72 | + <int key="NSCellFlags2">272630784</int> | |
73 | + <string key="NSContents">ファイルをダウンロードしています</string> | |
74 | + <object class="NSFont" key="NSSupport"> | |
75 | + <string key="NSName">HiraKakuProN-W3</string> | |
76 | + <double key="NSSize">13</double> | |
77 | + <int key="NSfFlags">16</int> | |
78 | + </object> | |
79 | + <reference key="NSControlView" ref="864997461"/> | |
80 | + <object class="NSColor" key="NSBackgroundColor" id="546576217"> | |
81 | + <int key="NSColorSpace">6</int> | |
82 | + <string key="NSCatalogName">System</string> | |
83 | + <string key="NSColorName">controlColor</string> | |
84 | + <object class="NSColor" key="NSColor"> | |
85 | + <int key="NSColorSpace">3</int> | |
86 | + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> | |
87 | + </object> | |
88 | + </object> | |
89 | + <object class="NSColor" key="NSTextColor" id="933503949"> | |
90 | + <int key="NSColorSpace">6</int> | |
91 | + <string key="NSCatalogName">System</string> | |
92 | + <string key="NSColorName">controlTextColor</string> | |
93 | + <object class="NSColor" key="NSColor"> | |
94 | + <int key="NSColorSpace">3</int> | |
95 | + <bytes key="NSWhite">MAA</bytes> | |
96 | + </object> | |
97 | + </object> | |
98 | + </object> | |
99 | + </object> | |
100 | + <object class="NSTextField" id="742096612"> | |
101 | + <reference key="NSNextResponder" ref="299369692"/> | |
102 | + <int key="NSvFlags">288</int> | |
103 | + <string key="NSFrame">{{88, 20}, {70, 17}}</string> | |
104 | + <reference key="NSSuperview" ref="299369692"/> | |
105 | + <bool key="NSEnabled">YES</bool> | |
106 | + <object class="NSTextFieldCell" key="NSCell" id="21590895"> | |
107 | + <int key="NSCellFlags">68288064</int> | |
108 | + <int key="NSCellFlags2">138413056</int> | |
109 | + <string key="NSContents">Label----</string> | |
110 | + <object class="NSFont" key="NSSupport"> | |
111 | + <string key="NSName">LucidaGrande</string> | |
112 | + <double key="NSSize">13</double> | |
113 | + <int key="NSfFlags">1044</int> | |
114 | + </object> | |
115 | + <reference key="NSControlView" ref="742096612"/> | |
116 | + <reference key="NSBackgroundColor" ref="546576217"/> | |
117 | + <reference key="NSTextColor" ref="933503949"/> | |
118 | + </object> | |
119 | + </object> | |
120 | + </object> | |
121 | + <string key="NSFrameSize">{246, 106}</string> | |
122 | + <reference key="NSSuperview"/> | |
123 | + </object> | |
124 | + <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> | |
125 | + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> | |
126 | + </object> | |
127 | + </object> | |
128 | + <object class="IBObjectContainer" key="IBDocument.Objects"> | |
129 | + <object class="NSMutableArray" key="connectionRecords"> | |
130 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
131 | + <object class="IBConnectionRecord"> | |
132 | + <object class="IBOutletConnection" key="connection"> | |
133 | + <string key="label">progress</string> | |
134 | + <reference key="source" ref="1001"/> | |
135 | + <reference key="destination" ref="707824324"/> | |
136 | + </object> | |
137 | + <int key="connectionID">8</int> | |
138 | + </object> | |
139 | + <object class="IBConnectionRecord"> | |
140 | + <object class="IBOutletConnection" key="connection"> | |
141 | + <string key="label">progressPanel</string> | |
142 | + <reference key="source" ref="1001"/> | |
143 | + <reference key="destination" ref="142754705"/> | |
144 | + </object> | |
145 | + <int key="connectionID">9</int> | |
146 | + </object> | |
147 | + <object class="IBConnectionRecord"> | |
148 | + <object class="IBBindingConnection" key="connection"> | |
149 | + <string key="label">displayPatternValue1: remainder</string> | |
150 | + <reference key="source" ref="742096612"/> | |
151 | + <reference key="destination" ref="1001"/> | |
152 | + <object class="NSNibBindingConnector" key="connector" id="640733573"> | |
153 | + <reference key="NSSource" ref="742096612"/> | |
154 | + <reference key="NSDestination" ref="1001"/> | |
155 | + <string key="NSLabel">displayPatternValue1: remainder</string> | |
156 | + <string key="NSBinding">displayPatternValue1</string> | |
157 | + <string key="NSKeyPath">remainder</string> | |
158 | + <object class="NSDictionary" key="NSOptions"> | |
159 | + <string key="NS.key.0">NSDisplayPattern</string> | |
160 | + <string key="NS.object.0">%{value1}@/%{value2}@</string> | |
161 | + </object> | |
162 | + <int key="NSNibBindingConnectorVersion">2</int> | |
163 | + </object> | |
164 | + </object> | |
165 | + <int key="connectionID">15</int> | |
166 | + </object> | |
167 | + <object class="IBConnectionRecord"> | |
168 | + <object class="IBBindingConnection" key="connection"> | |
169 | + <string key="label">displayPatternValue2: totalDownloads</string> | |
170 | + <reference key="source" ref="742096612"/> | |
171 | + <reference key="destination" ref="1001"/> | |
172 | + <object class="NSNibBindingConnector" key="connector"> | |
173 | + <reference key="NSSource" ref="742096612"/> | |
174 | + <reference key="NSDestination" ref="1001"/> | |
175 | + <string key="NSLabel">displayPatternValue2: totalDownloads</string> | |
176 | + <string key="NSBinding">displayPatternValue2</string> | |
177 | + <string key="NSKeyPath">totalDownloads</string> | |
178 | + <object class="NSDictionary" key="NSOptions"> | |
179 | + <string key="NS.key.0">NSDisplayPattern</string> | |
180 | + <string key="NS.object.0">%{value1}@/%{value2}@</string> | |
181 | + </object> | |
182 | + <reference key="NSPreviousConnector" ref="640733573"/> | |
183 | + <int key="NSNibBindingConnectorVersion">2</int> | |
184 | + </object> | |
185 | + </object> | |
186 | + <int key="connectionID">16</int> | |
187 | + </object> | |
188 | + </object> | |
189 | + <object class="IBMutableOrderedSet" key="objectRecords"> | |
190 | + <object class="NSArray" key="orderedObjects"> | |
191 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
192 | + <object class="IBObjectRecord"> | |
193 | + <int key="objectID">0</int> | |
194 | + <reference key="object" ref="0"/> | |
195 | + <reference key="children" ref="1000"/> | |
196 | + <nil key="parent"/> | |
197 | + </object> | |
198 | + <object class="IBObjectRecord"> | |
199 | + <int key="objectID">-2</int> | |
200 | + <reference key="object" ref="1001"/> | |
201 | + <reference key="parent" ref="0"/> | |
202 | + <string key="objectName">File's Owner</string> | |
203 | + </object> | |
204 | + <object class="IBObjectRecord"> | |
205 | + <int key="objectID">-1</int> | |
206 | + <reference key="object" ref="1003"/> | |
207 | + <reference key="parent" ref="0"/> | |
208 | + <string key="objectName">First Responder</string> | |
209 | + </object> | |
210 | + <object class="IBObjectRecord"> | |
211 | + <int key="objectID">-3</int> | |
212 | + <reference key="object" ref="1004"/> | |
213 | + <reference key="parent" ref="0"/> | |
214 | + <string key="objectName">Application</string> | |
215 | + </object> | |
216 | + <object class="IBObjectRecord"> | |
217 | + <int key="objectID">3</int> | |
218 | + <reference key="object" ref="142754705"/> | |
219 | + <object class="NSMutableArray" key="children"> | |
220 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
221 | + <reference ref="299369692"/> | |
222 | + </object> | |
223 | + <reference key="parent" ref="0"/> | |
224 | + </object> | |
225 | + <object class="IBObjectRecord"> | |
226 | + <int key="objectID">4</int> | |
227 | + <reference key="object" ref="299369692"/> | |
228 | + <object class="NSMutableArray" key="children"> | |
229 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
230 | + <reference ref="864997461"/> | |
231 | + <reference ref="707824324"/> | |
232 | + <reference ref="742096612"/> | |
233 | + </object> | |
234 | + <reference key="parent" ref="142754705"/> | |
235 | + </object> | |
236 | + <object class="IBObjectRecord"> | |
237 | + <int key="objectID">5</int> | |
238 | + <reference key="object" ref="707824324"/> | |
239 | + <reference key="parent" ref="299369692"/> | |
240 | + </object> | |
241 | + <object class="IBObjectRecord"> | |
242 | + <int key="objectID">6</int> | |
243 | + <reference key="object" ref="864997461"/> | |
244 | + <object class="NSMutableArray" key="children"> | |
245 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
246 | + <reference ref="590038331"/> | |
247 | + </object> | |
248 | + <reference key="parent" ref="299369692"/> | |
249 | + </object> | |
250 | + <object class="IBObjectRecord"> | |
251 | + <int key="objectID">7</int> | |
252 | + <reference key="object" ref="590038331"/> | |
253 | + <reference key="parent" ref="864997461"/> | |
254 | + </object> | |
255 | + <object class="IBObjectRecord"> | |
256 | + <int key="objectID">10</int> | |
257 | + <reference key="object" ref="742096612"/> | |
258 | + <object class="NSMutableArray" key="children"> | |
259 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
260 | + <reference ref="21590895"/> | |
261 | + </object> | |
262 | + <reference key="parent" ref="299369692"/> | |
263 | + </object> | |
264 | + <object class="IBObjectRecord"> | |
265 | + <int key="objectID">11</int> | |
266 | + <reference key="object" ref="21590895"/> | |
267 | + <reference key="parent" ref="742096612"/> | |
268 | + </object> | |
269 | + </object> | |
270 | + </object> | |
271 | + <object class="NSMutableDictionary" key="flattenedProperties"> | |
272 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
273 | + <object class="NSArray" key="dict.sortedKeys"> | |
274 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
275 | + <string>-1.IBPluginDependency</string> | |
276 | + <string>-2.IBPluginDependency</string> | |
277 | + <string>-3.IBPluginDependency</string> | |
278 | + <string>10.IBPluginDependency</string> | |
279 | + <string>11.IBPluginDependency</string> | |
280 | + <string>3.IBEditorWindowLastContentRect</string> | |
281 | + <string>3.IBPluginDependency</string> | |
282 | + <string>3.IBWindowTemplateEditedContentRect</string> | |
283 | + <string>3.NSWindowTemplate.visibleAtLaunch</string> | |
284 | + <string>4.IBPluginDependency</string> | |
285 | + <string>5.IBPluginDependency</string> | |
286 | + <string>6.IBPluginDependency</string> | |
287 | + <string>7.IBPluginDependency</string> | |
288 | + </object> | |
289 | + <object class="NSMutableArray" key="dict.values"> | |
290 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
291 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
292 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
293 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
294 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
295 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
296 | + <string>{{196, 585}, {246, 106}}</string> | |
297 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
298 | + <string>{{196, 585}, {246, 106}}</string> | |
299 | + <boolean value="NO"/> | |
300 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
301 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
302 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
303 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | |
304 | + </object> | |
305 | + </object> | |
306 | + <object class="NSMutableDictionary" key="unlocalizedProperties"> | |
307 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
308 | + <reference key="dict.sortedKeys" ref="0"/> | |
309 | + <object class="NSMutableArray" key="dict.values"> | |
310 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
311 | + </object> | |
312 | + </object> | |
313 | + <nil key="activeLocalization"/> | |
314 | + <object class="NSMutableDictionary" key="localizations"> | |
315 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
316 | + <reference key="dict.sortedKeys" ref="0"/> | |
317 | + <object class="NSMutableArray" key="dict.values"> | |
318 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
319 | + </object> | |
320 | + </object> | |
321 | + <nil key="sourceID"/> | |
322 | + <int key="maxID">16</int> | |
323 | + </object> | |
324 | + <object class="IBClassDescriber" key="IBDocument.Classes"> | |
325 | + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> | |
326 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
327 | + <object class="IBPartialClassDescription"> | |
328 | + <string key="className">BSInlinePreviewer</string> | |
329 | + <string key="superclassName">NSObject</string> | |
330 | + <object class="NSMutableDictionary" key="outlets"> | |
331 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
332 | + <object class="NSArray" key="dict.sortedKeys"> | |
333 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
334 | + <string>previewAttributes</string> | |
335 | + <string>progress</string> | |
336 | + <string>progressPanel</string> | |
337 | + <string>threadView</string> | |
338 | + </object> | |
339 | + <object class="NSMutableArray" key="dict.values"> | |
340 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
341 | + <string>id</string> | |
342 | + <string>NSProgressIndicator</string> | |
343 | + <string>NSWindow</string> | |
344 | + <string>id</string> | |
345 | + </object> | |
346 | + </object> | |
347 | + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> | |
348 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
349 | + <object class="NSArray" key="dict.sortedKeys"> | |
350 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
351 | + <string>previewAttributes</string> | |
352 | + <string>progress</string> | |
353 | + <string>progressPanel</string> | |
354 | + <string>threadView</string> | |
355 | + </object> | |
356 | + <object class="NSMutableArray" key="dict.values"> | |
357 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
358 | + <object class="IBToOneOutletInfo"> | |
359 | + <string key="name">previewAttributes</string> | |
360 | + <string key="candidateClassName">id</string> | |
361 | + </object> | |
362 | + <object class="IBToOneOutletInfo"> | |
363 | + <string key="name">progress</string> | |
364 | + <string key="candidateClassName">NSProgressIndicator</string> | |
365 | + </object> | |
366 | + <object class="IBToOneOutletInfo"> | |
367 | + <string key="name">progressPanel</string> | |
368 | + <string key="candidateClassName">NSWindow</string> | |
369 | + </object> | |
370 | + <object class="IBToOneOutletInfo"> | |
371 | + <string key="name">threadView</string> | |
372 | + <string key="candidateClassName">id</string> | |
373 | + </object> | |
374 | + </object> | |
375 | + </object> | |
376 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
377 | + <string key="majorKey">IBProjectSource</string> | |
378 | + <string key="minorKey">BSInlinePreviewer.h</string> | |
379 | + </object> | |
380 | + </object> | |
381 | + <object class="IBPartialClassDescription"> | |
382 | + <string key="className">NSObject</string> | |
383 | + <object class="NSMutableDictionary" key="actions"> | |
384 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
385 | + <object class="NSArray" key="dict.sortedKeys"> | |
386 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
387 | + <string>showPreviewerPreferences:</string> | |
388 | + <string>togglePreviewPanel:</string> | |
389 | + </object> | |
390 | + <object class="NSMutableArray" key="dict.values"> | |
391 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
392 | + <string>id</string> | |
393 | + <string>id</string> | |
394 | + </object> | |
395 | + </object> | |
396 | + <object class="NSMutableDictionary" key="actionInfosByName"> | |
397 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
398 | + <object class="NSArray" key="dict.sortedKeys"> | |
399 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
400 | + <string>showPreviewerPreferences:</string> | |
401 | + <string>togglePreviewPanel:</string> | |
402 | + </object> | |
403 | + <object class="NSMutableArray" key="dict.values"> | |
404 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
405 | + <object class="IBActionInfo"> | |
406 | + <string key="name">showPreviewerPreferences:</string> | |
407 | + <string key="candidateClassName">id</string> | |
408 | + </object> | |
409 | + <object class="IBActionInfo"> | |
410 | + <string key="name">togglePreviewPanel:</string> | |
411 | + <string key="candidateClassName">id</string> | |
412 | + </object> | |
413 | + </object> | |
414 | + </object> | |
415 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
416 | + <string key="majorKey">IBProjectSource</string> | |
417 | + <string key="minorKey">BSImagePreviewerInterface.h</string> | |
418 | + </object> | |
419 | + </object> | |
420 | + <object class="IBPartialClassDescription"> | |
421 | + <string key="className">NSObject</string> | |
422 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
423 | + <string key="majorKey">IBProjectSource</string> | |
424 | + <string key="minorKey">BSPreviewPluginInterface.h</string> | |
425 | + </object> | |
426 | + </object> | |
427 | + </object> | |
428 | + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> | |
429 | + <bool key="EncodedWithXMLCoder">YES</bool> | |
430 | + <object class="IBPartialClassDescription"> | |
431 | + <string key="className">NSActionCell</string> | |
432 | + <string key="superclassName">NSCell</string> | |
433 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
434 | + <string key="majorKey">IBFrameworkSource</string> | |
435 | + <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string> | |
436 | + </object> | |
437 | + </object> | |
438 | + <object class="IBPartialClassDescription"> | |
439 | + <string key="className">NSApplication</string> | |
440 | + <string key="superclassName">NSResponder</string> | |
441 | + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="718377512"> | |
442 | + <string key="majorKey">IBFrameworkSource</string> | |
443 | + <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> | |
444 | + </object> | |
445 | + </object> | |
446 | + <object class="IBPartialClassDescription"> | |
447 | + <string key="className">NSApplication</string> | |
448 | + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="93635389"> | |
449 | + <string key="majorKey">IBFrameworkSource</string> | |
450 | + <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> | |
451 | + </object> | |
452 | + </object> | |
453 | + <object class="IBPartialClassDescription"> | |
454 | + <string key="className">NSApplication</string> | |
455 | + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="605819039"> | |
456 | + <string key="majorKey">IBFrameworkSource</string> | |
457 | + <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> | |
458 | + </object> | |
459 | + </object> | |
460 | + <object class="IBPartialClassDescription"> | |
461 | + <string key="className">NSApplication</string> | |
462 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
463 | + <string key="majorKey">IBFrameworkSource</string> | |
464 | + <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> | |
465 | + </object> | |
466 | + </object> | |
467 | + <object class="IBPartialClassDescription"> | |
468 | + <string key="className">NSApplication</string> | |
469 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
470 | + <string key="majorKey">IBFrameworkSource</string> | |
471 | + <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> | |
472 | + </object> | |
473 | + </object> | |
474 | + <object class="IBPartialClassDescription"> | |
475 | + <string key="className">NSApplication</string> | |
476 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
477 | + <string key="majorKey">IBFrameworkSource</string> | |
478 | + <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string> | |
479 | + </object> | |
480 | + </object> | |
481 | + <object class="IBPartialClassDescription"> | |
482 | + <string key="className">NSCell</string> | |
483 | + <string key="superclassName">NSObject</string> | |
484 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
485 | + <string key="majorKey">IBFrameworkSource</string> | |
486 | + <string key="minorKey">AppKit.framework/Headers/NSCell.h</string> | |
487 | + </object> | |
488 | + </object> | |
489 | + <object class="IBPartialClassDescription"> | |
490 | + <string key="className">NSControl</string> | |
491 | + <string key="superclassName">NSView</string> | |
492 | + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="538402723"> | |
493 | + <string key="majorKey">IBFrameworkSource</string> | |
494 | + <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> | |
495 | + </object> | |
496 | + </object> | |
497 | + <object class="IBPartialClassDescription"> | |
498 | + <string key="className">NSFormatter</string> | |
499 | + <string key="superclassName">NSObject</string> | |
500 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
501 | + <string key="majorKey">IBFrameworkSource</string> | |
502 | + <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> | |
503 | + </object> | |
504 | + </object> | |
505 | + <object class="IBPartialClassDescription"> | |
506 | + <string key="className">NSMenu</string> | |
507 | + <string key="superclassName">NSObject</string> | |
508 | + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="896802280"> | |
509 | + <string key="majorKey">IBFrameworkSource</string> | |
510 | + <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> | |
511 | + </object> | |
512 | + </object> | |
513 | + <object class="IBPartialClassDescription"> | |
514 | + <string key="className">NSObject</string> | |
515 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
516 | + <string key="majorKey">IBFrameworkSource</string> | |
517 | + <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string> | |
518 | + </object> | |
519 | + </object> | |
520 | + <object class="IBPartialClassDescription"> | |
521 | + <string key="className">NSObject</string> | |
522 | + <reference key="sourceIdentifier" ref="718377512"/> | |
523 | + </object> | |
524 | + <object class="IBPartialClassDescription"> | |
525 | + <string key="className">NSObject</string> | |
526 | + <reference key="sourceIdentifier" ref="93635389"/> | |
527 | + </object> | |
528 | + <object class="IBPartialClassDescription"> | |
529 | + <string key="className">NSObject</string> | |
530 | + <reference key="sourceIdentifier" ref="605819039"/> | |
531 | + </object> | |
532 | + <object class="IBPartialClassDescription"> | |
533 | + <string key="className">NSObject</string> | |
534 | + <reference key="sourceIdentifier" ref="538402723"/> | |
535 | + </object> | |
536 | + <object class="IBPartialClassDescription"> | |
537 | + <string key="className">NSObject</string> | |
538 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
539 | + <string key="majorKey">IBFrameworkSource</string> | |
540 | + <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string> | |
541 | + </object> | |
542 | + </object> | |
543 | + <object class="IBPartialClassDescription"> | |
544 | + <string key="className">NSObject</string> | |
545 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
546 | + <string key="majorKey">IBFrameworkSource</string> | |
547 | + <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string> | |
548 | + </object> | |
549 | + </object> | |
550 | + <object class="IBPartialClassDescription"> | |
551 | + <string key="className">NSObject</string> | |
552 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
553 | + <string key="majorKey">IBFrameworkSource</string> | |
554 | + <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string> | |
555 | + </object> | |
556 | + </object> | |
557 | + <object class="IBPartialClassDescription"> | |
558 | + <string key="className">NSObject</string> | |
559 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
560 | + <string key="majorKey">IBFrameworkSource</string> | |
561 | + <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string> | |
562 | + </object> | |
563 | + </object> | |
564 | + <object class="IBPartialClassDescription"> | |
565 | + <string key="className">NSObject</string> | |
566 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
567 | + <string key="majorKey">IBFrameworkSource</string> | |
568 | + <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string> | |
569 | + </object> | |
570 | + </object> | |
571 | + <object class="IBPartialClassDescription"> | |
572 | + <string key="className">NSObject</string> | |
573 | + <reference key="sourceIdentifier" ref="896802280"/> | |
574 | + </object> | |
575 | + <object class="IBPartialClassDescription"> | |
576 | + <string key="className">NSObject</string> | |
577 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
578 | + <string key="majorKey">IBFrameworkSource</string> | |
579 | + <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string> | |
580 | + </object> | |
581 | + </object> | |
582 | + <object class="IBPartialClassDescription"> | |
583 | + <string key="className">NSObject</string> | |
584 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
585 | + <string key="majorKey">IBFrameworkSource</string> | |
586 | + <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> | |
587 | + </object> | |
588 | + </object> | |
589 | + <object class="IBPartialClassDescription"> | |
590 | + <string key="className">NSObject</string> | |
591 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
592 | + <string key="majorKey">IBFrameworkSource</string> | |
593 | + <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string> | |
594 | + </object> | |
595 | + </object> | |
596 | + <object class="IBPartialClassDescription"> | |
597 | + <string key="className">NSObject</string> | |
598 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
599 | + <string key="majorKey">IBFrameworkSource</string> | |
600 | + <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string> | |
601 | + </object> | |
602 | + </object> | |
603 | + <object class="IBPartialClassDescription"> | |
604 | + <string key="className">NSObject</string> | |
605 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
606 | + <string key="majorKey">IBFrameworkSource</string> | |
607 | + <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string> | |
608 | + </object> | |
609 | + </object> | |
610 | + <object class="IBPartialClassDescription"> | |
611 | + <string key="className">NSObject</string> | |
612 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
613 | + <string key="majorKey">IBFrameworkSource</string> | |
614 | + <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string> | |
615 | + </object> | |
616 | + </object> | |
617 | + <object class="IBPartialClassDescription"> | |
618 | + <string key="className">NSObject</string> | |
619 | + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="468383869"> | |
620 | + <string key="majorKey">IBFrameworkSource</string> | |
621 | + <string key="minorKey">AppKit.framework/Headers/NSView.h</string> | |
622 | + </object> | |
623 | + </object> | |
624 | + <object class="IBPartialClassDescription"> | |
625 | + <string key="className">NSObject</string> | |
626 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
627 | + <string key="majorKey">IBFrameworkSource</string> | |
628 | + <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string> | |
629 | + </object> | |
630 | + </object> | |
631 | + <object class="IBPartialClassDescription"> | |
632 | + <string key="className">NSObject</string> | |
633 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
634 | + <string key="majorKey">IBFrameworkSource</string> | |
635 | + <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string> | |
636 | + </object> | |
637 | + </object> | |
638 | + <object class="IBPartialClassDescription"> | |
639 | + <string key="className">NSObject</string> | |
640 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
641 | + <string key="majorKey">IBFrameworkSource</string> | |
642 | + <string key="minorKey">Foundation.framework/Headers/NSError.h</string> | |
643 | + </object> | |
644 | + </object> | |
645 | + <object class="IBPartialClassDescription"> | |
646 | + <string key="className">NSObject</string> | |
647 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
648 | + <string key="majorKey">IBFrameworkSource</string> | |
649 | + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> | |
650 | + </object> | |
651 | + </object> | |
652 | + <object class="IBPartialClassDescription"> | |
653 | + <string key="className">NSObject</string> | |
654 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
655 | + <string key="majorKey">IBFrameworkSource</string> | |
656 | + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> | |
657 | + </object> | |
658 | + </object> | |
659 | + <object class="IBPartialClassDescription"> | |
660 | + <string key="className">NSObject</string> | |
661 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
662 | + <string key="majorKey">IBFrameworkSource</string> | |
663 | + <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string> | |
664 | + </object> | |
665 | + </object> | |
666 | + <object class="IBPartialClassDescription"> | |
667 | + <string key="className">NSObject</string> | |
668 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
669 | + <string key="majorKey">IBFrameworkSource</string> | |
670 | + <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string> | |
671 | + </object> | |
672 | + </object> | |
673 | + <object class="IBPartialClassDescription"> | |
674 | + <string key="className">NSObject</string> | |
675 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
676 | + <string key="majorKey">IBFrameworkSource</string> | |
677 | + <string key="minorKey">Foundation.framework/Headers/NSObject.h</string> | |
678 | + </object> | |
679 | + </object> | |
680 | + <object class="IBPartialClassDescription"> | |
681 | + <string key="className">NSObject</string> | |
682 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
683 | + <string key="majorKey">IBFrameworkSource</string> | |
684 | + <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string> | |
685 | + </object> | |
686 | + </object> | |
687 | + <object class="IBPartialClassDescription"> | |
688 | + <string key="className">NSObject</string> | |
689 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
690 | + <string key="majorKey">IBFrameworkSource</string> | |
691 | + <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string> | |
692 | + </object> | |
693 | + </object> | |
694 | + <object class="IBPartialClassDescription"> | |
695 | + <string key="className">NSObject</string> | |
696 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
697 | + <string key="majorKey">IBFrameworkSource</string> | |
698 | + <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string> | |
699 | + </object> | |
700 | + </object> | |
701 | + <object class="IBPartialClassDescription"> | |
702 | + <string key="className">NSObject</string> | |
703 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
704 | + <string key="majorKey">IBFrameworkSource</string> | |
705 | + <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string> | |
706 | + </object> | |
707 | + </object> | |
708 | + <object class="IBPartialClassDescription"> | |
709 | + <string key="className">NSObject</string> | |
710 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
711 | + <string key="majorKey">IBFrameworkSource</string> | |
712 | + <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string> | |
713 | + </object> | |
714 | + </object> | |
715 | + <object class="IBPartialClassDescription"> | |
716 | + <string key="className">NSObject</string> | |
717 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
718 | + <string key="majorKey">IBFrameworkSource</string> | |
719 | + <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string> | |
720 | + </object> | |
721 | + </object> | |
722 | + <object class="IBPartialClassDescription"> | |
723 | + <string key="className">NSObject</string> | |
724 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
725 | + <string key="majorKey">IBFrameworkSource</string> | |
726 | + <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string> | |
727 | + </object> | |
728 | + </object> | |
729 | + <object class="IBPartialClassDescription"> | |
730 | + <string key="className">NSObject</string> | |
731 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
732 | + <string key="majorKey">IBFrameworkSource</string> | |
733 | + <string key="minorKey">Foundation.framework/Headers/NSThread.h</string> | |
734 | + </object> | |
735 | + </object> | |
736 | + <object class="IBPartialClassDescription"> | |
737 | + <string key="className">NSObject</string> | |
738 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
739 | + <string key="majorKey">IBFrameworkSource</string> | |
740 | + <string key="minorKey">Foundation.framework/Headers/NSURL.h</string> | |
741 | + </object> | |
742 | + </object> | |
743 | + <object class="IBPartialClassDescription"> | |
744 | + <string key="className">NSObject</string> | |
745 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
746 | + <string key="majorKey">IBFrameworkSource</string> | |
747 | + <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string> | |
748 | + </object> | |
749 | + </object> | |
750 | + <object class="IBPartialClassDescription"> | |
751 | + <string key="className">NSObject</string> | |
752 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
753 | + <string key="majorKey">IBFrameworkSource</string> | |
754 | + <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string> | |
755 | + </object> | |
756 | + </object> | |
757 | + <object class="IBPartialClassDescription"> | |
758 | + <string key="className">NSPanel</string> | |
759 | + <string key="superclassName">NSWindow</string> | |
760 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
761 | + <string key="majorKey">IBFrameworkSource</string> | |
762 | + <string key="minorKey">AppKit.framework/Headers/NSPanel.h</string> | |
763 | + </object> | |
764 | + </object> | |
765 | + <object class="IBPartialClassDescription"> | |
766 | + <string key="className">NSProgressIndicator</string> | |
767 | + <string key="superclassName">NSView</string> | |
768 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
769 | + <string key="majorKey">IBFrameworkSource</string> | |
770 | + <string key="minorKey">AppKit.framework/Headers/NSProgressIndicator.h</string> | |
771 | + </object> | |
772 | + </object> | |
773 | + <object class="IBPartialClassDescription"> | |
774 | + <string key="className">NSResponder</string> | |
775 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
776 | + <string key="majorKey">IBFrameworkSource</string> | |
777 | + <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> | |
778 | + </object> | |
779 | + </object> | |
780 | + <object class="IBPartialClassDescription"> | |
781 | + <string key="className">NSResponder</string> | |
782 | + <string key="superclassName">NSObject</string> | |
783 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
784 | + <string key="majorKey">IBFrameworkSource</string> | |
785 | + <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> | |
786 | + </object> | |
787 | + </object> | |
788 | + <object class="IBPartialClassDescription"> | |
789 | + <string key="className">NSTextField</string> | |
790 | + <string key="superclassName">NSControl</string> | |
791 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
792 | + <string key="majorKey">IBFrameworkSource</string> | |
793 | + <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string> | |
794 | + </object> | |
795 | + </object> | |
796 | + <object class="IBPartialClassDescription"> | |
797 | + <string key="className">NSTextFieldCell</string> | |
798 | + <string key="superclassName">NSActionCell</string> | |
799 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
800 | + <string key="majorKey">IBFrameworkSource</string> | |
801 | + <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string> | |
802 | + </object> | |
803 | + </object> | |
804 | + <object class="IBPartialClassDescription"> | |
805 | + <string key="className">NSView</string> | |
806 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
807 | + <string key="majorKey">IBFrameworkSource</string> | |
808 | + <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> | |
809 | + </object> | |
810 | + </object> | |
811 | + <object class="IBPartialClassDescription"> | |
812 | + <string key="className">NSView</string> | |
813 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
814 | + <string key="majorKey">IBFrameworkSource</string> | |
815 | + <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string> | |
816 | + </object> | |
817 | + </object> | |
818 | + <object class="IBPartialClassDescription"> | |
819 | + <string key="className">NSView</string> | |
820 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
821 | + <string key="majorKey">IBFrameworkSource</string> | |
822 | + <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> | |
823 | + </object> | |
824 | + </object> | |
825 | + <object class="IBPartialClassDescription"> | |
826 | + <string key="className">NSView</string> | |
827 | + <string key="superclassName">NSResponder</string> | |
828 | + <reference key="sourceIdentifier" ref="468383869"/> | |
829 | + </object> | |
830 | + <object class="IBPartialClassDescription"> | |
831 | + <string key="className">NSWindow</string> | |
832 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
833 | + <string key="majorKey">IBFrameworkSource</string> | |
834 | + <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> | |
835 | + </object> | |
836 | + </object> | |
837 | + <object class="IBPartialClassDescription"> | |
838 | + <string key="className">NSWindow</string> | |
839 | + <string key="superclassName">NSResponder</string> | |
840 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
841 | + <string key="majorKey">IBFrameworkSource</string> | |
842 | + <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> | |
843 | + </object> | |
844 | + </object> | |
845 | + <object class="IBPartialClassDescription"> | |
846 | + <string key="className">NSWindow</string> | |
847 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | |
848 | + <string key="majorKey">IBFrameworkSource</string> | |
849 | + <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string> | |
850 | + </object> | |
851 | + </object> | |
852 | + </object> | |
853 | + </object> | |
854 | + <int key="IBDocument.localizationMode">0</int> | |
855 | + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> | |
856 | + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> | |
857 | + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> | |
858 | + <integer value="1050" key="NS.object.0"/> | |
859 | + </object> | |
860 | + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> | |
861 | + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> | |
862 | + <integer value="3000" key="NS.object.0"/> | |
863 | + </object> | |
864 | + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> | |
865 | + <string key="IBDocument.LastKnownRelativeProjectPath">../BSInlinePreviewer.xcodeproj</string> | |
866 | + <int key="IBDocument.defaultPropertyAccessControl">3</int> | |
867 | + </data> | |
868 | +</archive> |
@@ -0,0 +1,4 @@ | ||
1 | +initial import. | |
2 | +--This line, and those below, will be ignored-- | |
3 | + | |
4 | +A . |