From 4e826ccdfa5dfc1ecb2219f251d0406c0a6258f0 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Thu, 10 Mar 2011 18:17:06 -0500 Subject: [PATCH] Change disk image format selection --- Image Opener/WindowController.m | 120 +++++++++++++++++++------------ Image Opener/en.lproj/Window.xib | 114 +++++++++++++++++++---------- 2 files changed, 151 insertions(+), 83 deletions(-) diff --git a/Image Opener/WindowController.m b/Image Opener/WindowController.m index 2706fbd..ed1a3f3 100644 --- a/Image Opener/WindowController.m +++ b/Image Opener/WindowController.m @@ -13,25 +13,75 @@ @synthesize filePath = _filePath; +enum { + kTagLucky = 1, + kTag2MG, + kTagDC42, + kTagSDK, + kTagDavex, + kTagPO, + kTagDO +}; + static const char *TagToFormat(NSInteger tag) { switch (tag) { - case 1: + case kTagPO: default: return "po"; - case 2: + case kTagDO: return "do"; - case 3: + case kTag2MG: return "2img"; - case 4: + case kTagDC42: return "dc42"; - case 5: + case kTagDavex: return "davex"; + case kTagSDK: + return "sdk"; + + } +} + +static unsigned ExtToTag(NSString *ext) +{ + ext = [ext lowercaseString]; + if ([ext isEqualToString: @"po"] || + [ext isEqualToString: @"raw"]) + { + return kTagPO; + } + else if ([ext isEqualToString: @"do"] || + [ext isEqualToString: @"dsk"]) + { + return kTagDO; + } + else if ([ext isEqualToString: @"2mg"] || + [ext isEqualToString: @"2img"]) + { + return kTag2MG; + } + else if ([ext isEqualToString: @"dc42"] || + [ext isEqualToString: @"dc"]) + { + return kTagDC42; + } + else if ([ext isEqualToString: @"davex"] || + [ext isEqualToString: @"dvx"]) + { + return kTagDavex; + } + + else if ([ext isEqualToString: @"sdk"] || + [ext isEqualToString: @"shk"]) + { + return kTagDavex; } + return kTagPO; } +(id)new @@ -83,11 +133,11 @@ static const char *TagToFormat(NSInteger tag) -(void)setFilePath:(NSString *)filePath { - NSString *ext; + //NSString *ext; NSFileManager *manager; NSDictionary *dict; NSError *error; - unsigned format; + //unsigned format; if (_filePath == filePath) return; @@ -113,7 +163,7 @@ static const char *TagToFormat(NSInteger tag) else { NSString *ss = @""; - size_t size = [(NSNumber *)[dict objectForKey: NSFileSize] unsignedLongLongValue]; + off_t size = [(NSNumber *)[dict objectForKey: NSFileSize] unsignedLongLongValue]; if (size < 1024) ss = [NSString stringWithFormat: @"%u B", (unsigned)size]; @@ -130,38 +180,12 @@ static const char *TagToFormat(NSInteger tag) // set the default image format. - ext = [_filePath pathExtension]; + //ext = [_filePath pathExtension]; - ext = [ext lowercaseString]; + //format = ExtToTag(ext); - format = 1; - - if ([ext isEqualToString: @"po"] || - [ext isEqualToString: @"raw"]) - { - format = 1; - } - else if ([ext isEqualToString: @"do"] || - [ext isEqualToString: @"dsk"]) - { - format = 2; - } - else if ([ext isEqualToString: @"2mg"] || - [ext isEqualToString: @"2img"]) - { - format = 3; - } - else if ([ext isEqualToString: @"dc42"]) - { - format = 4; - } - else if ([ext isEqualToString: @"davex"] || - [ext isEqualToString: @"dvx"]) - { - format = 5; - } - - [_ifMatrix selectCellWithTag: format]; + + [_ifMatrix selectCellWithTag: kTagLucky]; [_fsMatrix selectCellWithTag: 1]; // assume prodos. } @@ -187,10 +211,12 @@ static const char *TagToFormat(NSInteger tag) { NSPipe *pipe = [NSPipe pipe]; NSString *launchPath; - NSArray *argv; + NSMutableArray *argv; NSNotificationCenter *nc; NSString *exe; + NSInteger tag; + _task = [[NSTask alloc] init]; [_task setStandardError: pipe]; @@ -214,13 +240,19 @@ static const char *TagToFormat(NSInteger tag) launchPath = [[NSBundle mainBundle] pathForAuxiliaryExecutable: exe]; - argv = [NSArray arrayWithObjects: - @"-r", - [NSString stringWithFormat: @"--format=%s", TagToFormat([_ifMatrix selectedTag])], - _filePath - , nil]; + argv = [NSMutableArray arrayWithCapacity: 4]; + [argv addObject: @"-r"]; // read-only. + + tag = [_ifMatrix selectedTag]; + if (tag != kTagLucky) + { + [argv addObject: [NSString stringWithFormat: @"--format=%s", TagToFormat(tag)]]; + } + + [argv addObject: _filePath]; + [_task setLaunchPath: launchPath]; [_task setArguments: argv]; diff --git a/Image Opener/en.lproj/Window.xib b/Image Opener/en.lproj/Window.xib index 50c78a3..a278113 100644 --- a/Image Opener/en.lproj/Window.xib +++ b/Image Opener/en.lproj/Window.xib @@ -50,7 +50,7 @@ 7 2 - {{196, 240}, {480, 384}} + {{196, 240}, {480, 420}} 544735232 Window NSWindow @@ -73,7 +73,7 @@ 2322 - {480, 133} + {480, 124} @@ -159,11 +159,11 @@ 6 {480, 1e+07} - {223, 133} + {223, 108} - {{1, 1}, {480, 133}} + {{1, 1}, {480, 144}} @@ -201,7 +201,7 @@ 0.94565218687057495 - {{-1, 21}, {482, 135}} + {{-1, 21}, {482, 146}} @@ -213,7 +213,7 @@ 289 - {{360, 164}, {100, 18}} + {{360, 175}, {100, 18}} @@ -249,7 +249,7 @@ 268 - {{18, 89}, {62, 38}} + {{18, 114}, {62, 38}} @@ -460,13 +460,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{1, 1}, {98, 137}} + {{1, 1}, {98, 162}} - {{17, 186}, {100, 153}} + {{17, 197}, {100, 178}} @@ -506,19 +506,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{18, 29}, {134, 98}} + {{18, 14}, {134, 138}} YES - 5 + 7 1 YES -2080244224 131072 - ProDOS Order + I’m Feeling Lucky 1 @@ -533,7 +533,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 67239424 131072 - DOS Order + Universal Disk Image 2 @@ -639,7 +639,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA 67239424 131072 - Universal Disk Image + DiskCopy 4.2 3 @@ -652,7 +652,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA 67239424 131072 - DiskCopy 4.2 + ShrinkIt Disk Image 4 @@ -675,6 +675,30 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA 400 75 + + 67239424 + 131072 + ProDOS Order + + + 1211912703 + 0 + + 400 + 75 + + + 67239424 + 131072 + DOS Order + + + 1211912703 + 0 + + 400 + 75 + {134, 18} {4, 2} @@ -738,13 +762,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{1, 1}, {170, 137}} + {{1, 1}, {170, 162}} - {{119, 186}, {172, 153}} + {{119, 197}, {172, 178}} @@ -779,7 +803,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{16, 111}, {86, 18}} + {{16, 136}, {86, 18}} @@ -810,13 +834,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{1, 1}, {168, 137}} + {{1, 1}, {168, 162}} - {{293, 186}, {170, 153}} + {{293, 197}, {170, 178}} @@ -841,7 +865,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{17, 347}, {274, 17}} + {{17, 383}, {274, 17}} @@ -864,7 +888,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{293, 347}, {170, 17}} + {{293, 383}, {170, 17}} @@ -880,7 +904,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{7, 11}, {480, 384}} + {{7, 11}, {480, 420}} @@ -1009,11 +1033,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + @@ -1113,6 +1137,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + @@ -1169,20 +1195,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 33 - - - YES - - - - - - 34 - - - 35 @@ -1197,6 +1209,30 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 46 + + + + + 47 + + + + + 33 + + + YES + + + + + + 34 + + + @@ -1284,7 +1320,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 45 + 47