Revision: 4979
http://skim-app.svn.sourceforge.net/skim-app/?rev=4979&view=rev
Author: hofman
Date: 2008-11-22 18:48:54 +0000 (Sat, 22 Nov 2008)
Log Message:
-----------
Add search menu item to choose case insensitive option to note search fields
Modified Paths:
--------------
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
trunk/SKMainWindowController_UI.m
trunk/SKNoteOutlineView.h
trunk/SKNoteOutlineView.m
trunk/SKNotesDocument.h
trunk/SKNotesDocument.m
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKMainWindowController.h 2008-11-22 18:48:54 UTC (rev 4979)
@@ -159,6 +159,7 @@
NSMutableArray *notes;
CFMutableDictionaryRef rowHeights;
BOOL updatingNoteSelection;
+ BOOL caseInsensitiveNoteSearch;
IBOutlet NSArrayController *snapshotArrayController;
IBOutlet SKThumbnailTableView *snapshotTableView;
@@ -336,6 +337,7 @@
- (IBAction)chooseTransition:(id)sender;
- (IBAction)toggleCaseInsensitiveSearch:(id)sender;
- (IBAction)toggleWholeWordSearch:(id)sender;
+- (IBAction)toggleCaseInsensitiveNoteSearch:(id)sender;
- (void)showSnapshotAtPageNumber:(int)pageNum forRect:(NSRect)rect
scaleFactor:(float)scaleFactor autoFits:(BOOL)autoFits;
- (void)showSnapshotsWithSetups:(NSArray *)setups;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKMainWindowController.m 2008-11-22 18:48:54 UTC (rev 4979)
@@ -224,6 +224,7 @@
findPanelFind = NO;
caseInsensitiveSearch = YES;
wholeWordSearch = NO;
+ caseInsensitiveNoteSearch = YES;
groupedSearchResults = [[NSMutableArray alloc] init];
thumbnails = [[NSMutableArray alloc] init];
notes = [[NSMutableArray alloc] init];
@@ -331,6 +332,10 @@
[menu addItemWithTitle:NSLocalizedString(@"Ignore Case", @"Menu item
title") action:@selector(toggleCaseInsensitiveSearch:) target:self];
[[searchField cell] setSearchMenuTemplate:menu];
[[searchField cell] setPlaceholderString:NSLocalizedString(@"Search",
@"placeholder")];
+
+ menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease];
+ [menu addItemWithTitle:NSLocalizedString(@"Ignore Case", @"Menu item
title") action:@selector(toggleCaseInsensitiveNoteSearch:) target:self];
+ [[noteSearchField cell] setSearchMenuTemplate:menu];
[[noteSearchField cell] setPlaceholderString:NSLocalizedString(@"Search",
@"placeholder")];
[[[noteOutlineView
tableColumnWithIdentifier:SKMainWindowNoteColumnIdentifer] headerCell]
setTitle:NSLocalizedString(@"Note", @"Table header title")];
@@ -2115,6 +2120,12 @@
[self search:searchField];
}
+- (IBAction)toggleCaseInsensitiveNoteSearch:(id)sender {
+ caseInsensitiveNoteSearch = NO == caseInsensitiveNoteSearch;
+ if ([[noteSearchField stringValue] length])
+ [self searchNotes:noteSearchField];
+}
+
- (IBAction)toggleLeftSidePane:(id)sender {
if ([self isFullScreen]) {
[[SKPDFToolTipWindow sharedToolTipWindow] fadeOut];
@@ -3692,7 +3703,7 @@
}
- (void)updateNoteFilterPredicate {
- [noteArrayController setFilterPredicate:[noteOutlineView
filterPredicateForSearchString:[noteSearchField stringValue]]];
+ [noteArrayController setFilterPredicate:[noteOutlineView
filterPredicateForSearchString:[noteSearchField stringValue]
caseInsensitive:caseInsensitiveNoteSearch]];
[noteOutlineView reloadData];
}
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKMainWindowController_UI.m 2008-11-22 18:48:54 UTC (rev 4979)
@@ -1347,6 +1347,9 @@
} else if (action == @selector(toggleWholeWordSearch:)) {
[menuItem setState:wholeWordSearch ? NSOnState : NSOffState];
return floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_4;
+ } else if (action == @selector(toggleCaseInsensitiveNoteSearch:)) {
+ [menuItem setState:caseInsensitiveNoteSearch ? NSOnState : NSOffState];
+ return YES;
}
return YES;
}
Modified: trunk/SKNoteOutlineView.h
===================================================================
--- trunk/SKNoteOutlineView.h 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKNoteOutlineView.h 2008-11-22 18:48:54 UTC (rev 4979)
@@ -49,7 +49,7 @@
- (void)setNoteTypes:(NSArray *)types;
- (NSMenu *)noteTypeMenu;
-- (NSPredicate *)filterPredicateForSearchString:(NSString *)searchString;
+- (NSPredicate *)filterPredicateForSearchString:(NSString *)searchString
caseInsensitive:(BOOL)caseInsensitive;
- (IBAction)toggleDisplayNoteType:(id)sender;
- (IBAction)displayAllNoteTypes:(id)sender;
Modified: trunk/SKNoteOutlineView.m
===================================================================
--- trunk/SKNoteOutlineView.m 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKNoteOutlineView.m 2008-11-22 18:48:54 UTC (rev 4979)
@@ -200,7 +200,7 @@
}
}
-- (NSPredicate *)filterPredicateForSearchString:(NSString *)searchString {
+- (NSPredicate *)filterPredicateForSearchString:(NSString *)searchString
caseInsensitive:(BOOL)caseInsensitive {
NSPredicate *filterPredicate = nil;
NSPredicate *typePredicate = nil;
NSPredicate *searchPredicate = nil;
@@ -221,9 +221,12 @@
if (searchString && [searchString isEqualToString:@""] == NO) {
NSExpression *lhs = [NSExpression
expressionForConstantValue:searchString];
NSExpression *rhs = [NSExpression expressionForKeyPath:@"string"];
- NSPredicate *stringPredicate = [NSComparisonPredicate
predicateWithLeftExpression:lhs rightExpression:rhs
modifier:NSDirectPredicateModifier type:NSInPredicateOperatorType
options:NSCaseInsensitivePredicateOption |
NSDiacriticInsensitivePredicateOption];
+ unsigned int options = NSDiacriticInsensitivePredicateOption;
+ if (caseInsensitive)
+ options |= NSCaseInsensitivePredicateOption;
+ NSPredicate *stringPredicate = [NSComparisonPredicate
predicateWithLeftExpression:lhs rightExpression:rhs
modifier:NSDirectPredicateModifier type:NSInPredicateOperatorType
options:options];
rhs = [NSExpression expressionForKeyPath:@"text.string"];
- NSPredicate *textPredicate = [NSComparisonPredicate
predicateWithLeftExpression:lhs rightExpression:rhs
modifier:NSDirectPredicateModifier type:NSInPredicateOperatorType
options:NSCaseInsensitivePredicateOption |
NSDiacriticInsensitivePredicateOption];
+ NSPredicate *textPredicate = [NSComparisonPredicate
predicateWithLeftExpression:lhs rightExpression:rhs
modifier:NSDirectPredicateModifier type:NSInPredicateOperatorType
options:options];
searchPredicate = [NSCompoundPredicate
orPredicateWithSubpredicates:[NSArray arrayWithObjects:stringPredicate,
textPredicate, nil]];
}
if (typePredicate) {
Modified: trunk/SKNotesDocument.h
===================================================================
--- trunk/SKNotesDocument.h 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKNotesDocument.h 2008-11-22 18:48:54 UTC (rev 4979)
@@ -49,11 +49,13 @@
NSMutableArray *notes;
CFMutableDictionaryRef rowHeights;
BOOL exportUsingPanel;
+ BOOL caseInsensitiveSearch;
}
- (IBAction)openPDF:(id)sender;
- (IBAction)searchNotes:(id)sender;
- (IBAction)toggleStatusBar:(id)sender;
+- (IBAction)toggleCaseInsensitiveSearch:(id)sender;
- (NSArray *)notes;
- (unsigned int)countOfNotes;
Modified: trunk/SKNotesDocument.m
===================================================================
--- trunk/SKNotesDocument.m 2008-11-21 17:58:52 UTC (rev 4978)
+++ trunk/SKNotesDocument.m 2008-11-22 18:48:54 UTC (rev 4979)
@@ -82,6 +82,7 @@
if (self = [super init]) {
notes = [[NSMutableArray alloc] initWithCapacity:10];
rowHeights = CFDictionaryCreateMutable(NULL, 0,
&kSKPointerEqualObjectDictionaryKeyCallBacks,
&kSKFloatDictionaryValueCallBacks);
+ caseInsensitiveSearch = YES;
}
return self;
}
@@ -114,6 +115,9 @@
if ([[NSUserDefaults standardUserDefaults]
boolForKey:SKShowNotesStatusBarKey] == NO)
[self toggleStatusBar:nil];
+ NSMenu *menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init]
autorelease];
+ [menu addItemWithTitle:NSLocalizedString(@"Ignore Case", @"Menu item
title") action:@selector(toggleCaseInsensitiveSearch:) target:self];
+ [[searchField cell] setSearchMenuTemplate:menu];
[[searchField cell] setPlaceholderString:NSLocalizedString(@"Search",
@"placeholder")];
[[[outlineView
tableColumnWithIdentifier:SKNotesDocumentNoteColumnIdentifier] headerCell]
setTitle:NSLocalizedString(@"Note", @"Table header title")];
@@ -278,7 +282,7 @@
}
- (void)updateNoteFilterPredicate {
- [arrayController setFilterPredicate:[outlineView
filterPredicateForSearchString:[searchField stringValue]]];
+ [arrayController setFilterPredicate:[outlineView
filterPredicateForSearchString:[searchField stringValue]
caseInsensitive:caseInsensitiveSearch]];
[outlineView reloadData];
}
@@ -368,6 +372,12 @@
[outlineView reloadData];
}
+- (IBAction)toggleCaseInsensitiveSearch:(id)sender {
+ caseInsensitiveSearch = NO == caseInsensitiveSearch;
+ if ([[searchField stringValue] length])
+ [self searchNotes:searchField];
+}
+
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
SEL action = [menuItem action];
if (action == @selector(toggleStatusBar:)) {
@@ -376,6 +386,9 @@
else
[menuItem setTitle:NSLocalizedString(@"Show Status Bar", @"Menu
item title")];
return YES;
+ } else if (action == @selector(toggleCaseInsensitiveSearch:)) {
+ [menuItem setState:caseInsensitiveSearch ? NSOnState : NSOffState];
+ return YES;
}
return YES;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit