diff options
Diffstat (limited to 'Source')
69 files changed, 569 insertions, 483 deletions
diff --git a/Source/DMLocalizedNib.m b/Source/DMLocalizedNib.m index c675e110..55e51e35 100644 --- a/Source/DMLocalizedNib.m +++ b/Source/DMLocalizedNib.m @@ -17,6 +17,11 @@ - (void)deliciousDealloc; @end +// Private methods from DMLocalizedNib used here +@interface NSBundle () ++ (void)_localizeStringsInObject:(id)object table:(NSString *)table; +@end + static NSMutableDictionary *deliciousNibNames = nil; @implementation NSNib (DMLocalizedNib) diff --git a/Source/MGTemplateEngine.m b/Source/MGTemplateEngine.m index 17acae65..1cf483f8 100644 --- a/Source/MGTemplateEngine.m +++ b/Source/MGTemplateEngine.m @@ -312,9 +312,9 @@ NSString *digits; BOOL scanned = [scanner scanCharactersFromSet:numbersSet intoString:&digits]; if (scanned && digits && [digits length] > 0) { - NSInteger index = [digits integerValue]; - if (index >= 0 && index < [((NSArray *)currObj) count]) { - newObj = [((NSArray *)currObj) objectAtIndex:index]; + NSInteger indexValue = [digits integerValue]; + if (indexValue >= 0 && indexValue < (NSInteger)[((NSArray *)currObj) count]) { + newObj = [((NSArray *)currObj) objectAtIndex:indexValue]; } } } diff --git a/Source/MGTemplateStandardMarkers.m b/Source/MGTemplateStandardMarkers.m index 184dab48..fd845ac7 100644 --- a/Source/MGTemplateStandardMarkers.m +++ b/Source/MGTemplateStandardMarkers.m @@ -515,7 +515,7 @@ NSArray *vals = [cycle objectForKey:CYCLE_VALUES]; NSInteger currIndex = [[cycle objectForKey:CYCLE_INDEX] integerValue]; currIndex++; - if (currIndex >= [vals count]) { + if (currIndex >= (NSInteger)[vals count]) { currIndex = 0; } [cycle setObject:[NSNumber numberWithInteger:currIndex] forKey:CYCLE_INDEX]; diff --git a/Source/NoodleLineNumberView.m b/Source/NoodleLineNumberView.m index 15296c8e..0213c151 100644 --- a/Source/NoodleLineNumberView.m +++ b/Source/NoodleLineNumberView.m @@ -44,8 +44,8 @@ #pragma mark - -#define DEFAULT_THICKNESS 22.0 -#define RULER_MARGIN 5.0 +#define DEFAULT_THICKNESS 22.0f +#define RULER_MARGIN 5.0f #define RULER_MARGIN2 RULER_MARGIN * 2 typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); @@ -159,7 +159,7 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); - (NSColor *)textColor { if (textColor == nil) - return [NSColor colorWithCalibratedWhite:0.42 alpha:1.0]; + return [NSColor colorWithCalibratedWhite:0.42f alpha:1.0f]; return textColor; } @@ -249,7 +249,7 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); return NSNotFound; } -- (NSUInteger)lineNumberForCharacterIndex:(NSUInteger)index +- (NSUInteger)lineNumberForCharacterIndex:(NSUInteger)charIndex { NSUInteger left, right, mid, lineStart; NSArray *lines; @@ -266,9 +266,9 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); mid = (right + left) >> 1; lineStart = [NSArrayObjectAtIndex(lines, mid) unsignedIntegerValue]; - if (index < lineStart) + if (charIndex < lineStart) right = mid; - else if (index > lineStart) + else if (charIndex > lineStart) left = mid; else return mid; @@ -300,7 +300,7 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); NSRect visibleRect; NSRange range, nullRange; NSString *labelText; - NSUInteger rectCount, index, line, count; + NSUInteger rectCount, lineIndex, line, count; NSRectArray rects; CGFloat yinset; NSSize stringSize; @@ -330,11 +330,11 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); for (line = (NSUInteger)(*lineNumberForCharacterIndexIMP)(self, lineNumberForCharacterIndexSel, range.location); line < count; line++) { - index = [NSArrayObjectAtIndex(lines, line) unsignedIntegerValue]; + lineIndex = [NSArrayObjectAtIndex(lines, line) unsignedIntegerValue]; - if (NSLocationInRange(index, range)) + if (NSLocationInRange(lineIndex, range)) { - rects = [layoutManager rectArrayForCharacterRange:NSMakeRange(index, 0) + rects = [layoutManager rectArrayForCharacterRange:NSMakeRange(lineIndex, 0) withinSelectedCharacterRange:nullRange inTextContainer:container rectCount:&rectCount]; @@ -359,7 +359,7 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); } } - if (index > NSMaxRange(range)) + if (lineIndex > NSMaxRange(range)) break; } @@ -499,7 +499,7 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); if ([view isKindOfClass:[NSTextView class]]) { - NSUInteger index, stringLength, lineEnd, contentEnd, lastLine; + NSUInteger anIndex, stringLength, lineEnd, contentEnd, lastLine; NSString *textString; CGFloat newThickness; @@ -516,7 +516,7 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); // Init lineIndices with text length / 16 + 1 lineIndices = [[NSMutableArray alloc] initWithCapacity:((NSUInteger)stringLength>>4)+1]; - index = 0; + anIndex = 0; // Cache loop methods for speed RangeOfLineIMP rangeOfLineIMP = (RangeOfLineIMP)[textString methodForSelector:lineRangeForRangeSel]; @@ -524,16 +524,16 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); do { - (void*)(*addObjectIMP)(lineIndices, addObjectSel, (*numberWithUnsignedIntegerIMP)([NSNumber class], numberWithUnsignedIntegerSel, index)); - lastLine = index; - index = NSMaxRange((*rangeOfLineIMP)(textString, lineRangeForRangeSel, NSMakeRange(index, 0))); + (void)(*addObjectIMP)(lineIndices, addObjectSel, (*numberWithUnsignedIntegerIMP)([NSNumber class], numberWithUnsignedIntegerSel, anIndex)); + lastLine = anIndex; + anIndex = NSMaxRange((*rangeOfLineIMP)(textString, lineRangeForRangeSel, NSMakeRange(anIndex, 0))); } - while (index < stringLength); + while (anIndex < stringLength); // Check if text ends with a new line. [textString getLineStart:NULL end:&lineEnd contentsEnd:&contentEnd forRange:NSMakeRange(lastLine, 0)]; if (contentEnd < lineEnd) - (void*)(*addObjectIMP)(lineIndices, addObjectSel, (*numberWithUnsignedIntegerIMP)([NSNumber class], numberWithUnsignedIntegerSel, index)); + (void)(*addObjectIMP)(lineIndices, addObjectSel, (*numberWithUnsignedIntegerIMP)([NSNumber class], numberWithUnsignedIntegerSel, anIndex)); NSUInteger lineCount = [lineIndices count]; if(lineCount < 10) @@ -574,14 +574,14 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range); - (void)updateGutterThicknessConstants { - maxWidthOfGlyph1 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph + RULER_MARGIN2)); - maxWidthOfGlyph2 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 2 + RULER_MARGIN2)); - maxWidthOfGlyph3 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 3 + RULER_MARGIN2)); - maxWidthOfGlyph4 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 4 + RULER_MARGIN2)); - maxWidthOfGlyph5 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 5 + RULER_MARGIN2)); - maxWidthOfGlyph6 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 6 + RULER_MARGIN2)); - maxWidthOfGlyph7 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 7 + RULER_MARGIN2)); - maxWidthOfGlyph8 = ceil(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 8 + RULER_MARGIN2)); + maxWidthOfGlyph1 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph + RULER_MARGIN2)); + maxWidthOfGlyph2 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 2 + RULER_MARGIN2)); + maxWidthOfGlyph3 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 3 + RULER_MARGIN2)); + maxWidthOfGlyph4 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 4 + RULER_MARGIN2)); + maxWidthOfGlyph5 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 5 + RULER_MARGIN2)); + maxWidthOfGlyph6 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 6 + RULER_MARGIN2)); + maxWidthOfGlyph7 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 7 + RULER_MARGIN2)); + maxWidthOfGlyph8 = ceilf(MAX(DEFAULT_THICKNESS, maxWidthOfGlyph * 8 + RULER_MARGIN2)); } @end diff --git a/Source/SPActivityTextFieldCell.m b/Source/SPActivityTextFieldCell.m index 10194466..1ccb7207 100644 --- a/Source/SPActivityTextFieldCell.m +++ b/Source/SPActivityTextFieldCell.m @@ -259,7 +259,7 @@ static inline NSRect SPTextLinkRectFromCellRect(NSRect inRect) // Remove it from the list directly since the list will be updated in the background // to avoid to cancel a command which is already cancelled if(status == 0) - [[[controlView delegate] onMainThread] removeActivity:[[contextInfo objectForKey:@"pid"] intValue]]; + [[[(id)controlView delegate] onMainThread] removeActivity:[[contextInfo objectForKey:@"pid"] intValue]]; return YES; } diff --git a/Source/SPAppController.m b/Source/SPAppController.m index 71fcd359..8ea656c5 100644 --- a/Source/SPAppController.m +++ b/Source/SPAppController.m @@ -653,7 +653,11 @@ YY_BUFFER_STATE yy_scan_string (const char *); NSString *command = [url host]; NSString *passedProcessID = [url user]; NSArray *parameter; - NSArray *pathComponents = [[url absoluteString] pathComponents]; + NSArray *pathComponents; + if([[url absoluteString] hasSuffix:@"/"]) + pathComponents = [[[url absoluteString] substringToIndex:[[url absoluteString] length]-1] pathComponents]; + else + pathComponents = [[url absoluteString] pathComponents]; if([pathComponents count] > 2) parameter = [pathComponents subarrayWithRange:NSMakeRange(2, [pathComponents count]-2)]; diff --git a/Source/SPAppleScriptSupport.h b/Source/SPAppleScriptSupport.h index 4878dc4b..2aae1c68 100644 --- a/Source/SPAppleScriptSupport.h +++ b/Source/SPAppleScriptSupport.h @@ -27,4 +27,10 @@ @interface SPAppController (SPAppleScriptSupport) +- (NSArray *)orderedDocuments; +- (void)insertInOrderedDocuments:(SPDatabaseDocument *)doc; +- (NSArray *)orderedWindows; +- (id)handleQuitScriptCommand:(NSScriptCommand *)command; +- (id)handleOpenScriptCommand:(NSScriptCommand *)command; + @end diff --git a/Source/SPAppleScriptSupport.m b/Source/SPAppleScriptSupport.m index 44d99352..90ab240e 100644 --- a/Source/SPAppleScriptSupport.m +++ b/Source/SPAppleScriptSupport.m @@ -132,6 +132,8 @@ if (frontDoc && ![frontDoc isWorking] && ![[frontDoc connectionID] isEqualToString:@"_"]) { [frontDoc startPrintDocumentOperation]; } + + return nil; } @end diff --git a/Source/SPBundleEditorController.m b/Source/SPBundleEditorController.m index 8f1f6bab..5d3555fa 100644 --- a/Source/SPBundleEditorController.m +++ b/Source/SPBundleEditorController.m @@ -484,7 +484,7 @@ NSString *currentCategory = [currentDict objectForKey:SPBundleFileCategoryKey]; if(!currentCategory) currentCategory = @""; if([currentCategory length]) { - NSUInteger *newIndexPath[4]; + NSUInteger newIndexPath[4]; newIndexPath[0] = 0; newIndexPath[1] = newScopeIndex; newIndexPath[2] = [self _arrangedCategoryIndexForScopeIndex:selectedTag andCategory:currentCategory]; @@ -494,7 +494,7 @@ [commandsOutlineView reloadData]; } else { // Move current Bundle command to according new scope without category - NSUInteger *newIndexPath[3]; + NSUInteger newIndexPath[3]; newIndexPath[0] = 0; newIndexPath[1] = newScopeIndex; newIndexPath[2] = 0; @@ -640,8 +640,8 @@ [self saveBundle:bundle atPath:nil]; // Insert duplicate below selected one - NSUInteger *currentPath[[currentIndexPath length]]; - [currentIndexPath getIndexes:¤tPath]; + NSUInteger currentPath[[currentIndexPath length]]; + [currentIndexPath getIndexes:currentPath]; currentPath[[currentIndexPath length]-1] = (NSUInteger)currentPath[[currentIndexPath length]-1] + 1; currentIndexPath = [NSIndexPath indexPathWithIndexes:currentPath length:[currentIndexPath length]]; @@ -656,24 +656,24 @@ // If selected item is one of the main scopes go one item deeper if([currentIndexPath length] == 2) { - NSUInteger *newPath[3]; - [currentIndexPath getIndexes:&newPath]; + NSUInteger newPath[3]; + [currentIndexPath getIndexes:newPath]; newPath[2] = 0; currentIndexPath = [NSIndexPath indexPathWithIndexes:newPath length:3]; lastIndexWasAlreadyFixed = YES; } // If selected item is a category go one item deeper else if([currentIndexPath length] == 3 && [currentObject objectForKey:kChildrenKey]) { - NSUInteger *newPath[4]; - [currentIndexPath getIndexes:&newPath]; + NSUInteger newPath[4]; + [currentIndexPath getIndexes:newPath]; newPath[3] = 0; currentIndexPath = [NSIndexPath indexPathWithIndexes:newPath length:4]; lastIndexWasAlreadyFixed = YES; category = [currentObject objectForKey:kBundleNameKey]; } - NSUInteger *currentPath[[currentIndexPath length]]; - [currentIndexPath getIndexes:¤tPath]; + NSUInteger currentPath[[currentIndexPath length]]; + [currentIndexPath getIndexes:currentPath]; // Last index plus 1 to insert bundle under the current selection if(!lastIndexWasAlreadyFixed) { @@ -854,7 +854,7 @@ // Get all Bundles out of commandBundleTree which were touched NSMutableArray *allBundles = [NSMutableArray array]; - for(NSInteger k = 0; k < [[commandBundleTree objectForKey:kChildrenKey] count]; k++) { + for (NSUInteger k = 0; k < [[commandBundleTree objectForKey:kChildrenKey] count]; k++) { for(id item in [[[commandBundleTree objectForKey:kChildrenKey] objectAtIndex:k] objectForKey:kChildrenKey]) { if([item objectForKey:kChildrenKey]) { for(id b in [item objectForKey:kChildrenKey]) { @@ -1094,7 +1094,7 @@ if(![selectedRows count]) return; - NSInteger rowIndex; + NSUInteger rowIndex; NSMutableArray *stillUndeletedBundles = [NSMutableArray array]; for(rowIndex = 0; rowIndex < [deletedDefaultBundles count]; rowIndex++) { if(![selectedRows containsIndex:rowIndex]) @@ -1460,8 +1460,8 @@ NSIndexPath *currentIndexPath = [commandBundleTreeController selectionIndexPath]; NSUInteger newIndexPathLength = 4; - NSUInteger *newIndexPath[newIndexPathLength]; - [currentIndexPath getIndexes:&newIndexPath]; + NSUInteger newIndexPath[newIndexPathLength]; + [currentIndexPath getIndexes:newIndexPath]; newIndexPath[3] = 0; // Set the category index @@ -1804,10 +1804,10 @@ [removeButton setEnabled:([[commandBundleTreeController selectedObjects] count] == 1 && ![[[commandBundleTreeController selectedObjects] objectAtIndex:0] objectForKey:kChildrenKey])]; [addButton setEnabled:([[commandBundleTreeController selectionIndexPath] length] > 1)]; - NSUInteger *selPath[2]; + NSUInteger selPath[2]; selPath[0] = 0; selPath[1] = 0; - [commandBundleTreeController setSelectionIndexPath:[NSIndexPath indexPathWithIndexes:&selPath length:2]]; + [commandBundleTreeController setSelectionIndexPath:[NSIndexPath indexPathWithIndexes:selPath length:2]]; [commandBundleTreeController rearrangeObjects]; [commandsOutlineView reloadData]; @@ -2091,10 +2091,6 @@ NSMutableDictionary *newCat = [NSMutableDictionary dictionary]; [newCat setObject:category forKey:kBundleNameKey]; [newCat setObject:[NSMutableArray array] forKey:kChildrenKey]; - NSUInteger *newPath[3]; - newPath[0] = 0; - newPath[1] = k; - newPath[2] = 0; // Add it [[[j representedObject] objectForKey:kChildrenKey] addObject:newCat]; diff --git a/Source/SPBundleHTMLOutputController.h b/Source/SPBundleHTMLOutputController.h index 3665fc8e..de67799c 100644 --- a/Source/SPBundleHTMLOutputController.h +++ b/Source/SPBundleHTMLOutputController.h @@ -33,7 +33,7 @@ NSString *initHTMLSourceString; NSString *windowUUID; NSString *docUUID; - BOOL suppressExceptionAlert; + BOOL suppressExceptionAlerting; WebPreferences *webPreferences; } @@ -42,7 +42,7 @@ @property(readwrite,retain) NSString *initHTMLSourceString; @property(readwrite,retain) NSString *windowUUID; @property(readwrite,retain) NSString *docUUID; -@property(assign) BOOL suppressExceptionAlert; +@property(assign) BOOL suppressExceptionAlerting; - (IBAction)printDocument:(id)sender; diff --git a/Source/SPBundleHTMLOutputController.m b/Source/SPBundleHTMLOutputController.m index 6e5ffedd..1995cfcb 100644 --- a/Source/SPBundleHTMLOutputController.m +++ b/Source/SPBundleHTMLOutputController.m @@ -29,13 +29,28 @@ @class WebScriptCallFrame; +#pragma mark - + +@interface WebView (WebViewPrivate) +- (void) setScriptDebugDelegate:(id) delegate; +@end + +@interface WebScriptCallFrame : NSObject +- (id)userInfo; +- (WebScriptCallFrame *)caller; +- (NSString *)functionName; +- (id)exception; +@end + +#pragma mark - + @implementation SPBundleHTMLOutputController @synthesize docTitle; @synthesize initHTMLSourceString; @synthesize windowUUID; @synthesize docUUID; -@synthesize suppressExceptionAlert; +@synthesize suppressExceptionAlerting; /** * Initialisation @@ -52,8 +67,10 @@ [webView setDrawsBackground:YES]; [webView setEditable:NO]; [webView setShouldCloseWithWindow:YES]; +#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 [webView setShouldUpdateWhileOffscreen:NO]; - suppressExceptionAlert = NO; +#endif + suppressExceptionAlerting = NO; } @@ -311,7 +328,7 @@ [newWebView showWindows]; } -- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener +- (void)webView:(WebView *)aWebView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener { NSInteger navigationType = [[actionInformation objectForKey:WebActionNavigationTypeKey] integerValue]; @@ -335,11 +352,11 @@ switch(navigationType) { case WebNavigationTypeLinkClicked: - [[webView mainFrame] loadRequest:request]; + [[aWebView mainFrame] loadRequest:request]; [listener use]; break; case WebNavigationTypeReload: - [[webView mainFrame] loadHTMLString:[self initHTMLSourceString] baseURL:nil]; + [[aWebView mainFrame] loadHTMLString:[self initHTMLSourceString] baseURL:nil]; break; default: [listener use]; @@ -506,7 +523,7 @@ NSString *mes = [NSString stringWithFormat:@"Exception:\nline = %ld\nfunction = %@\ncaller = %@\nexception = %@", lineno, [frame functionName], [frame caller], [frame userInfo], [frame exception]]; - if([self suppressExceptionAlert]) { + if([self suppressExceptionAlerting]) { NSLog(@"%@", mes); return; } @@ -599,7 +616,7 @@ */ - (void)suppressExceptionAlert { - [self setSuppressExceptionAlert:YES]; + [self setSuppressExceptionAlerting:YES]; } /** diff --git a/Source/SPCSVExporterDelegate.m b/Source/SPCSVExporterDelegate.m index 226dea8d..6f8e06f6 100644 --- a/Source/SPCSVExporterDelegate.m +++ b/Source/SPCSVExporterDelegate.m @@ -28,7 +28,7 @@ #import "SPCSVExporter.h" #import "SPCSVExporterDelegate.h" #import "SPDatabaseDocument.h" -#import "SPFileHandle.h" +#import "SPExportFile.h" @implementation SPExportController (SPCSVExporterDelegate) diff --git a/Source/SPCSVParser.m b/Source/SPCSVParser.m index f19c2d55..5429896e 100644 --- a/Source/SPCSVParser.m +++ b/Source/SPCSVParser.m @@ -121,7 +121,7 @@ j = 1; isEscaped = NO; if (!escapeStringIsFieldQuoteString) { - while (j * escapeLength <= nextQuoteDistance + while (j * escapeLength <= (NSInteger)nextQuoteDistance && ([[csvString substringWithRange:NSMakeRange((parserPosition + nextQuoteDistance - (j*escapeLength)), escapeLength)] isEqualToString:escapeString])) { isEscaped = !isEscaped; @@ -203,7 +203,7 @@ if (escapeLength) { j = 1; isEscaped = NO; - while (j * escapeLength <= nextFieldEndDistance + while (j * escapeLength <= (NSInteger)nextFieldEndDistance && ([[csvString substringWithRange:NSMakeRange((parserPosition + nextFieldEndDistance - (j*escapeLength)), escapeLength)] isEqualToString:escapeString])) { isEscaped = !isEscaped; @@ -298,7 +298,7 @@ // to allow to replace these by the table column's DEFAULT value) if (fieldCount == NSNotFound) { fieldCount = [csvRowArray count]; - } else if ([csvRowArray count] < fieldCount) { + } else if ([csvRowArray count] < (NSUInteger)fieldCount) { for (j = [csvRowArray count]; j < fieldCount; j++) [csvRowArray addObject:[SPNotLoaded notLoaded]]; } diff --git a/Source/SPColorAdditions.m b/Source/SPColorAdditions.m index d6dc8056..b9353921 100644 --- a/Source/SPColorAdditions.m +++ b/Source/SPColorAdditions.m @@ -68,19 +68,19 @@ [scanner scanCharactersFromSet:hexCharSet intoString:&code]; if( [code length] == 8 ) { // decode colors like #ffee33aa - NSUInteger color = 0; + unsigned int color = 0; scanner = [NSScanner scannerWithString:code]; if( ! [scanner scanHexInt:&color] ) return nil; return [self colorWithCalibratedRed:( ( ( color >> 24 ) & 0xff ) / 255. ) green:( ( ( color >> 16 ) & 0xff ) / 255. ) blue:( ( ( color >> 8) & 0xff ) / 255. ) alpha:( ( color & 0xff ) / 255. )]; } else if( [code length] == 6 ) { // decode colors like #ffee33 - NSUInteger color = 0; + unsigned int color = 0; scanner = [NSScanner scannerWithString:code]; if( ! [scanner scanHexInt:&color] ) return nil; return [self colorWithCalibratedRed:( ( ( color >> 16 ) & 0xff ) / 255. ) green:( ( ( color >> 8 ) & 0xff ) / 255. ) blue:( ( color & 0xff ) / 255. ) alpha:1.]; } else if( [code length] == 3 ) { // decode short-hand colors like #fe3 - NSUInteger color = 0; + unsigned int color = 0; scanner = [NSScanner scannerWithString:code]; if( ! [scanner scanHexInt:&color] ) return nil; return [self colorWithCalibratedRed:( ( ( ( ( color >> 8 ) & 0xf ) << 4 ) | ( ( color >> 8 ) & 0xf ) ) / 255. ) green:( ( ( ( ( color >> 4 ) & 0xf ) << 4 ) | ( ( color >> 4 ) & 0xf ) ) / 255. ) blue:( ( ( ( color & 0xf ) << 4 ) | ( color & 0xf ) ) / 255. ) alpha:1.]; diff --git a/Source/SPConnectionController.h b/Source/SPConnectionController.h index de9063f9..a5b79d80 100644 --- a/Source/SPConnectionController.h +++ b/Source/SPConnectionController.h @@ -44,7 +44,7 @@ @interface SPConnectionController : NSObject { - NSObject <SPConnectionControllerDelegateProtocol> *delegate; + id <SPConnectionControllerDelegateProtocol, NSObject> delegate; SPDatabaseDocument *dbDocument; SPSSHTunnel *sshTunnel; diff --git a/Source/SPContentFilterManager.m b/Source/SPContentFilterManager.m index d08bb241..edbed353 100644 --- a/Source/SPContentFilterManager.m +++ b/Source/SPContentFilterManager.m @@ -171,7 +171,7 @@ // Take all content filters until the next header or end of all content filters NSUInteger numOfArgs; - for(i; i<[contentFilters count]; i++) { + for ( ; i<[contentFilters count]; i++) { if(![[contentFilters objectAtIndex:i] objectForKey:@"headerOfFileURL"]) { NSMutableDictionary *d = [[NSMutableDictionary alloc] init]; @@ -609,7 +609,7 @@ originalRow += offset; // For safety reasons - if(originalRow > [contentFilters count]-1) originalRow = [contentFilters count] - 1; + if(originalRow > (NSInteger)[contentFilters count]-1) originalRow = [contentFilters count] - 1; NSMutableDictionary *draggedRow = [NSMutableDictionary dictionaryWithDictionary:[contentFilters objectAtIndex:originalRow]]; [contentFilters removeObjectAtIndex:originalRow]; diff --git a/Source/SPCopyTable.m b/Source/SPCopyTable.m index b69f23a1..b44ba920 100644 --- a/Source/SPCopyTable.m +++ b/Source/SPCopyTable.m @@ -38,6 +38,7 @@ #import "SPGeometryDataView.h" #import "SPBundleEditorController.h" #import "SPAppController.h" +#import "SPTablesList.h" NSInteger MENU_EDIT_COPY = 2001; NSInteger MENU_EDIT_COPY_WITH_COLUMN = 2002; @@ -205,7 +206,7 @@ NSInteger kBlobAsImageFile = 4; [image release]; } else { NSString *noData = @""; - [noData writeToFile:fp atomically:NO]; + [noData writeToFile:fp atomically:NO encoding:NSUTF8StringEncoding error:NULL]; } [result appendFormat:@"%@\t", fp]; } @@ -344,7 +345,7 @@ NSInteger kBlobAsImageFile = 4; [image release]; } else { NSString *noData = @""; - [noData writeToFile:fp atomically:NO]; + [noData writeToFile:fp atomically:NO encoding:NSUTF8StringEncoding error:NULL]; } [result appendFormat:@"\"%@\",", fp]; } @@ -792,7 +793,7 @@ NSInteger kBlobAsImageFile = 4; // Otherwise, ensure the cell is represented as a short string if ([contentString isKindOfClass:[NSData class]]) { contentString = [contentString shortStringRepresentationUsingEncoding:[mySQLConnection stringEncoding]]; - } else if ([contentString length] > 500) { + } else if ([(NSString *)contentString length] > 500) { contentString = [contentString substringToIndex:500]; } @@ -914,10 +915,10 @@ NSInteger kBlobAsImageFile = 4; NSMutableIndexSet *selection = [NSMutableIndexSet indexSet]; NSInteger rows = [[self delegate] numberOfRowsInTableView:self]; - NSUInteger i; + NSInteger i; if(rows > 0) { for(NSString* idx in rowIndices) { - i = [idx longLongValue]; + i = [idx integerValue]; if(i >= 0 && i < rows) [selection addIndex:i]; } @@ -969,7 +970,7 @@ NSInteger kBlobAsImageFile = 4; - (BOOL) control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { - NSUInteger row, column; + NSInteger row, column; row = [self editedRow]; column = [self editedColumn]; @@ -1033,7 +1034,7 @@ NSInteger kBlobAsImageFile = 4; if([self isCellComplex]) return NO; - NSUInteger newRow = row+1; + NSInteger newRow = row+1; if (newRow>=[[self delegate] numberOfRowsInTableView:self]) return YES; //check if we're already at the end of the list [[control window] makeFirstResponder:control]; @@ -1041,7 +1042,7 @@ NSInteger kBlobAsImageFile = 4; [[self delegate] saveRowToTable]; if (newRow>=[[self delegate] numberOfRowsInTableView:self]) return YES; //check again. saveRowToTable could reload the table and change the number of rows - if (tableStorage && column>=[tableStorage columnCount]) return YES; //the column count could change too + if (tableStorage && column >= (NSInteger)[tableStorage columnCount]) return YES; //the column count could change too [self selectRowIndexes:[NSIndexSet indexSetWithIndex:newRow] byExtendingSelection:NO]; [self editColumn:column row:newRow withEvent:nil select:YES]; @@ -1057,14 +1058,14 @@ NSInteger kBlobAsImageFile = 4; return NO; if (row==0) return YES; //already at the beginning of the list - NSUInteger newRow = row-1; + NSInteger newRow = row-1; [[control window] makeFirstResponder:control]; if([[self delegate] isKindOfClass:[SPTableContent class]] && ![self isCellEditingMode] && [[self delegate] respondsToSelector:@selector(saveRowToTable)]) [[self delegate] saveRowToTable]; if (newRow>=[[self delegate] numberOfRowsInTableView:self]) return YES; // saveRowToTable could reload the table and change the number of rows - if (tableStorage && column>=[tableStorage columnCount]) return YES; //the column count could change too + if (tableStorage && column >= (NSInteger)[tableStorage columnCount]) return YES; //the column count could change too [self selectRowIndexes:[NSIndexSet indexSetWithIndex:newRow] byExtendingSelection:NO]; [self editColumn:column row:newRow withEvent:nil select:YES]; @@ -1115,7 +1116,7 @@ NSInteger kBlobAsImageFile = 4; NSInteger idx = [sender tag] - 1000000; NSString *infoPath = nil; NSArray *bundleItems = [[NSApp delegate] bundleItemsForScope:SPBundleScopeDataTable]; - if(idx >=0 && idx < [bundleItems count]) { + if(idx >=0 && idx < (NSInteger)[bundleItems count]) { infoPath = [[bundleItems objectAtIndex:idx] objectForKey:SPBundleInternPathToFileKey]; } else { if([sender tag] == 0 && [[sender toolTip] length]) { @@ -1143,7 +1144,7 @@ NSInteger kBlobAsImageFile = 4; if (cmdData) [cmdData release]; return; } else { - if([cmdData objectForKey:SPBundleFileCommandKey] && [[cmdData objectForKey:SPBundleFileCommandKey] length]) { + if([cmdData objectForKey:SPBundleFileCommandKey] && [(NSString *)[cmdData objectForKey:SPBundleFileCommandKey] length]) { NSString *cmd = [cmdData objectForKey:SPBundleFileCommandKey]; NSString *inputAction = @""; @@ -1241,7 +1242,7 @@ NSInteger kBlobAsImageFile = 4; NSArray *columns = [self tableColumns]; NSUInteger numColumns = [columns count]; NSUInteger *columnMappings = malloc(numColumns * sizeof(NSUInteger)); - NSInteger c; + NSUInteger c; for ( c = 0; c < numColumns; c++ ) columnMappings[c] = [[NSArrayObjectAtIndex(columns, c) identifier] unsignedIntValue]; @@ -1306,7 +1307,7 @@ NSInteger kBlobAsImageFile = 4; [[NSFileManager defaultManager] removeItemAtPath:bundleInputFilePath error:nil]; NSString *action = SPBundleOutputActionNone; - if([cmdData objectForKey:SPBundleFileOutputActionKey] && [[cmdData objectForKey:SPBundleFileOutputActionKey] length]) + if([cmdData objectForKey:SPBundleFileOutputActionKey] && [(NSString *)[cmdData objectForKey:SPBundleFileOutputActionKey] length]) action = [[cmdData objectForKey:SPBundleFileOutputActionKey] lowercaseString]; // Redirect due exit code @@ -1370,10 +1371,10 @@ NSInteger kBlobAsImageFile = 4; } } if(!correspondingWindowFound) { - SPBundleHTMLOutputController *c = [[SPBundleHTMLOutputController alloc] init]; - [c setWindowUUID:[cmdData objectForKey:SPBundleFileUUIDKey]]; - [c displayHTMLContent:output withOptions:nil]; - [[NSApp delegate] addHTMLOutputController:c]; + SPBundleHTMLOutputController *bundleController = [[SPBundleHTMLOutputController alloc] init]; + [bundleController setWindowUUID:[cmdData objectForKey:SPBundleFileUUIDKey]]; + [bundleController displayHTMLContent:output withOptions:nil]; + [[NSApp delegate] addHTMLOutputController:bundleController]; } } } diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index d582b836..02b59ebd 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -61,6 +61,7 @@ #import "SPConnectionDelegate.h" #import "SPWindowController.h" #import "SPFileHandle.h" +#import "SPConnectionHandler.h" @interface SPDatabaseDocument (PrivateAPI) diff --git a/Source/SPDotExporter.m b/Source/SPDotExporter.m index 55ab645b..e0c1a294 100644 --- a/Source/SPDotExporter.m +++ b/Source/SPDotExporter.m @@ -27,6 +27,7 @@ #import "SPFileHandle.h" #import "SPTableData.h" #import "SPExportUtilities.h" +#import "SPExportFile.h" @implementation SPDotExporter @@ -105,7 +106,7 @@ NSMutableArray *fkInfo = [[NSMutableArray alloc] init]; // Process the tables - for (NSInteger i = 0; i < [[self dotExportTables] count]; i++) + for (NSUInteger i = 0; i < [[self dotExportTables] count]; i++) { // Check for cancellation flag diff --git a/Source/SPEditorPreferencePane.m b/Source/SPEditorPreferencePane.m index 0cae1217..51ffacf6 100644 --- a/Source/SPEditorPreferencePane.m +++ b/Source/SPEditorPreferencePane.m @@ -757,7 +757,7 @@ static NSString *SPDefaultExportColourSchemeName = @"MyTheme"; nil, NSLocalizedString(@"Unsaved Theme", @"unsaved theme message"), NSLocalizedString(@"The current color theme is unsaved. Do you want to proceed without saving it?", @"unsaved theme informative message"), - checkForUnsavedThemeSheetStatus + &checkForUnsavedThemeSheetStatus ); return (checkForUnsavedThemeSheetStatus == NSAlertDefaultReturn); diff --git a/Source/SPEditorTokens.l b/Source/SPEditorTokens.l index 67491351..33c70149 100644 --- a/Source/SPEditorTokens.l +++ b/Source/SPEditorTokens.l @@ -46,6 +46,7 @@ size_t yyuoffset, yyuleng; %} %option noyywrap %option nounput +%option noinput %option case-insensitive s [ \t\n\r]+ diff --git a/Source/SPExportController.h b/Source/SPExportController.h index ff5c65ba..f6503cb2 100644 --- a/Source/SPExportController.h +++ b/Source/SPExportController.h @@ -255,4 +255,6 @@ - (IBAction)toggleSQLIncludeContent:(id)sender; - (IBAction)toggleSQLIncludeDropSyntax:(id)sender; +- (void)savePanelDidEnd:(NSSavePanel *)panel returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; + @end diff --git a/Source/SPExportController.m b/Source/SPExportController.m index 04138c75..2780df54 100644 --- a/Source/SPExportController.m +++ b/Source/SPExportController.m @@ -246,29 +246,29 @@ static const NSString *SPTableViewDropColumnID = @"drop"; */ - (IBAction)export:(id)sender { - SPExportType exportType = SPSQLExport; - SPExportSource exportSource = SPTableExport; + SPExportType selectedExportType = SPSQLExport; + SPExportSource selectedExportSource = SPTableExport; - NSArray *tables = [tablesListInstance selectedTableItems]; + NSArray *selectedTables = [tablesListInstance selectedTableItems]; BOOL isCustomQuerySelected = ([tableDocumentInstance isCustomQuerySelected] && ([[customQueryInstance currentResult] count] > 1)); BOOL isContentSelected = ([[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:SPMainToolbarTableContent] && ([[tableContentInstance currentResult] count] > 1)); if (isContentSelected) { - tables = nil; - exportType = SPCSVExport; - exportSource = SPFilteredExport; + selectedTables = nil; + selectedExportType = SPCSVExport; + selectedExportSource = SPFilteredExport; } else if (isCustomQuerySelected) { - tables = nil; - exportType = SPCSVExport; - exportSource = SPQueryExport; + selectedTables = nil; + selectedExportType = SPCSVExport; + selectedExportSource = SPQueryExport; } else { - tables = ([tables count]) ? tables : nil; + selectedTables = ([selectedTables count]) ? selectedTables : nil; } - [self exportTables:tables asFormat:exportType usingSource:exportSource]; + [self exportTables:selectedTables asFormat:selectedExportType usingSource:selectedExportSource]; // Ensure UI validation [self switchInput:exportInputPopUpButton]; diff --git a/Source/SPExportFile.m b/Source/SPExportFile.m index 4ccfa16c..10570a71 100644 --- a/Source/SPExportFile.m +++ b/Source/SPExportFile.m @@ -104,6 +104,7 @@ if ([fileManager fileExistsAtPath:[self exportFilePath]]) { return [[NSFileManager defaultManager] removeItemAtPath:[self exportFilePath] error:nil]; } + return NO; } /** @@ -136,10 +137,9 @@ // The file path must be set before attempting to create the file handle if ((![self exportFilePath]) || ([[self exportFilePath] length] == 0)) { [NSException raise:NSInternalInconsistencyException - format:@"Attempting to create an export filehandle for a path that is either not set or has zero length: %@." - arguments:[self exportFilePath]]; + format:@"Attempting to create an export filehandle for a path that is either not set or has zero length: %@." , [self exportFilePath]]; - return; + return SPExportFileHandleFailed; } NSFileManager *fileManager = [NSFileManager defaultManager]; diff --git a/Source/SPExportFileUtilities.h b/Source/SPExportFileUtilities.h index f0a2c054..156fbcb1 100644 --- a/Source/SPExportFileUtilities.h +++ b/Source/SPExportFileUtilities.h @@ -37,7 +37,7 @@ @interface SPExportController (SPExportFileUtilities) - (void)writeCSVHeaderToExportFile:(SPExportFile *)file; -- (void)writeXMLHeaderToexportFile:(SPExportFile *)file; +- (void)writeXMLHeaderToExportFile:(SPExportFile *)file; - (void)errorCreatingExportFileHandles:(NSArray *)files; diff --git a/Source/SPExportFileUtilities.m b/Source/SPExportFileUtilities.m index d39aee17..efa824f8 100644 --- a/Source/SPExportFileUtilities.m +++ b/Source/SPExportFileUtilities.m @@ -139,15 +139,10 @@ } } - // Compare the count of exported files to the count of failed files - NSUInteger totalFilesExported = [exportFiles count]; - // If all the files failed, show a simplified export dialog - // If only some of the files failed, show an export dialog with the option to ignore the failed files. - // For single files, show a dialog very close to the OS dialog if (i > 0) { diff --git a/Source/SPExportFilenameUtilities.m b/Source/SPExportFilenameUtilities.m index 7ce7b3a2..a485eb6b 100644 --- a/Source/SPExportFilenameUtilities.m +++ b/Source/SPExportFilenameUtilities.m @@ -24,6 +24,8 @@ // More info at <http://code.google.com/p/sequel-pro/> #import "SPExportFilenameUtilities.h" +#import "SPTablesList.h" +#import "SPDatabaseViewController.h" @implementation SPExportController (SPExportFilenameUtilities) diff --git a/Source/SPExportUtilities.m b/Source/SPExportUtilities.m index 543beb67..447d4948 100644 --- a/Source/SPExportUtilities.m +++ b/Source/SPExportUtilities.m @@ -38,8 +38,7 @@ void SPExportDelegateConformsToProtocol(NSObject *delegate, Protocol *protocol) // Check that the the supplied delegate conforms to the supplied protocol, if not throw an exception if (![delegate conformsToProtocol:protocol]) { [NSException raise:@"Protocol Conformance" - format:@"The supplied delegate does not conform to the protocol '%@'." - arguments:NSStringFromProtocol(protocol)]; + format:@"The supplied delegate does not conform to the protocol '%@'.", NSStringFromProtocol(protocol)]; } } diff --git a/Source/SPExporter.m b/Source/SPExporter.m index 3be120b0..27cabf87 100644 --- a/Source/SPExporter.m +++ b/Source/SPExporter.m @@ -25,6 +25,7 @@ #import "SPExporter.h" #import "SPExportFile.h" +#import "SPFileHandle.h" @implementation SPExporter diff --git a/Source/SPFavoriteNode.m b/Source/SPFavoriteNode.m index a70823f7..2d124756 100644 --- a/Source/SPFavoriteNode.m +++ b/Source/SPFavoriteNode.m @@ -76,17 +76,13 @@ static NSString *SPFavoriteNodeKey = @"SPFavoriteNode"; - (id)initWithCoder:(NSCoder *)coder { - if ((self = [super initWithCoder:coder])) { - [self setNodeFavorite:[coder decodeObjectForKey:SPFavoriteNodeKey]]; - } + [self setNodeFavorite:[coder decodeObjectForKey:SPFavoriteNodeKey]]; return self; } - (void)encodeWithCoder:(NSCoder *)coder -{ - [super encodeWithCoder:coder]; - +{ [coder encodeObject:[self nodeFavorite] forKey:SPFavoriteNodeKey]; } diff --git a/Source/SPFieldEditorController.h b/Source/SPFieldEditorController.h index b7e499cf..1f3b6ea8 100644 --- a/Source/SPFieldEditorController.h +++ b/Source/SPFieldEditorController.h @@ -171,7 +171,10 @@ - (IBAction)closeEditSheet:(id)sender; - (IBAction)openEditSheet:(id)sender; +- (void)openPanelDidEnd:(NSOpenPanel *)panel returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; - (IBAction)saveEditSheet:(id)sender; +- (void)savePanelDidEnd:(NSSavePanel *)panel returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; +- (void)sheetDidEnd:(id)sheet returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo; - (IBAction)dropImage:(id)sender; - (IBAction)segmentControllerChanged:(id)sender; - (IBAction)quickLookFormatButton:(id)sender; @@ -201,6 +204,7 @@ - (void)textViewDidChangeSelection:(NSNotification *)notification; - (void)setWasCutPaste; +- (void)setAllowedUndo; - (void)setDoGroupDueToChars; @end diff --git a/Source/SPFieldEditorController.m b/Source/SPFieldEditorController.m index 5075ffaf..73fafe39 100644 --- a/Source/SPFieldEditorController.m +++ b/Source/SPFieldEditorController.m @@ -32,6 +32,13 @@ #import "SPCopyTable.h" #include <objc/objc-runtime.h> +@interface SPFieldEditorController (SPFieldEditorControllerDelegate) + +- (void)processFieldEditorResult:(id)data contextInfo:(NSDictionary*)contextInfo; + +@end + + @implementation SPFieldEditorController @synthesize editedFieldInfo; @@ -72,11 +79,11 @@ NSMenu *menu = [editSheetQuickLookButton menu]; [menu setAutoenablesItems:NO]; - NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Interpret data as:", @"Interpret data as:") action:NULL keyEquivalent:@""]; - [item setTag:1]; - [item setEnabled:NO]; - [menu addItem:item]; - [item release]; + NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Interpret data as:", @"Interpret data as:") action:NULL keyEquivalent:@""]; + [menuItem setTag:1]; + [menuItem setEnabled:NO]; + [menu addItem:menuItem]; + [menuItem release]; NSUInteger tag = 2; // Load default QL types @@ -94,11 +101,11 @@ NSLog(@"Error while reading 'EditorQuickLookTypes.plist':\n%@\n%@", [readError localizedDescription], convError); if(defaultQLTypes != nil && [defaultQLTypes objectForKey:@"QuickLookTypes"]) { for(id type in [defaultQLTypes objectForKey:@"QuickLookTypes"]) { - NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[NSString stringWithString:[type objectForKey:@"MenuLabel"]] action:NULL keyEquivalent:@""]; - [item setTag:tag]; - [item setAction:@selector(quickLookFormatButton:)]; - [menu addItem:item]; - [item release]; + NSMenuItem *aMenuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithString:[type objectForKey:@"MenuLabel"]] action:NULL keyEquivalent:@""]; + [aMenuItem setTag:tag]; + [aMenuItem setAction:@selector(quickLookFormatButton:)]; + [menu addItem:aMenuItem]; + [aMenuItem release]; tag++; [qlTypesItems addObject:type]; } @@ -106,11 +113,11 @@ // Load user-defined QL types if([prefs objectForKey:SPQuickLookTypes]) { for(id type in [prefs objectForKey:SPQuickLookTypes]) { - NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[NSString stringWithString:[type objectForKey:@"MenuLabel"]] action:NULL keyEquivalent:@""]; - [item setTag:tag]; - [item setAction:@selector(quickLookFormatButton:)]; - [menu addItem:item]; - [item release]; + NSMenuItem *aMenuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithString:[type objectForKey:@"MenuLabel"]] action:NULL keyEquivalent:@""]; + [aMenuItem setTag:tag]; + [aMenuItem setAction:@selector(quickLookFormatButton:)]; + [menu addItem:aMenuItem]; + [aMenuItem release]; tag++; [qlTypesItems addObject:type]; } @@ -212,8 +219,8 @@ [bitSheetFieldName setStringValue:label]; // Init according bit check boxes - NSInteger i = 0; - NSInteger maxBit = (maxTextLength > 64) ? 64 : maxTextLength; + NSUInteger i = 0; + NSUInteger maxBit = (NSUInteger)((maxTextLength > 64) ? 64 : maxTextLength); if([bitSheetNULLButton state] == NSOffState) for( i = 0; i<maxBit; i++ ) [[self valueForKeyPath:[NSString stringWithFormat:@"bitSheetBitButton%ld", i]] @@ -315,7 +322,7 @@ [editTextScrollView setHidden:YES]; [editSheetSegmentControl setSelectedSegment:2]; } else if ([sheetEditData isKindOfClass:[MCPGeometryData class]]) { - SPGeometryDataView *v = [[[SPGeometryDataView alloc] initWithCoordinates:[sheetEditData coordinates] targetDimension:2000.0] autorelease]; + SPGeometryDataView *v = [[[SPGeometryDataView alloc] initWithCoordinates:[sheetEditData coordinates] targetDimension:2000.0f] autorelease]; image = [v thumbnailImage]; stringValue = [[sheetEditData wktString] retain]; [hexTextView setString:@""]; @@ -544,7 +551,7 @@ // and suppress closing the sheet if(sender == editSheetOkButton) { if (maxTextLength > 0 && [[editTextView textStorage] length] > maxTextLength && ![[[editTextView textStorage] string] isEqualToString:[prefs objectForKey:SPNullValue]]) { - [editTextView setSelectedRange:NSMakeRange(maxTextLength, [[editTextView textStorage] length] - maxTextLength)]; + [editTextView setSelectedRange:NSMakeRange((NSUInteger)maxTextLength, [[editTextView textStorage] length] - (NSUInteger)maxTextLength)]; [editTextView scrollRangeToVisible:NSMakeRange([editTextView selectedRange].location,0)]; [SPTooltip showWithObject:[NSString stringWithFormat:NSLocalizedString(@"Text is too long. Maximum text length is set to %llu.", @"Text is too long. Maximum text length is set to %llu."), maxTextLength]]; return; @@ -670,7 +677,7 @@ } else if (editImage != nil){ - SPGeometryDataView *v = [[[SPGeometryDataView alloc] initWithCoordinates:[sheetEditData coordinates] targetDimension:2000.0] autorelease]; + SPGeometryDataView *v = [[[SPGeometryDataView alloc] initWithCoordinates:[sheetEditData coordinates] targetDimension:2000.0f] autorelease]; NSData *pdf = [v pdfData]; if(pdf) [pdf writeToFile:fileName atomically:YES]; @@ -715,7 +722,7 @@ */ - (IBAction)quickLookFormatButton:(id)sender { - if(qlTypes != nil && [[qlTypes objectForKey:@"QuickLookTypes"] count] > [sender tag] - 2) { + if(qlTypes != nil && [[qlTypes objectForKey:@"QuickLookTypes"] count] > (NSUInteger)[sender tag] - 2) { NSDictionary *type = [[qlTypes objectForKey:@"QuickLookTypes"] objectAtIndex:[sender tag] - 2]; [self invokeQuickLookOfType:[type objectForKey:@"Extension"] treatAsText:([[type objectForKey:@"treatAsText"] integerValue])]; } @@ -915,7 +922,7 @@ * * @return It returns as NSURL the temporarily created file. */ -- (id)previewPanel:(id)panel previewItemAtIndex:(NSInteger)index +- (id)previewPanel:(id)panel previewItemAtIndex:(NSInteger)anIndex { if(tmpFileName) return [NSURL fileURLWithPath:tmpFileName]; @@ -1047,8 +1054,8 @@ */ - (void)updateBitSheet { - NSInteger i = 0; - NSInteger maxBit = (maxTextLength > 64) ? 64 : maxTextLength; + NSUInteger i = 0; + NSUInteger maxBit = (NSUInteger)((maxTextLength > 64) ? 64 : maxTextLength); if([bitSheetNULLButton state] == NSOnState) { if ( sheetEditData != nil ) { @@ -1074,7 +1081,7 @@ for(i=0; i<maxBit; i++) { if([[self valueForKeyPath:[NSString stringWithFormat:@"bitSheetBitButton%ld", i]] state] == NSOnState) { intValue += bitValue; - [bitString replaceCharactersInRange:NSMakeRange(maxTextLength-i-1, 1) withString:@"1"]; + [bitString replaceCharactersInRange:NSMakeRange((NSUInteger)maxTextLength-i-1, 1) withString:@"1"]; } bitValue <<= 1; } @@ -1097,9 +1104,9 @@ - (IBAction)bitSheetOperatorButtonWasClicked:(id)sender { - NSInteger i = 0; - NSInteger aBit; - NSInteger maxBit = (maxTextLength > 64) ? 64 : maxTextLength; + NSUInteger i = 0; + NSUInteger aBit; + NSUInteger maxBit = (NSUInteger)((maxTextLength > 64) ? 64 : maxTextLength); switch([sender tag]) { case 0: // all to 1 @@ -1159,8 +1166,8 @@ - (IBAction)setToNull:(id)sender { - NSInteger i; - NSInteger maxBit = (maxTextLength > 64) ? 64 : maxTextLength; + NSUInteger i; + NSUInteger maxBit = (NSUInteger)((maxTextLength > 64) ? 64 : maxTextLength); if([sender state] == NSOnState) { for(i=0; i<maxBit; i++) @@ -1202,10 +1209,10 @@ if (object == bitSheetIntegerTextField) { - NSInteger i = 0; - NSInteger maxBit = (maxTextLength > 64) ? 64 : maxTextLength; + NSUInteger i = 0; + NSUInteger maxBit = (NSUInteger)((maxTextLength > 64) ? 64 : maxTextLength); - NSUInteger intValue = strtoull([[bitSheetIntegerTextField stringValue] UTF8String], NULL, 0); + NSUInteger intValue = (NSUInteger)strtoull([[bitSheetIntegerTextField stringValue] UTF8String], NULL, 0); for(i=0; i<maxBit; i++) [[self valueForKeyPath:[NSString stringWithFormat:@"bitSheetBitButton%ld", i]] setState:NSOffState]; @@ -1224,10 +1231,10 @@ } else if (object == bitSheetHexTextField) { - NSInteger i = 0; - NSInteger maxBit = (maxTextLength > 64) ? 64 : maxTextLength; + NSUInteger i = 0; + NSUInteger maxBit = (NSUInteger)((maxTextLength > 64) ? 64 : maxTextLength); - NSUInteger intValue; + unsigned long long intValue; [[NSScanner scannerWithString:[bitSheetHexTextField stringValue]] scanHexLongLong: &intValue]; @@ -1273,7 +1280,8 @@ if (r.location==NSNotFound) return NO; // Length checking while using the Input Manager (eg for Japanese) - if ([textView hasMarkedText] && (maxTextLength > 0) && (r.location < maxTextLength)) + if ([textView hasMarkedText] && (maxTextLength > 0) && (r.location < maxTextLength)) { + // User tries to insert a new char but max text length was already reached - return NO if( !r.length && ([[textView textStorage] length] >= maxTextLength) ) { [SPTooltip showWithObject:[NSString stringWithFormat:NSLocalizedString(@"Maximum text length is set to %llu.", @"Maximum text length is set to %llu."), maxTextLength]]; @@ -1288,20 +1296,21 @@ // that part which won't be saved will be hilited if user pressed the OK button. else if (r.location < maxTextLength) return YES; + } // Calculate the length of the text after the change. newLength=[[[textView textStorage] string] length]+[replacementString length]-r.length; // If it's too long, disallow the change but try // to insert a text chunk partially to maxTextLength. - if (newLength > maxTextLength) { + if ((NSUInteger)newLength > maxTextLength) { if((maxTextLength-[[textView textStorage] length]+[textView selectedRange].length) <= [replacementString length]) { if(maxTextLength-[[textView textStorage] length]+[textView selectedRange].length) [SPTooltip showWithObject:[NSString stringWithFormat:NSLocalizedString(@"Maximum text length is set to %llu. Inserted text was truncated.", @"Maximum text length is set to %llu. Inserted text was truncated."), maxTextLength]]; else [SPTooltip showWithObject:[NSString stringWithFormat:NSLocalizedString(@"Maximum text length is set to %llu.", @"Maximum text length is set to %llu."), maxTextLength]]; - [textView insertText:[replacementString substringToIndex:maxTextLength-[[textView textStorage] length]+[textView selectedRange].length]]; + [textView insertText:[replacementString substringToIndex:(NSUInteger)maxTextLength-[[textView textStorage] length]+[textView selectedRange].length]]; } return NO; } diff --git a/Source/SPFieldMapperController.h b/Source/SPFieldMapperController.h index 813a3b3e..69e9fac4 100644 --- a/Source/SPFieldMapperController.h +++ b/Source/SPFieldMapperController.h @@ -24,7 +24,7 @@ #import <MCPKit/MCPKit.h> -@class SPTextView, SPTableView; +@class SPTextView, SPTableView, SPTablesList; @interface SPFieldMapperController : NSWindowController { @@ -89,7 +89,7 @@ id theDelegate; id customQueryInstance; id fieldMappingImportArray; - id tablesListInstance; + SPTablesList *tablesListInstance; id databaseDataInstance; NSInteger fieldMappingCurrentRow; diff --git a/Source/SPFieldMapperController.m b/Source/SPFieldMapperController.m index 7079cc13..de22b485 100644 --- a/Source/SPFieldMapperController.m +++ b/Source/SPFieldMapperController.m @@ -289,7 +289,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; - (NSArray*)fieldMappingGlobalValueArray { NSMutableArray *globals = [NSMutableArray array]; - for(NSInteger i=0; i < [fieldMappingGlobalValues count]; i++) { + for(NSUInteger i=0; i < [fieldMappingGlobalValues count]; i++) { id glob = NSArrayObjectAtIndex(fieldMappingGlobalValues, i); if([NSArrayObjectAtIndex(fieldMappingGlobalValuesSQLMarked, i) boolValue] || glob == [NSNull null]) [globals addObject:glob]; @@ -490,7 +490,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; { NSArray *allTableNames = [tablesListInstance allTableNames]; - NSInteger i; + NSUInteger i; // Remove all indexes for new columns [toBeEditedRowIndexes removeAllIndexes]; @@ -605,7 +605,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; // Set the first n operators to doImport if([fieldMappingImportArray count]) { - NSInteger possibleImports = ([NSArrayObjectAtIndex(fieldMappingImportArray, 0) count] > [fieldMappingTableColumnNames count]) ? [fieldMappingTableColumnNames count] : [NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]; + NSUInteger possibleImports = ([NSArrayObjectAtIndex(fieldMappingImportArray, 0) count] > [fieldMappingTableColumnNames count]) ? [fieldMappingTableColumnNames count] : [NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]; for(i=0; i < possibleImports; i++) [fieldMappingOperatorArray replaceObjectAtIndex:i withObject:doImport]; } @@ -632,7 +632,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; - (IBAction)changeImportMethod:(id)sender { - NSInteger i; + NSUInteger i; [onupdateTextView setBackgroundColor:[NSColor lightGrayColor]]; [onupdateTextView setEditable:NO]; @@ -697,7 +697,8 @@ static NSString *SPTableViewSqlColumnID = @"sql"; if(![fieldMappingImportArray count]) return; - NSInteger i; + NSUInteger i; + NSInteger j; NSInteger possibleImports = ([NSArrayObjectAtIndex(fieldMappingImportArray, 0) count] > [fieldMappingTableColumnNames count]) ? [fieldMappingTableColumnNames count] : [NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]; if(possibleImports < 1) return; @@ -709,16 +710,16 @@ static NSString *SPTableViewSqlColumnID = @"sql"; switch([[alignByPopup selectedItem] tag]) { case 0: // file order - for(i=0; i<possibleImports; i++) { - [fieldMappingArray replaceObjectAtIndex:i withObject:[NSNumber numberWithInteger:i]]; - [fieldMappingOperatorArray replaceObjectAtIndex:i withObject:doImport]; + for(j=0; j<possibleImports; j++) { + [fieldMappingArray replaceObjectAtIndex:j withObject:[NSNumber numberWithInteger:j]]; + [fieldMappingOperatorArray replaceObjectAtIndex:j withObject:doImport]; } break; case 1: // reversed file order possibleImports--; - for(i=possibleImports; i>=0; i--) { - [fieldMappingArray replaceObjectAtIndex:possibleImports-i withObject:[NSNumber numberWithInteger:i]]; - [fieldMappingOperatorArray replaceObjectAtIndex:possibleImports-i withObject:doImport]; + for(j=possibleImports; j>=0; j--) { + [fieldMappingArray replaceObjectAtIndex:possibleImports-j withObject:[NSNumber numberWithInteger:j]]; + [fieldMappingOperatorArray replaceObjectAtIndex:possibleImports-j withObject:doImport]; } break; case 2: // try to align header and table target field names via Levenshtein distance @@ -750,7 +751,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; // enable/disable buttons [rowDownButton setEnabled:(fieldMappingCurrentRow != 0)]; - [rowUpButton setEnabled:(fieldMappingCurrentRow != ([fieldMappingImportArray count]-1))]; + [rowUpButton setEnabled:(fieldMappingCurrentRow != (NSInteger)([fieldMappingImportArray count]-1))]; } - (IBAction)changeHasHeaderCheckbox:(id)sender @@ -833,7 +834,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; columnCounter = 0; for(id col in row) { if(col && col != [NSNull null]) { - if([col isKindOfClass:[NSString class]] && maxLengthOfSourceColumns[columnCounter] < [col length]) { + if([col isKindOfClass:[NSString class]] && maxLengthOfSourceColumns[columnCounter] < (NSInteger)[col length]) { maxLengthOfSourceColumns[columnCounter] = [col length]; } if(typeOfSourceColumns[columnCounter] == 1) { @@ -908,7 +909,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; } // Update the table view - NSInteger i; + NSUInteger i; fieldMappingCurrentRow = 0; if (fieldMappingArray) [fieldMappingArray release], fieldMappingArray = nil; [self setupFieldMappingArray]; @@ -999,13 +1000,13 @@ static NSString *SPTableViewSqlColumnID = @"sql"; - (IBAction)setAllTypesTo:(id)sender { NSInteger row = [fieldMapperTableView selectedRow]; - if(row<0 || row>=[fieldMappingTableColumnNames count]) { + if(row<0 || row>=(NSInteger)([fieldMappingTableColumnNames count])) { NSBeep(); return; } NSString *type = [[fieldMappingTableTypes objectAtIndex:row] retain]; [fieldMappingTableTypes removeAllObjects]; - NSInteger i; + NSUInteger i; for(i=0; i<[fieldMappingTableColumnNames count]; i++) [fieldMappingTableTypes addObject:type]; [fieldMapperTableView reloadData]; @@ -1287,9 +1288,9 @@ static NSString *SPTableViewSqlColumnID = @"sql"; if([globalValuesTableView numberOfSelectedRows] != 1 || [globalValuesTableView editedRow] < 0) return; - NSInteger index = [sender indexOfItem:[sender selectedItem]] - 4; + NSInteger selectedIndex = [sender indexOfItem:[sender selectedItem]] - 4; if([[[NSApp keyWindow] firstResponder] respondsToSelector:@selector(insertText:)]) - [[[NSApp keyWindow] firstResponder] insertText:[NSString stringWithFormat:@"$%ld", index]]; + [[[NSApp keyWindow] firstResponder] insertText:[NSString stringWithFormat:@"$%ld", selectedIndex]]; } @@ -1386,10 +1387,10 @@ static NSString *SPTableViewSqlColumnID = @"sql"; // Create a distance matrix for each file-table name // distance will be calculated by using Levenshtein distance minus common prefix and suffix length // and minus the length of a fuzzy regex search for a common sequence of characters - NSInteger i,j; + NSUInteger i,j; NSMutableArray *distMatrix = [NSMutableArray array]; for(i=0; i < [tableHeaderNames count]; i++) { - CGFloat dist = 1e6; + CGFloat dist = 1e6f; for(j=0; j < [fileHeaderNames count]; j++) { id fileHeaderName = NSArrayObjectAtIndex(fileHeaderNames,j); if([fileHeaderName isKindOfClass:[NSNull class]] || [fileHeaderName isSPNotLoaded]) continue; @@ -1403,7 +1404,6 @@ static NSString *SPTableViewSqlColumnID = @"sql"; dist -= [[tableHeadName commonPrefixWithString:headerName options:NSCaseInsensitiveSearch|NSBackwardsSearch] length]; NSMutableString *fuzzyRegexp = [[NSMutableString alloc] initWithCapacity:3]; - NSInteger i; unichar c; for(i=0; i<[headerName length]; i++) { @@ -1419,7 +1419,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; } else { // Levenshtein distance == 0 means that both names are equal set dist to // a large negative number since dist can be negative due to search for in common chars - dist = -1e6; + dist = -1e6f; } [distMatrix addObject:[NSDictionary dictionaryWithObjectsAndKeys: @@ -1439,7 +1439,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; NSMutableArray *matchedFile = [NSMutableArray array]; NSMutableArray *matchedTable = [NSMutableArray array]; - NSInteger cnt = 0; + NSUInteger cnt = 0; for(NSDictionary* m in distMatrix) { if(![matchedFile containsObject:[m objectForKey:@"file"]] && ![matchedTable containsObject:[m objectForKey:@"table"]]) { @@ -1466,7 +1466,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; */ - (void)setupFieldMappingArray { - NSInteger i, value; + NSUInteger i, value; if (!fieldMappingArray) { fieldMappingArray = [[NSMutableArray alloc] init]; @@ -1478,7 +1478,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; value = 0; } - [fieldMappingArray addObject:[NSNumber numberWithInteger:value]]; + [fieldMappingArray addObject:[NSNumber numberWithUnsignedInteger:value]]; } } @@ -1490,7 +1490,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; */ - (void)updateFieldMappingButtonCell { - NSInteger i; + NSUInteger i; if([fieldMappingImportArray count] == 0) return; [fieldMappingButtonOptions setArray:[fieldMappingImportArray objectAtIndex:fieldMappingCurrentRow]]; for (i = 0; i < [fieldMappingButtonOptions count]; i++) { @@ -1503,8 +1503,8 @@ static NSString *SPTableViewSqlColumnID = @"sql"; } // Add global values if any - if([fieldMappingGlobalValues count]>numberOfImportColumns) - for(i; i < [fieldMappingGlobalValues count]; i++) { + if((NSInteger)[fieldMappingGlobalValues count]>numberOfImportColumns) + for( ; i < [fieldMappingGlobalValues count]; i++) { if ([NSArrayObjectAtIndex(fieldMappingGlobalValues, i) isNSNull]) [fieldMappingButtonOptions addObject:[NSString stringWithFormat:@"%i. <%@>", i+1, [prefs objectForKey:SPNullValue]]]; else @@ -1637,6 +1637,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; return [fieldMappingTableColumnNames count]; else if(aTableView == globalValuesTableView) return [fieldMappingGlobalValues count] - numberOfImportColumns; + return 0; } - (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex @@ -1653,7 +1654,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; && [self numberOfRowsInTableView:aTableView] && [fieldMappingOperatorArray count] && [fieldMappingTableColumnNames count]) { - NSInteger i; + NSUInteger i; NSNumber *globalValue = doImport; if([fieldMappingOperatorArray objectAtIndex:0] == doImport) globalValue = doNotImport; @@ -1675,7 +1676,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; if([[aTableColumn identifier] isEqualToString:SPTableViewImportValueColumnID] && [importFieldNamesHeaderSwitch state] == NSOnState) { - if([NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue]>=[NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]) + if([NSArrayObjectAtIndex(fieldMappingArray, rowIndex) unsignedIntegerValue]>=[NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]) return [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"User-defined value", @"user-defined value"), NSArrayObjectAtIndex(fieldMappingGlobalValues, [NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue])]; if(fieldMappingCurrentRow) @@ -1688,7 +1689,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; } else if([[aTableColumn identifier] isEqualToString:SPTableViewImportValueColumnID] && [importFieldNamesHeaderSwitch state] == NSOffState) { - if([NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue]>=[NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]) + if([NSArrayObjectAtIndex(fieldMappingArray, rowIndex) unsignedIntegerValue]>=[NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]) return NSArrayObjectAtIndex(fieldMappingGlobalValues, [NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue]); else return NSArrayObjectAtIndex(NSArrayObjectAtIndex(fieldMappingImportArray, fieldMappingCurrentRow), [NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue]); @@ -1766,7 +1767,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; else if ([[aTableColumn identifier] isEqualToString:SPTableViewImportValueColumnID]) { // Check if all global value was deleted, if so set assigned field as doNotImport - if([[fieldMappingArray objectAtIndex:rowIndex] intValue] >= [fieldMappingButtonOptions count]) { + if([[fieldMappingArray objectAtIndex:rowIndex] unsignedIntegerValue] >= [fieldMappingButtonOptions count]) { [fieldMappingOperatorArray replaceObjectAtIndex:rowIndex withObject:doNotImport]; } @@ -1844,16 +1845,16 @@ static NSString *SPTableViewSqlColumnID = @"sql"; if(aTableView == fieldMapperTableView) { if ([[aTableColumn identifier] isEqualToString:SPTableViewImportValueColumnID]) { - if([anObject integerValue] > [fieldMappingButtonOptions count]) { + if([anObject integerValue] > (NSInteger)[fieldMappingButtonOptions count]) { // Ignore field - set operator to doNotImport - if([anObject integerValue] == [fieldMappingButtonOptions count]+1) { + if([anObject integerValue] == (NSInteger)[fieldMappingButtonOptions count]+1) { lastDisabledCSVFieldcolumn = [fieldMappingArray objectAtIndex:rowIndex]; [fieldMappingOperatorArray replaceObjectAtIndex:rowIndex withObject:doNotImport]; [aTableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.0]; } // Ignore all field - set all operator to doNotImport - else if([anObject integerValue] == [fieldMappingButtonOptions count]+2) { - NSInteger i; + else if([anObject integerValue] == (NSInteger)[fieldMappingButtonOptions count]+2) { + NSUInteger i; NSNumber *globalValue = doNotImport; [fieldMappingOperatorArray removeAllObjects]; for(i=0; i < [fieldMappingTableColumnNames count]; i++) @@ -1861,15 +1862,15 @@ static NSString *SPTableViewSqlColumnID = @"sql"; [aTableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.0]; } // Import all field - set all operator to doImport - else if([anObject integerValue] == [fieldMappingButtonOptions count]+3) { - NSInteger i; + else if([anObject integerValue] == (NSInteger)[fieldMappingButtonOptions count]+3) { + NSUInteger i; NSNumber *globalValue = doImport; [fieldMappingOperatorArray removeAllObjects]; for(i=0; i < [fieldMappingTableColumnNames count]; i++) [fieldMappingOperatorArray addObject:globalValue]; [aTableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.0]; } - else if([[self selectedImportMethod] isEqualToString:@"UPDATE"] && [anObject integerValue] == [fieldMappingButtonOptions count]+4) { + else if([[self selectedImportMethod] isEqualToString:@"UPDATE"] && [anObject integerValue] == (NSInteger)[fieldMappingButtonOptions count]+4) { [fieldMappingOperatorArray replaceObjectAtIndex:rowIndex withObject:isEqual]; [aTableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.0]; } @@ -1981,7 +1982,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; if((!newTableMode || addGlobalSheetIsOpen) && ![toBeEditedRowIndexes containsIndex:[fieldMapperTableView selectedRow]]) return NO; - NSUInteger row, column; + NSInteger row, column; row = [fieldMapperTableView editedRow]; column = [fieldMapperTableView editedColumn]; @@ -2047,7 +2048,7 @@ static NSString *SPTableViewSqlColumnID = @"sql"; if(isCellComplex) return NO; - NSUInteger newRow = row+1; + NSInteger newRow = row+1; if (newRow>=[self numberOfRowsInTableView:fieldMapperTableView]) return YES; //check if we're already at the end of the list [[control window] makeFirstResponder:control]; @@ -2112,9 +2113,9 @@ static NSString *SPTableViewSqlColumnID = @"sql"; #pragma mark - #pragma mark NSComboBox delegates -- (id)comboBoxCell:(NSComboBoxCell *)aComboBoxCell objectValueForItemAtIndex:(NSInteger)index +- (id)comboBoxCell:(NSComboBoxCell *)aComboBoxCell objectValueForItemAtIndex:(NSInteger)anIndex { - return [defaultFieldTypesForComboBox objectAtIndex:index]; + return [defaultFieldTypesForComboBox objectAtIndex:anIndex]; } - (NSInteger)numberOfItemsInComboBoxCell:(NSComboBoxCell *)aComboBoxCell diff --git a/Source/SPFileHandle.m b/Source/SPFileHandle.m index ff583ddc..3701fc8c 100644 --- a/Source/SPFileHandle.m +++ b/Source/SPFileHandle.m @@ -55,7 +55,7 @@ */ - (id)initWithFile:(void *)theFile fromPath:(const char *)path mode:(int)mode { - if (self = [super init]) { + if ((self = [super init])) { dataWritten = NO; allDataWritten = YES; fileIsClosed = NO; @@ -215,10 +215,10 @@ if (useCompression) { if (compressionFormat == SPGzipCompression) { - theDataLength = gzread(wrappedFile, theData, length); + theDataLength = gzread(wrappedFile, theData, (unsigned)length); } else if (compressionFormat == SPBzip2Compression) { - theDataLength = BZ2_bzread(wrappedFile, theData, length); + theDataLength = BZ2_bzread(wrappedFile, theData, (int)length); } } else { @@ -426,10 +426,12 @@ switch (compressionFormat) { case SPGzipCompression: - bufferLengthWrittenOut = gzwrite(wrappedFile, [dataToBeWritten bytes], [dataToBeWritten length]); + bufferLengthWrittenOut = gzwrite(wrappedFile, [dataToBeWritten bytes], (unsigned)[dataToBeWritten length]); break; case SPBzip2Compression: - bufferLengthWrittenOut = BZ2_bzwrite(wrappedFile, [dataToBeWritten bytes], [dataToBeWritten length]); + bufferLengthWrittenOut = BZ2_bzwrite(wrappedFile, (void *)[dataToBeWritten bytes], (int)[dataToBeWritten length]); + break; + default: break; } } @@ -439,7 +441,7 @@ // Restore data to the buffer if it wasn't written out pthread_mutex_lock(&bufferLock); - if (bufferLengthWrittenOut < [dataToBeWritten length]) { + if (bufferLengthWrittenOut < (NSInteger)[dataToBeWritten length]) { if ([buffer length]) { long dataLengthToRestore = [dataToBeWritten length] - bufferLengthWrittenOut; [buffer replaceBytesInRange:NSMakeRange(0, 0) withBytes:[[dataToBeWritten subdataWithRange:NSMakeRange(bufferLengthWrittenOut, dataLengthToRestore)] bytes] length:dataLengthToRestore]; diff --git a/Source/SPGeometryDataView.h b/Source/SPGeometryDataView.h index 0fac2874..a5505e46 100644 --- a/Source/SPGeometryDataView.h +++ b/Source/SPGeometryDataView.h @@ -51,8 +51,6 @@ - (id)initWithCoordinates:(NSDictionary*)coord targetDimension:(CGFloat)targetDimension; - (id)initWithCoordinates:(NSDictionary*)coord; -- (void)setMax:(NSArray*)bbox; -- (NSPoint)normalizePoint:(NSPoint)aPoint; - (NSImage*)thumbnailImage; - (NSData*)pdfData; diff --git a/Source/SPGroupNode.m b/Source/SPGroupNode.m index 5479397b..7bf1124b 100644 --- a/Source/SPGroupNode.m +++ b/Source/SPGroupNode.m @@ -75,17 +75,13 @@ static NSString *SPGroupNodeNameKey = @"SPGroupNodeName"; - (id)initWithCoder:(NSCoder *)coder { - if ((self = [super initWithCoder:coder])) { - [self setNodeName:[coder decodeObjectForKey:SPGroupNodeNameKey]]; - } + [self setNodeName:[coder decodeObjectForKey:SPGroupNodeNameKey]]; return self; } - (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - [coder encodeObject:[self nodeName] forKey:SPGroupNodeNameKey]; } diff --git a/Source/SPIndexesController.m b/Source/SPIndexesController.m index f1cce967..12aa58e1 100644 --- a/Source/SPIndexesController.m +++ b/Source/SPIndexesController.m @@ -28,8 +28,9 @@ #import "SPServerSupport.h" #import "SPTableContent.h" #import "SPTableData.h" +#import "SPTablesList.h" #import <MCPKit/MCPKit.h> -#import "SPDatabaseDocument.h" +#import "SPDatabaseViewController.h" // Constants static const NSString *SPNewIndexIndexName = @"IndexName"; @@ -152,7 +153,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; for (NSDictionary *field in fields) { BOOL hasCompositePrimaryKey = NO; - BOOL isPrimaryKey = [field objectForKey:@"isprimarykey"]; + BOOL isPrimaryKey = [[field objectForKey:@"isprimarykey"] boolValue]; // The 'isprimarykey' key of a field is only present for single column primary keys, not composite keys, // so we need to check the indexes manually. @@ -245,7 +246,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; NSInteger index = [indexesTableView selectedRow]; - if ((index == -1) || (index > ([indexes count] - 1))) return; + if ((index == -1) || (index > ((NSInteger)[indexes count] - 1))) return; NSString *keyName = [[indexes objectAtIndex:index] objectForKey:@"Key_name"]; NSString *columnName = [[indexes objectAtIndex:index] objectForKey:@"Column_name"]; @@ -290,7 +291,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; */ - (IBAction)chooseIndexType:(id)sender { - NSInteger *indexType = [[indexTypePopUpButton selectedItem] tag]; + NSInteger indexType = [[indexTypePopUpButton selectedItem] tag]; if (indexType == SPPrimaryKeyMenuTag) { [indexNameTextField setEnabled:NO]; @@ -531,7 +532,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; for (i = ([copy count] - 1); i > 0; i--) { - NSDictionary *field = [[copy objectAtIndex:i] objectForKey:@"name"]; + NSString *field = [[copy objectAtIndex:i] objectForKey:@"name"]; for (j = 0; j < i; j++) { @@ -602,7 +603,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; NSMutableDictionary *indexDetails = [NSMutableDictionary dictionary]; [indexDetails setObject:[indexes objectAtIndex:[indexesTableView selectedRow]] forKey:@"Index"]; - [indexDetails setObject:[NSNumber numberWithBool:[contextInfo hasSuffix:@"AndForeignKey"]] forKey:@"RemoveForeignKey"]; + [indexDetails setObject:[NSNumber numberWithBool:[(NSString *)contextInfo hasSuffix:@"AndForeignKey"]] forKey:@"RemoveForeignKey"]; if ([NSThread isMainThread]) { [NSThread detachNewThreadSelector:@selector(_removeIndexUsingDetails:) toTarget:self withObject:indexDetails]; @@ -684,7 +685,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; if ([requiresLength containsObject:[[field objectForKey:@"type"] uppercaseString]]) { sizeRequired++; sizeRequiredFieldAndNotYetSet++; - if([field objectForKey:@"Size"] && [[field objectForKey:@"Size"] length]) + if([field objectForKey:@"Size"] && [(NSString *)[field objectForKey:@"Size"] length]) sizeRequiredFieldAndNotYetSet--; } } @@ -740,7 +741,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize"; // If this field type requires a length and one hasn't been specified (interface validation // should ensure this doesn't happen), then skip it. - if ([requiresLength containsObject:[columnType uppercaseString]] && (![[column objectForKey:@"Size"] length])) continue; + if ([requiresLength containsObject:[columnType uppercaseString]] && (![(NSString *)[column objectForKey:@"Size"] length])) continue; if ([column objectForKey:@"Size"] && [supportsLength containsObject:columnType]) { diff --git a/Source/SPNavigatorController.h b/Source/SPNavigatorController.h index 045e5eb4..cdac2706 100644 --- a/Source/SPNavigatorController.h +++ b/Source/SPNavigatorController.h @@ -30,7 +30,7 @@ IBOutlet id navigatorWindow; IBOutlet id infoTable; IBOutlet id searchField; - IBOutlet id syncButton; + IBOutlet NSButton *syncButton; IBOutlet id schemaStatusSplitView; IBOutlet id schema12SplitView; diff --git a/Source/SPNavigatorController.m b/Source/SPNavigatorController.m index 25eccbc8..36dddf39 100644 --- a/Source/SPNavigatorController.m +++ b/Source/SPNavigatorController.m @@ -218,7 +218,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte if(!pathArray || [pathArray count] == 0) return; NSMutableString *aKey = [NSMutableString string]; [outlineSchema2 collapseItem:[item objectForKey:[pathArray objectAtIndex:0]] collapseChildren:YES]; - for(NSInteger i=0; i < [pathArray count]; i++) { + for(NSUInteger i=0; i < [pathArray count]; i++) { [aKey appendString:[pathArray objectAtIndex:i]]; if(!item || ![item isKindOfClass:NSDictionaryClass] || ![item objectForKey:aKey]) break; item = [item objectForKey:aKey]; @@ -231,13 +231,14 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte [outlineSchema2 selectRowIndexes:[NSIndexSet indexSetWithIndex:itemIndex] byExtendingSelection:NO]; if([outlineSchema2 numberOfSelectedRows] != 1) return; [outlineSchema2 scrollRowToVisible:[outlineSchema2 selectedRow]]; - id item = [outlineSchema2 selectedItem]; + id selectedItem = [outlineSchema2 selectedItem]; // Try to scroll the view that all children of schemaPath are visible if possible NSInteger cnt = 1; - if([item isKindOfClass:NSDictionaryClass] || [item isKindOfClass:[NSArray class]]) - cnt = [item count]+1; + if([selectedItem isKindOfClass:NSDictionaryClass] || [selectedItem isKindOfClass:[NSArray class]]) + cnt = [selectedItem count]+1; NSRange r = [outlineSchema2 rowsInRect:[outlineSchema2 visibleRect]]; - NSInteger offset = (cnt > r.length) ? (r.length-2) : cnt; + NSInteger rangeLength = r.length; + NSInteger offset = (cnt > rangeLength) ? (rangeLength-2) : cnt; offset += [outlineSchema2 selectedRow]; if(offset >= [outlineSchema2 numberOfRows]) offset = [outlineSchema2 numberOfRows] - 1; @@ -259,7 +260,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte id item = schemaData; NSArray *pathArray = [selectedKey2 componentsSeparatedByString:SPUniqueSchemaDelimiter]; NSMutableString *aKey = [NSMutableString string]; - for(NSInteger i=0; i < [pathArray count]; i++) { + for(NSUInteger i=0; i < [pathArray count]; i++) { [aKey appendString:[pathArray objectAtIndex:i]]; if(![item objectForKey:aKey]) break; item = [item objectForKey:aKey]; @@ -513,8 +514,6 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte - (NSArray *)getUniqueDbIdentifierFor:(NSString*)term andConnection:(NSString*)connectionID ignoreFields:(BOOL)ignoreFields { - NSString *SPUniqueSchemaDelimiter = @"￸"; - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF ENDSWITH[c] %@", [NSString stringWithFormat:@"%@%@", SPUniqueSchemaDelimiter, [term lowercaseString]]]; NSMutableArray *result = [NSMutableArray arrayWithCapacity:5]; @@ -1050,7 +1049,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte // selected item is a field if([selectedItem isKindOfClass:[NSArray class]]) { - NSInteger i = 0; + NSUInteger i = 0; for(i=0; i<[selectedItem count]-2; i++) { NSString *item = NSArrayObjectAtIndex(selectedItem, i); if(![item length]) continue; @@ -1180,7 +1179,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { - if(aTableView == infoTable && infoArray && rowIndex < [infoArray count]) { + if(aTableView == infoTable && infoArray && (NSUInteger)rowIndex < [infoArray count]) { return [infoArray objectAtIndex:rowIndex]; } diff --git a/Source/SPPreferenceController.h b/Source/SPPreferenceController.h index 2af3271e..464a2f0c 100644 --- a/Source/SPPreferenceController.h +++ b/Source/SPPreferenceController.h @@ -78,4 +78,13 @@ */ @property (readwrite, assign) NSUInteger fontChangeTarget; + +// Toolbar item IBAction methods +- (IBAction)displayPreferencePane:(id)sender; +- (IBAction)displayTablePreferences:(id)sender; +- (IBAction)displayEditorPreferences:(id)sender; + +// Other +- (void)changeFont:(id)sender; + @end diff --git a/Source/SPPreferencesUpgrade.m b/Source/SPPreferencesUpgrade.m index 1762d6d1..bfdd0f47 100644 --- a/Source/SPPreferencesUpgrade.m +++ b/Source/SPPreferencesUpgrade.m @@ -37,8 +37,8 @@ static NSString *SPOldDefaultEncodingKey = @"DefaultEncoding"; */ void SPApplyRevisionChanges(void) { - NSInteger i; - NSInteger currentVersionNumber, recordedVersionNumber = 0; + NSUInteger i; + NSUInteger currentVersionNumber, recordedVersionNumber = 0; NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; @@ -321,11 +321,11 @@ void SPMigrateConnectionFavoritesData(void) NSInteger lastFavoriteIndex = [prefs integerForKey:@"LastFavoriteIndex"]; NSInteger defaultFavoriteIndex = [prefs integerForKey:SPDefaultFavorite]; - if ((lastFavoriteIndex >= 0) && (lastFavoriteIndex <= [favorites count])) { + if ((lastFavoriteIndex >= (NSInteger)0) && ((NSUInteger)lastFavoriteIndex <= [favorites count])) { [prefs setInteger:[[[favorites objectAtIndex:lastFavoriteIndex] objectForKey:SPFavoriteIDKey] integerValue] forKey:SPLastFavoriteID]; } - if ((defaultFavoriteIndex >= 0) && (defaultFavoriteIndex <= [favorites count])) { + if ((defaultFavoriteIndex >= (NSInteger)0) && ((NSUInteger)defaultFavoriteIndex <= [favorites count])) { [prefs setInteger:[[[favorites objectAtIndex:defaultFavoriteIndex] objectForKey:SPFavoriteIDKey] integerValue] forKey:SPDefaultFavorite]; } diff --git a/Source/SPPrintController.m b/Source/SPPrintController.m index 6f6a4ce8..199513f8 100644 --- a/Source/SPPrintController.m +++ b/Source/SPPrintController.m @@ -34,6 +34,7 @@ #import "SPConnectionController.h" #import "SPExtendedTableInfo.h" #import "SPTableTriggers.h" +#import "SPDatabaseViewController.h" @implementation SPDatabaseDocument (SPPrintController) @@ -107,7 +108,7 @@ NSInteger rowLimit = [prefs integerForKey:SPPrintWarningRowLimit]; // Result count minus one because the first element is the column names - NSUInteger resultRows = ([[tableContentInstance currentResult] count] - 1); + NSInteger resultRows = ([[tableContentInstance currentResult] count] - 1); if (resultRows > rowLimit) { diff --git a/Source/SPProcessListController.m b/Source/SPProcessListController.m index fdef96bb..e3323666 100644 --- a/Source/SPProcessListController.m +++ b/Source/SPProcessListController.m @@ -29,9 +29,9 @@ #import "SPAppController.h" // Constants -static const NSString *SPKillProcessQueryMode = @"SPKillProcessQueryMode"; -static const NSString *SPKillProcessConnectionMode = @"SPKillProcessConnectionMode"; -static const NSString *SPTableViewIDColumnIdentifier = @"Id"; +static NSString *SPKillProcessQueryMode = @"SPKillProcessQueryMode"; +static NSString *SPKillProcessConnectionMode = @"SPKillProcessConnectionMode"; +static NSString *SPTableViewIDColumnIdentifier = @"Id"; @interface SPProcessListController (PrivateAPI) @@ -471,7 +471,7 @@ static const NSString *SPTableViewIDColumnIdentifier = @"Id"; */ - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { - id object = (row < [processesFiltered count]) ? [[processesFiltered objectAtIndex:row] valueForKey:[tableColumn identifier]] : @""; + id object = ((NSUInteger)row < [processesFiltered count]) ? [[processesFiltered objectAtIndex:row] valueForKey:[tableColumn identifier]] : @""; return (![object isNSNull]) ? object : [prefs stringForKey:SPNullValue]; } @@ -627,7 +627,7 @@ static const NSString *SPTableViewIDColumnIdentifier = @"Id"; - (void)_updateSelectedAutoRefreshIntervalInterface { BOOL found = NO; - NSUInteger interval = [prefs integerForKey:SPProcessListAutoRrefreshInterval]; + NSInteger interval = [prefs integerForKey:SPProcessListAutoRrefreshInterval]; NSArray *items = [[autoRefreshIntervalMenuItem submenu] itemArray]; diff --git a/Source/SPQueryController.m b/Source/SPQueryController.m index ad9653ce..721c27e9 100644 --- a/Source/SPQueryController.m +++ b/Source/SPQueryController.m @@ -665,7 +665,7 @@ static SPQueryController *sharedQueryController = nil; - (void)addHistory:(NSString *)history forFileURL:(NSURL *)fileURL { - NSUInteger maxHistoryItems = [[prefs objectForKey:SPCustomQueryMaxHistoryItems] integerValue]; + NSInteger maxHistoryItems = [[prefs objectForKey:SPCustomQueryMaxHistoryItems] integerValue]; // Save each history item due to its document source if([historyContainer objectForKey:[fileURL absoluteString]]) { diff --git a/Source/SPQueryFavoriteManager.h b/Source/SPQueryFavoriteManager.h index 4da1dd22..6698ae61 100644 --- a/Source/SPQueryFavoriteManager.h +++ b/Source/SPQueryFavoriteManager.h @@ -71,4 +71,8 @@ - (IBAction)insertPlaceholder:(id)sender; - (IBAction)showHelp:(id)sender; +- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo; +- (void)importPanelDidEnd:(NSOpenPanel *)panel returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo; +- (void)savePanelDidEnd:(NSSavePanel *)panel returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo; + @end diff --git a/Source/SPQueryFavoriteManager.m b/Source/SPQueryFavoriteManager.m index 5e270a07..9316c5ec 100644 --- a/Source/SPQueryFavoriteManager.m +++ b/Source/SPQueryFavoriteManager.m @@ -30,6 +30,7 @@ #import "SPConnectionController.h" #import "RegexKitLite.h" #import "SPTextView.h" +#import <BWToolkitFramework/BWAnchoredButtonBar.h> #define SP_MULTIPLE_SELECTION_PLACEHOLDER_STRING NSLocalizedString(@"[multiple selection]", @"[multiple selection]") #define SP_NO_SELECTION_PLACEHOLDER_STRING NSLocalizedString(@"[no selection]", @"[no selection]") @@ -164,7 +165,7 @@ } // Take all favorites until the next header or end of favorites - for(i; i<[favorites count]; i++) { + for( ; i<[favorites count]; i++) { if(![[favorites objectAtIndex:i] objectForKey:@"headerOfFileURL"]) [favs addObject:[favorites objectAtIndex:i]]; @@ -654,7 +655,7 @@ NSMutableArray *draggedRows = [[NSMutableArray alloc] initWithCapacity:1]; NSUInteger rowIndex = [draggedIndexes firstIndex]; while ( rowIndex != NSNotFound ) { - [draggedRows addObject:[NSNumber numberWithInteger:rowIndex]]; + [draggedRows addObject:[NSNumber numberWithUnsignedInteger:rowIndex]]; rowIndex = [draggedIndexes indexGreaterThanIndex: rowIndex]; } @@ -672,7 +673,7 @@ originalRow += offset; // For safety reasons - if(originalRow > [favorites count]-1) originalRow = [favorites count] - 1; + if(originalRow > (NSInteger)[favorites count]-1) originalRow = [favorites count] - 1; NSMutableDictionary *draggedRow = [NSMutableDictionary dictionaryWithDictionary:[favorites objectAtIndex:originalRow]]; [favorites removeObjectAtIndex:originalRow]; diff --git a/Source/SPSQLParser.h b/Source/SPSQLParser.h index e425a75c..5746029e 100644 --- a/Source/SPSQLParser.h +++ b/Source/SPSQLParser.h @@ -56,7 +56,7 @@ @interface SPSQLParser : NSMutableString { - id string; + NSMutableString *string; unichar *stringCharCache; unichar parsedToChar; NSInteger parsedToPosition; diff --git a/Source/SPSQLParser.m b/Source/SPSQLParser.m index 1650b2c2..6485fc85 100644 --- a/Source/SPSQLParser.m +++ b/Source/SPSQLParser.m @@ -100,7 +100,7 @@ TO_BUFFER_STATE to_scan_string (const char *); // Walk along the string, processing characters. for (currentStringIndex = 0; currentStringIndex < stringLength; currentStringIndex++) { - currentCharacter = CFStringGetCharacterAtIndex(string ,currentStringIndex); + currentCharacter = CFStringGetCharacterAtIndex((CFStringRef)string ,currentStringIndex); switch (currentCharacter) { // When quote characters are encountered walk to the end of the quoted string. @@ -117,8 +117,8 @@ TO_BUFFER_STATE to_scan_string (const char *); // For comments starting "--[\s]", ensure the start syntax is valid before proceeding. case '-': if (stringLength < currentStringIndex + 2) break; - if (CFStringGetCharacterAtIndex(string, currentStringIndex+1) != '-') break; - if (![[NSCharacterSet whitespaceCharacterSet] characterIsMember:CFStringGetCharacterAtIndex(string, currentStringIndex+2)]) break; + if (CFStringGetCharacterAtIndex((CFStringRef)string, currentStringIndex+1) != '-') break; + if (![[NSCharacterSet whitespaceCharacterSet] characterIsMember:CFStringGetCharacterAtIndex((CFStringRef)string, currentStringIndex+2)]) break; commentEndIndex = [self endIndexOfCommentOfType:SPDoubleDashComment startingAtIndex:currentStringIndex]; // Remove the comment @@ -139,7 +139,7 @@ TO_BUFFER_STATE to_scan_string (const char *); // For comments starting "/*", ensure the start syntax is valid before proceeding. case '/': if (stringLength < currentStringIndex + 1) break; - if (CFStringGetCharacterAtIndex(string, currentStringIndex+1) != '*') break; + if (CFStringGetCharacterAtIndex((CFStringRef)string, currentStringIndex+1) != '*') break; commentEndIndex = [self endIndexOfCommentOfType:SPCStyleComment startingAtIndex:currentStringIndex]; // Remove the comment @@ -163,7 +163,7 @@ TO_BUFFER_STATE to_scan_string (const char *); if (![string length]) return nil; // If the first character is not a quote character, return the entire string. - quoteCharacter = CFStringGetCharacterAtIndex(string, 0); + quoteCharacter = CFStringGetCharacterAtIndex((CFStringRef)string, 0); if (quoteCharacter != '`' && quoteCharacter != '"' && quoteCharacter != '\'') { return [NSString stringWithString:string]; } @@ -204,9 +204,9 @@ TO_BUFFER_STATE to_scan_string (const char *); // Check the ends of the string for whitespace, to determine if it needs removing NSUInteger whitespaceCharsAtStart = 0; NSUInteger whitespaceCharsAtEnd = 0; - while (whitespaceCharsAtStart < stringLength && [trimCharset characterIsMember:CFStringGetCharacterAtIndex(queryString, whitespaceCharsAtStart)]) + while (whitespaceCharsAtStart < stringLength && [trimCharset characterIsMember:CFStringGetCharacterAtIndex((CFStringRef)queryString, whitespaceCharsAtStart)]) whitespaceCharsAtStart++; - while (whitespaceCharsAtEnd < stringLength && [trimCharset characterIsMember:CFStringGetCharacterAtIndex(queryString, stringLength - whitespaceCharsAtEnd - 1)]) + while (whitespaceCharsAtEnd < stringLength && [trimCharset characterIsMember:CFStringGetCharacterAtIndex((CFStringRef)queryString, stringLength - whitespaceCharsAtEnd - 1)]) whitespaceCharsAtEnd++; // Trim if necessary @@ -221,7 +221,7 @@ TO_BUFFER_STATE to_scan_string (const char *); unichar currentCharacter, innerCharacter; BOOL characterIsEscaped; for (currentStringIndex = 0; currentStringIndex < stringLength; currentStringIndex++) { - currentCharacter = CFStringGetCharacterAtIndex(queryString, currentStringIndex); + currentCharacter = CFStringGetCharacterAtIndex((CFStringRef)queryString, currentStringIndex); switch (currentCharacter) { // When quote characters are encountered walk to the end of the quoted string. @@ -229,13 +229,13 @@ TO_BUFFER_STATE to_scan_string (const char *); case '"': case '`': for (innerStringIndex = currentStringIndex+1; innerStringIndex < stringLength; innerStringIndex++) { - innerCharacter = CFStringGetCharacterAtIndex(queryString, innerStringIndex); + innerCharacter = CFStringGetCharacterAtIndex((CFStringRef)queryString, innerStringIndex); // If the string end is a backtick and one has been encountered, treat it as end of string if (innerCharacter == '`' && currentCharacter == '`') { // ...as long as the next character isn't also a backtick, in which case it's being quoted. Skip both. - if ((innerStringIndex + 1) < stringLength && CFStringGetCharacterAtIndex(queryString, innerStringIndex+1) == '`') { + if ((innerStringIndex + 1) < stringLength && CFStringGetCharacterAtIndex((CFStringRef)queryString, innerStringIndex+1) == '`') { innerStringIndex++; continue; } @@ -250,7 +250,7 @@ TO_BUFFER_STATE to_scan_string (const char *); characterIsEscaped = NO; i = 1; quotedStringLength = innerStringIndex - 1; - while ((quotedStringLength - i) > 0 && CFStringGetCharacterAtIndex(queryString, innerStringIndex - i) == '\\') { + while ((quotedStringLength - i) > 0 && CFStringGetCharacterAtIndex((CFStringRef)queryString, innerStringIndex - i) == '\\') { characterIsEscaped = !characterIsEscaped; i++; } @@ -258,7 +258,7 @@ TO_BUFFER_STATE to_scan_string (const char *); // If an even number have been found, it may be the end of the string - as long as the subsequent character // isn't also the same character, in which case it's another form of escaping. if (!characterIsEscaped) { - if ((innerStringIndex + 1) < stringLength && CFStringGetCharacterAtIndex(queryString, innerStringIndex+1) == currentCharacter) { + if ((innerStringIndex + 1) < stringLength && CFStringGetCharacterAtIndex((CFStringRef)queryString, innerStringIndex+1) == currentCharacter) { innerStringIndex++; continue; } @@ -289,7 +289,7 @@ TO_BUFFER_STATE to_scan_string (const char *); // Check whether it's a CRLF or just a CR isCRLF = NO; - if ([normalisedString length] > CRLocation + 1 && CFStringGetCharacterAtIndex(normalisedString, CRLocation + 1) == '\n') isCRLF = YES; + if ([normalisedString length] > CRLocation + 1 && CFStringGetCharacterAtIndex((CFStringRef)normalisedString, CRLocation + 1) == '\n') isCRLF = YES; // Normalise the line endings if (isCRLF) { @@ -572,7 +572,7 @@ TO_BUFFER_STATE to_scan_string (const char *); } // Add the end of the string after the previously matched character where appropriate. - if (stringIndex + 1 < [string length]) { + if ((NSUInteger)(stringIndex + 1) < [string length]) { NSString *finalQuery = [[string substringFromIndex:stringIndex + 1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (supportDelimiters && [finalQuery isMatchedByRegex:@"(?i)^\\s*delimiter\\s+\\S+"]) finalQuery = nil; @@ -616,7 +616,7 @@ TO_BUFFER_STATE to_scan_string (const char *); // Add the end of the string after the previously matched character where appropriate. stringIndex++; - if (stringIndex < [string length]) { + if ((NSUInteger)stringIndex < [string length]) { NSString *finalQuery = [[string substringFromIndex:stringIndex] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (supportDelimiters && [finalQuery isMatchedByRegex:@"(?i)^\\s*delimiter\\s+\\S+"]) finalQuery = nil; @@ -811,10 +811,10 @@ TO_BUFFER_STATE to_scan_string (const char *); * into account the various forms of SQL escaping. * A method intended for use by the functions above. */ -- (NSUInteger) endIndexOfStringQuotedByCharacter:(unichar)quoteCharacter startingAtIndex:(NSInteger)index +- (NSUInteger) endIndexOfStringQuotedByCharacter:(unichar)quoteCharacter startingAtIndex:(NSInteger)startIndex { - NSInteger currentStringIndex; - NSUInteger stringLength, i, quotedStringLength; + NSInteger currentStringIndex, stringLength; + NSUInteger i, quotedStringLength; BOOL characterIsEscaped; unichar currentCharacter; @@ -825,7 +825,7 @@ TO_BUFFER_STATE to_scan_string (const char *); stringLength = [string length]; // Walk the string looking for the string end - for ( currentStringIndex = index; currentStringIndex < stringLength; currentStringIndex++) { + for ( currentStringIndex = startIndex; currentStringIndex < stringLength; currentStringIndex++) { currentCharacter = (unichar)(long)(*charAtIndex)(self, charAtIndexSEL, currentStringIndex); // If the string end is a backtick and one has been encountered, treat it as end of string @@ -871,9 +871,9 @@ TO_BUFFER_STATE to_scan_string (const char *); /** * A method intended for use by the functions above. */ -- (NSUInteger) endIndexOfCommentOfType:(SPCommentType)commentType startingAtIndex:(NSInteger)index +- (NSUInteger) endIndexOfCommentOfType:(SPCommentType)commentType startingAtIndex:(NSInteger)anIndex { - NSUInteger stringLength = [string length]; + NSInteger stringLength = [string length]; unichar currentCharacter; // Cache the charAtIndex selector, avoiding dynamic binding overhead @@ -885,16 +885,16 @@ TO_BUFFER_STATE to_scan_string (const char *); // For comments of type "--[\s]", start the comment processing two characters in to match the start syntax, // then flow into the Hash comment handling (looking for first newline). case SPDoubleDashComment: - index = index+2; + anIndex = anIndex+2; // For comments starting "--[\s]" and "#", continue until the first newline. case SPHashComment: - index++; - for ( ; index < stringLength; index++ ) { - currentCharacter = (unichar)(long)(*charAtIndex)(self, charAtIndexSEL, index); + anIndex++; + for ( ; anIndex < stringLength; anIndex++ ) { + currentCharacter = (unichar)(long)(*charAtIndex)(self, charAtIndexSEL, anIndex); if (currentCharacter == '\r') containsCRs = YES; if (currentCharacter == '\r' || currentCharacter == '\n') { - return index-1; + return anIndex-1; } } break; @@ -902,11 +902,11 @@ TO_BUFFER_STATE to_scan_string (const char *); // For comments starting "/*", start the comment processing one character in to match the start syntax, then // continue until the first matching "*/". case SPCStyleComment: - index = index+2; - for ( ; index < stringLength; index++ ) { - if ((unichar)(long)(*charAtIndex)(self, charAtIndexSEL, index) == '*') { - if ((stringLength > index + 1) && (unichar)(long)(*charAtIndex)(self, charAtIndexSEL, index+1) == '/') { - return (index+1); + anIndex = anIndex+2; + for ( ; anIndex < stringLength; anIndex++ ) { + if ((unichar)(long)(*charAtIndex)(self, charAtIndexSEL, anIndex) == '*') { + if ((stringLength > anIndex + 1) && (unichar)(long)(*charAtIndex)(self, charAtIndexSEL, anIndex+1) == '/') { + return (anIndex+1); } } } @@ -921,35 +921,35 @@ TO_BUFFER_STATE to_scan_string (const char *); - (id) init { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString string] retain]; } [self initSQLExtensions]; return self; } - (id) initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString alloc] initWithBytes:bytes length:length encoding:encoding]; } [self initSQLExtensions]; return self; } - (id) initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)flag { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString alloc] initWithBytesNoCopy:bytes length:length encoding:encoding freeWhenDone:flag]; } [self initSQLExtensions]; return self; } - (id) initWithCapacity:(NSUInteger)capacity { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString stringWithCapacity:capacity] retain]; } [self initSQLExtensions]; return self; } - (id) initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)flag { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString alloc] initWithCharactersNoCopy:characters length:length freeWhenDone:flag]; } [self initSQLExtensions]; @@ -959,14 +959,14 @@ TO_BUFFER_STATE to_scan_string (const char *); return [self initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL]; } - (id) initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)encoding error:(NSError **)error { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString alloc] initWithContentsOfFile:path encoding:encoding error:error]; } [self initSQLExtensions]; return self; } - (id) initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString alloc] initWithCString:nullTerminatedCString encoding:encoding]; } [self initSQLExtensions]; @@ -981,7 +981,7 @@ TO_BUFFER_STATE to_scan_string (const char *); return str; } - (id) initWithFormat:(NSString *)format arguments:(va_list)argList { - if (self = [super init]) { + if ((self = [super init])) { string = [[NSMutableString alloc] initWithFormat:format arguments:argList]; } [self initSQLExtensions]; @@ -1001,8 +1001,8 @@ TO_BUFFER_STATE to_scan_string (const char *); - (NSUInteger) length { return [string length]; } -- (unichar) characterAtIndex:(NSUInteger)index { - return CFStringGetCharacterAtIndex(string, index); +- (unichar) characterAtIndex:(NSUInteger)anIndex { + return CFStringGetCharacterAtIndex((CFStringRef)string, anIndex); } - (id) description { return [string description]; @@ -1048,22 +1048,22 @@ TO_BUFFER_STATE to_scan_string (const char *); * Does no bounds checking on the underlying string, and so is kept * separate from characterAtIndex:. */ -- (unichar) _charAtIndex:(NSInteger)index +- (unichar) _charAtIndex:(NSInteger)anIndex { // If the current cache doesn't include the current character, update it. - if (index > charCacheEnd || index < charCacheStart) { + if (anIndex > charCacheEnd || anIndex < charCacheStart) { if (charCacheEnd > -1) { free(stringCharCache); } - NSUInteger remainingStringLength = [string length] - index; + NSUInteger remainingStringLength = [string length] - anIndex; NSUInteger newcachelength = (CHARACTER_CACHE_LENGTH < remainingStringLength)?CHARACTER_CACHE_LENGTH:remainingStringLength; stringCharCache = (unichar *)calloc(newcachelength, sizeof(unichar)); - CFStringGetCharacters(string, CFRangeMake(index, newcachelength), stringCharCache); - charCacheEnd = index + newcachelength - 1; - charCacheStart = index; + CFStringGetCharacters((CFStringRef)string, CFRangeMake(anIndex, newcachelength), stringCharCache); + charCacheEnd = anIndex + newcachelength - 1; + charCacheStart = anIndex; } - return stringCharCache[index - charCacheStart]; + return stringCharCache[anIndex - charCacheStart]; } /** @@ -1081,4 +1081,4 @@ TO_BUFFER_STATE to_scan_string (const char *); parsedToPosition = -1; } -@end
\ No newline at end of file +@end diff --git a/Source/SPSQLTokenizer.l b/Source/SPSQLTokenizer.l index 1964c94d..4a076013 100644 --- a/Source/SPSQLTokenizer.l +++ b/Source/SPSQLTokenizer.l @@ -37,6 +37,7 @@ int yyuoffset, yyuleng; %option prefix="to" %option noyywrap %option nounput +%option noinput %option case-insensitive %option nostdinit diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index c4eb9f57..9cf2e72f 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -2648,7 +2648,7 @@ // Save any edits which have been made but not saved to the table yet; // but not for any NSSearchFields which could cause a crash for undo, redo. if([[[tableDocumentInstance parentWindow] firstResponder] respondsToSelector:@selector(delegate)] - && ![[[[tableDocumentInstance parentWindow] firstResponder] delegate] isKindOfClass:[NSSearchField class]]) + && ![[(id)[[tableDocumentInstance parentWindow] firstResponder] delegate] isKindOfClass:[NSSearchField class]]) [[tableDocumentInstance parentWindow] endEditingFor:nil]; // If no rows are currently being edited, or a save is in progress, return success at once. diff --git a/Source/SPTableStructureDelegate.m b/Source/SPTableStructureDelegate.m index 3a46b763..0cabda4c 100644 --- a/Source/SPTableStructureDelegate.m +++ b/Source/SPTableStructureDelegate.m @@ -43,7 +43,7 @@ - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex { // Return a placeholder if the table is reloading - if (rowIndex >= [tableFields count]) return @"..."; + if ((NSUInteger)rowIndex >= [tableFields count]) return @"..."; if([[tableColumn identifier] isEqualToString:@"collation"]) { NSInteger idx = 0; @@ -98,7 +98,7 @@ currentlyEditingRow = rowIndex; } - NSMutableArray *currentRow = [tableFields objectAtIndex:rowIndex]; + NSMutableDictionary *currentRow = [tableFields objectAtIndex:rowIndex]; // Reset collation if encoding was changed if([[aTableColumn identifier] isEqualToString:@"encoding"]) { @@ -323,7 +323,7 @@ } // Any column comments - if ([[originalRow objectForKey:@"comment"] length]) { + if ([(NSString *)[originalRow objectForKey:@"comment"] length]) { [queryString appendFormat:@" COMMENT '%@'", [mySQLConnection prepareString:[originalRow objectForKey:@"comment"]]]; } diff --git a/Source/SPTableTextFieldCell.m b/Source/SPTableTextFieldCell.m index bcfa0138..799cb4c0 100644 --- a/Source/SPTableTextFieldCell.m +++ b/Source/SPTableTextFieldCell.m @@ -35,7 +35,7 @@ // Construct and get the sub text attributed string NSAttributedString *string = [self attributedStringValue]; - NSInteger i; + NSUInteger i; CGFloat maxWidth = cellFrame.size.width; CGFloat stringWidth = [string size].width; diff --git a/Source/SPTableTriggers.m b/Source/SPTableTriggers.m index f5c15db0..bc5fc4f6 100644 --- a/Source/SPTableTriggers.m +++ b/Source/SPTableTriggers.m @@ -231,12 +231,12 @@ static const NSString *SPTriggerSQLMode = @"TriggerSQLMode"; if (isEdit) { [triggerStatementTextView setString:editTriggerStatement]; - NSString *query = [NSString stringWithFormat:createTriggerStatementTemplate, - [editTriggerName backtickQuotedString], - editTriggerActionTime, - editTriggerEvent, - [editTriggerTableName backtickQuotedString], - editTriggerStatement]; + query = [NSString stringWithFormat:createTriggerStatementTemplate, + [editTriggerName backtickQuotedString], + editTriggerActionTime, + editTriggerEvent, + [editTriggerTableName backtickQuotedString], + editTriggerStatement]; // If this attempt to re-create the trigger failed, then we're screwed as we've just lost the user's // data, but they had a backup and everything's cool, right? Should we be displaying an error here @@ -339,12 +339,12 @@ static const NSString *SPTriggerSQLMode = @"TriggerSQLMode"; /** * Double-click action on table cells - for the time being, return NO to disable editing. */ -- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex +- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSUInteger)rowIndex { if ([tableDocumentInstance isWorking]) return NO; // Start Edit panel - if (([triggerData count] > rowIndex) && ([triggerData objectAtIndex:rowIndex] != NSNotFound)) { + if (([triggerData count] > rowIndex) && [triggerData objectAtIndex:rowIndex]) { [self _editTriggerAtIndex:rowIndex]; } diff --git a/Source/SPTableView.m b/Source/SPTableView.m index f1fccb09..226bfe6c 100644 --- a/Source/SPTableView.m +++ b/Source/SPTableView.m @@ -26,6 +26,13 @@ #import "SPQueryFavoriteManager.h" #import "SPDatabaseDocument.h" #import "SPWindowController.h" +#import "SPFieldMapperController.h" + +@interface SPTableView (SPTableViewDelegate) + +- (BOOL)cancelRowEditing; + +@end @implementation SPTableView diff --git a/Source/SPTablesList.h b/Source/SPTablesList.h index 7d486525..d4623f40 100644 --- a/Source/SPTablesList.h +++ b/Source/SPTablesList.h @@ -149,6 +149,10 @@ - (BOOL)selectItemWithName:(NSString *)theName; - (BOOL)selectItemsWithNames:(NSArray *)theNames; +// Data validation +- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType; +- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType ignoringSelectedTable:(BOOL)ignoreSelectedTable; + // Table list filter interaction - (void) showFilter; - (void) hideFilter; diff --git a/Source/SPTablesList.m b/Source/SPTablesList.m index 3d87fcc7..9c1a1d0c 100644 --- a/Source/SPTablesList.m +++ b/Source/SPTablesList.m @@ -48,8 +48,6 @@ - (void)addTable; - (void)copyTable; - (void)renameTableOfType:(SPTableType)tableType from:(NSString *)oldTableName to:(NSString *)newTableName; -- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType; -- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType ignoringSelectedTable:(BOOL)ignoreSelectedTable; @end @@ -1266,6 +1264,70 @@ } #pragma mark - +#pragma mark Data validation + +/** + * Check tableName for length and if the tableName doesn't match + * against current database table/view names (case-insensitive). + */ +- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType +{ + return [self isTableNameValid:tableName forType:tableType ignoringSelectedTable:NO]; +} + +/** + * Check tableName for length and if the tableName doesn't match + * against current database table/view names (case-insensitive). + */ +- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType ignoringSelectedTable:(BOOL)ignoreSelectedTable +{ + BOOL isValid = YES; + + // delete trailing whitespaces since 'foo ' or ' ' are not valid table names + NSString *fieldStr = [tableName stringByMatching:@"(.*?)\\s*$" capture:1]; + NSString *lowercaseFieldStr = [fieldStr lowercaseString]; + + // If table name has trailing whitespaces return 'no valid' + if([fieldStr length] != [tableName length]) return NO; + + // empty table names are invalid + if([fieldStr length] == 0) return NO; + + + NSArray *similarTables; + switch (tableType) { + case SPTableTypeView: + case SPTableTypeTable: + similarTables = [self allTableAndViewNames]; + break; + case SPTableTypeProc: + similarTables = [self allProcedureNames]; + break; + case SPTableTypeFunc: + similarTables = [self allFunctionNames]; + break; + default: + // if some other table type is given, just return yes + // better a mysql error than not being able to change something at all + return YES; + } + + for(id table in similarTables) { + //compare case insensitive here + if([lowercaseFieldStr isEqualToString:[table lowercaseString]]) { + if (ignoreSelectedTable) { + // if table is the selectedTable, ignore it + // we must compare CASE SENSITIVE here! + if ([table isEqualToString:selectedTableName]) continue; + } + isValid = NO; + break; + } + } + return isValid; +} + +#pragma mark - #pragma mark Datasource methods /** @@ -2377,66 +2439,4 @@ [NSException raise:@"Object of unknown type" format:NSLocalizedString(@"An error occured while renaming. '%@' is of an unknown type.", @"rename error - don't know what type the renamed thing is"), oldTableName]; } - -/** - * Check tableName for length and if the tableName doesn't match - * against current database table/view names (case-insensitive). - */ -- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType -{ - return [self isTableNameValid:tableName forType:tableType ignoringSelectedTable:NO]; -} - -/** - * Check tableName for length and if the tableName doesn't match - * against current database table/view names (case-insensitive). - */ -- (BOOL)isTableNameValid:(NSString *)tableName forType:(SPTableType)tableType ignoringSelectedTable:(BOOL)ignoreSelectedTable -{ - BOOL isValid = YES; - - // delete trailing whitespaces since 'foo ' or ' ' are not valid table names - NSString *fieldStr = [tableName stringByMatching:@"(.*?)\\s*$" capture:1]; - NSString *lowercaseFieldStr = [fieldStr lowercaseString]; - - // If table name has trailing whitespaces return 'no valid' - if([fieldStr length] != [tableName length]) return NO; - - // empty table names are invalid - if([fieldStr length] == 0) return NO; - - - NSArray *similarTables; - switch (tableType) { - case SPTableTypeView: - case SPTableTypeTable: - similarTables = [self allTableAndViewNames]; - break; - case SPTableTypeProc: - similarTables = [self allProcedureNames]; - break; - case SPTableTypeFunc: - similarTables = [self allFunctionNames]; - break; - default: - // if some other table type is given, just return yes - // better a mysql error than not being able to change something at all - return YES; - } - - for(id table in similarTables) { - //compare case insensitive here - if([lowercaseFieldStr isEqualToString:[table lowercaseString]]) { - if (ignoreSelectedTable) { - // if table is the selectedTable, ignore it - // we must compare CASE SENSITIVE here! - if ([table isEqualToString:selectedTableName]) continue; - } - isValid = NO; - break; - } - } - return isValid; -} - @end diff --git a/Source/SPTextView.h b/Source/SPTextView.h index b15030b4..3954c941 100644 --- a/Source/SPTextView.h +++ b/Source/SPTextView.h @@ -145,4 +145,7 @@ - (BOOL)isSnippetMode; +- (void)boundsDidChangeNotification:(NSNotification *)notification; +- (void)dragAlertSheetDidEnd:(NSAlert *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; + @end diff --git a/Source/SPTextView.m b/Source/SPTextView.m index 769d4be8..4fef6ee3 100644 --- a/Source/SPTextView.m +++ b/Source/SPTextView.m @@ -34,6 +34,7 @@ #import "RegexKitLite.h" #import "SPBundleHTMLOutputController.h" #import "SPDatabaseViewController.h" +#import "SPAppController.h" #pragma mark - #pragma mark lex init @@ -74,14 +75,16 @@ YY_BUFFER_STATE yy_scan_string (const char *); #pragma mark - +NSInteger _alphabeticSort(id string1, id string2, void *reverse); + // some helper functions for handling rectangles and points // needed in roundedBezierPathAroundRange: static inline CGFloat SPRectTop(NSRect rectangle) { return rectangle.origin.y; } static inline CGFloat SPRectBottom(NSRect rectangle) { return rectangle.origin.y+rectangle.size.height; } static inline CGFloat SPRectLeft(NSRect rectangle) { return rectangle.origin.x; } static inline CGFloat SPRectRight(NSRect rectangle) { return rectangle.origin.x+rectangle.size.width; } -static inline CGFloat SPPointDistance(NSPoint a, NSPoint b) { return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) ); } -static inline NSPoint SPPointOnLine(NSPoint a, NSPoint b, CGFloat t) { return NSMakePoint(a.x*(1.-t) + b.x*t, a.y*(1.-t) + b.y*t); } +static inline CGFloat SPPointDistance(NSPoint a, NSPoint b) { return sqrtf( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) ); } +static inline NSPoint SPPointOnLine(NSPoint a, NSPoint b, CGFloat t) { return NSMakePoint(a.x*(1.0f-t) + b.x*t, a.y*(1.0f-t) + b.y*t); } @implementation SPTextView @@ -102,7 +105,7 @@ static inline NSPoint SPPointOnLine(NSPoint a, NSPoint b, CGFloat t) { return NS /** * Sort function (mainly used to sort the words in the textView) */ -NSInteger alphabeticSort(id string1, id string2, void *reverse) +NSInteger _alphabeticSort(id string1, id string2, void *reverse) { return [string1 localizedCaseInsensitiveCompare:string2]; } @@ -284,7 +287,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) NSInteger reverseSort = NO; - for(id w in [[uniqueArray allObjects] sortedArrayUsingFunction:alphabeticSort context:&reverseSort]) + for(id w in [[uniqueArray allObjects] sortedArrayUsingFunction:_alphabeticSort context:&reverseSort]) [possibleCompletions addObject:[NSDictionary dictionaryWithObjectsAndKeys:w, @"display", @"dummy-small", @"image", nil]]; } @@ -849,7 +852,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) NSRect boundingRect = [[self layoutManager] boundingRectForGlyphRange:glyphRange inTextContainer:[self textContainer]]; boundingRect = [self convertRect:boundingRect toView:nil]; NSPoint pos = [[self window] convertBaseToScreen:NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)]; - pos.y -= [[self font] pointSize]*1.25; + pos.y -= [[self font] pointSize]*1.25f; [completionPopup setCaretPos:pos]; [completionPopup orderFront:self]; @@ -915,7 +918,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) } @catch(id ae) { } - return (leftIsAlphanum ^ rightIsAlphanum || leftIsAlphanum && rightIsAlphanum); + return (leftIsAlphanum ^ rightIsAlphanum || (leftIsAlphanum && rightIsAlphanum)); } /** @@ -1135,7 +1138,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) if(numberOfSpaces < 1) numberOfSpaces = 1; if(numberOfSpaces > 32) numberOfSpaces = 32; NSMutableString *spaces = [NSMutableString string]; - for(NSInteger i = 0; i < numberOfSpaces; i++) + for(NSUInteger i = 0; i < numberOfSpaces; i++) [spaces appendString:@" "]; indentString = [NSString stringWithString:spaces]; } @@ -1260,7 +1263,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) if(indentStringLength < 1) indentStringLength = 1; if(indentStringLength > 32) indentStringLength = 32; NSMutableString *spaces = [NSMutableString string]; - for(NSInteger i = 0; i < indentStringLength; i++) + for(NSUInteger i = 0; i < indentStringLength; i++) [spaces appendString:@" "]; indentString = [NSString stringWithString:spaces]; } @@ -1471,7 +1474,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) boundingRect = [self convertRect: boundingRect toView: NULL]; NSPoint pos = [[self window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)]; // Adjust list location to be under the current word or insertion point - pos.y -= [[self font] pointSize]*1.25; + pos.y -= [[self font] pointSize]*1.25f; [completionPopup setCaretPos:pos]; [completionPopup orderFront:self]; @@ -1517,7 +1520,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) // If a completion list is open adjust the theCharRange and theParseRange if a mirrored snippet // was updated which is located before the initial position - if(completionIsOpen && snippetMirroredControlArray[i][1] < completionParseRangeLocation) + if(completionIsOpen && snippetMirroredControlArray[i][1] < (NSInteger)completionParseRangeLocation) [completionPopup adjustWorkingRangeByDelta:deltaLength]; // Adjust all other snippets accordingly @@ -1628,7 +1631,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) boundingRect = [self convertRect: boundingRect toView: NULL]; NSPoint pos = [[self window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)]; // Adjust list location to be under the current word or insertion point - pos.y -= [[self font] pointSize]*1.25; + pos.y -= [[self font] pointSize]*1.25f; [completionPopup setCaretPos:pos]; [completionPopup orderFront:self]; } @@ -1876,7 +1879,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) while([snip isMatchedByRegex:ure]) { NSRange escapeRange = [snip rangeOfRegex:ure capture:0L]; [snip replaceCharactersInRange:escapeRange withString:[snip substringWithRange:NSMakeRange(escapeRange.location+1,escapeRange.length-1)]]; - NSUInteger loc = escapeRange.location + targetRange.location; + NSInteger loc = escapeRange.location + targetRange.location; [snip flushCachedRegexData]; for(i=0; i<=snippetControlMax; i++) if(snippetControlArray[i][0] > -1 && snippetControlArray[i][0] > loc) @@ -1896,8 +1899,14 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) [self insertText:snip]; // If autopair is enabled check whether snip begins with ( and ends with ), if so mark ) as pair-linked - if([prefs boolForKey:SPCustomQueryAutoPairCharacters] && ([snip hasPrefix:@"("] && [snip hasSuffix:@")"] || ([snip hasPrefix:@"`"] && [snip hasSuffix:@"`"]) || ([snip hasPrefix:@"'"] && [snip hasSuffix:@"'"]) || ([snip hasPrefix:@"\""] && [snip hasSuffix:@"\""]))) + if ([prefs boolForKey:SPCustomQueryAutoPairCharacters] + && (([snip hasPrefix:@"("] && [snip hasSuffix:@")"]) + || ([snip hasPrefix:@"`"] && [snip hasSuffix:@"`"]) + || ([snip hasPrefix:@"'"] && [snip hasSuffix:@"'"]) + || ([snip hasPrefix:@"\""] && [snip hasSuffix:@"\""]))) + { [[self textStorage] addAttribute:kAPlinked value:kAPval range:NSMakeRange([self selectedRange].location - 1, 1)]; + } // Any snippets defined? if(snippetControlCounter > -1) { @@ -1937,7 +1946,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) } [[self textStorage] ensureAttributesAreFixedInRange:[self selectedRange]]; - NSUInteger caretPos = [self selectedRange].location; + NSInteger caretPos = [self selectedRange].location; NSInteger i, j; NSInteger foundSnippetIndices[20]; // array to hold nested snippets @@ -1966,24 +1975,24 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) if(!isCaretInsideASnippet && foundSnippetIndices[currentSnippetIndex] == 1) { isCaretInsideASnippet = YES; } else if(![self selectedRange].length) { - NSInteger index = -1; + NSInteger curIndex = -1; NSInteger smallestLength = -1; for(i=0; i<snippetControlMax; i++) { if(foundSnippetIndices[i] == 1) { - if(index == -1) { - index = i; + if(curIndex == -1) { + curIndex = i; smallestLength = snippetControlArray[i][1]; } else { if(smallestLength > snippetControlArray[i][1]) { - index = i; + curIndex = i; smallestLength = snippetControlArray[i][1]; } } } } // Reset the active snippet - if(index > -1 && smallestLength > -1) { - currentSnippetIndex = index; + if(curIndex > -1 && smallestLength > -1) { + currentSnippetIndex = curIndex; isCaretInsideASnippet = YES; } } @@ -2803,7 +2812,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; [paragraphStyle setTabStops:myArrayOfTabs]; // Soft wrapped lines are indented slightly - [paragraphStyle setHeadIndent:4.0]; + [paragraphStyle setHeadIndent:4.0f]; NSMutableDictionary *textAttributes = [[[NSMutableDictionary alloc] initWithCapacity:1] autorelease]; [textAttributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName]; @@ -2851,15 +2860,15 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) if(snippetControlCounter > -1) { // Is the caret still inside a snippet if([self checkForCaretInsideSnippet]) { - for(NSUInteger i=0; i<snippetControlMax; i++) { + for(NSInteger i=0; i<snippetControlMax; i++) { if(snippetControlArray[i][0] > -1) { // choose the colors for the snippet parts if(i == currentSnippetIndex) { - [[NSColor colorWithCalibratedRed:1.0 green:0.6 blue:0.0 alpha:0.4] setFill]; - [[NSColor colorWithCalibratedRed:1.0 green:0.6 blue:0.0 alpha:0.8] setStroke]; + [[NSColor colorWithCalibratedRed:1.0f green:0.6f blue:0.0f alpha:0.4f] setFill]; + [[NSColor colorWithCalibratedRed:1.0f green:0.6f blue:0.0f alpha:0.8f] setStroke]; } else { - [[NSColor colorWithCalibratedRed:1.0 green:0.8 blue:0.2 alpha:0.2] setFill]; - [[NSColor colorWithCalibratedRed:1.0 green:0.8 blue:0.2 alpha:0.5] setStroke]; + [[NSColor colorWithCalibratedRed:1.0f green:0.8f blue:0.2f alpha:0.2f] setFill]; + [[NSColor colorWithCalibratedRed:1.0f green:0.8f blue:0.2f alpha:0.5f] setStroke]; } NSBezierPath *snippetPath = [self roundedBezierPathAroundRange: NSMakeRange(snippetControlArray[i][0],snippetControlArray[i][1]) ]; [snippetPath fill]; @@ -2880,10 +2889,10 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) - (NSBezierPath*)roundedBezierPathAroundRange:(NSRange)aRange { // parameters for snippet highlighting - CGFloat kappa = 0.5522847498; // magic number from http://www.whizkidtech.redprince.net/bezier/circle/ + CGFloat kappa = 0.5522847498f; // magic number from http://www.whizkidtech.redprince.net/bezier/circle/ CGFloat radius = 6; CGFloat horzInset = -3; - CGFloat vertInset = 0.3; + CGFloat vertInset = 0.3f; BOOL connectDisconnectedPartsWithLine = NO; NSBezierPath *funkyPath = [NSBezierPath bezierPath]; @@ -2916,15 +2925,15 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) NSPoint next = vertices[(j+1)%8]; CGFloat s = radius/SPPointDistance(prev, curr); - if (s>0.5) s = 0.5; + if (s>0.5) s = 0.5f; CGFloat t = radius/SPPointDistance(curr, next); - if (t>0.5) t = 0.5; + if (t>0.5) t = 0.5f; - NSPoint a = SPPointOnLine(curr, prev, 0.5); + NSPoint a = SPPointOnLine(curr, prev, 0.5f); NSPoint b = SPPointOnLine(curr, prev, s); NSPoint c = curr; NSPoint d = SPPointOnLine(curr, next, t); - NSPoint e = SPPointOnLine(curr, next, 0.5); + NSPoint e = SPPointOnLine(curr, next, 0.5f); if (j==0) [funkyPath moveToPoint:a]; [funkyPath lineToPoint: b]; @@ -3168,8 +3177,8 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) // Re-calculate snippet ranges if snippet session is active if(snippetControlCounter > -1 && !snippetWasJustInserted && !isProcessingMirroredSnippets) { // Remove any fully nested snippets relative to the current snippet which was edited - NSUInteger currentSnippetLocation = snippetControlArray[currentSnippetIndex][0]; - NSUInteger currentSnippetMaxRange = snippetControlArray[currentSnippetIndex][0] + snippetControlArray[currentSnippetIndex][1]; + NSInteger currentSnippetLocation = snippetControlArray[currentSnippetIndex][0]; + NSInteger currentSnippetMaxRange = snippetControlArray[currentSnippetIndex][0] + snippetControlArray[currentSnippetIndex][1]; NSInteger i; for(i=0; i<snippetControlMax; i++) { if(snippetControlArray[i][0] > -1 @@ -3185,7 +3194,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) } } - NSUInteger editStartPosition = [textStore editedRange].location; + NSInteger editStartPosition = [textStore editedRange].location; NSUInteger changeInLength = [textStore changeInLength]; // Adjust length change to current snippet @@ -3379,14 +3388,14 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) { NSUInteger glyphIndex; NSLayoutManager *layoutManager = [self layoutManager]; - CGFloat fraction; + CGFloat fractionalDistance; NSRange range; range = [layoutManager glyphRangeForTextContainer:[self textContainer]]; glyphIndex = [layoutManager glyphIndexForPoint:aPoint inTextContainer:[self textContainer] - fractionOfDistanceThroughGlyph:&fraction]; - if( fraction > 0.5 ) glyphIndex++; + fractionOfDistanceThroughGlyph:&fractionalDistance]; + if( fractionalDistance > 0.5 ) glyphIndex++; if( glyphIndex == NSMaxRange(range) ) return [[self textStorage] length]; @@ -3408,20 +3417,20 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) // Make usage of the UNIX command "file" to get an info // about file type and encoding. - NSTask *task=[[NSTask alloc] init]; - NSPipe *pipe=[[NSPipe alloc] init]; + NSTask *aTask=[[NSTask alloc] init]; + NSPipe *aPipe=[[NSPipe alloc] init]; NSFileHandle *handle; NSString *result; - [task setLaunchPath:@"/usr/bin/file"]; - [task setArguments:[NSArray arrayWithObjects:aPath, @"-Ib", nil]]; - [task setStandardOutput:pipe]; - handle=[pipe fileHandleForReading]; - [task launch]; + [aTask setLaunchPath:@"/usr/bin/file"]; + [aTask setArguments:[NSArray arrayWithObjects:aPath, @"-Ib", nil]]; + [aTask setStandardOutput:aPipe]; + handle=[aPipe fileHandleForReading]; + [aTask launch]; result=[[NSString alloc] initWithData:[handle readDataToEndOfFile] encoding:NSASCIIStringEncoding]; - [pipe release]; - [task release]; + [aPipe release]; + [aTask release]; // UTF16/32 files are detected as application/octet-stream resp. audio/mpeg if( [result hasPrefix:@"text/plain"] diff --git a/Source/SPTextViewAdditions.m b/Source/SPTextViewAdditions.m index e3f8b714..0d3b4b8e 100644 --- a/Source/SPTextViewAdditions.m +++ b/Source/SPTextViewAdditions.m @@ -27,6 +27,10 @@ #import "SPBundleHTMLOutputController.h" #import "SPCustomQuery.h" #import "SPAppController.h" +#import "SPFieldEditorController.h" +#import "SPTextView.h" +#import "SPWindowController.h" +#import "SPDatabaseDocument.h" @implementation NSTextView (SPTextViewAdditions) @@ -42,34 +46,33 @@ if (curRange.length) return curRange; - NSInteger curLocation = curRange.location; + NSUInteger curLocation = curRange.location; NSInteger start = curLocation; - NSInteger end = curLocation; + NSUInteger end = curLocation; NSUInteger strLen = [[self string] length]; NSMutableCharacterSet *wordCharSet = [NSMutableCharacterSet alphanumericCharacterSet]; [wordCharSet addCharactersInString:@"_."]; [wordCharSet removeCharactersInString:@"`"]; - if(start) { + if (start) { start--; - while([wordCharSet characterIsMember:[[self string] characterAtIndex:start]]) { + while ([wordCharSet characterIsMember:[[self string] characterAtIndex:start]]) { start--; if(start < 0) break; } start++; } - while(end < strLen && [wordCharSet characterIsMember:[[self string] characterAtIndex:end]]) { + while (end < strLen && [wordCharSet characterIsMember:[[self string] characterAtIndex:end]]) { end++; } NSRange wordRange = NSMakeRange(start, end-start); - if(wordRange.length && [[self string] characterAtIndex:NSMaxRange(wordRange)-1] == '.') + if (wordRange.length && [[self string] characterAtIndex:NSMaxRange(wordRange)-1] == '.') wordRange.length--; - return(wordRange); - + return wordRange; } /* @@ -109,10 +112,8 @@ NSInteger bcnt = 0; NSInteger scnt = 0; - NSInteger i; - // look for the first non-balanced closing bracket - for(i=caretPosition; i<stringLength; i++) { + for(NSUInteger i=caretPosition; i<stringLength; i++) { switch([[self string] characterAtIndex:i]) { case ')': if(!pcnt) { @@ -147,7 +148,7 @@ if([[self string] characterAtIndex:caretPosition] == co) bracketCounter++; - for(i=caretPosition; i>=0; i--) { + for(NSInteger i=caretPosition; i>=0; i--) { if([[self string] characterAtIndex:i] == co) { if(!bracketCounter) { start = i; @@ -162,7 +163,7 @@ if(start < 0 ) return; bracketCounter = 0; - for(i=caretPosition; i<stringLength; i++) { + for(NSUInteger i=caretPosition; i<stringLength; i++) { if([[self string] characterAtIndex:i] == co) { bracketCounter++; } @@ -390,12 +391,12 @@ { id prefs = [NSUserDefaults standardUserDefaults]; - if([self respondsToSelector:@selector(insertText:)]) - if([prefs objectForKey:SPNullValue] && [[prefs objectForKey:SPNullValue] length]) + if ([self respondsToSelector:@selector(insertText:)]) { + if([prefs stringForKey:SPNullValue] && [[prefs stringForKey:SPNullValue] length]) [self insertText:[prefs objectForKey:SPNullValue]]; else [self insertText:@"NULL"]; - + } } /** @@ -487,7 +488,7 @@ NSInteger idx = [sender tag] - 1000000; NSString *infoPath = nil; NSArray *bundleItems = [[NSApp delegate] bundleItemsForScope:SPBundleScopeInputField]; - if(idx >=0 && idx < [bundleItems count]) { + if(idx >=0 && idx < (NSInteger)[bundleItems count]) { infoPath = [[bundleItems objectAtIndex:idx] objectForKey:SPBundleInternPathToFileKey]; } else { if([sender tag] == 0 && [[sender toolTip] length]) { @@ -515,7 +516,7 @@ if (cmdData) [cmdData release]; return; } else { - if([cmdData objectForKey:SPBundleFileCommandKey] && [[cmdData objectForKey:SPBundleFileCommandKey] length]) { + if([cmdData objectForKey:SPBundleFileCommandKey] && [(NSString *)[cmdData objectForKey:SPBundleFileCommandKey] length]) { NSString *cmd = [cmdData objectForKey:SPBundleFileCommandKey]; NSString *inputAction = @""; @@ -647,7 +648,7 @@ [[NSFileManager defaultManager] removeItemAtPath:bundleInputFilePath error:nil]; NSString *action = SPBundleOutputActionNone; - if([cmdData objectForKey:SPBundleFileOutputActionKey] && [[cmdData objectForKey:SPBundleFileOutputActionKey] length]) + if([cmdData objectForKey:SPBundleFileOutputActionKey] && [(NSString *)[cmdData objectForKey:SPBundleFileOutputActionKey] length]) action = [[cmdData objectForKey:SPBundleFileOutputActionKey] lowercaseString]; // Redirect due exit code @@ -724,7 +725,7 @@ else if([action isEqualToString:SPBundleOutputActionInsertAsSnippet]) { if([self respondsToSelector:@selector(insertAsSnippet:atRange:)]) - [self insertAsSnippet:output atRange:replaceRange]; + [(SPTextView *)self insertAsSnippet:output atRange:replaceRange]; else [SPTooltip showWithObject:NSLocalizedString(@"Input Field doesn't support insertion of snippets.", @"input field doesn't support insertion of snippets.")]; } diff --git a/Source/SPTooltip.h b/Source/SPTooltip.h index 23cf9e88..840cd3c8 100644 --- a/Source/SPTooltip.h +++ b/Source/SPTooltip.h @@ -50,4 +50,6 @@ + (void)showWithObject:(id)content ofType:(NSString *)type; + (void)showWithObject:(id)content; +- (void)animationTick:(id)sender; + @end diff --git a/Source/SPTooltip.m b/Source/SPTooltip.m index 30f73cc8..e9906e74 100644 --- a/Source/SPTooltip.m +++ b/Source/SPTooltip.m @@ -208,7 +208,7 @@ static CGFloat slow_in_out (CGFloat t) [webPreferences setJavaScriptEnabled:YES]; NSString *fontName = ([displayOptions objectForKey:@"fontname"]) ? [displayOptions objectForKey:@"fontname"] : @"Lucida Grande"; - int fontSize = ([displayOptions objectForKey:@"fontsize"]) ? [[displayOptions objectForKey:@"fontsize"] integerValue] : 10; + int fontSize = ([displayOptions objectForKey:@"fontsize"]) ? [[displayOptions objectForKey:@"fontsize"] intValue] : 10; if(fontSize < 5) fontSize = 5; NSFont* font = [NSFont fontWithName:fontName size:fontSize]; @@ -263,7 +263,7 @@ static CGFloat slow_in_out (CGFloat t) boundingRect = [fr convertRect: boundingRect toView:NULL]; pos = [[fr window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)]; NSFont* font = [fr font]; - if(font) pos.y -= [font pointSize]*1.3; + if(font) pos.y -= [font pointSize]*1.3f; return pos; // Otherwise return mouse location } else { @@ -297,10 +297,10 @@ static CGFloat slow_in_out (CGFloat t) @"</html>"; NSString *bgColor = ([displayOptions objectForKey:@"backgroundcolor"]) ? [displayOptions objectForKey:@"backgroundcolor"] : @"#F9FBC5"; - BOOL transparent = ([displayOptions objectForKey:@"transparent"]) ? YES : NO; + BOOL isTransparent = ([displayOptions objectForKey:@"transparent"]) ? YES : NO; - fullContent = [NSString stringWithFormat:fullContent, transparent ? @"transparent" : bgColor, content]; + fullContent = [NSString stringWithFormat:fullContent, isTransparent ? @"transparent" : bgColor, content]; [[webView mainFrame] loadHTMLString:fullContent baseURL:nil]; } @@ -387,9 +387,9 @@ static CGFloat slow_in_out (CGFloat t) [self setValue:[NSDate date] forKey:@"didOpenAtDate"]; mousePositionWhenOpened = NSZeroPoint; - NSWindow* keyWindow = [[NSApp keyWindow] retain]; - BOOL didAcceptMouseMovedEvents = [keyWindow acceptsMouseMovedEvents]; - [keyWindow setAcceptsMouseMovedEvents:YES]; + NSWindow* appKeyWindow = [[NSApp keyWindow] retain]; + BOOL didAcceptMouseMovedEvents = [appKeyWindow acceptsMouseMovedEvents]; + [appKeyWindow setAcceptsMouseMovedEvents:YES]; NSEvent* event = nil; NSInteger eventType; while((event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantFuture] inMode:NSDefaultRunLoopMode dequeue:YES])) @@ -401,7 +401,7 @@ static CGFloat slow_in_out (CGFloat t) if(eventType == NSMouseMoved && [self shouldCloseForMousePosition:[NSEvent mouseLocation]]) break; - if(keyWindow != [NSApp keyWindow] || ![NSApp isActive]) + if(appKeyWindow != [NSApp keyWindow] || ![NSApp isActive]) break; if(spTooltipCounter > 1) @@ -410,8 +410,8 @@ static CGFloat slow_in_out (CGFloat t) } - [keyWindow setAcceptsMouseMovedEvents:didAcceptMouseMovedEvents]; - [keyWindow release]; + [appKeyWindow setAcceptsMouseMovedEvents:didAcceptMouseMovedEvents]; + [appKeyWindow release]; [self orderOut:self]; @@ -434,7 +434,7 @@ static CGFloat slow_in_out (CGFloat t) - (void)animationTick:(id)sender { - CGFloat alpha = 0.97f * (1.0f - 40*slow_in_out(-2.2 * [animationStart timeIntervalSinceNow])); + CGFloat alpha = 0.97f * (1.0f - 40*slow_in_out(-2.2f * (float)[animationStart timeIntervalSinceNow])); if(alpha > 0.0f && spTooltipCounter==1) { diff --git a/Source/SPUserManager.h b/Source/SPUserManager.h index 8bb4e4d2..3df63a6f 100644 --- a/Source/SPUserManager.h +++ b/Source/SPUserManager.h @@ -100,6 +100,7 @@ - (IBAction)checkAllPrivileges:(id)sender; - (IBAction)uncheckAllPrivileges:(id)sender; - (IBAction)closeErrorsSheet:(id)sender; +- (IBAction)doubleClickSchemaPriv:(id)sender; // Schema Privieges - (IBAction)addSchemaPriv:(id)sender; diff --git a/Source/SPUserManager.m b/Source/SPUserManager.m index 5a673389..565cfc6f 100644 --- a/Source/SPUserManager.m +++ b/Source/SPUserManager.m @@ -29,6 +29,7 @@ #import "SPConnectionController.h" #import "SPServerSupport.h" #import "SPAlertSheets.h" +#import <BWToolkitFramework/BWAnchoredButtonBar.h> static const NSString *SPTableViewNameColumnID = @"NameColumn"; @@ -146,11 +147,11 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; // Select users from the mysql.user table MCPResult *result = [self.mySqlConnection queryString:@"SELECT * FROM mysql.user ORDER BY user"]; - NSInteger rows = [result numOfRows]; + NSUInteger rows = (NSUInteger)[result numOfRows]; if (rows > 0) [result dataSeek:0]; - for (NSInteger i = 0; i < rows; i++) + for (NSUInteger i = 0; i < rows; i++) { [resultAsArray addObject:[result fetchRowAsDictionary]]; } @@ -217,7 +218,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; { // Go through each item that contains a dictionary of key-value pairs // for each user currently in the database. - for (NSInteger i = 0; i < [items count]; i++) + for (NSUInteger i = 0; i < [items count]; i++) { NSString *username = [[items objectAtIndex:i] objectForKey:@"User"]; NSArray *parentResults = [[self _fetchUserWithUserName:username] retain]; @@ -312,7 +313,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; if ([results numOfRows]) [results dataSeek:0]; - for (NSInteger i = 0; i < [results numOfRows]; i++) + for (NSUInteger i = 0; i < [results numOfRows]; i++) { [schemas addObject:[results fetchRowAsDictionary]]; } @@ -383,7 +384,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; [queryResults dataSeek:0]; } - for (NSInteger i = 0; i < [queryResults numOfRows]; i++) + for (NSUInteger i = 0; i < [queryResults numOfRows]; i++) { NSDictionary *rowDict = [queryResults fetchRowAsDictionary]; NSManagedObject *dbPriv = [NSEntityDescription insertNewObjectForEntityForName:@"Privileges" @@ -844,7 +845,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; for (NSPersistentStore* store in stores) { NSError *error = nil; - [[self.managedObjectContext persistentStoreCoordinator] removePersistentStore:store error:error]; + [[self.managedObjectContext persistentStoreCoordinator] removePersistentStore:store error:&error]; } // Add a new store @@ -1209,7 +1210,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; MCPResult *result = [self.mySqlConnection queryString:statement]; - NSUInteger rows = [result numOfRows]; + NSUInteger rows = (NSUInteger)[result numOfRows]; BOOL userExists = YES; if (rows == 0) userExists = NO; @@ -1257,6 +1258,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; [self.mySqlConnection queryString:updateResourcesStatement]; [self _checkAndDisplayMySqlError]; } + return YES; } /** diff --git a/Source/SPWindowController.h b/Source/SPWindowController.h index e118e035..5626c580 100644 --- a/Source/SPWindowController.h +++ b/Source/SPWindowController.h @@ -24,7 +24,7 @@ @class PSMTabBarControl, SPDatabaseDocument; -@interface SPWindowController : NSWindowController <NSUserInterfaceValidations> +@interface SPWindowController : NSWindowController { IBOutlet PSMTabBarControl *tabBar; IBOutlet NSTabView *tabView; diff --git a/Source/SPWindowController.m b/Source/SPWindowController.m index 7fdb76e6..e9b73491 100644 --- a/Source/SPWindowController.m +++ b/Source/SPWindowController.m @@ -255,7 +255,8 @@ [[control tabView] addTabViewItem:selectedTabViewItem]; - [control update:NO]; //make sure the new tab is set in the correct position + // Make sure the new tab is set in the correct position by forcing an update + [tabBar update:NO]; // Update tabBar of the new window [newWindowController tabView:[tabBar tabView] didDropTabViewItem:[selectedCell representedObject] inTabBar:control]; @@ -318,7 +319,7 @@ */ - (void)selectTabAtIndex:(NSInteger)index { - if([[tabBar cells] count] > 0 && [[tabBar cells] count] > index) { + if([[tabBar cells] count] > 0 && [[tabBar cells] count] > (NSUInteger)index) { [tabView selectTabViewItemAtIndex:index]; } else if([[tabBar cells] count]) { [tabView selectTabViewItemAtIndex:0]; @@ -438,7 +439,7 @@ NSInteger tabIndex = [tabView indexOfTabViewItem:tabViewItem]; - if([[tabBar cells] count] < tabIndex) return @""; + if([[tabBar cells] count] < (NSUInteger)tabIndex) return @""; PSMTabBarCell *theCell = [[tabBar cells] objectAtIndex:tabIndex]; @@ -539,7 +540,7 @@ NSImage *viewImage = [[NSImage alloc] init]; // Capture an image of the entire window - CGImageRef windowImage = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, [[self window] windowNumber], kCGWindowImageBoundsIgnoreFraming); + CGImageRef windowImage = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, (unsigned int)[[self window] windowNumber], kCGWindowImageBoundsIgnoreFraming); NSBitmapImageRep *viewRep = [[NSBitmapImageRep alloc] initWithCGImage:windowImage]; [viewImage addRepresentation:viewRep]; @@ -750,7 +751,7 @@ [bindingOptions setObject:NSNegateBooleanTransformerName forKey:@"NSValueTransformerName"]; [[theCell indicator] bind:@"animate" toObject:theDocument withKeyPath:@"isProcessing" options:nil]; [[theCell indicator] bind:@"hidden" toObject:theDocument withKeyPath:@"isProcessing" options:bindingOptions]; - [theDocument addObserver:self forKeyPath:@"isProcessing" options:nil context:nil]; + [theDocument addObserver:self forKeyPath:@"isProcessing" options:0 context:nil]; } /** diff --git a/Source/SPXMLExporter.m b/Source/SPXMLExporter.m index 57977be0..dfd55bf0 100644 --- a/Source/SPXMLExporter.m +++ b/Source/SPXMLExporter.m @@ -26,6 +26,7 @@ #import <MCPKit/MCPKit.h> #import "SPXMLExporter.h" +#import "SPExportFile.h" #import "SPFileHandle.h" #import "SPExportUtilities.h" diff --git a/Source/SPXMLExporterDelegate.m b/Source/SPXMLExporterDelegate.m index 9d8b97cf..7f286c46 100644 --- a/Source/SPXMLExporterDelegate.m +++ b/Source/SPXMLExporterDelegate.m @@ -26,7 +26,7 @@ #import "SPXMLExporterDelegate.h" #import "SPXMLExporter.h" #import "SPDatabaseDocument.h" -#import "SPFileHandle.h" +#import "SPExportFile.h" @implementation SPExportController (SPXMLExporterDelegate) diff --git a/Source/YRKSpinningProgressIndicator.m b/Source/YRKSpinningProgressIndicator.m index b6f3c0ac..9d66f598 100644 --- a/Source/YRKSpinningProgressIndicator.m +++ b/Source/YRKSpinningProgressIndicator.m @@ -86,15 +86,15 @@ - (void)drawRect:(NSRect)rect { NSInteger i; - CGFloat alpha = 1.0; + CGFloat alpha = 1.0f; // Determine size based on current bounds NSSize size = [self bounds].size; - CGFloat maxSize; + CGFloat rectMaxSize; if(size.width >= size.height) - maxSize = size.height; + rectMaxSize = size.height; else - maxSize = size.width; + rectMaxSize = size.width; CGContextRef currentContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; [NSGraphicsContext saveGraphicsState]; @@ -112,12 +112,12 @@ if (_isIndeterminate) { // do initial rotation to start place - CGContextRotateCTM(currentContext, 3.14159*2/_numFins * _position); + CGContextRotateCTM(currentContext, 3.14159f*2/_numFins * _position); NSBezierPath *path = [[NSBezierPath alloc] init]; - CGFloat lineWidth = 0.08 * maxSize; // should be 2.75 for 32x32 - CGFloat lineStart = 0.234375 * maxSize; // should be 7.5 for 32x32 - CGFloat lineEnd = 0.421875 * maxSize; // should be 13.5 for 32x32 + CGFloat lineWidth = 0.08f * rectMaxSize; // should be 2.75 for 32x32 + CGFloat lineStart = 0.234375f * rectMaxSize; // should be 7.5 for 32x32 + CGFloat lineEnd = 0.421875f * rectMaxSize; // should be 13.5 for 32x32 [path setLineWidth:lineWidth]; [path setLineCapStyle:NSRoundLineCapStyle]; [path moveToPoint:NSMakePoint(0,lineStart)]; @@ -127,21 +127,21 @@ if(_isAnimating) { [[_foreColor colorWithAlphaComponent:alpha] set]; } else { - [[_foreColor colorWithAlphaComponent:0.2] set]; + [[_foreColor colorWithAlphaComponent:0.2f] set]; } [path stroke]; // we draw all the fins by rotating the CTM, then just redraw the same segment again - CGContextRotateCTM(currentContext, 6.282185/_numFins); - alpha -= 1.0/_numFins; + CGContextRotateCTM(currentContext, 6.282185f/_numFins); + alpha -= 1.0f/_numFins; } [path release]; } else { - CGFloat lineWidth = 1 + (0.01 * maxSize); - CGFloat circleRadius = (maxSize - lineWidth) / 2.1; + CGFloat lineWidth = 1 + (0.01f * rectMaxSize); + CGFloat circleRadius = (rectMaxSize - lineWidth) / 2.1f; NSPoint circleCenter = NSMakePoint(0, 0); [[_foreColor colorWithAlphaComponent:alpha] set]; NSBezierPath *path = [[NSBezierPath alloc] init]; @@ -150,7 +150,7 @@ [path stroke]; [path release]; path = [[NSBezierPath alloc] init]; - [path appendBezierPathWithArcWithCenter:circleCenter radius:circleRadius startAngle:90 endAngle:90-(360*(_currentValue/_maxValue)) clockwise:YES]; + [path appendBezierPathWithArcWithCenter:circleCenter radius:circleRadius startAngle:90 endAngle:90-(360*(float)(_currentValue/_maxValue)) clockwise:YES]; [path lineToPoint:circleCenter] ; [path fill]; [path release]; @@ -186,7 +186,7 @@ NSAutoreleasePool *animationPool = [[NSAutoreleasePool alloc] init]; // Set up the animation speed to subtly change with size > 32. - NSInteger animationDelay = 38000 + (2000 * ([self bounds].size.height / 32)); + useconds_t animationDelay = 38000 + (2000 * ([self bounds].size.height / 32)); NSInteger poolFlushCounter = 0; do { |