• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqt誰得windowscocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

モザイク表示でグロ画像の衝撃を和らげるBathyScaphe用プレビューアプラグイン。もしかするとThousandでも使えるかも?


Commit MetaInfo

Revisionf27904ed95f338c7e469e0515f11002047029b78 (tree)
Zeit2008-01-13 10:29:37
Autormasakih <masakih@user...>
Commitermasakih

Log Message

Initial import.(repair broken disk.)

git-svn-id: svn+ssh://macmini/usr/local/svnrepos/MosaicPreview/MosaicPreview@2 74e70210-8d8a-4479-9785-5f8e6e796248

Ändern Zusammenfassung

Diff

--- /dev/null
+++ b/BSImagePreviewerInterface.h
@@ -0,0 +1,29 @@
1+//
2+// BSImagePreviewerInterface.h
3+// BathyScaphe
4+//
5+// Created by Tsutomu Sawada on 05/10/15.
6+// Copyright 2005 BathyScaphe Project. All rights reserved.
7+//
8+
9+@class AppDefaults;
10+
11+@protocol BSImagePreviewerProtocol
12+// Designated Initializer
13+- (id) initWithPreferences : (AppDefaults *) prefs;
14+// Accessor
15+- (AppDefaults *) preferences;
16+- (void) setPreferences : (AppDefaults *) aPreferences;
17+// Action
18+- (BOOL) showImageWithURL : (NSURL *) imageURL;
19+- (BOOL) validateLink : (NSURL *) anURL;
20+@end
21+
22+@interface NSObject(IPPAdditions)
23+// Storage for plugin-specific settings
24+- (NSMutableDictionary *) imagePreviewerPrefsDict;
25+
26+// Accessor for useful BathyScaphe global settings
27+- (BOOL) openInBg;
28+- (BOOL) isOnlineMode;
29+@end
\ No newline at end of file
--- /dev/null
+++ b/CircleGestureView.h
@@ -0,0 +1,29 @@
1+/* CircleGestureView */
2+
3+#import <Cocoa/Cocoa.h>
4+enum {
5+ nonQuadrant,
6+ firstQuadrant = 11,
7+ secondQuadrant,
8+ thirdQuadrant,
9+ fourthQuadrant,
10+};
11+@interface CircleGestureView : NSView
12+{
13+ id gestureTarget;
14+ SEL gestureAction;
15+
16+ int phase;
17+ int prevQuadrant;
18+ NSPoint prevPoint;
19+
20+ NSTimeInterval prevTime;
21+}
22+
23+- (void)setGestureTarget:(id)target;
24+- (id)gestureTarget;
25+- (void)setGestureAction:(SEL)action;
26+- (SEL)gestureAction;
27+
28+
29+@end
--- /dev/null
+++ b/CircleGestureView.m
@@ -0,0 +1,104 @@
1+#import "CircleGestureView.h"
2+
3+@implementation CircleGestureView
4+
5+- (id)initWithFrame:(NSRect)frameRect
6+{
7+ if ((self = [super initWithFrame:frameRect]) != nil) {
8+ // Add initialization code here
9+ prevPoint = NSZeroPoint;
10+ }
11+ return self;
12+}
13+
14+- (void)awakeFromNib
15+{
16+ [[self window] setAcceptsMouseMovedEvents:YES];
17+}
18+
19+- (void)setGestureTarget:(id)target
20+{
21+ gestureTarget = target;
22+}
23+- (id)gestureTarget
24+{
25+ return gestureTarget;
26+}
27+- (void)setGestureAction:(SEL)action
28+{
29+ gestureAction = action;
30+}
31+- (SEL)gestureAction
32+{
33+ return gestureAction;
34+}
35+
36+- (BOOL)acceptsFirstResponder
37+{
38+ return YES;
39+}
40+- (void)mouseMoved:(NSEvent *)theEvent
41+{
42+ NSPoint mouse = [theEvent locationInWindow];
43+
44+ float deltaV, deltaH;
45+ int quadrant;
46+
47+ if([theEvent timestamp] - prevTime > 0.5) {
48+ phase = 0;
49+ }
50+ prevTime = [theEvent timestamp];
51+
52+ deltaV = prevPoint.y - mouse.y;
53+ deltaH = prevPoint.x - mouse.x;
54+
55+ // 象限チェック
56+ if( deltaV <= 0 && deltaH <= 0 ) {
57+ quadrant = secondQuadrant;
58+ } else if( deltaV <= 0 && deltaH >= 0) {
59+ quadrant = thirdQuadrant;
60+ } else if( deltaV >= 0 && deltaH <= 0 ) {
61+ quadrant = firstQuadrant;
62+ } else if( deltaV >= 0 && deltaH >= 0 ) {
63+ quadrant = fourthQuadrant;
64+ }
65+
66+ switch( prevQuadrant - quadrant ) {
67+ case 0:
68+ //
69+ break;
70+ case 1:
71+ case -3:
72+ phase++;
73+#ifdef DEBUG
74+ NSLog(@"Phase %d.", phase);
75+#endif
76+ //
77+ break;
78+ default:
79+ phase = 0;
80+ break;
81+ }
82+
83+ prevQuadrant = quadrant;
84+
85+ if(phase == 6) {
86+ phase = 0;
87+#ifdef DEBUG
88+ NSLog(@"Gesture Action!!");
89+#endif
90+ [NSApp sendAction:gestureAction
91+ to:gestureTarget
92+ from:self];
93+ }
94+
95+final:
96+ prevPoint = mouse;
97+}
98+- (void)mouseExited:(NSEvent *)theEvent
99+{
100+ prevQuadrant = nonQuadrant;
101+ prevPoint = NSZeroPoint;
102+ prevTime = 0;
103+}
104+@end
--- /dev/null
+++ b/English.lproj/InfoPlist.strings
@@ -0,0 +1,10 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>CFBundleName</key>
6+ <string>GroEvader</string>
7+ <key>NSHumanReadableCopyright</key>
8+ <string>© __MyCompanyName__, 2005</string>
9+</dict>
10+</plist>
Binary files /dev/null and b/English.lproj/Localizable.strings differ
--- /dev/null
+++ b/GroEvader.h
@@ -0,0 +1,68 @@
1+/* GroEvader */
2+
3+#import <Cocoa/Cocoa.h>
4+
5+#import "BSImagePreviewerInterface.h"
6+
7+#import "CircleGestureView.h"
8+
9+@class TemporaryFolder, CIContext, CIFilter, CIImage;
10+@class MosaicView;
11+
12+@interface GroEvader : NSWindowController <BSImagePreviewerProtocol>
13+{
14+ IBOutlet NSImage *image;
15+ IBOutlet id indicator;
16+ IBOutlet MosaicView *view;
17+
18+ int scale;
19+ NSURLDownload *download;
20+ TemporaryFolder *downloadFolder;
21+ NSString *lastFileName;
22+ NSURL *imageURL;
23+
24+ CIFilter *pixellate;
25+ CIImage *cImage;
26+
27+ NSTimer *scallingTimer;
28+
29+ AppDefaults *pref;
30+}
31+
32+-(void)setScale:(int)newScale;
33+-(int)scale;
34+-(void)setImage:(NSImage *)image;
35+-(NSImage *)image;
36+
37+-(void)setCImage:(CIImage *)cImage;
38+- (CIImage *)cImage;
39+
40+- (CIImage *)viewImage;
41+
42+- (NSURL *)imageURL;
43+- (void)setImageURL:(NSURL *)url;
44+
45+-(void)registNotigications;
46+
47+-(void)loadInBackground:(NSURL *)url;
48+
49+- (void)openURL:(id)sender;
50+
51+- (void)setErrorText:(NSString *)text;
52+
53+@end
54+
55+@interface MosaicView : CircleGestureView
56+{
57+ IBOutlet id delegate;
58+
59+ NSString *text;
60+
61+ CIContext *context;
62+}
63+
64+- (void)setText:(NSString *)text;
65+@end
66+
67+#define GELocalizedString(key, comment) \
68+ [[NSBundle bundleForClass:[GroEvader class]] localizedStringForKey:(key) value:@"" table:nil]
--- /dev/null
+++ b/GroEvader.m
@@ -0,0 +1,490 @@
1+#import "GroEvader.h"
2+
3+#import "TemporaryFolder.h"
4+
5+#import <QuartzCore/QuartzCore.h>
6+
7+#ifdef DEBUG
8+#define ENTERMETHOD NSLog(@"Enter Method -> %@", NSStringFromSelector(_cmd))
9+#else
10+#define ENTERMETHOD
11+#endif
12+
13+static NSString *GroEvaderWidnowRectKey = @"com.masakih.GroEvader.WindowRect";
14+
15+BOOL isTigerOrLater()
16+{
17+ return (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_3);
18+}
19+
20+void alertPanther()
21+{
22+ NSRunAlertPanel( GELocalizedString(@"Alert", @"Alert"),
23+ GELocalizedString(@"Sory Panther", @"Sory Panther"),
24+ GELocalizedString(@"OK", @"OK"),
25+ nil,
26+ nil);
27+}
28+
29+@implementation GroEvader
30+
31+// Designated Initializer
32+- (id) initWithPreferences : (AppDefaults *) prefs
33+{
34+ self = [super initWithWindowNibName:NSStringFromClass([self class])];
35+
36+ if(!isTigerOrLater()) {
37+ alertPanther();
38+ [self autorelease];
39+ return nil;
40+ }
41+
42+ if( self ) {
43+ downloadFolder = [[TemporaryFolder alloc] init];
44+ [self setPreferences:prefs];
45+ [self registNotigications];
46+ }
47+
48+ return self;
49+}
50+-(void)dealloc
51+{
52+ [download release];
53+ [downloadFolder release];
54+ [lastFileName release];
55+
56+ [super dealloc];
57+}
58+
59+-(void)awakeFromNib
60+{
61+ pixellate = [[CIFilter filterWithName:@"CIPixellate"] retain];
62+ [pixellate setDefaults];
63+
64+ [pixellate bind:@"inputImage"
65+ toObject:self
66+ withKeyPath:@"cImage"
67+ options:nil];
68+ [pixellate bind:@"inputScale"
69+ toObject:self
70+ withKeyPath:@"scale"
71+ options:nil];
72+
73+
74+ [view setGestureTarget:self];
75+ [view setGestureAction:@selector(openURL:)];
76+}
77+
78+#pragma mark ## BSImagePreviewerProtocol ##
79+ // Accessor
80+- (AppDefaults *) preferences
81+{
82+ return pref;
83+}
84+- (void) setPreferences : (AppDefaults *) aPreferences
85+{
86+ pref = aPreferences;
87+
88+ [self window];
89+ {
90+ NSString *winRectString = [[pref imagePreviewerPrefsDict] objectForKey:GroEvaderWidnowRectKey];
91+ if( winRectString ) {
92+ [[self window] setFrameFromString:winRectString];
93+ }
94+ }
95+}
96+ // Action
97+- (BOOL) showImageWithURL : (NSURL *) inImageURL
98+{
99+// id event = [NSApp currentEvent];
100+// NSLog(@"Event ---> %@", event);
101+ ///
102+ [self setImage:nil];
103+ [self setErrorText:nil];
104+ [self showWindow:self];
105+
106+ @synchronized(scallingTimer) {
107+ [scallingTimer invalidate];
108+ [scallingTimer release];
109+ scallingTimer = nil;
110+ }
111+
112+ [self setImageURL:inImageURL];
113+ [self loadInBackground:inImageURL];
114+ return YES;
115+}
116+- (BOOL) validateLink : (NSURL *) anURL
117+{
118+ NSArray *imageExtensions;
119+ NSString *extension;
120+
121+ extension = [[[anURL path] pathExtension] lowercaseString];
122+ if( ! extension ) return NO;
123+
124+ imageExtensions = [NSImage imageFileTypes];
125+
126+ return [imageExtensions containsObject:extension];
127+}
128+
129+#pragma mark## Download & NSURLDownload Delegate ##
130+-(void)loadInBackground:(NSURL *)url
131+{
132+ NSURLRequest *request;
133+ NSString *path;
134+
135+ ENTERMETHOD;
136+
137+ if( download ) {
138+ [download cancel];
139+ }
140+
141+ id temp = lastFileName;
142+ lastFileName = [[[url path] lastPathComponent] retain];
143+ [temp release];
144+ [self synchronizeWindowTitleWithDocumentName];
145+
146+ request = [NSURLRequest requestWithURL:url];
147+
148+ download = [[NSURLDownload alloc ] initWithRequest:request delegate:self];
149+
150+ if( download ) {
151+ path = [[downloadFolder path] stringByAppendingPathComponent:[[url path] lastPathComponent]];
152+ [download setDestination:path allowOverwrite:YES];
153+ } else {
154+ [self setImageURL:nil];
155+ }
156+}
157+- (void)downloadDidBegin:(NSURLDownload *)download
158+{
159+ ENTERMETHOD;
160+
161+ [indicator startAnimation:self];
162+}
163+- (NSURLRequest *)download:(NSURLDownload *)download willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
164+{
165+ if(![self validateLink:[request URL]] ) {
166+ id error = [NSString stringWithFormat:@"Redirect to non image URL.\n%@",
167+ [[request URL] absoluteString]];
168+ [self setErrorText:error];
169+ return nil;
170+ }
171+
172+ return request;
173+}
174+
175+// - (void)download:(NSURLDownload *)download didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
176+// - (void)download:(NSURLDownload *)download didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
177+// - (void)download:(NSURLDownload *)download didReceiveResponse:(NSURLResponse *)response;
178+// - (void)download:(NSURLDownload *)download willResumeWithResponse:(NSURLResponse *)response fromByte:(long long)startingByte;
179+// - (void)download:(NSURLDownload *)download didReceiveDataOfLength:(unsigned)length;
180+// - (BOOL)download:(NSURLDownload *)download shouldDecodeSourceDataOfMIMEType:(NSString *)encodingType;
181+// - (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename;
182+// - (void)download:(NSURLDownload *)download didCreateDestination:(NSString *)path
183+- (void)downloadDidFinish:(NSURLDownload *)aDownload
184+{
185+ NSURLRequest *request;
186+ NSImage *newImage;
187+
188+ ENTERMETHOD;
189+
190+ request = [aDownload request];
191+ if(!request) goto abort;
192+
193+ NSString *filePath = [[[request URL] path] lastPathComponent];
194+
195+ filePath = [[downloadFolder path] stringByAppendingPathComponent:filePath];
196+
197+ newImage = [[[NSImage alloc] initWithContentsOfFile:filePath] autorelease];
198+ [self setImage:newImage];
199+
200+ id temp = download;
201+ download = nil;
202+ [temp release];
203+
204+ [indicator stopAnimation:self];
205+ [self setScale:50];
206+ scallingTimer = [NSTimer scheduledTimerWithTimeInterval:0.2
207+ target:self
208+ selector:@selector(decrementScale:)
209+ userInfo:NULL
210+ repeats:YES];
211+ [scallingTimer retain];
212+
213+ return;
214+
215+abort: {
216+ id temp = download;
217+ download = nil;
218+ [temp release];
219+
220+ [indicator stopAnimation:self];
221+ [self setImageURL:nil];
222+ [self setScale:1];
223+}
224+}
225+- (void)download:(NSURLDownload *)aDownload didFailWithError:(NSError *)error
226+{
227+ id temp = download;
228+ download = nil;
229+ [temp release];
230+
231+ [self setErrorText:[error localizedDescription]];
232+ [indicator stopAnimation:self];
233+ [self setImageURL:nil];
234+ [self setScale:1];
235+}
236+
237+#pragma mark## Actions ##
238+- (void)openURL:(id)sender
239+{
240+ @synchronized(imageURL) {
241+ if(!imageURL) return;
242+
243+ [[NSWorkspace sharedWorkspace] openURL:imageURL];
244+ }
245+}
246+
247+#pragma mark## NSTimer action ##
248+- (void)decrementScale:(id)timer
249+{
250+ const int delta = 1;
251+
252+ int s = [self scale];
253+ if(s == 1) {
254+ @synchronized(scallingTimer) {
255+ [timer invalidate];
256+ [scallingTimer autorelease];
257+ scallingTimer = nil;
258+ }
259+ }
260+ s -= delta;
261+ s = s < 1 ? 1 : s;
262+ [self setScale:s];
263+}
264+
265+#pragma mark## Accessor ##
266+-(void)setScale:(int)newScale
267+{
268+ scale = newScale;
269+
270+ [view setNeedsDisplay:YES];
271+}
272+-(int)scale
273+{
274+ return scale;
275+}
276+-(void)setImage:(NSImage *)newImage
277+{
278+ ENTERMETHOD;
279+
280+ id temp = image;
281+ image = [newImage retain];
282+ [temp release];
283+
284+ if(image) {
285+ id rep;
286+ rep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];
287+ rep = [[[CIImage alloc] initWithBitmapImageRep:rep] autorelease];
288+ [self setCImage:rep];
289+ } else {
290+ [self setCImage:nil];
291+ [self setImageURL:nil];
292+ }
293+
294+ [view setNeedsDisplay:YES];
295+
296+// [self showWindow:self];
297+}
298+-(NSImage *)image
299+{
300+ return image;
301+}
302+- (CIImage *)cImage
303+{
304+ return cImage;
305+}
306+- (void)setCImage:(CIImage *)newCImage
307+{
308+ id temp = cImage;
309+ cImage = [newCImage retain];
310+ [temp release];
311+}
312+- (CIImage *)viewImage
313+{
314+ CIImage *viewImage = nil;
315+ @try {
316+ viewImage = [pixellate valueForKey:@"outputImage"];
317+ }
318+ @catch (id ex) {
319+ // do noting.
320+ }
321+
322+ return viewImage;
323+}
324+- (NSURL *)imageURL
325+{
326+ return imageURL;
327+}
328+- (void)setImageURL:(NSURL *)url
329+{
330+ id temp = imageURL;
331+ imageURL = [url retain];
332+ [temp release];
333+}
334+
335+- (void)setErrorText:(NSString *)text
336+{
337+ [view setText:text];
338+}
339+#pragma mark## NSWindow delegate ##
340+- (void)windowDidResize:(NSNotification *)notification
341+{
342+ [[[self preferences] imagePreviewerPrefsDict] setObject:[[self window] stringWithSavedFrame]
343+ forKey:GroEvaderWidnowRectKey];
344+}
345+- (void)synchronizeWindowTitleWithDocumentName
346+{
347+ id title = [self windowTitleForDocumentDisplayName:NSStringFromClass([self class])];
348+
349+ [[self window] setTitle:title];
350+}
351+- (NSString *)windowTitleForDocumentDisplayName:(NSString *)displayName
352+{
353+ if( lastFileName ) {
354+ return [NSString stringWithFormat:@"%@ - %@", displayName, lastFileName];
355+ }
356+
357+ return displayName;
358+}
359+- (void)windowWillClose:(NSNotification *)notification
360+{
361+ [self setImage:nil];
362+}
363+
364+#pragma mark## Notifications ##
365+-(void)registNotigications
366+{
367+ NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
368+
369+ [nc addObserver:self
370+ selector:@selector(applicationWillTerminate:)
371+ name:NSApplicationWillTerminateNotification
372+ object:nil];
373+}
374+
375+-(void)applicationWillTerminate:(id)notification
376+{
377+ id temp = downloadFolder;
378+ downloadFolder = nil;
379+ [temp release];
380+}
381+
382+@end
383+
384+
385+@implementation MosaicView
386+- (void)mouseDown:(NSEvent *)theEvent
387+{
388+ if([theEvent clickCount] > 1) {
389+ [[self window] performClose:self];
390+ }
391+}
392+
393+- (void)setText:(NSString *)string
394+{
395+ id temp = text;
396+ text = [string copy];
397+ [temp release];
398+
399+ [self setNeedsDisplay:YES];
400+}
401+
402+- (NSParagraphStyle *)textparagraph
403+{
404+ NSMutableParagraphStyle *paragraph = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease];
405+ [paragraph setAlignment:NSCenterTextAlignment];
406+
407+ return paragraph;
408+}
409+- (NSDictionary *)textAttributes
410+{
411+ NSMutableDictionary *result = [NSMutableDictionary dictionary];
412+
413+ [result setObject:[NSColor redColor]
414+ forKey:NSForegroundColorAttributeName];
415+ [result setObject:[self textparagraph]
416+ forKey:NSParagraphStyleAttributeName];
417+
418+ return result;
419+}
420+- (void)drawText
421+{
422+ if(!text || [text length] == 0) return;
423+
424+ NSRect rect = [self frame];
425+ NSRect drawRect;
426+ id attr = [self textAttributes];
427+
428+ drawRect.size = [text sizeWithAttributes:attr];
429+
430+ drawRect.origin.x = ( NSWidth(rect) - NSWidth(drawRect) ) * 0.5;
431+ drawRect.origin.y = ( NSHeight(rect) - NSHeight(drawRect) ) * 0.5;
432+
433+ [text drawInRect:drawRect
434+ withAttributes:attr];
435+}
436+- (void)drawImage
437+{
438+ if(!context) {
439+ context = [[[NSGraphicsContext currentContext] CIContext] retain];
440+ }
441+ if(!context) {
442+ NSLog(@"Abort!!"); return;
443+ }
444+
445+ CIImage *cImage = [delegate viewImage];
446+ if(!cImage) return;
447+
448+ NSRect frame = [self bounds];
449+ CGRect imageRect = [cImage extent];
450+ CGRect cg;
451+ float frameAspect, imageAspect;
452+ NSRect temp;
453+
454+ frameAspect = NSWidth(frame) / NSHeight(frame);
455+ imageAspect = CGRectGetWidth(imageRect) / CGRectGetHeight(imageRect);
456+
457+ if(imageAspect > frameAspect) {
458+ temp = frame;
459+ temp.size.height = NSWidth(frame) / imageAspect;
460+ temp.origin.y += (NSHeight(frame) - NSHeight(temp)) / 2;
461+ frame = temp;
462+ } else if(imageAspect < frameAspect) {
463+ temp = frame;
464+ temp.size.width = NSHeight(frame) * imageAspect;
465+ temp.origin.x += (NSWidth(frame) - NSWidth(temp)) / 2;
466+ frame = temp;
467+ }
468+
469+ cg = CGRectMake(NSMinX(frame), NSMinY(frame),
470+ NSWidth(frame), NSHeight(frame));
471+ cg = CGRectInset(cg, 1, 1);
472+ [context drawImage:cImage
473+ inRect:cg
474+ fromRect:imageRect];
475+}
476+- (void)drawRect:(NSRect)rect
477+{
478+ [NSGraphicsContext saveGraphicsState];
479+ [[NSColor whiteColor] set];
480+ NSRectFill([self bounds]);
481+ [[NSColor blackColor] set];
482+ NSFrameRect([self bounds]);
483+ [NSGraphicsContext restoreGraphicsState];
484+
485+ [self drawImage];
486+
487+ [self drawText];
488+}
489+
490+@end
--- /dev/null
+++ b/GroEvader.nib/classes.nib
@@ -0,0 +1,18 @@
1+{
2+ IBClasses = (
3+ {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
4+ {
5+ CLASS = MosaicPreview;
6+ LANGUAGE = ObjC;
7+ OUTLETS = {image = NSImage; indicator = id; view = NSView; };
8+ SUPERCLASS = NSWindowController;
9+ },
10+ {
11+ CLASS = MosaicView;
12+ LANGUAGE = ObjC;
13+ OUTLETS = {delegate = id; };
14+ SUPERCLASS = NSView;
15+ }
16+ );
17+ IBVersion = 1;
18+}
\ No newline at end of file
--- /dev/null
+++ b/GroEvader.nib/info.nib
@@ -0,0 +1,16 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>IBDocumentLocation</key>
6+ <string>69 10 356 240 0 0 1280 832 </string>
7+ <key>IBFramework Version</key>
8+ <string>443.0</string>
9+ <key>IBOpenObjects</key>
10+ <array>
11+ <integer>5</integer>
12+ </array>
13+ <key>IBSystem Version</key>
14+ <string>8G32</string>
15+</dict>
16+</plist>
Binary files /dev/null and b/GroEvader.nib/keyedobjects.nib differ
--- /dev/null
+++ b/Info.plist
@@ -0,0 +1,28 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple Computer//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>Japanese</string>
7+ <key>CFBundleExecutable</key>
8+ <string>ImagePreviewer</string>
9+ <key>CFBundleIconFile</key>
10+ <string></string>
11+ <key>CFBundleIdentifier</key>
12+ <string>com.masakih.GroEvader</string>
13+ <key>CFBundleInfoDictionaryVersion</key>
14+ <string>6.0</string>
15+ <key>CFBundlePackageType</key>
16+ <string>BNDL</string>
17+ <key>CFBundleShortVersionString</key>
18+ <string>1.0</string>
19+ <key>CFBundleSignature</key>
20+ <string>????</string>
21+ <key>CFBundleVersion</key>
22+ <string>%%REVISION%%</string>
23+ <key>NSHumanReadableCopyright</key>
24+ <string>GroEvader 1.0 beta</string>
25+ <key>NSPrincipalClass</key>
26+ <string>GroEvader</string>
27+</dict>
28+</plist>
Binary files /dev/null and b/Japanese.lproj/Localizable.strings differ
--- /dev/null
+++ b/MosaicPreview.xcodeproj/masaki.mode1
@@ -0,0 +1,1443 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+<plist version="1.0">
4+<dict>
5+ <key>ActivePerspectiveName</key>
6+ <string>Project</string>
7+ <key>AllowedModules</key>
8+ <array>
9+ <dict>
10+ <key>BundleLoadPath</key>
11+ <string></string>
12+ <key>MaxInstances</key>
13+ <string>n</string>
14+ <key>Module</key>
15+ <string>PBXSmartGroupTreeModule</string>
16+ <key>Name</key>
17+ <string>Groups and Files Outline View</string>
18+ </dict>
19+ <dict>
20+ <key>BundleLoadPath</key>
21+ <string></string>
22+ <key>MaxInstances</key>
23+ <string>n</string>
24+ <key>Module</key>
25+ <string>PBXNavigatorGroup</string>
26+ <key>Name</key>
27+ <string>Editor</string>
28+ </dict>
29+ <dict>
30+ <key>BundleLoadPath</key>
31+ <string></string>
32+ <key>MaxInstances</key>
33+ <string>n</string>
34+ <key>Module</key>
35+ <string>XCTaskListModule</string>
36+ <key>Name</key>
37+ <string>Task List</string>
38+ </dict>
39+ <dict>
40+ <key>BundleLoadPath</key>
41+ <string></string>
42+ <key>MaxInstances</key>
43+ <string>n</string>
44+ <key>Module</key>
45+ <string>XCDetailModule</string>
46+ <key>Name</key>
47+ <string>File and Smart Group Detail Viewer</string>
48+ </dict>
49+ <dict>
50+ <key>BundleLoadPath</key>
51+ <string></string>
52+ <key>MaxInstances</key>
53+ <string>1</string>
54+ <key>Module</key>
55+ <string>PBXBuildResultsModule</string>
56+ <key>Name</key>
57+ <string>Detailed Build Results Viewer</string>
58+ </dict>
59+ <dict>
60+ <key>BundleLoadPath</key>
61+ <string></string>
62+ <key>MaxInstances</key>
63+ <string>1</string>
64+ <key>Module</key>
65+ <string>PBXProjectFindModule</string>
66+ <key>Name</key>
67+ <string>Project Batch Find Tool</string>
68+ </dict>
69+ <dict>
70+ <key>BundleLoadPath</key>
71+ <string></string>
72+ <key>MaxInstances</key>
73+ <string>n</string>
74+ <key>Module</key>
75+ <string>PBXRunSessionModule</string>
76+ <key>Name</key>
77+ <string>Run Log</string>
78+ </dict>
79+ <dict>
80+ <key>BundleLoadPath</key>
81+ <string></string>
82+ <key>MaxInstances</key>
83+ <string>n</string>
84+ <key>Module</key>
85+ <string>PBXBookmarksModule</string>
86+ <key>Name</key>
87+ <string>Bookmarks Tool</string>
88+ </dict>
89+ <dict>
90+ <key>BundleLoadPath</key>
91+ <string></string>
92+ <key>MaxInstances</key>
93+ <string>n</string>
94+ <key>Module</key>
95+ <string>PBXClassBrowserModule</string>
96+ <key>Name</key>
97+ <string>Class Browser</string>
98+ </dict>
99+ <dict>
100+ <key>BundleLoadPath</key>
101+ <string></string>
102+ <key>MaxInstances</key>
103+ <string>n</string>
104+ <key>Module</key>
105+ <string>PBXCVSModule</string>
106+ <key>Name</key>
107+ <string>Source Code Control Tool</string>
108+ </dict>
109+ <dict>
110+ <key>BundleLoadPath</key>
111+ <string></string>
112+ <key>MaxInstances</key>
113+ <string>n</string>
114+ <key>Module</key>
115+ <string>PBXDebugBreakpointsModule</string>
116+ <key>Name</key>
117+ <string>Debug Breakpoints Tool</string>
118+ </dict>
119+ <dict>
120+ <key>BundleLoadPath</key>
121+ <string></string>
122+ <key>MaxInstances</key>
123+ <string>n</string>
124+ <key>Module</key>
125+ <string>XCDockableInspector</string>
126+ <key>Name</key>
127+ <string>Inspector</string>
128+ </dict>
129+ <dict>
130+ <key>BundleLoadPath</key>
131+ <string></string>
132+ <key>MaxInstances</key>
133+ <string>n</string>
134+ <key>Module</key>
135+ <string>PBXOpenQuicklyModule</string>
136+ <key>Name</key>
137+ <string>Open Quickly Tool</string>
138+ </dict>
139+ <dict>
140+ <key>BundleLoadPath</key>
141+ <string></string>
142+ <key>MaxInstances</key>
143+ <string>1</string>
144+ <key>Module</key>
145+ <string>PBXDebugSessionModule</string>
146+ <key>Name</key>
147+ <string>Debugger</string>
148+ </dict>
149+ <dict>
150+ <key>BundleLoadPath</key>
151+ <string></string>
152+ <key>MaxInstances</key>
153+ <string>1</string>
154+ <key>Module</key>
155+ <string>PBXDebugCLIModule</string>
156+ <key>Name</key>
157+ <string>Debug Console</string>
158+ </dict>
159+ </array>
160+ <key>Description</key>
161+ <string>DefaultDescriptionKey</string>
162+ <key>DockingSystemVisible</key>
163+ <false/>
164+ <key>Extension</key>
165+ <string>mode1</string>
166+ <key>FavBarConfig</key>
167+ <dict>
168+ <key>PBXProjectModuleGUID</key>
169+ <string>F49840EE09023B24000A1C84</string>
170+ <key>XCBarModuleItemNames</key>
171+ <dict/>
172+ <key>XCBarModuleItems</key>
173+ <array/>
174+ </dict>
175+ <key>FirstTimeWindowDisplayed</key>
176+ <false/>
177+ <key>Identifier</key>
178+ <string>com.apple.perspectives.project.mode1</string>
179+ <key>MajorVersion</key>
180+ <integer>31</integer>
181+ <key>MinorVersion</key>
182+ <integer>1</integer>
183+ <key>Name</key>
184+ <string>Default</string>
185+ <key>Notifications</key>
186+ <array>
187+ <dict>
188+ <key>XCObserverAutoDisconnectKey</key>
189+ <true/>
190+ <key>XCObserverDefintionKey</key>
191+ <dict>
192+ <key>PBXStatusErrorsKey</key>
193+ <integer>0</integer>
194+ </dict>
195+ <key>XCObserverFactoryKey</key>
196+ <string>XCPerspectivesSpecificationIdentifier</string>
197+ <key>XCObserverGUIDKey</key>
198+ <string>XCObserverProjectIdentifier</string>
199+ <key>XCObserverNotificationKey</key>
200+ <string>PBXStatusBuildStateMessageNotification</string>
201+ <key>XCObserverTargetKey</key>
202+ <string>XCMainBuildResultsModuleGUID</string>
203+ <key>XCObserverTriggerKey</key>
204+ <string>awakenModuleWithObserver:</string>
205+ <key>XCObserverValidationKey</key>
206+ <dict>
207+ <key>PBXStatusErrorsKey</key>
208+ <integer>2</integer>
209+ </dict>
210+ </dict>
211+ <dict>
212+ <key>XCObserverAutoDisconnectKey</key>
213+ <true/>
214+ <key>XCObserverDefintionKey</key>
215+ <dict>
216+ <key>PBXStatusWarningsKey</key>
217+ <integer>0</integer>
218+ </dict>
219+ <key>XCObserverFactoryKey</key>
220+ <string>XCPerspectivesSpecificationIdentifier</string>
221+ <key>XCObserverGUIDKey</key>
222+ <string>XCObserverProjectIdentifier</string>
223+ <key>XCObserverNotificationKey</key>
224+ <string>PBXStatusBuildStateMessageNotification</string>
225+ <key>XCObserverTargetKey</key>
226+ <string>XCMainBuildResultsModuleGUID</string>
227+ <key>XCObserverTriggerKey</key>
228+ <string>awakenModuleWithObserver:</string>
229+ <key>XCObserverValidationKey</key>
230+ <dict>
231+ <key>PBXStatusWarningsKey</key>
232+ <integer>2</integer>
233+ </dict>
234+ </dict>
235+ </array>
236+ <key>OpenEditors</key>
237+ <array>
238+ <dict>
239+ <key>Content</key>
240+ <dict>
241+ <key>PBXProjectModuleGUID</key>
242+ <string>F4E0B7AC0CF66014003E4686</string>
243+ <key>PBXProjectModuleLabel</key>
244+ <string>CircleGestureView.m</string>
245+ <key>PBXSplitModuleInNavigatorKey</key>
246+ <dict>
247+ <key>Split0</key>
248+ <dict>
249+ <key>PBXProjectModuleGUID</key>
250+ <string>F4E0B7AD0CF66014003E4686</string>
251+ <key>PBXProjectModuleLabel</key>
252+ <string>CircleGestureView.m</string>
253+ <key>_historyCapacity</key>
254+ <integer>0</integer>
255+ <key>bookmark</key>
256+ <string>F4E0B7AE0CF66014003E4686</string>
257+ <key>history</key>
258+ <array>
259+ <string>F4E0B7A90CF65666003E4686</string>
260+ </array>
261+ </dict>
262+ <key>SplitCount</key>
263+ <string>1</string>
264+ </dict>
265+ <key>StatusBarVisibility</key>
266+ <true/>
267+ </dict>
268+ <key>Geometry</key>
269+ <dict>
270+ <key>Frame</key>
271+ <string>{{0, 20}, {727, 751}}</string>
272+ <key>PBXModuleWindowStatusBarHidden2</key>
273+ <false/>
274+ <key>RubberWindowFrame</key>
275+ <string>135 40 727 792 0 0 1280 832 </string>
276+ </dict>
277+ </dict>
278+ </array>
279+ <key>PerspectiveWidths</key>
280+ <array>
281+ <integer>-1</integer>
282+ <integer>-1</integer>
283+ </array>
284+ <key>Perspectives</key>
285+ <array>
286+ <dict>
287+ <key>ChosenToolbarItems</key>
288+ <array>
289+ <string>active-target-popup</string>
290+ <string>action</string>
291+ <string>active-buildstyle-popup</string>
292+ <string>NSToolbarSeparatorItem</string>
293+ <string>clean-target</string>
294+ <string>build</string>
295+ <string>build-and-debug</string>
296+ <string>com.apple.pbx.toolbar.searchfield</string>
297+ </array>
298+ <key>ControllerClassBaseName</key>
299+ <string></string>
300+ <key>IconName</key>
301+ <string>WindowOfProjectWithEditor</string>
302+ <key>Identifier</key>
303+ <string>perspective.project</string>
304+ <key>IsVertical</key>
305+ <false/>
306+ <key>Layout</key>
307+ <array>
308+ <dict>
309+ <key>BecomeActive</key>
310+ <true/>
311+ <key>ContentConfiguration</key>
312+ <dict>
313+ <key>PBXBottomSmartGroupGIDs</key>
314+ <array>
315+ <string>1C37FBAC04509CD000000102</string>
316+ <string>1C37FAAC04509CD000000102</string>
317+ <string>1C08E77C0454961000C914BD</string>
318+ <string>1C37FABC05509CD000000102</string>
319+ <string>1C37FABC05539CD112110102</string>
320+ <string>E2644B35053B69B200211256</string>
321+ <string>1C37FABC04509CD000100104</string>
322+ <string>1CC0EA4004350EF90044410B</string>
323+ <string>1CC0EA4004350EF90041110B</string>
324+ </array>
325+ <key>PBXProjectModuleGUID</key>
326+ <string>1CE0B1FE06471DED0097A5F4</string>
327+ <key>PBXProjectModuleLabel</key>
328+ <string>Files</string>
329+ <key>PBXProjectStructureProvided</key>
330+ <string>yes</string>
331+ <key>PBXSmartGroupTreeModuleColumnData</key>
332+ <dict>
333+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
334+ <array>
335+ <real>211</real>
336+ </array>
337+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
338+ <array>
339+ <string>MainColumn</string>
340+ </array>
341+ </dict>
342+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
343+ <dict>
344+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
345+ <array>
346+ <string>089C166AFE841209C02AAC07</string>
347+ <string>08FB77AFFE84173DC02AAC07</string>
348+ <string>089C167CFE841241C02AAC07</string>
349+ <string>F4D8E6D0097ACA78007069CC</string>
350+ <string>089C167DFE841241C02AAC07</string>
351+ <string>089C1671FE841209C02AAC07</string>
352+ <string>1058C7ACFEA557BF11CA2CBB</string>
353+ <string>1058C7AEFEA557BF11CA2CBB</string>
354+ <string>1C37FBAC04509CD000000102</string>
355+ <string>1C37FAAC04509CD000000102</string>
356+ </array>
357+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
358+ <array>
359+ <array>
360+ <integer>4</integer>
361+ <integer>2</integer>
362+ <integer>0</integer>
363+ </array>
364+ </array>
365+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
366+ <string>{{0, 0}, {211, 612}}</string>
367+ </dict>
368+ <key>PBXTopSmartGroupGIDs</key>
369+ <array/>
370+ <key>XCIncludePerspectivesSwitch</key>
371+ <true/>
372+ <key>XCSharingToken</key>
373+ <string>com.apple.Xcode.GFSharingToken</string>
374+ </dict>
375+ <key>GeometryConfiguration</key>
376+ <dict>
377+ <key>Frame</key>
378+ <string>{{0, 0}, {228, 630}}</string>
379+ <key>GroupTreeTableConfiguration</key>
380+ <array>
381+ <string>MainColumn</string>
382+ <real>211</real>
383+ </array>
384+ <key>RubberWindowFrame</key>
385+ <string>6 136 660 671 0 0 1280 832 </string>
386+ </dict>
387+ <key>Module</key>
388+ <string>PBXSmartGroupTreeModule</string>
389+ <key>Proportion</key>
390+ <string>228pt</string>
391+ </dict>
392+ <dict>
393+ <key>Dock</key>
394+ <array>
395+ <dict>
396+ <key>ContentConfiguration</key>
397+ <dict>
398+ <key>PBXProjectModuleGUID</key>
399+ <string>1CE0B20306471E060097A5F4</string>
400+ <key>PBXProjectModuleLabel</key>
401+ <string>MyNewFile14.java</string>
402+ <key>PBXSplitModuleInNavigatorKey</key>
403+ <dict>
404+ <key>Split0</key>
405+ <dict>
406+ <key>PBXProjectModuleGUID</key>
407+ <string>1CE0B20406471E060097A5F4</string>
408+ <key>PBXProjectModuleLabel</key>
409+ <string>MyNewFile14.java</string>
410+ </dict>
411+ <key>SplitCount</key>
412+ <string>1</string>
413+ </dict>
414+ <key>StatusBarVisibility</key>
415+ <true/>
416+ </dict>
417+ <key>GeometryConfiguration</key>
418+ <dict>
419+ <key>Frame</key>
420+ <string>{{0, 0}, {427, 0}}</string>
421+ <key>RubberWindowFrame</key>
422+ <string>6 136 660 671 0 0 1280 832 </string>
423+ </dict>
424+ <key>Module</key>
425+ <string>PBXNavigatorGroup</string>
426+ <key>Proportion</key>
427+ <string>0pt</string>
428+ </dict>
429+ <dict>
430+ <key>ContentConfiguration</key>
431+ <dict>
432+ <key>PBXProjectModuleGUID</key>
433+ <string>1CE0B20506471E060097A5F4</string>
434+ <key>PBXProjectModuleLabel</key>
435+ <string>詳細</string>
436+ </dict>
437+ <key>GeometryConfiguration</key>
438+ <dict>
439+ <key>Frame</key>
440+ <string>{{0, 5}, {427, 625}}</string>
441+ <key>RubberWindowFrame</key>
442+ <string>6 136 660 671 0 0 1280 832 </string>
443+ </dict>
444+ <key>Module</key>
445+ <string>XCDetailModule</string>
446+ <key>Proportion</key>
447+ <string>625pt</string>
448+ </dict>
449+ </array>
450+ <key>Proportion</key>
451+ <string>427pt</string>
452+ </dict>
453+ </array>
454+ <key>Name</key>
455+ <string>Project</string>
456+ <key>ServiceClasses</key>
457+ <array>
458+ <string>XCModuleDock</string>
459+ <string>PBXSmartGroupTreeModule</string>
460+ <string>XCModuleDock</string>
461+ <string>PBXNavigatorGroup</string>
462+ <string>XCDetailModule</string>
463+ </array>
464+ <key>TableOfContents</key>
465+ <array>
466+ <string>F4E0B7AA0CF66014003E4686</string>
467+ <string>1CE0B1FE06471DED0097A5F4</string>
468+ <string>F4E0B7AB0CF66014003E4686</string>
469+ <string>1CE0B20306471E060097A5F4</string>
470+ <string>1CE0B20506471E060097A5F4</string>
471+ </array>
472+ <key>ToolbarConfiguration</key>
473+ <string>xcode.toolbar.config.default</string>
474+ </dict>
475+ <dict>
476+ <key>ControllerClassBaseName</key>
477+ <string></string>
478+ <key>IconName</key>
479+ <string>WindowOfProject</string>
480+ <key>Identifier</key>
481+ <string>perspective.morph</string>
482+ <key>IsVertical</key>
483+ <integer>0</integer>
484+ <key>Layout</key>
485+ <array>
486+ <dict>
487+ <key>BecomeActive</key>
488+ <integer>1</integer>
489+ <key>ContentConfiguration</key>
490+ <dict>
491+ <key>PBXBottomSmartGroupGIDs</key>
492+ <array>
493+ <string>1C37FBAC04509CD000000102</string>
494+ <string>1C37FAAC04509CD000000102</string>
495+ <string>1C08E77C0454961000C914BD</string>
496+ <string>1C37FABC05509CD000000102</string>
497+ <string>1C37FABC05539CD112110102</string>
498+ <string>E2644B35053B69B200211256</string>
499+ <string>1C37FABC04509CD000100104</string>
500+ <string>1CC0EA4004350EF90044410B</string>
501+ <string>1CC0EA4004350EF90041110B</string>
502+ </array>
503+ <key>PBXProjectModuleGUID</key>
504+ <string>11E0B1FE06471DED0097A5F4</string>
505+ <key>PBXProjectModuleLabel</key>
506+ <string>Files</string>
507+ <key>PBXProjectStructureProvided</key>
508+ <string>yes</string>
509+ <key>PBXSmartGroupTreeModuleColumnData</key>
510+ <dict>
511+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
512+ <array>
513+ <real>186</real>
514+ </array>
515+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
516+ <array>
517+ <string>MainColumn</string>
518+ </array>
519+ </dict>
520+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
521+ <dict>
522+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
523+ <array>
524+ <string>29B97314FDCFA39411CA2CEA</string>
525+ <string>1C37FABC05509CD000000102</string>
526+ </array>
527+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
528+ <array>
529+ <array>
530+ <integer>0</integer>
531+ </array>
532+ </array>
533+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
534+ <string>{{0, 0}, {186, 337}}</string>
535+ </dict>
536+ <key>PBXTopSmartGroupGIDs</key>
537+ <array/>
538+ <key>XCIncludePerspectivesSwitch</key>
539+ <integer>1</integer>
540+ <key>XCSharingToken</key>
541+ <string>com.apple.Xcode.GFSharingToken</string>
542+ </dict>
543+ <key>GeometryConfiguration</key>
544+ <dict>
545+ <key>Frame</key>
546+ <string>{{0, 0}, {203, 355}}</string>
547+ <key>GroupTreeTableConfiguration</key>
548+ <array>
549+ <string>MainColumn</string>
550+ <real>186</real>
551+ </array>
552+ <key>RubberWindowFrame</key>
553+ <string>373 269 690 397 0 0 1440 878 </string>
554+ </dict>
555+ <key>Module</key>
556+ <string>PBXSmartGroupTreeModule</string>
557+ <key>Proportion</key>
558+ <string>100%</string>
559+ </dict>
560+ </array>
561+ <key>Name</key>
562+ <string>Morph</string>
563+ <key>PreferredWidth</key>
564+ <integer>300</integer>
565+ <key>ServiceClasses</key>
566+ <array>
567+ <string>XCModuleDock</string>
568+ <string>PBXSmartGroupTreeModule</string>
569+ </array>
570+ <key>TableOfContents</key>
571+ <array>
572+ <string>11E0B1FE06471DED0097A5F4</string>
573+ </array>
574+ <key>ToolbarConfiguration</key>
575+ <string>xcode.toolbar.config.default.short</string>
576+ </dict>
577+ </array>
578+ <key>PerspectivesBarVisible</key>
579+ <false/>
580+ <key>ShelfIsVisible</key>
581+ <false/>
582+ <key>SourceDescription</key>
583+ <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
584+ <key>StatusbarIsVisible</key>
585+ <true/>
586+ <key>TimeStamp</key>
587+ <real>217470455.45456699</real>
588+ <key>ToolbarDisplayMode</key>
589+ <integer>2</integer>
590+ <key>ToolbarIsVisible</key>
591+ <true/>
592+ <key>ToolbarSizeMode</key>
593+ <integer>1</integer>
594+ <key>Type</key>
595+ <string>Perspectives</string>
596+ <key>UpdateMessage</key>
597+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
598+ <key>WindowJustification</key>
599+ <integer>5</integer>
600+ <key>WindowOrderList</key>
601+ <array>
602+ <string>F4E0B7B50CF66014003E4686</string>
603+ <string>1CD10A99069EF8BA00B06720</string>
604+ <string>F4E0B7AC0CF66014003E4686</string>
605+ <string>/Volumes/Panther/Users/masaki/Project/MosaicPreview/MosaicPreview.xcodeproj</string>
606+ </array>
607+ <key>WindowString</key>
608+ <string>6 136 660 671 0 0 1280 832 </string>
609+ <key>WindowTools</key>
610+ <array>
611+ <dict>
612+ <key>FirstTimeWindowDisplayed</key>
613+ <false/>
614+ <key>Identifier</key>
615+ <string>windowTool.build</string>
616+ <key>IsVertical</key>
617+ <true/>
618+ <key>Layout</key>
619+ <array>
620+ <dict>
621+ <key>Dock</key>
622+ <array>
623+ <dict>
624+ <key>ContentConfiguration</key>
625+ <dict>
626+ <key>PBXProjectModuleGUID</key>
627+ <string>1CD0528F0623707200166675</string>
628+ <key>PBXProjectModuleLabel</key>
629+ <string></string>
630+ <key>StatusBarVisibility</key>
631+ <true/>
632+ </dict>
633+ <key>GeometryConfiguration</key>
634+ <dict>
635+ <key>Frame</key>
636+ <string>{{0, 0}, {669, 0}}</string>
637+ <key>RubberWindowFrame</key>
638+ <string>357 126 669 543 0 0 1280 832 </string>
639+ </dict>
640+ <key>Module</key>
641+ <string>PBXNavigatorGroup</string>
642+ <key>Proportion</key>
643+ <string>0pt</string>
644+ </dict>
645+ <dict>
646+ <key>BecomeActive</key>
647+ <true/>
648+ <key>ContentConfiguration</key>
649+ <dict>
650+ <key>PBXBuildLogShowsTranscriptDefaultKey</key>
651+ <string>{{0, 5}, {669, 492}}</string>
652+ <key>PBXProjectModuleGUID</key>
653+ <string>XCMainBuildResultsModuleGUID</string>
654+ <key>PBXProjectModuleLabel</key>
655+ <string>ビルド</string>
656+ <key>XCBuildResultsTrigger_Collapse</key>
657+ <integer>1022</integer>
658+ <key>XCBuildResultsTrigger_Open</key>
659+ <integer>1013</integer>
660+ </dict>
661+ <key>GeometryConfiguration</key>
662+ <dict>
663+ <key>Frame</key>
664+ <string>{{0, 5}, {669, 497}}</string>
665+ <key>RubberWindowFrame</key>
666+ <string>357 126 669 543 0 0 1280 832 </string>
667+ </dict>
668+ <key>Module</key>
669+ <string>PBXBuildResultsModule</string>
670+ <key>Proportion</key>
671+ <string>497pt</string>
672+ </dict>
673+ </array>
674+ <key>Proportion</key>
675+ <string>502pt</string>
676+ </dict>
677+ </array>
678+ <key>Name</key>
679+ <string>Build Results</string>
680+ <key>ServiceClasses</key>
681+ <array>
682+ <string>PBXBuildResultsModule</string>
683+ </array>
684+ <key>StatusbarIsVisible</key>
685+ <true/>
686+ <key>TableOfContents</key>
687+ <array>
688+ <string>F42AA2D80B5F8F7600200AB4</string>
689+ <string>F42AA8D40B60DCF100200AB4</string>
690+ <string>1CD0528F0623707200166675</string>
691+ <string>XCMainBuildResultsModuleGUID</string>
692+ </array>
693+ <key>ToolbarConfiguration</key>
694+ <string>xcode.toolbar.config.build</string>
695+ <key>WindowString</key>
696+ <string>357 126 669 543 0 0 1280 832 </string>
697+ <key>WindowToolGUID</key>
698+ <string>F42AA2D80B5F8F7600200AB4</string>
699+ <key>WindowToolIsVisible</key>
700+ <false/>
701+ </dict>
702+ <dict>
703+ <key>FirstTimeWindowDisplayed</key>
704+ <false/>
705+ <key>Identifier</key>
706+ <string>windowTool.debugger</string>
707+ <key>IsVertical</key>
708+ <true/>
709+ <key>Layout</key>
710+ <array>
711+ <dict>
712+ <key>Dock</key>
713+ <array>
714+ <dict>
715+ <key>ContentConfiguration</key>
716+ <dict>
717+ <key>Debugger</key>
718+ <dict>
719+ <key>HorizontalSplitView</key>
720+ <dict>
721+ <key>_collapsingFrameDimension</key>
722+ <real>0.0</real>
723+ <key>_indexOfCollapsedView</key>
724+ <integer>0</integer>
725+ <key>_percentageOfCollapsedView</key>
726+ <real>0.0</real>
727+ <key>isCollapsed</key>
728+ <string>yes</string>
729+ <key>sizes</key>
730+ <array>
731+ <string>{{0, 0}, {294, 245}}</string>
732+ <string>{{294, 0}, {461, 245}}</string>
733+ </array>
734+ </dict>
735+ <key>VerticalSplitView</key>
736+ <dict>
737+ <key>_collapsingFrameDimension</key>
738+ <real>0.0</real>
739+ <key>_indexOfCollapsedView</key>
740+ <integer>0</integer>
741+ <key>_percentageOfCollapsedView</key>
742+ <real>0.0</real>
743+ <key>isCollapsed</key>
744+ <string>yes</string>
745+ <key>sizes</key>
746+ <array>
747+ <string>{{0, 0}, {755, 245}}</string>
748+ <string>{{0, 245}, {755, 219}}</string>
749+ </array>
750+ </dict>
751+ </dict>
752+ <key>LauncherConfigVersion</key>
753+ <string>8</string>
754+ <key>PBXProjectModuleGUID</key>
755+ <string>1C162984064C10D400B95A72</string>
756+ <key>PBXProjectModuleLabel</key>
757+ <string>Debug - GLUTExamples (Underwater)</string>
758+ </dict>
759+ <key>GeometryConfiguration</key>
760+ <dict>
761+ <key>DebugConsoleDrawerSize</key>
762+ <string>{100, 120}</string>
763+ <key>DebugConsoleVisible</key>
764+ <string>None</string>
765+ <key>DebugConsoleWindowFrame</key>
766+ <string>{{200, 200}, {500, 300}}</string>
767+ <key>DebugSTDIOWindowFrame</key>
768+ <string>{{200, 200}, {500, 300}}</string>
769+ <key>Frame</key>
770+ <string>{{0, 0}, {755, 464}}</string>
771+ <key>RubberWindowFrame</key>
772+ <string>293 327 755 505 0 0 1280 832 </string>
773+ </dict>
774+ <key>Module</key>
775+ <string>PBXDebugSessionModule</string>
776+ <key>Proportion</key>
777+ <string>464pt</string>
778+ </dict>
779+ </array>
780+ <key>Proportion</key>
781+ <string>464pt</string>
782+ </dict>
783+ </array>
784+ <key>Name</key>
785+ <string>Debugger</string>
786+ <key>ServiceClasses</key>
787+ <array>
788+ <string>PBXDebugSessionModule</string>
789+ </array>
790+ <key>StatusbarIsVisible</key>
791+ <true/>
792+ <key>TableOfContents</key>
793+ <array>
794+ <string>1CD10A99069EF8BA00B06720</string>
795+ <string>F4E0B7AF0CF66014003E4686</string>
796+ <string>1C162984064C10D400B95A72</string>
797+ <string>F4E0B7B00CF66014003E4686</string>
798+ <string>F4E0B7B10CF66014003E4686</string>
799+ <string>F4E0B7B20CF66014003E4686</string>
800+ <string>F4E0B7B30CF66014003E4686</string>
801+ <string>F4E0B7B40CF66014003E4686</string>
802+ <string>F4E0B7B50CF66014003E4686</string>
803+ </array>
804+ <key>ToolbarConfiguration</key>
805+ <string>xcode.toolbar.config.debug</string>
806+ <key>WindowString</key>
807+ <string>293 327 755 505 0 0 1280 832 </string>
808+ <key>WindowToolGUID</key>
809+ <string>1CD10A99069EF8BA00B06720</string>
810+ <key>WindowToolIsVisible</key>
811+ <true/>
812+ </dict>
813+ <dict>
814+ <key>FirstTimeWindowDisplayed</key>
815+ <false/>
816+ <key>Identifier</key>
817+ <string>windowTool.find</string>
818+ <key>IsVertical</key>
819+ <true/>
820+ <key>Layout</key>
821+ <array>
822+ <dict>
823+ <key>Dock</key>
824+ <array>
825+ <dict>
826+ <key>Dock</key>
827+ <array>
828+ <dict>
829+ <key>ContentConfiguration</key>
830+ <dict>
831+ <key>PBXProjectModuleGUID</key>
832+ <string>1CDD528C0622207200134675</string>
833+ <key>PBXProjectModuleLabel</key>
834+ <string></string>
835+ <key>StatusBarVisibility</key>
836+ <true/>
837+ </dict>
838+ <key>GeometryConfiguration</key>
839+ <dict>
840+ <key>Frame</key>
841+ <string>{{0, 0}, {781, 212}}</string>
842+ <key>RubberWindowFrame</key>
843+ <string>304 339 781 470 0 0 1280 832 </string>
844+ </dict>
845+ <key>Module</key>
846+ <string>PBXNavigatorGroup</string>
847+ <key>Proportion</key>
848+ <string>781pt</string>
849+ </dict>
850+ </array>
851+ <key>Proportion</key>
852+ <string>212pt</string>
853+ </dict>
854+ <dict>
855+ <key>BecomeActive</key>
856+ <true/>
857+ <key>ContentConfiguration</key>
858+ <dict>
859+ <key>PBXProjectModuleGUID</key>
860+ <string>1CD0528E0623707200166675</string>
861+ <key>PBXProjectModuleLabel</key>
862+ <string>プロジェクトの検索</string>
863+ </dict>
864+ <key>GeometryConfiguration</key>
865+ <dict>
866+ <key>Frame</key>
867+ <string>{{0, 217}, {781, 212}}</string>
868+ <key>RubberWindowFrame</key>
869+ <string>304 339 781 470 0 0 1280 832 </string>
870+ </dict>
871+ <key>Module</key>
872+ <string>PBXProjectFindModule</string>
873+ <key>Proportion</key>
874+ <string>212pt</string>
875+ </dict>
876+ </array>
877+ <key>Proportion</key>
878+ <string>429pt</string>
879+ </dict>
880+ </array>
881+ <key>Name</key>
882+ <string>Project Find</string>
883+ <key>ServiceClasses</key>
884+ <array>
885+ <string>PBXProjectFindModule</string>
886+ </array>
887+ <key>StatusbarIsVisible</key>
888+ <true/>
889+ <key>TableOfContents</key>
890+ <array>
891+ <string>1C530D57069F1CE1000CFCEE</string>
892+ <string>F42AA6620B5FB83C00200AB4</string>
893+ <string>F42AA6630B5FB83C00200AB4</string>
894+ <string>1CDD528C0622207200134675</string>
895+ <string>1CD0528E0623707200166675</string>
896+ </array>
897+ <key>WindowString</key>
898+ <string>304 339 781 470 0 0 1280 832 </string>
899+ <key>WindowToolGUID</key>
900+ <string>1C530D57069F1CE1000CFCEE</string>
901+ <key>WindowToolIsVisible</key>
902+ <false/>
903+ </dict>
904+ <dict>
905+ <key>Identifier</key>
906+ <string>MENUSEPARATOR</string>
907+ </dict>
908+ <dict>
909+ <key>FirstTimeWindowDisplayed</key>
910+ <false/>
911+ <key>Identifier</key>
912+ <string>windowTool.debuggerConsole</string>
913+ <key>IsVertical</key>
914+ <true/>
915+ <key>Layout</key>
916+ <array>
917+ <dict>
918+ <key>Dock</key>
919+ <array>
920+ <dict>
921+ <key>BecomeActive</key>
922+ <true/>
923+ <key>ContentConfiguration</key>
924+ <dict>
925+ <key>PBXProjectModuleGUID</key>
926+ <string>1C78EAAC065D492600B07095</string>
927+ <key>PBXProjectModuleLabel</key>
928+ <string>Debugger Console</string>
929+ </dict>
930+ <key>GeometryConfiguration</key>
931+ <dict>
932+ <key>Frame</key>
933+ <string>{{0, 0}, {584, 571}}</string>
934+ <key>RubberWindowFrame</key>
935+ <string>648 14 584 612 0 0 1280 832 </string>
936+ </dict>
937+ <key>Module</key>
938+ <string>PBXDebugCLIModule</string>
939+ <key>Proportion</key>
940+ <string>571pt</string>
941+ </dict>
942+ </array>
943+ <key>Proportion</key>
944+ <string>571pt</string>
945+ </dict>
946+ </array>
947+ <key>Name</key>
948+ <string>Debugger Console</string>
949+ <key>ServiceClasses</key>
950+ <array>
951+ <string>PBXDebugCLIModule</string>
952+ </array>
953+ <key>StatusbarIsVisible</key>
954+ <true/>
955+ <key>TableOfContents</key>
956+ <array>
957+ <string>F498428D09024971000A1C84</string>
958+ <string>F42AA31D0B5F90CB00200AB4</string>
959+ <string>1C78EAAC065D492600B07095</string>
960+ </array>
961+ <key>WindowString</key>
962+ <string>648 14 584 612 0 0 1280 832 </string>
963+ <key>WindowToolGUID</key>
964+ <string>F498428D09024971000A1C84</string>
965+ <key>WindowToolIsVisible</key>
966+ <false/>
967+ </dict>
968+ <dict>
969+ <key>FirstTimeWindowDisplayed</key>
970+ <false/>
971+ <key>Identifier</key>
972+ <string>windowTool.run</string>
973+ <key>IsVertical</key>
974+ <true/>
975+ <key>Layout</key>
976+ <array>
977+ <dict>
978+ <key>Dock</key>
979+ <array>
980+ <dict>
981+ <key>ContentConfiguration</key>
982+ <dict>
983+ <key>LauncherConfigVersion</key>
984+ <string>3</string>
985+ <key>PBXProjectModuleGUID</key>
986+ <string>1CD0528B0623707200166675</string>
987+ <key>PBXProjectModuleLabel</key>
988+ <string>実行</string>
989+ <key>Runner</key>
990+ <dict>
991+ <key>HorizontalSplitView</key>
992+ <dict>
993+ <key>_collapsingFrameDimension</key>
994+ <real>0.0</real>
995+ <key>_indexOfCollapsedView</key>
996+ <integer>0</integer>
997+ <key>_percentageOfCollapsedView</key>
998+ <real>0.0</real>
999+ <key>isCollapsed</key>
1000+ <string>yes</string>
1001+ <key>sizes</key>
1002+ <array>
1003+ <string>{{0, 0}, {367, 168}}</string>
1004+ <string>{{0, 173}, {367, 270}}</string>
1005+ </array>
1006+ </dict>
1007+ <key>VerticalSplitView</key>
1008+ <dict>
1009+ <key>_collapsingFrameDimension</key>
1010+ <real>0.0</real>
1011+ <key>_indexOfCollapsedView</key>
1012+ <integer>0</integer>
1013+ <key>_percentageOfCollapsedView</key>
1014+ <real>0.0</real>
1015+ <key>isCollapsed</key>
1016+ <string>yes</string>
1017+ <key>sizes</key>
1018+ <array>
1019+ <string>{{0, 0}, {406, 443}}</string>
1020+ <string>{{411, 0}, {517, 443}}</string>
1021+ </array>
1022+ </dict>
1023+ </dict>
1024+ </dict>
1025+ <key>GeometryConfiguration</key>
1026+ <dict>
1027+ <key>Frame</key>
1028+ <string>{{0, 0}, {485, 301}}</string>
1029+ <key>RubberWindowFrame</key>
1030+ <string>717 299 485 342 0 0 1280 832 </string>
1031+ </dict>
1032+ <key>Module</key>
1033+ <string>PBXRunSessionModule</string>
1034+ <key>Proportion</key>
1035+ <string>301pt</string>
1036+ </dict>
1037+ </array>
1038+ <key>Proportion</key>
1039+ <string>301pt</string>
1040+ </dict>
1041+ </array>
1042+ <key>Name</key>
1043+ <string>Run Log</string>
1044+ <key>ServiceClasses</key>
1045+ <array>
1046+ <string>PBXRunSessionModule</string>
1047+ </array>
1048+ <key>StatusbarIsVisible</key>
1049+ <true/>
1050+ <key>TableOfContents</key>
1051+ <array>
1052+ <string>1C0AD2B3069F1EA900FABCE6</string>
1053+ <string>F4E2D6BE097E7F0600F3B25C</string>
1054+ <string>1CD0528B0623707200166675</string>
1055+ <string>F4E2D6BF097E7F0600F3B25C</string>
1056+ </array>
1057+ <key>ToolbarConfiguration</key>
1058+ <string>xcode.toolbar.config.run</string>
1059+ <key>WindowString</key>
1060+ <string>717 299 485 342 0 0 1280 832 </string>
1061+ <key>WindowToolGUID</key>
1062+ <string>1C0AD2B3069F1EA900FABCE6</string>
1063+ <key>WindowToolIsVisible</key>
1064+ <false/>
1065+ </dict>
1066+ <dict>
1067+ <key>Identifier</key>
1068+ <string>windowTool.scm</string>
1069+ <key>Layout</key>
1070+ <array>
1071+ <dict>
1072+ <key>Dock</key>
1073+ <array>
1074+ <dict>
1075+ <key>ContentConfiguration</key>
1076+ <dict>
1077+ <key>PBXProjectModuleGUID</key>
1078+ <string>1C78EAB2065D492600B07095</string>
1079+ <key>PBXProjectModuleLabel</key>
1080+ <string>&lt;No Editor&gt;</string>
1081+ <key>PBXSplitModuleInNavigatorKey</key>
1082+ <dict>
1083+ <key>Split0</key>
1084+ <dict>
1085+ <key>PBXProjectModuleGUID</key>
1086+ <string>1C78EAB3065D492600B07095</string>
1087+ </dict>
1088+ <key>SplitCount</key>
1089+ <string>1</string>
1090+ </dict>
1091+ <key>StatusBarVisibility</key>
1092+ <integer>1</integer>
1093+ </dict>
1094+ <key>GeometryConfiguration</key>
1095+ <dict>
1096+ <key>Frame</key>
1097+ <string>{{0, 0}, {452, 0}}</string>
1098+ <key>RubberWindowFrame</key>
1099+ <string>743 379 452 308 0 0 1280 1002 </string>
1100+ </dict>
1101+ <key>Module</key>
1102+ <string>PBXNavigatorGroup</string>
1103+ <key>Proportion</key>
1104+ <string>0pt</string>
1105+ </dict>
1106+ <dict>
1107+ <key>BecomeActive</key>
1108+ <integer>1</integer>
1109+ <key>ContentConfiguration</key>
1110+ <dict>
1111+ <key>PBXProjectModuleGUID</key>
1112+ <string>1CD052920623707200166675</string>
1113+ <key>PBXProjectModuleLabel</key>
1114+ <string>SCM</string>
1115+ </dict>
1116+ <key>GeometryConfiguration</key>
1117+ <dict>
1118+ <key>ConsoleFrame</key>
1119+ <string>{{0, 259}, {452, 0}}</string>
1120+ <key>Frame</key>
1121+ <string>{{0, 7}, {452, 259}}</string>
1122+ <key>RubberWindowFrame</key>
1123+ <string>743 379 452 308 0 0 1280 1002 </string>
1124+ <key>TableConfiguration</key>
1125+ <array>
1126+ <string>Status</string>
1127+ <real>30</real>
1128+ <string>FileName</string>
1129+ <real>199</real>
1130+ <string>Path</string>
1131+ <real>197.09500122070312</real>
1132+ </array>
1133+ <key>TableFrame</key>
1134+ <string>{{0, 0}, {452, 250}}</string>
1135+ </dict>
1136+ <key>Module</key>
1137+ <string>PBXCVSModule</string>
1138+ <key>Proportion</key>
1139+ <string>262pt</string>
1140+ </dict>
1141+ </array>
1142+ <key>Proportion</key>
1143+ <string>266pt</string>
1144+ </dict>
1145+ </array>
1146+ <key>Name</key>
1147+ <string>SCM</string>
1148+ <key>ServiceClasses</key>
1149+ <array>
1150+ <string>PBXCVSModule</string>
1151+ </array>
1152+ <key>StatusbarIsVisible</key>
1153+ <integer>1</integer>
1154+ <key>TableOfContents</key>
1155+ <array>
1156+ <string>1C78EAB4065D492600B07095</string>
1157+ <string>1C78EAB5065D492600B07095</string>
1158+ <string>1C78EAB2065D492600B07095</string>
1159+ <string>1CD052920623707200166675</string>
1160+ </array>
1161+ <key>ToolbarConfiguration</key>
1162+ <string>xcode.toolbar.config.scm</string>
1163+ <key>WindowString</key>
1164+ <string>743 379 452 308 0 0 1280 1002 </string>
1165+ </dict>
1166+ <dict>
1167+ <key>FirstTimeWindowDisplayed</key>
1168+ <false/>
1169+ <key>Identifier</key>
1170+ <string>windowTool.breakpoints</string>
1171+ <key>IsVertical</key>
1172+ <false/>
1173+ <key>Layout</key>
1174+ <array>
1175+ <dict>
1176+ <key>Dock</key>
1177+ <array>
1178+ <dict>
1179+ <key>BecomeActive</key>
1180+ <true/>
1181+ <key>ContentConfiguration</key>
1182+ <dict>
1183+ <key>PBXBottomSmartGroupGIDs</key>
1184+ <array>
1185+ <string>1C77FABC04509CD000000102</string>
1186+ </array>
1187+ <key>PBXProjectModuleGUID</key>
1188+ <string>1CE0B1FE06471DED0097A5F4</string>
1189+ <key>PBXProjectModuleLabel</key>
1190+ <string>Files</string>
1191+ <key>PBXProjectStructureProvided</key>
1192+ <string>no</string>
1193+ <key>PBXSmartGroupTreeModuleColumnData</key>
1194+ <dict>
1195+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
1196+ <array>
1197+ <real>168</real>
1198+ </array>
1199+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
1200+ <array>
1201+ <string>MainColumn</string>
1202+ </array>
1203+ </dict>
1204+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
1205+ <dict>
1206+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
1207+ <array>
1208+ <string>1C77FABC04509CD000000102</string>
1209+ </array>
1210+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
1211+ <array>
1212+ <array>
1213+ <integer>0</integer>
1214+ </array>
1215+ </array>
1216+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
1217+ <string>{{0, 0}, {168, 350}}</string>
1218+ </dict>
1219+ <key>PBXTopSmartGroupGIDs</key>
1220+ <array/>
1221+ <key>XCIncludePerspectivesSwitch</key>
1222+ <false/>
1223+ </dict>
1224+ <key>GeometryConfiguration</key>
1225+ <dict>
1226+ <key>Frame</key>
1227+ <string>{{0, 0}, {185, 368}}</string>
1228+ <key>GroupTreeTableConfiguration</key>
1229+ <array>
1230+ <string>MainColumn</string>
1231+ <real>168</real>
1232+ </array>
1233+ <key>RubberWindowFrame</key>
1234+ <string>322 377 744 409 0 0 1280 832 </string>
1235+ </dict>
1236+ <key>Module</key>
1237+ <string>PBXSmartGroupTreeModule</string>
1238+ <key>Proportion</key>
1239+ <string>185pt</string>
1240+ </dict>
1241+ <dict>
1242+ <key>ContentConfiguration</key>
1243+ <dict>
1244+ <key>PBXProjectModuleGUID</key>
1245+ <string>1CA1AED706398EBD00589147</string>
1246+ <key>PBXProjectModuleLabel</key>
1247+ <string>詳細</string>
1248+ </dict>
1249+ <key>GeometryConfiguration</key>
1250+ <dict>
1251+ <key>Frame</key>
1252+ <string>{{190, 0}, {554, 368}}</string>
1253+ <key>RubberWindowFrame</key>
1254+ <string>322 377 744 409 0 0 1280 832 </string>
1255+ </dict>
1256+ <key>Module</key>
1257+ <string>XCDetailModule</string>
1258+ <key>Proportion</key>
1259+ <string>554pt</string>
1260+ </dict>
1261+ </array>
1262+ <key>Proportion</key>
1263+ <string>368pt</string>
1264+ </dict>
1265+ </array>
1266+ <key>MajorVersion</key>
1267+ <integer>2</integer>
1268+ <key>MinorVersion</key>
1269+ <integer>0</integer>
1270+ <key>Name</key>
1271+ <string>Breakpoints</string>
1272+ <key>ServiceClasses</key>
1273+ <array>
1274+ <string>PBXSmartGroupTreeModule</string>
1275+ <string>XCDetailModule</string>
1276+ </array>
1277+ <key>StatusbarIsVisible</key>
1278+ <true/>
1279+ <key>TableOfContents</key>
1280+ <array>
1281+ <string>F42AA3990B5F927600200AB4</string>
1282+ <string>F42AA39A0B5F927600200AB4</string>
1283+ <string>1CE0B1FE06471DED0097A5F4</string>
1284+ <string>1CA1AED706398EBD00589147</string>
1285+ </array>
1286+ <key>ToolbarConfiguration</key>
1287+ <string>xcode.toolbar.config.breakpoints</string>
1288+ <key>WindowString</key>
1289+ <string>322 377 744 409 0 0 1280 832 </string>
1290+ <key>WindowToolGUID</key>
1291+ <string>F42AA3990B5F927600200AB4</string>
1292+ <key>WindowToolIsVisible</key>
1293+ <false/>
1294+ </dict>
1295+ <dict>
1296+ <key>Identifier</key>
1297+ <string>windowTool.debugAnimator</string>
1298+ <key>Layout</key>
1299+ <array>
1300+ <dict>
1301+ <key>Dock</key>
1302+ <array>
1303+ <dict>
1304+ <key>Module</key>
1305+ <string>PBXNavigatorGroup</string>
1306+ <key>Proportion</key>
1307+ <string>100%</string>
1308+ </dict>
1309+ </array>
1310+ <key>Proportion</key>
1311+ <string>100%</string>
1312+ </dict>
1313+ </array>
1314+ <key>Name</key>
1315+ <string>Debug Visualizer</string>
1316+ <key>ServiceClasses</key>
1317+ <array>
1318+ <string>PBXNavigatorGroup</string>
1319+ </array>
1320+ <key>StatusbarIsVisible</key>
1321+ <integer>1</integer>
1322+ <key>ToolbarConfiguration</key>
1323+ <string>xcode.toolbar.config.debugAnimator</string>
1324+ <key>WindowString</key>
1325+ <string>100 100 700 500 0 0 1280 1002 </string>
1326+ </dict>
1327+ <dict>
1328+ <key>Identifier</key>
1329+ <string>windowTool.bookmarks</string>
1330+ <key>Layout</key>
1331+ <array>
1332+ <dict>
1333+ <key>Dock</key>
1334+ <array>
1335+ <dict>
1336+ <key>Module</key>
1337+ <string>PBXBookmarksModule</string>
1338+ <key>Proportion</key>
1339+ <string>100%</string>
1340+ </dict>
1341+ </array>
1342+ <key>Proportion</key>
1343+ <string>100%</string>
1344+ </dict>
1345+ </array>
1346+ <key>Name</key>
1347+ <string>Bookmarks</string>
1348+ <key>ServiceClasses</key>
1349+ <array>
1350+ <string>PBXBookmarksModule</string>
1351+ </array>
1352+ <key>StatusbarIsVisible</key>
1353+ <integer>0</integer>
1354+ <key>WindowString</key>
1355+ <string>538 42 401 187 0 0 1280 1002 </string>
1356+ </dict>
1357+ <dict>
1358+ <key>Identifier</key>
1359+ <string>windowTool.classBrowser</string>
1360+ <key>Layout</key>
1361+ <array>
1362+ <dict>
1363+ <key>Dock</key>
1364+ <array>
1365+ <dict>
1366+ <key>BecomeActive</key>
1367+ <integer>1</integer>
1368+ <key>ContentConfiguration</key>
1369+ <dict>
1370+ <key>OptionsSetName</key>
1371+ <string>Hierarchy, all classes</string>
1372+ <key>PBXProjectModuleGUID</key>
1373+ <string>1CA6456E063B45B4001379D8</string>
1374+ <key>PBXProjectModuleLabel</key>
1375+ <string>Class Browser - NSObject</string>
1376+ </dict>
1377+ <key>GeometryConfiguration</key>
1378+ <dict>
1379+ <key>ClassesFrame</key>
1380+ <string>{{0, 0}, {374, 96}}</string>
1381+ <key>ClassesTreeTableConfiguration</key>
1382+ <array>
1383+ <string>PBXClassNameColumnIdentifier</string>
1384+ <real>208</real>
1385+ <string>PBXClassBookColumnIdentifier</string>
1386+ <real>22</real>
1387+ </array>
1388+ <key>Frame</key>
1389+ <string>{{0, 0}, {630, 331}}</string>
1390+ <key>MembersFrame</key>
1391+ <string>{{0, 105}, {374, 395}}</string>
1392+ <key>MembersTreeTableConfiguration</key>
1393+ <array>
1394+ <string>PBXMemberTypeIconColumnIdentifier</string>
1395+ <real>22</real>
1396+ <string>PBXMemberNameColumnIdentifier</string>
1397+ <real>216</real>
1398+ <string>PBXMemberTypeColumnIdentifier</string>
1399+ <real>97</real>
1400+ <string>PBXMemberBookColumnIdentifier</string>
1401+ <real>22</real>
1402+ </array>
1403+ <key>PBXModuleWindowStatusBarHidden2</key>
1404+ <integer>1</integer>
1405+ <key>RubberWindowFrame</key>
1406+ <string>385 179 630 352 0 0 1440 878 </string>
1407+ </dict>
1408+ <key>Module</key>
1409+ <string>PBXClassBrowserModule</string>
1410+ <key>Proportion</key>
1411+ <string>332pt</string>
1412+ </dict>
1413+ </array>
1414+ <key>Proportion</key>
1415+ <string>332pt</string>
1416+ </dict>
1417+ </array>
1418+ <key>Name</key>
1419+ <string>Class Browser</string>
1420+ <key>ServiceClasses</key>
1421+ <array>
1422+ <string>PBXClassBrowserModule</string>
1423+ </array>
1424+ <key>StatusbarIsVisible</key>
1425+ <integer>0</integer>
1426+ <key>TableOfContents</key>
1427+ <array>
1428+ <string>1C0AD2AF069F1E9B00FABCE6</string>
1429+ <string>1C0AD2B0069F1E9B00FABCE6</string>
1430+ <string>1CA6456E063B45B4001379D8</string>
1431+ </array>
1432+ <key>ToolbarConfiguration</key>
1433+ <string>xcode.toolbar.config.classbrowser</string>
1434+ <key>WindowString</key>
1435+ <string>385 179 630 352 0 0 1440 878 </string>
1436+ <key>WindowToolGUID</key>
1437+ <string>1C0AD2AF069F1E9B00FABCE6</string>
1438+ <key>WindowToolIsVisible</key>
1439+ <integer>0</integer>
1440+ </dict>
1441+ </array>
1442+</dict>
1443+</plist>
--- /dev/null
+++ b/MosaicPreview.xcodeproj/masaki.pbxuser
@@ -0,0 +1,400 @@
1+// !$*UTF8*$!
2+{
3+ 089C1669FE841209C02AAC07 /* Project object */ = {
4+ activeBuildConfigurationName = Release;
5+ activeExecutable = F42AA2E00B5F906200200AB4 /* SB */;
6+ activeTarget = 8D5B49AC048680CD000E48DA /* GroEvader */;
7+ addToTargets = (
8+ 8D5B49AC048680CD000E48DA /* GroEvader */,
9+ );
10+ breakpoints = (
11+ F42AA5200B5FA85100200AB4 /* GroEvader.m:183 */,
12+ F42AA6980B5FBC0B00200AB4 /* GroEvader.m:312 */,
13+ );
14+ breakpointsGroup = F49843F109026F8B000A1C84 /* XCBreakpointsBucket */;
15+ codeSenseManager = F49840F809023B24000A1C84 /* Code sense */;
16+ executables = (
17+ F498410109023E47000A1C84 /* BS */,
18+ F42AA2E00B5F906200200AB4 /* SB */,
19+ );
20+ perUserDictionary = {
21+ "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = {
22+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
23+ PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID;
24+ PBXFileTableDataSourceColumnWidthsKey = (
25+ 20,
26+ 20,
27+ 210,
28+ 20,
29+ 110,
30+ 109,
31+ 20,
32+ );
33+ PBXFileTableDataSourceColumnsKey = (
34+ PBXBreakpointsDataSource_ActionID,
35+ PBXBreakpointsDataSource_TypeID,
36+ PBXBreakpointsDataSource_BreakpointID,
37+ PBXBreakpointsDataSource_UseID,
38+ PBXBreakpointsDataSource_LocationID,
39+ PBXBreakpointsDataSource_ConditionID,
40+ PBXBreakpointsDataSource_ContinueID,
41+ );
42+ };
43+ PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
44+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
45+ PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
46+ PBXFileTableDataSourceColumnWidthsKey = (
47+ 20,
48+ 300,
49+ 78,
50+ );
51+ PBXFileTableDataSourceColumnsKey = (
52+ PBXErrorsWarningsDataSource_TypeID,
53+ PBXErrorsWarningsDataSource_MessageID,
54+ PBXErrorsWarningsDataSource_LocationID,
55+ );
56+ };
57+ PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
58+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
59+ PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
60+ PBXFileTableDataSourceColumnWidthsKey = (
61+ 22,
62+ 300,
63+ 76,
64+ );
65+ PBXFileTableDataSourceColumnsKey = (
66+ PBXExecutablesDataSource_ActiveFlagID,
67+ PBXExecutablesDataSource_NameID,
68+ PBXExecutablesDataSource_CommentsID,
69+ );
70+ };
71+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
72+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
73+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
74+ PBXFileTableDataSourceColumnWidthsKey = (
75+ 20,
76+ 188,
77+ 20,
78+ 48,
79+ 43,
80+ 43,
81+ 20,
82+ );
83+ PBXFileTableDataSourceColumnsKey = (
84+ PBXFileDataSource_FiletypeID,
85+ PBXFileDataSource_Filename_ColumnID,
86+ PBXFileDataSource_Built_ColumnID,
87+ PBXFileDataSource_ObjectSize_ColumnID,
88+ PBXFileDataSource_Errors_ColumnID,
89+ PBXFileDataSource_Warnings_ColumnID,
90+ PBXFileDataSource_Target_ColumnID,
91+ );
92+ };
93+ PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
94+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
95+ PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
96+ PBXFileTableDataSourceColumnWidthsKey = (
97+ 200,
98+ 120,
99+ );
100+ PBXFileTableDataSourceColumnsKey = (
101+ PBXFindDataSource_MessageID,
102+ PBXFindDataSource_LocationID,
103+ );
104+ };
105+ PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
106+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
107+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
108+ PBXFileTableDataSourceColumnWidthsKey = (
109+ 20,
110+ 200,
111+ 10,
112+ 20,
113+ 48,
114+ 43,
115+ 43,
116+ );
117+ PBXFileTableDataSourceColumnsKey = (
118+ PBXFileDataSource_FiletypeID,
119+ PBXFileDataSource_Filename_ColumnID,
120+ PBXTargetDataSource_PrimaryAttribute,
121+ PBXFileDataSource_Built_ColumnID,
122+ PBXFileDataSource_ObjectSize_ColumnID,
123+ PBXFileDataSource_Errors_ColumnID,
124+ PBXFileDataSource_Warnings_ColumnID,
125+ );
126+ };
127+ PBXPerProjectTemplateStateSaveDate = 217470455;
128+ PBXWorkspaceStateSaveDate = 217470455;
129+ };
130+ perUserProjectItems = {
131+ F4E0B7A90CF65666003E4686 /* PBXBookmark */ = F4E0B7A90CF65666003E4686 /* PBXBookmark */;
132+ F4E0B7AE0CF66014003E4686 /* PBXTextBookmark */ = F4E0B7AE0CF66014003E4686 /* PBXTextBookmark */;
133+ };
134+ sourceControlManager = F49840F709023B24000A1C84 /* Source Control */;
135+ userBuildSettings = {
136+ };
137+ };
138+ 8D5B49AC048680CD000E48DA /* GroEvader */ = {
139+ activeExec = 0;
140+ };
141+ 8D5B49B7048680CD000E48DA /* Info.plist */ = {
142+ uiCtxt = {
143+ sepNavIntBoundsRect = "{{0, 0}, {686, 759}}";
144+ sepNavSelRange = "{523, 0}";
145+ sepNavVisRect = "{{0, 0}, {673, 759}}";
146+ sepNavWindowFrame = "{{14, -5}, {718, 832}}";
147+ };
148+ };
149+ F42AA2E00B5F906200200AB4 /* SB */ = {
150+ isa = PBXExecutable;
151+ activeArgIndex = 2147483647;
152+ activeArgIndices = (
153+ );
154+ argumentStrings = (
155+ );
156+ autoAttachOnCrash = 1;
157+ configStateDict = {
158+ };
159+ customDataFormattersEnabled = 1;
160+ debuggerPlugin = GDBDebugging;
161+ disassemblyDisplayState = 0;
162+ dylibVariantSuffix = "";
163+ enableDebugStr = 1;
164+ environmentEntries = (
165+ );
166+ executableSystemSymbolLevel = 0;
167+ executableUserSymbolLevel = 0;
168+ launchableReference = F42AA2E10B5F906200200AB4 /* Starlight Breaker.app */;
169+ libgmallocEnabled = 0;
170+ name = SB;
171+ savedGlobals = {
172+ };
173+ sourceDirectories = (
174+ );
175+ variableFormatDictionary = {
176+ $cr = 1;
177+ $ctr = 1;
178+ $lr = 1;
179+ $mq = 1;
180+ $pc = 1;
181+ $ps = 1;
182+ $r0 = 1;
183+ $r1 = 1;
184+ $r10 = 1;
185+ $r11 = 1;
186+ $r12 = 1;
187+ $r13 = 1;
188+ $r14 = 1;
189+ $r15 = 1;
190+ $r16 = 1;
191+ $r17 = 1;
192+ $r18 = 1;
193+ $r19 = 1;
194+ $r2 = 1;
195+ $r20 = 1;
196+ $r21 = 1;
197+ $r22 = 1;
198+ $r23 = 1;
199+ $r24 = 1;
200+ $r25 = 1;
201+ $r26 = 1;
202+ $r27 = 1;
203+ $r28 = 1;
204+ $r29 = 1;
205+ $r3 = 1;
206+ $r30 = 1;
207+ $r31 = 1;
208+ $r4 = 1;
209+ $r5 = 1;
210+ $r6 = 1;
211+ $r7 = 1;
212+ $r8 = 1;
213+ $r9 = 1;
214+ $xer = 1;
215+ };
216+ };
217+ F42AA2E10B5F906200200AB4 /* Starlight Breaker.app */ = {
218+ isa = PBXFileReference;
219+ lastKnownFileType = wrapper.application;
220+ name = "Starlight Breaker.app";
221+ path = "/Users/masaki/BathyScaphe/bathyscaphe-HEAD/application/build/Development/Starlight Breaker.app";
222+ sourceTree = "<absolute>";
223+ };
224+ F42AA5200B5FA85100200AB4 /* GroEvader.m:183 */ = {
225+ isa = PBXFileBreakpoint;
226+ actions = (
227+ );
228+ breakpointStyle = 0;
229+ continueAfterActions = 0;
230+ delayBeforeContinue = 0;
231+ fileReference = F49840FE09023DEA000A1C84 /* GroEvader.m */;
232+ functionName = "-downloadDidFinish:";
233+ hitCount = 1;
234+ lineNumber = 183;
235+ location = ImagePreviewer;
236+ modificationTime = 190831256.472745;
237+ state = 2;
238+ };
239+ F42AA6980B5FBC0B00200AB4 /* GroEvader.m:312 */ = {
240+ isa = PBXFileBreakpoint;
241+ actions = (
242+ );
243+ breakpointStyle = 0;
244+ continueAfterActions = 0;
245+ delayBeforeContinue = 0;
246+ fileReference = F49840FE09023DEA000A1C84 /* GroEvader.m */;
247+ functionName = "-viewImage";
248+ hitCount = 1;
249+ lineNumber = 312;
250+ location = ImagePreviewer;
251+ modificationTime = 190831256.47806;
252+ state = 2;
253+ };
254+ F444D6C509759CAF002D0363 /* BathyScaphe.app */ = {
255+ isa = PBXFileReference;
256+ explicitFileType = wrapper.application;
257+ name = BathyScaphe.app;
258+ path = /Users/masaki/Applications/BathyScaphe.app;
259+ sourceTree = "<absolute>";
260+ };
261+ F44F461B097A9CAA0035FB5B /* CircleGestureView.h */ = {
262+ uiCtxt = {
263+ sepNavIntBoundsRect = "{{0, 0}, {682, 719}}";
264+ sepNavSelRange = "{427, 0}";
265+ sepNavVisRect = "{{0, 0}, {682, 719}}";
266+ sepNavWindowFrame = "{{287, 40}, {727, 792}}";
267+ };
268+ };
269+ F44F461C097A9CAA0035FB5B /* CircleGestureView.m */ = {
270+ uiCtxt = {
271+ sepNavIntBoundsRect = "{{0, 0}, {682, 1470}}";
272+ sepNavSelRange = "{1429, 0}";
273+ sepNavVisRect = "{{0, 0}, {682, 719}}";
274+ sepNavWindowFrame = "{{135, 40}, {727, 792}}";
275+ };
276+ };
277+ F49840F709023B24000A1C84 /* Source Control */ = {
278+ isa = PBXSourceControlManager;
279+ fallbackIsa = XCSourceControlManager;
280+ isSCMEnabled = 0;
281+ scmConfiguration = {
282+ };
283+ scmType = "";
284+ };
285+ F49840F809023B24000A1C84 /* Code sense */ = {
286+ isa = PBXCodeSenseManager;
287+ indexTemplatePath = "";
288+ };
289+ F49840FD09023DEA000A1C84 /* GroEvader.h */ = {
290+ uiCtxt = {
291+ sepNavIntBoundsRect = "{{0, 0}, {633, 966}}";
292+ sepNavSelRange = "{786, 0}";
293+ sepNavVisRect = "{{0, 209}, {633, 757}}";
294+ sepNavWindowFrame = "{{66, 0}, {718, 832}}";
295+ };
296+ };
297+ F49840FE09023DEA000A1C84 /* GroEvader.m */ = {
298+ uiCtxt = {
299+ sepNavIntBoundsRect = "{{0, 0}, {878, 6874}}";
300+ sepNavSelRange = "{10627, 0}";
301+ sepNavVisRect = "{{0, 4982}, {633, 757}}";
302+ sepNavWindowFrame = "{{465, 0}, {718, 832}}";
303+ };
304+ };
305+ F498410109023E47000A1C84 /* BS */ = {
306+ isa = PBXExecutable;
307+ activeArgIndex = 2147483647;
308+ activeArgIndices = (
309+ );
310+ argumentStrings = (
311+ );
312+ autoAttachOnCrash = 1;
313+ configStateDict = {
314+ "PBXLSLaunchAction-0" = {
315+ PBXLSLaunchAction = 0;
316+ PBXLSLaunchStartAction = 1;
317+ PBXLSLaunchStdioStyle = 2;
318+ PBXLSLaunchStyle = 0;
319+ class = PBXLSRunLaunchConfig;
320+ displayName = "Executable Runner";
321+ identifier = com.apple.Xcode.launch.runConfig;
322+ remoteHostInfo = "";
323+ startActionInfo = "";
324+ };
325+ "PBXLSLaunchAction-1" = {
326+ PBXLSLaunchAction = 1;
327+ PBXLSLaunchStartAction = 1;
328+ PBXLSLaunchStdioStyle = 2;
329+ PBXLSLaunchStyle = 0;
330+ class = PBXGDB_LaunchConfig;
331+ displayName = GDB;
332+ identifier = com.apple.Xcode.launch.GDBMI_Config;
333+ remoteHostInfo = "";
334+ startActionInfo = "";
335+ };
336+ };
337+ customDataFormattersEnabled = 1;
338+ debuggerPlugin = GDBDebugging;
339+ disassemblyDisplayState = 0;
340+ dylibVariantSuffix = "";
341+ enableDebugStr = 0;
342+ environmentEntries = (
343+ );
344+ executableSystemSymbolLevel = 0;
345+ executableUserSymbolLevel = 0;
346+ launchableReference = F444D6C509759CAF002D0363 /* BathyScaphe.app */;
347+ libgmallocEnabled = 0;
348+ name = BS;
349+ savedGlobals = {
350+ };
351+ sourceDirectories = (
352+ );
353+ };
354+ F498410409023F91000A1C84 /* BSImagePreviewerInterface.h */ = {
355+ uiCtxt = {
356+ sepNavIntBoundsRect = "{{0, 0}, {673, 759}}";
357+ sepNavSelRange = "{338, 0}";
358+ sepNavVisRect = "{{0, 0}, {673, 759}}";
359+ sepNavWindowFrame = "{{15, -5}, {718, 832}}";
360+ };
361+ };
362+ F49842B409024D85000A1C84 /* TemporaryFolder.h */ = {
363+ uiCtxt = {
364+ sepNavIntBoundsRect = "{{0, 0}, {679, 759}}";
365+ sepNavSelRange = "{270, 0}";
366+ sepNavVisRect = "{{0, 0}, {679, 759}}";
367+ sepNavWindowFrame = "{{15, -5}, {718, 832}}";
368+ };
369+ };
370+ F49842B509024D85000A1C84 /* TemporaryFolder.m */ = {
371+ uiCtxt = {
372+ sepNavIntBoundsRect = "{{0, 0}, {682, 1204}}";
373+ sepNavSelRange = "{335, 0}";
374+ sepNavVisRect = "{{0, 485}, {682, 719}}";
375+ sepNavWindowFrame = "{{15, 35}, {727, 792}}";
376+ };
377+ };
378+ F49843F109026F8B000A1C84 /* XCBreakpointsBucket */ = {
379+ isa = XCBreakpointsBucket;
380+ name = MosaicPreview;
381+ objects = (
382+ F42AA5200B5FA85100200AB4 /* GroEvader.m:183 */,
383+ F42AA6980B5FBC0B00200AB4 /* GroEvader.m:312 */,
384+ );
385+ };
386+ F4E0B7A90CF65666003E4686 /* PBXBookmark */ = {
387+ isa = PBXBookmark;
388+ fRef = F44F461C097A9CAA0035FB5B /* CircleGestureView.m */;
389+ };
390+ F4E0B7AE0CF66014003E4686 /* PBXTextBookmark */ = {
391+ isa = PBXTextBookmark;
392+ fRef = F44F461C097A9CAA0035FB5B /* CircleGestureView.m */;
393+ name = "CircleGestureView.m: 85";
394+ rLen = 0;
395+ rLoc = 1429;
396+ rType = 0;
397+ vrLen = 851;
398+ vrLoc = 0;
399+ };
400+}
--- /dev/null
+++ b/MosaicPreview.xcodeproj/project.pbxproj
@@ -0,0 +1,362 @@
1+// !$*UTF8*$!
2+{
3+ archiveVersion = 1;
4+ classes = {
5+ };
6+ objectVersion = 42;
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+ F444D569097593CB002D0363 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F444D568097593CB002D0363 /* QuartzCore.framework */; };
13+ F44F461D097A9CAA0035FB5B /* CircleGestureView.m in Sources */ = {isa = PBXBuildFile; fileRef = F44F461C097A9CAA0035FB5B /* CircleGestureView.m */; };
14+ F49840FC09023DDA000A1C84 /* GroEvader.nib in Resources */ = {isa = PBXBuildFile; fileRef = F49840FB09023DDA000A1C84 /* GroEvader.nib */; };
15+ F49840FF09023DEA000A1C84 /* GroEvader.m in Sources */ = {isa = PBXBuildFile; fileRef = F49840FE09023DEA000A1C84 /* GroEvader.m */; };
16+ F49842B609024D85000A1C84 /* TemporaryFolder.m in Sources */ = {isa = PBXBuildFile; fileRef = F49842B509024D85000A1C84 /* TemporaryFolder.m */; };
17+ F4D8E6D1097ACA78007069CC /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F4D8E6D0097ACA78007069CC /* Localizable.strings */; };
18+/* End PBXBuildFile section */
19+
20+/* Begin PBXFileReference section */
21+ 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
22+ 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
23+ 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
24+ 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
25+ 32DBCF630370AF2F00C91783 /* MosaicPreview_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MosaicPreview_Prefix.pch; sourceTree = "<group>"; };
26+ 8D5B49B6048680CD000E48DA /* ImagePreviewer.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ImagePreviewer.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
27+ 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
28+ D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
29+ F444D568097593CB002D0363 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
30+ F44F461B097A9CAA0035FB5B /* CircleGestureView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleGestureView.h; sourceTree = "<group>"; };
31+ F44F461C097A9CAA0035FB5B /* CircleGestureView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CircleGestureView.m; sourceTree = "<group>"; };
32+ F49840FB09023DDA000A1C84 /* GroEvader.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = GroEvader.nib; sourceTree = "<group>"; };
33+ F49840FD09023DEA000A1C84 /* GroEvader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroEvader.h; sourceTree = "<group>"; };
34+ F49840FE09023DEA000A1C84 /* GroEvader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroEvader.m; sourceTree = "<group>"; };
35+ F498410409023F91000A1C84 /* BSImagePreviewerInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BSImagePreviewerInterface.h; sourceTree = "<group>"; };
36+ F49842B409024D85000A1C84 /* TemporaryFolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporaryFolder.h; sourceTree = "<group>"; };
37+ F49842B509024D85000A1C84 /* TemporaryFolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TemporaryFolder.m; sourceTree = "<group>"; };
38+ F4D8E6CE097ACA6D007069CC /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
39+ F4D8E6D2097ACA92007069CC /* Japanese */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Japanese; path = Japanese.lproj/Localizable.strings; sourceTree = "<group>"; };
40+/* End PBXFileReference section */
41+
42+/* Begin PBXFrameworksBuildPhase section */
43+ 8D5B49B3048680CD000E48DA /* Frameworks */ = {
44+ isa = PBXFrameworksBuildPhase;
45+ buildActionMask = 2147483647;
46+ files = (
47+ 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */,
48+ F444D569097593CB002D0363 /* QuartzCore.framework in Frameworks */,
49+ );
50+ runOnlyForDeploymentPostprocessing = 0;
51+ };
52+/* End PBXFrameworksBuildPhase section */
53+
54+/* Begin PBXGroup section */
55+ 089C166AFE841209C02AAC07 /* MosaicPreview */ = {
56+ isa = PBXGroup;
57+ children = (
58+ F498410409023F91000A1C84 /* BSImagePreviewerInterface.h */,
59+ 08FB77AFFE84173DC02AAC07 /* Classes */,
60+ 32C88E010371C26100C91783 /* Other Sources */,
61+ 089C167CFE841241C02AAC07 /* Resources */,
62+ 089C1671FE841209C02AAC07 /* Frameworks and Libraries */,
63+ 19C28FB8FE9D52D311CA2CBB /* Products */,
64+ );
65+ name = MosaicPreview;
66+ sourceTree = "<group>";
67+ };
68+ 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = {
69+ isa = PBXGroup;
70+ children = (
71+ 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */,
72+ 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */,
73+ );
74+ name = "Frameworks and Libraries";
75+ sourceTree = "<group>";
76+ };
77+ 089C167CFE841241C02AAC07 /* Resources */ = {
78+ isa = PBXGroup;
79+ children = (
80+ F4D8E6D0097ACA78007069CC /* Localizable.strings */,
81+ F49840FB09023DDA000A1C84 /* GroEvader.nib */,
82+ 8D5B49B7048680CD000E48DA /* Info.plist */,
83+ 089C167DFE841241C02AAC07 /* InfoPlist.strings */,
84+ );
85+ name = Resources;
86+ sourceTree = "<group>";
87+ };
88+ 08FB77AFFE84173DC02AAC07 /* Classes */ = {
89+ isa = PBXGroup;
90+ children = (
91+ F44F461B097A9CAA0035FB5B /* CircleGestureView.h */,
92+ F44F461C097A9CAA0035FB5B /* CircleGestureView.m */,
93+ F49842B409024D85000A1C84 /* TemporaryFolder.h */,
94+ F49842B509024D85000A1C84 /* TemporaryFolder.m */,
95+ F49840FD09023DEA000A1C84 /* GroEvader.h */,
96+ F49840FE09023DEA000A1C84 /* GroEvader.m */,
97+ );
98+ name = Classes;
99+ sourceTree = "<group>";
100+ };
101+ 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
102+ isa = PBXGroup;
103+ children = (
104+ F444D568097593CB002D0363 /* QuartzCore.framework */,
105+ 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */,
106+ );
107+ name = "Linked Frameworks";
108+ sourceTree = "<group>";
109+ };
110+ 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = {
111+ isa = PBXGroup;
112+ children = (
113+ 089C167FFE841241C02AAC07 /* AppKit.framework */,
114+ D2F7E65807B2D6F200F64583 /* CoreData.framework */,
115+ 089C1672FE841209C02AAC07 /* Foundation.framework */,
116+ );
117+ name = "Other Frameworks";
118+ sourceTree = "<group>";
119+ };
120+ 19C28FB8FE9D52D311CA2CBB /* Products */ = {
121+ isa = PBXGroup;
122+ children = (
123+ 8D5B49B6048680CD000E48DA /* ImagePreviewer.plugin */,
124+ );
125+ name = Products;
126+ sourceTree = "<group>";
127+ };
128+ 32C88E010371C26100C91783 /* Other Sources */ = {
129+ isa = PBXGroup;
130+ children = (
131+ 32DBCF630370AF2F00C91783 /* MosaicPreview_Prefix.pch */,
132+ );
133+ name = "Other Sources";
134+ sourceTree = "<group>";
135+ };
136+/* End PBXGroup section */
137+
138+/* Begin PBXNativeTarget section */
139+ 8D5B49AC048680CD000E48DA /* GroEvader */ = {
140+ isa = PBXNativeTarget;
141+ buildConfigurationList = F49840EF09023B24000A1C84 /* Build configuration list for PBXNativeTarget "GroEvader" */;
142+ buildPhases = (
143+ 8D5B49AF048680CD000E48DA /* Resources */,
144+ 8D5B49B1048680CD000E48DA /* Sources */,
145+ 8D5B49B3048680CD000E48DA /* Frameworks */,
146+ F42AA6A50B5FBC8E00200AB4 /* ShellScript */,
147+ );
148+ buildRules = (
149+ );
150+ dependencies = (
151+ );
152+ name = GroEvader;
153+ productInstallPath = "$(HOME)/Library/Bundles";
154+ productName = MosaicPreview;
155+ productReference = 8D5B49B6048680CD000E48DA /* ImagePreviewer.plugin */;
156+ productType = "com.apple.product-type.bundle";
157+ };
158+/* End PBXNativeTarget section */
159+
160+/* Begin PBXProject section */
161+ 089C1669FE841209C02AAC07 /* Project object */ = {
162+ isa = PBXProject;
163+ buildConfigurationList = F49840F309023B24000A1C84 /* Build configuration list for PBXProject "MosaicPreview" */;
164+ hasScannedForEncodings = 1;
165+ mainGroup = 089C166AFE841209C02AAC07 /* MosaicPreview */;
166+ projectDirPath = "";
167+ targets = (
168+ 8D5B49AC048680CD000E48DA /* GroEvader */,
169+ );
170+ };
171+/* End PBXProject section */
172+
173+/* Begin PBXResourcesBuildPhase section */
174+ 8D5B49AF048680CD000E48DA /* Resources */ = {
175+ isa = PBXResourcesBuildPhase;
176+ buildActionMask = 2147483647;
177+ files = (
178+ 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */,
179+ F49840FC09023DDA000A1C84 /* GroEvader.nib in Resources */,
180+ F4D8E6D1097ACA78007069CC /* Localizable.strings in Resources */,
181+ );
182+ runOnlyForDeploymentPostprocessing = 0;
183+ };
184+/* End PBXResourcesBuildPhase section */
185+
186+/* Begin PBXShellScriptBuildPhase section */
187+ F42AA6A50B5FBC8E00200AB4 /* ShellScript */ = {
188+ isa = PBXShellScriptBuildPhase;
189+ buildActionMask = 2147483647;
190+ files = (
191+ );
192+ inputPaths = (
193+ );
194+ outputPaths = (
195+ );
196+ runOnlyForDeploymentPostprocessing = 0;
197+ shellPath = /bin/sh;
198+ shellScript = "app=Starlight\\ Breaker\nproduct=GroEvader\n\ndest=$HOME/Library/Application\\ Support/$app/PlugIns/\nsrc=$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.plugin\ntarget=$BUILT_PRODUCTS_DIR/$product.plugin\n\nif [ -d $target ] ;then\n\techo \"Remove\" $target\n\trm -fr $target\nfi\nif [ -d \"$dest\"/$product.plugin ] ; then\n\trm -fr \"$dest\"/Gro.plugin\nfi\n\necho \"Copy\"\ncp -R $src $target\necho \"Move\"\nmv -f $target \"$dest\"";
199+ };
200+/* End PBXShellScriptBuildPhase section */
201+
202+/* Begin PBXSourcesBuildPhase section */
203+ 8D5B49B1048680CD000E48DA /* Sources */ = {
204+ isa = PBXSourcesBuildPhase;
205+ buildActionMask = 2147483647;
206+ files = (
207+ F49840FF09023DEA000A1C84 /* GroEvader.m in Sources */,
208+ F49842B609024D85000A1C84 /* TemporaryFolder.m in Sources */,
209+ F44F461D097A9CAA0035FB5B /* CircleGestureView.m in Sources */,
210+ );
211+ runOnlyForDeploymentPostprocessing = 0;
212+ };
213+/* End PBXSourcesBuildPhase section */
214+
215+/* Begin PBXVariantGroup section */
216+ 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
217+ isa = PBXVariantGroup;
218+ children = (
219+ 089C167EFE841241C02AAC07 /* English */,
220+ );
221+ name = InfoPlist.strings;
222+ sourceTree = "<group>";
223+ };
224+ F4D8E6D0097ACA78007069CC /* Localizable.strings */ = {
225+ isa = PBXVariantGroup;
226+ children = (
227+ F4D8E6CE097ACA6D007069CC /* English */,
228+ F4D8E6D2097ACA92007069CC /* Japanese */,
229+ );
230+ name = Localizable.strings;
231+ sourceTree = "<group>";
232+ };
233+/* End PBXVariantGroup section */
234+
235+/* Begin XCBuildConfiguration section */
236+ F49840F009023B24000A1C84 /* Debug */ = {
237+ isa = XCBuildConfiguration;
238+ buildSettings = {
239+ BUNDLE_LOADER = "$(inherited)";
240+ COPY_PHASE_STRIP = NO;
241+ DEPLOYMENT_LOCATION = NO;
242+ DSTROOT = /;
243+ GCC_DYNAMIC_NO_PIC = NO;
244+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
245+ GCC_ENABLE_OBJC_EXCEPTIONS = YES;
246+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
247+ GCC_MODEL_TUNING = G4;
248+ GCC_OPTIMIZATION_LEVEL = 0;
249+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
250+ GCC_PREFIX_HEADER = MosaicPreview_Prefix.pch;
251+ GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
252+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
253+ GCC_WARN_UNUSED_VARIABLE = YES;
254+ INFOPLIST_FILE = Info.plist;
255+ INSTALL_PATH = "$(HOME)/Library/Application Support/Starlight Breaker/PlugIns";
256+ PREBINDING = NO;
257+ PRODUCT_NAME = ImagePreviewer;
258+ WRAPPER_EXTENSION = plugin;
259+ ZERO_LINK = YES;
260+ };
261+ name = Debug;
262+ };
263+ F49840F109023B24000A1C84 /* Release */ = {
264+ isa = XCBuildConfiguration;
265+ buildSettings = {
266+ ARCHS = (
267+ ppc,
268+ i386,
269+ );
270+ BUNDLE_LOADER = "$(inherited)";
271+ COPY_PHASE_STRIP = YES;
272+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
273+ GCC_ENABLE_OBJC_EXCEPTIONS = YES;
274+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
275+ GCC_MODEL_TUNING = G5;
276+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
277+ GCC_PREFIX_HEADER = MosaicPreview_Prefix.pch;
278+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
279+ GCC_WARN_UNUSED_VARIABLE = YES;
280+ INFOPLIST_FILE = Info.plist;
281+ INSTALL_PATH = "$(HOME)/Library/Bundles";
282+ PREBINDING = NO;
283+ PRODUCT_NAME = ImagePreviewer;
284+ WRAPPER_EXTENSION = plugin;
285+ ZERO_LINK = NO;
286+ };
287+ name = Release;
288+ };
289+ F49840F209023B24000A1C84 /* Default */ = {
290+ isa = XCBuildConfiguration;
291+ buildSettings = {
292+ BUNDLE_LOADER = "$(inherited)";
293+ GCC_ENABLE_OBJC_EXCEPTIONS = YES;
294+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
295+ GCC_MODEL_TUNING = G5;
296+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
297+ GCC_PREFIX_HEADER = MosaicPreview_Prefix.pch;
298+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
299+ GCC_WARN_UNUSED_VARIABLE = YES;
300+ INFOPLIST_FILE = Info.plist;
301+ INSTALL_PATH = "$(HOME)/Library/Bundles";
302+ PREBINDING = NO;
303+ PRODUCT_NAME = ImagePreviewer;
304+ WRAPPER_EXTENSION = plugin;
305+ };
306+ name = Default;
307+ };
308+ F49840F409023B24000A1C84 /* Debug */ = {
309+ isa = XCBuildConfiguration;
310+ buildSettings = {
311+ MACOSX_DEPLOYMENT_TARGET = 10.4;
312+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
313+ };
314+ name = Debug;
315+ };
316+ F49840F509023B24000A1C84 /* Release */ = {
317+ isa = XCBuildConfiguration;
318+ buildSettings = {
319+ ARCHS = (
320+ ppc,
321+ i386,
322+ );
323+ MACOSX_DEPLOYMENT_TARGET = 10.4;
324+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
325+ };
326+ name = Release;
327+ };
328+ F49840F609023B24000A1C84 /* Default */ = {
329+ isa = XCBuildConfiguration;
330+ buildSettings = {
331+ MACOSX_DEPLOYMENT_TARGET = 10.4;
332+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
333+ };
334+ name = Default;
335+ };
336+/* End XCBuildConfiguration section */
337+
338+/* Begin XCConfigurationList section */
339+ F49840EF09023B24000A1C84 /* Build configuration list for PBXNativeTarget "GroEvader" */ = {
340+ isa = XCConfigurationList;
341+ buildConfigurations = (
342+ F49840F009023B24000A1C84 /* Debug */,
343+ F49840F109023B24000A1C84 /* Release */,
344+ F49840F209023B24000A1C84 /* Default */,
345+ );
346+ defaultConfigurationIsVisible = 0;
347+ defaultConfigurationName = Default;
348+ };
349+ F49840F309023B24000A1C84 /* Build configuration list for PBXProject "MosaicPreview" */ = {
350+ isa = XCConfigurationList;
351+ buildConfigurations = (
352+ F49840F409023B24000A1C84 /* Debug */,
353+ F49840F509023B24000A1C84 /* Release */,
354+ F49840F609023B24000A1C84 /* Default */,
355+ );
356+ defaultConfigurationIsVisible = 0;
357+ defaultConfigurationName = Default;
358+ };
359+/* End XCConfigurationList section */
360+ };
361+ rootObject = 089C1669FE841209C02AAC07 /* Project object */;
362+}
--- /dev/null
+++ b/MosaicPreview_Prefix.pch
@@ -0,0 +1,7 @@
1+//
2+// Prefix header for all source files of the 'MosaicPreview' target in the 'MosaicPreview' project.
3+//
4+
5+#ifdef __OBJC__
6+ #import <Cocoa/Cocoa.h>
7+#endif
--- /dev/null
+++ b/TemporaryFolder.h
@@ -0,0 +1,23 @@
1+//
2+// TemporaryFolder.h
3+// IconSetComposer
4+//
5+// Created by Hori,Masaki on 05/08/15.
6+// Copyright 2005 __MyCompanyName__. All rights reserved.
7+//
8+
9+#import <Cocoa/Cocoa.h>
10+
11+
12+@interface TemporaryFolder : NSObject
13+{
14+ NSString *_path;
15+}
16+
17++(id)temporaryFolder;
18+-(id)init;
19+
20+-(NSString *)path;
21+-(NSURL *)url;
22+
23+@end
--- /dev/null
+++ b/TemporaryFolder.m
@@ -0,0 +1,85 @@
1+//
2+// TemporaryFolder.m
3+// IconSetComposer
4+//
5+// Created by Hori,Masaki on 05/08/15.
6+// Copyright 2005 __MyCompanyName__. All rights reserved.
7+//
8+
9+#import "TemporaryFolder.h"
10+
11+
12+@implementation TemporaryFolder
13+
14+-(NSString *)appName
15+{
16+ NSBundle *b = [NSBundle mainBundle];
17+
18+ return [b objectForInfoDictionaryKey:@"CFBundleName"];
19+}
20+
21++(id)temporaryFolder
22+{
23+ return [[[[self class] alloc] init] autorelease];
24+}
25+-(id)init
26+{
27+ if( self = [super init] ) {
28+ NSFileManager *fm = [NSFileManager defaultManager];
29+ NSString *tmpDir = NSTemporaryDirectory();
30+ NSString *appName = [self appName];
31+ BOOL created = NO;
32+
33+ do {
34+ NSString *folderName;
35+ folderName = [NSString stringWithFormat:@"%@-%@",
36+ appName,
37+ [[NSCalendarDate dateWithTimeIntervalSinceNow:0.0]
38+ descriptionWithCalendarFormat:@"%Y%m%d%H%M%S%F"] ];
39+ _path = [tmpDir stringByAppendingPathComponent:folderName];
40+
41+ if( ![fm fileExistsAtPath:_path] &&
42+ [fm createDirectoryAtPath:_path attributes:nil] ) {
43+ created = YES;
44+ }
45+ } while( !created );
46+
47+ [_path retain];
48+ }
49+
50+ return self;
51+}
52+
53+-(void)dealloc
54+{
55+ NSFileManager *fm = [NSFileManager defaultManager];
56+
57+#ifdef DEBUG
58+ NSLog(@"Satrt Dealocate TemporaryFolder(%@)", self );
59+#endif
60+
61+ [fm removeFileAtPath:_path handler:nil];
62+ [_path release];
63+
64+#ifdef DEBUG
65+ NSLog(@"End Dealocate TemporaryFolder" );
66+#endif
67+
68+ [super dealloc];
69+}
70+
71+-(NSString *)path
72+{
73+ return [NSString stringWithString:_path];
74+}
75+-(NSURL *)url
76+{
77+ return [NSURL fileURLWithPath:_path];
78+}
79+
80+-(id)description
81+{
82+ return [self path];
83+}
84+
85+@end