From 8b7b5d15730e0586c531bf3867b8192d1e3689f4 Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Wed, 28 Jan 2009 17:18:41 +0000 Subject: Separate out the creation of a human readable string from the number of bytes into a category class method of NSString so we can potentially use it in other places. --- Interfaces/English.lproj/DBView.xib | 8 ++--- Source/SPStringAdditions.h | 29 +++++++++++++++ Source/SPStringAdditions.m | 69 ++++++++++++++++++++++++++++++++++++ Source/SPTableInfo.h | 25 +++++++++---- Source/SPTableInfo.m | 66 ++++++++++++++-------------------- sequel-pro.xcodeproj/project.pbxproj | 8 +++-- 6 files changed, 151 insertions(+), 54 deletions(-) create mode 100644 Source/SPStringAdditions.h create mode 100644 Source/SPStringAdditions.m diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index 14911286..392632b3 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.xib @@ -8,8 +8,7 @@ 353.00 YES - - + YES @@ -6882,7 +6881,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {3.40282e+38, 3.40282e+38} {213, 50} - + 256 YES @@ -6937,7 +6936,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {375, 72} - {{0, 0}, {1440, 878}} {213, 72} @@ -20434,7 +20432,7 @@ Y2hhbmdlIHRoZSBvcmRlcg id id id - id + NSPopUpButton id id id diff --git a/Source/SPStringAdditions.h b/Source/SPStringAdditions.h new file mode 100644 index 00000000..d2ac5d4b --- /dev/null +++ b/Source/SPStringAdditions.h @@ -0,0 +1,29 @@ +// +// SPStringAdditions.h +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on Jan 28, 2009 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at + +#import + +@interface NSString (SPStringAdditions) + ++ (NSString *)stringForByteSize:(int)byteSize; + +@end diff --git a/Source/SPStringAdditions.m b/Source/SPStringAdditions.m new file mode 100644 index 00000000..a51df693 --- /dev/null +++ b/Source/SPStringAdditions.m @@ -0,0 +1,69 @@ +// +// SPStringAdditions.m +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on Jan 28, 2009 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at + +#import "SPStringAdditions.h" + +@implementation NSString (SPStringAdditions) + +// ------------------------------------------------------------------------------- +// stringForByteSize: +// +// Returns a human readable version string of the supplied byte size. +// ------------------------------------------------------------------------------- ++ (NSString *)stringForByteSize:(int)byteSize +{ + float size = byteSize; + + NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; + + [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; + + if (size < 1023) { + [numberFormatter setFormat:@"#,##0 B"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithInt:size]]; + } + + size = (size / 1024); + + if (size < 1023) { + [numberFormatter setFormat:@"#,##0.0 KB"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:size]]; + } + + size = (size / 1024); + + if (size < 1023) { + [numberFormatter setFormat:@"#,##0.0 MB"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:size]]; + } + + size = (size / 1024); + + [numberFormatter setFormat:@"#,##0.0 GB"]; + + return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:size]]; +} + +@end diff --git a/Source/SPTableInfo.h b/Source/SPTableInfo.h index 0613794c..4088feaf 100644 --- a/Source/SPTableInfo.h +++ b/Source/SPTableInfo.h @@ -2,14 +2,28 @@ // SPTableInfo.h // sequel-pro // -// Created by Ben Perry on 6/05/08. -// Copyright 2008 Ben Perry. All rights reserved. +// Created by Ben Perry on Jun 6, 2008 // +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at #import - -@interface SPTableInfo : NSObject { +@interface SPTableInfo : NSObject +{ IBOutlet id infoTable; IBOutlet id tableList; IBOutlet id tableListInstance; @@ -18,7 +32,4 @@ NSMutableArray *info; } -- (NSString *)sizeFromBytes:(int)bytes; - - @end diff --git a/Source/SPTableInfo.m b/Source/SPTableInfo.m index de50a59b..7bab9322 100644 --- a/Source/SPTableInfo.m +++ b/Source/SPTableInfo.m @@ -2,23 +2,41 @@ // SPTableInfo.m // sequel-pro // -// Created by Ben Perry on 6/05/08. -// Copyright 2008 Ben Perry. All rights reserved. +// Created by Ben Perry on Jun 6, 2008 // +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at #import "SPTableInfo.h" #import "ImageAndTextCell.h" -#import #import "CMMCPConnection.h" #import "CMMCPResult.h" #import "TableDocument.h" +#import "SPStringAdditions.h" + +#import @implementation SPTableInfo - (id)init { - self = [super init]; - info = [[NSMutableArray alloc] init]; + if ((self = [super init])) { + info = [[NSMutableArray alloc] init]; + } + return self; } @@ -28,11 +46,11 @@ selector:@selector(tableChanged:) name:NSTableViewSelectionDidChangeNotification object:tableList]; + [info addObject:NSLocalizedString(@"TABLE INFORMATION",@"header for table info pane")]; [infoTable reloadData]; } - - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -141,9 +159,9 @@ objectValueForTableColumn:(NSTableColumn *)aTableColumn // Add the update date to the infoTable [info addObject:[NSString stringWithFormat:@"updated: %@", [updateDateFormatter stringFromDate:update_date]]]; } - + [info addObject:[NSString stringWithFormat:@"rows: %@", [theRow objectForKey:@"Rows"]]]; - [info addObject:[NSString stringWithFormat:@"size: %@", [self sizeFromBytes:[[theRow objectForKey:@"Data_length"] intValue]]]]; + [info addObject:[NSString stringWithFormat:@"size: %@", [NSString stringForByteSize:[[theRow objectForKey:@"Data_length"] intValue]]]]; [info addObject:[NSString stringWithFormat:@"encoding: %@", [[[theRow objectForKey:@"Collation"] componentsSeparatedByString:@"_"] objectAtIndex:0]]]; [info addObject:[NSString stringWithFormat:@"auto_increment: %@", [theRow objectForKey:@"Auto_increment"]]]; @@ -155,36 +173,4 @@ objectValueForTableColumn:(NSTableColumn *)aTableColumn [infoTable reloadData]; } -- (NSString *)sizeFromBytes:(int)theSize -{ - NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; - float floatSize = theSize; - - [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; - - if (theSize < 1023) { - [numberFormatter setFormat:@"#,##0 B"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithInt:theSize]]; - } - - floatSize = floatSize / 1024; - - if (floatSize < 1023) { - [numberFormatter setFormat:@"#,##0.0 KB"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:floatSize]]; - } - - floatSize = floatSize / 1024; - - if (floatSize < 1023) { - [numberFormatter setFormat:@"#,##0.0 MB"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:floatSize]]; - } - - floatSize = floatSize / 1024; - - [numberFormatter setFormat:@"#,##0.0 GB"]; - return [numberFormatter stringFromNumber:[NSNumber numberWithFloat:floatSize]]; -} - @end diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index 1f9f1209..4b7f7df6 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -8,7 +8,7 @@ /* Begin PBXBuildFile section */ 1761FD480EF03A6F00331368 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1761FD460EF03A6F00331368 /* MainMenu.xib */; }; - 1761FD9E0EF0488900331368 /* build-version.pl in Resources */ = {isa = PBXBuildFile; fileRef = 1761FD9D0EF0488900331368 /* build-version.pl */; }; + 1789343C0F30C1DD0097539A /* SPStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1789343B0F30C1DD0097539A /* SPStringAdditions.m */; }; 17E641460EF01EB5001BC333 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 17E641440EF01EB5001BC333 /* main.m */; }; 17E641560EF01EF6001BC333 /* CustomQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 17E641490EF01EF6001BC333 /* CustomQuery.m */; }; 17E641570EF01EF6001BC333 /* MainController.m in Sources */ = {isa = PBXBuildFile; fileRef = 17E6414B0EF01EF6001BC333 /* MainController.m */; }; @@ -138,6 +138,8 @@ 1703EF400F0B0742005BBE7E /* tables.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tables.html; sourceTree = ""; }; 1761FD470EF03A6F00331368 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; 1761FD9D0EF0488900331368 /* build-version.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "build-version.pl"; sourceTree = ""; }; + 1789343A0F30C1DD0097539A /* SPStringAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPStringAdditions.h; sourceTree = ""; }; + 1789343B0F30C1DD0097539A /* SPStringAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPStringAdditions.m; sourceTree = ""; }; 17E641440EF01EB5001BC333 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 17E641450EF01EB5001BC333 /* sequel-pro_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "sequel-pro_Prefix.pch"; sourceTree = ""; }; 17E641480EF01EF6001BC333 /* CustomQuery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomQuery.h; sourceTree = ""; }; @@ -406,6 +408,8 @@ 17E6416E0EF01F3B001BC333 /* Other */ = { isa = PBXGroup; children = ( + 1789343A0F30C1DD0097539A /* SPStringAdditions.h */, + 1789343B0F30C1DD0097539A /* SPStringAdditions.m */, 17E6416F0EF01F4C001BC333 /* Keychain */, 17E641700EF01F52001BC333 /* MCPKit */, 17E641710EF01F5C001BC333 /* GUI */, @@ -658,7 +662,6 @@ 17E6423B0EF0216C001BC333 /* Credits.rtf in Resources */, 17E6423E0EF0218B001BC333 /* InfoPlist.strings in Resources */, 1761FD480EF03A6F00331368 /* MainMenu.xib in Resources */, - 1761FD9E0EF0488900331368 /* build-version.pl in Resources */, B5E2C5FA0F2353B5007446E0 /* TablePropertyIcon.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -706,6 +709,7 @@ 17E641830EF01FA8001BC333 /* CMImageView.m in Sources */, 17E641840EF01FA8001BC333 /* CMTextView.m in Sources */, 17E641890EF01FB4001BC333 /* SSHTunnel.m in Sources */, + 1789343C0F30C1DD0097539A /* SPStringAdditions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; -- cgit v1.2.3