diff --git a/AuthorsWindowController.h b/AuthorsWindowController.h index 1f2abb6..b232433 100644 --- a/AuthorsWindowController.h +++ b/AuthorsWindowController.h @@ -21,6 +21,7 @@ #import #import "author.h" +#import "AuthorsWindowControllerDelegate.h" @interface AuthorsWindowController : NSObject { @@ -34,9 +35,9 @@ author *initialSelection; NSManagedObjectContext *managedObjectContext; - id *delegate; + id delegate; } -@property (nonatomic, assign) id *delegate; +@property (nonatomic, assign) id delegate; - (IBAction)saveClicked:(id)sender; - (IBAction)cancelClicked:(id)sender; diff --git a/AuthorsWindowControllerDelegate.h b/AuthorsWindowControllerDelegate.h new file mode 100644 index 0000000..82b7857 --- /dev/null +++ b/AuthorsWindowControllerDelegate.h @@ -0,0 +1,31 @@ +// +// AuthorsWindowControllerDelegate.h +// +// Copyright 2010 Greg Sexton +// +// This file is part of Sofia. +// +// Sofia is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Sofia is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with Sofia. If not, see . +// + +#import + + +@protocol AuthorsWindowControllerDelegate + +@optional + +- (void) savedWithAuthorSelection:(author*)selectedAuthor; + +@end diff --git a/BooksWindowController.h b/BooksWindowController.h index e06cd29..ac3dca2 100644 --- a/BooksWindowController.h +++ b/BooksWindowController.h @@ -25,8 +25,10 @@ #import "author.h" #import "amazonInterface.h" #import "BooksWindowControllerDelegate.h" +#import "AuthorsWindowControllerDelegate.h" +#import "SubjectWindowControllerDelegate.h" -@interface BooksWindowController : NSObjectController { +@interface BooksWindowController : NSObjectController { IBOutlet NSTextField *txt_search; IBOutlet NSTextField *txt_isbn10; @@ -97,24 +99,25 @@ @property (nonatomic, assign) id delegate; @property (nonatomic) BOOL displaySearch; -- (IBAction) searchClicked:(id)sender; -- (IBAction) clearClicked:(id)sender; -- (IBAction) cancelClicked:(id)sender; -- (IBAction) saveClicked:(id)sender; - (IBAction) addAuthorClicked:(id)sender; - (IBAction) addSubjectClicked:(id)sender; +- (IBAction) cancelClicked:(id)sender; +- (IBAction) clearClicked:(id)sender; - (IBAction) copiesValueChanged:(id)sender; +- (IBAction) saveClicked:(id)sender; +- (IBAction) searchClicked:(id)sender; +- (BOOL) updateUIFromAmazon; +- (BOOL) updateUIFromISBNDb; - (NSFetchRequest*) authorExistsWithName:(NSString*)authorName; - (NSFetchRequest*) subjectExistsWithName:(NSString*)subjectName; -- (void) displayManagedAuthorsWithSelectedAuthor:(author*)authorObj; -- (void) displayManagedSubjectsWithSelectedSubject:(subject*)subjectObj; -- (void) updateUIFromManagedObject; +- (NSFetchRequest*)entity:(NSString*)entity existsWithName:(NSString*)entityName; - (id) initWithManagedObject:(book*)object withSearch:(BOOL)withSearch; - (void) clearAllFields; +- (void) displayManagedAuthorsWithSelectedAuthor:(author*)authorObj; +- (void) displayManagedSubjectsWithSelectedSubject:(subject*)subjectObj; - (void) saveManagedObjectContext:(NSManagedObjectContext*)context; -- (BOOL) updateUIFromISBNDb; -- (BOOL) updateUIFromAmazon; - (void) updateManagedObjectFromUI; - (void) updateSummaryTabView; +- (void) updateUIFromManagedObject; @end diff --git a/BooksWindowController.m b/BooksWindowController.m index c7bfe01..2dba756 100644 --- a/BooksWindowController.m +++ b/BooksWindowController.m @@ -64,9 +64,9 @@ - (void) awakeFromNib { } - (NSManagedObjectContext *) managedObjectContext{ - if (managedObjectContext != nil) { + if (managedObjectContext != nil) return managedObjectContext; - } + return nil; } - (void) searchForISBN:(NSString*)isbn{ @@ -157,7 +157,9 @@ - (BOOL) updateUIFromAmazon { amazonInterface* amazon = [[amazonInterface alloc] init]; if(![amazon searchISBN:[txt_search stringValue]]){ - NSRunInformationalAlertPanel(@"Download Error", @"Unable to retrieve information from Amazon. Please check internet connectivity and valid access keys in your preferences." , @"Ok", nil, nil); + NSRunInformationalAlertPanel(@"Download Error", + @"Unable to retrieve information from Amazon. Please check internet connectivity and valid access keys in your preferences." , @"Ok", nil, nil); + [amazon release]; return false; } @@ -165,6 +167,8 @@ - (BOOL) updateUIFromAmazon { [img_summary_cover setImage:[amazon frontCover]]; [img_cover setImage:[amazon frontCover]]; + [amazon release]; + return true; } @@ -172,12 +176,15 @@ - (BOOL) updateUIFromISBNDb { isbndbInterface *isbndb = [[isbndbInterface alloc] init]; if(![isbndb searchISBN:[txt_search stringValue]]){ - NSRunInformationalAlertPanel(@"Download Error", @"Unable to retrieve information from ISBNDb. Please check internet connectivity and a valid access key in your preferences." , @"Ok", nil, nil); + NSRunInformationalAlertPanel(@"Download Error", + @"Unable to retrieve information from ISBNDb. Please check internet connectivity and a valid access key in your preferences." , @"Ok", nil, nil); + [isbndb release]; return false; } if(![isbndb successfullyFoundBook]){ NSRunInformationalAlertPanel(@"Search Error", @"No results found for this ISBN on ISBNDb." , @"Ok", nil, nil); + [isbndb release]; return false; } @@ -245,35 +252,35 @@ - (BOOL) updateUIFromISBNDb { //lastly update the summary tab [self updateSummaryTabView]; + [isbndb release]; return true; } - (NSFetchRequest*) authorExistsWithName:(NSString*)authorName{ //returns the request in order to get hold of these authors //otherwise returns nil if the author cannot be found. - NSError *error; - NSString *predicate = [[NSString alloc] initWithFormat:@"name MATCHES '%@'", authorName]; - NSFetchRequest *request = [[NSFetchRequest alloc] init]; - [request setEntity:[NSEntityDescription entityForName:@"author" inManagedObjectContext:managedObjectContext]]; - [request setPredicate:[NSPredicate predicateWithFormat:predicate]]; - if([managedObjectContext countForFetchRequest:request error:&error] > 0){ - return request; - }else{ - return nil; - } + return [self entity:@"author" existsWithName:authorName]; } - (NSFetchRequest*) subjectExistsWithName:(NSString*)subjectName{ //returns the request in order to get hold of these subjects //otherwise returns nil if the subject cannot be found. + return [self entity:@"subject" existsWithName:subjectName]; +} + +- (NSFetchRequest*)entity:(NSString*)entity existsWithName:(NSString*)entityName{ NSError *error; - NSString *predicate = [[NSString alloc] initWithFormat:@"name MATCHES '%@'", subjectName]; + NSString *predicate = [[NSString alloc] initWithFormat:@"name MATCHES '%@'", entityName]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; - [request setEntity:[NSEntityDescription entityForName:@"subject" inManagedObjectContext:managedObjectContext]]; + [request setEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:managedObjectContext]]; [request setPredicate:[NSPredicate predicateWithFormat:predicate]]; + + [predicate release]; + if([managedObjectContext countForFetchRequest:request error:&error] > 0){ - return request; + return [request autorelease]; }else{ + [request release]; return nil; } } @@ -304,6 +311,7 @@ - (void) updateManagedObjectFromUI { } - (IBAction) searchClicked:(id)sender { + //TODO: check that searching for isbn //check if the book already exists in library NSError *error; NSString *predicate = [[NSString alloc] initWithFormat:@"isbn10 MATCHES '%@' OR isbn13 MATCHES '%@'", @@ -312,6 +320,7 @@ - (IBAction) searchClicked:(id)sender { NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:@"book" inManagedObjectContext:managedObjectContext]]; [request setPredicate:[NSPredicate predicateWithFormat:predicate]]; + [predicate release]; if([managedObjectContext countForFetchRequest:request error:&error] > 0){ //[[NSApplication sharedApplication] presentError:error]; int alertReturn; @@ -327,8 +336,10 @@ - (IBAction) searchClicked:(id)sender { [self setObj:[[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0]]; [self updateUIFromManagedObject]; } + [request release]; return; } + [request release]; [progIndicator setUsesThreadedAnimation:true]; [progIndicator startAnimation:self]; diff --git a/GHUnitTestMain.m b/GHUnitTestMain.m old mode 100755 new mode 100644 diff --git a/SidebarOutlineView.m b/SidebarOutlineView.m index bb0baf4..f6707d0 100644 --- a/SidebarOutlineView.m +++ b/SidebarOutlineView.m @@ -21,7 +21,6 @@ #import "SidebarOutlineView.h" -// TODO: fix renaming!!! // TODO: refactor out logic to a controller. @implementation SidebarOutlineView @@ -342,7 +341,7 @@ - (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id } - (id)outlineView:(NSOutlineView *)outlineView persistentObjectForItem:(id)item{ - return item; //TODO: no idea what this really does! haha + return item; } - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item{ diff --git a/SubjectWindowController.h b/SubjectWindowController.h index aa2a955..b24a167 100644 --- a/SubjectWindowController.h +++ b/SubjectWindowController.h @@ -23,6 +23,7 @@ #import "subject.h" #import "book.h" #import "BooksWindowController.h" +#import "SubjectWindowControllerDelegate.h" @interface SubjectWindowController : NSObject { @@ -36,9 +37,9 @@ subject *initialSelection; NSManagedObjectContext *managedObjectContext; - id *delegate; + id delegate; } -@property (nonatomic, assign) id *delegate; +@property (nonatomic, assign) id delegate; - (IBAction)saveClicked:(id)sender; - (IBAction)cancelClicked:(id)sender; diff --git a/SubjectWindowControllerDelegate.h b/SubjectWindowControllerDelegate.h new file mode 100644 index 0000000..523ef04 --- /dev/null +++ b/SubjectWindowControllerDelegate.h @@ -0,0 +1,31 @@ +// +// SubjectWindowControllerDelegate.h +// +// Copyright 2010 Greg Sexton +// +// This file is part of Sofia. +// +// Sofia is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Sofia is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with Sofia. If not, see . +// + +#import + + +@protocol SubjectWindowControllerDelegate + +@optional + +- (void) savedWithSubjectSelection:(subject*)selectedSubject; + +@end diff --git a/books.xcodeproj/greg.mode1v3 b/books.xcodeproj/greg.mode1v3 index 3fb8464..59deaf9 100644 --- a/books.xcodeproj/greg.mode1v3 +++ b/books.xcodeproj/greg.mode1v3 @@ -232,6 +232,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -280,7 +282,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 19 + 20 17 16 0 @@ -317,14 +319,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - PredicateEditorWindowControllerDelegate.h + AuthorsWindowControllerDelegate.h PBXSplitModuleInNavigatorKey Split0 @@ -332,11 +332,11 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - PredicateEditorWindowControllerDelegate.h + AuthorsWindowControllerDelegate.h _historyCapacity 0 bookmark - 37FF4F6111E7CEA6001B8ECC + 37FF4FCC11E8AE7B001B8ECC history 37FF4DB111E291FB001B8ECC @@ -345,7 +345,11 @@ 37FF4F4B11E7CCE2001B8ECC 37FF4F4C11E7CCE2001B8ECC 37FF4F4D11E7CCE2001B8ECC - 37FF4F4E11E7CCE2001B8ECC + 37FF4FB911E8ADB6001B8ECC + 37FF4FBA11E8ADB6001B8ECC + 37FF4FBB11E8ADB6001B8ECC + 37FF4FBC11E8ADB6001B8ECC + 37FF4FBD11E8ADB6001B8ECC SplitCount @@ -541,7 +545,6 @@ 5 WindowOrderList - 37FF4F6211E7CEA6001B8ECC 37FF4DC511E29265001B8ECC 37FF4DBF11E291FB001B8ECC 37FF4DC011E291FB001B8ECC @@ -572,7 +575,7 @@ PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - SidebarOutlineView.m + BooksWindowController.m StatusBarVisibility diff --git a/books.xcodeproj/greg.pbxuser b/books.xcodeproj/greg.pbxuser index 7ee9a0d..e5849df 100644 --- a/books.xcodeproj/greg.pbxuser +++ b/books.xcodeproj/greg.pbxuser @@ -387,6 +387,27 @@ 37FF4F5911E7CE0C001B8ECC /* PBXTextBookmark */ = 37FF4F5911E7CE0C001B8ECC /* PBXTextBookmark */; 37FF4F5C11E7CE9E001B8ECC /* PBXTextBookmark */ = 37FF4F5C11E7CE9E001B8ECC /* PBXTextBookmark */; 37FF4F6111E7CEA6001B8ECC /* PBXTextBookmark */ = 37FF4F6111E7CEA6001B8ECC /* PBXTextBookmark */; + 37FF4F6711E7DD29001B8ECC /* PBXTextBookmark */ = 37FF4F6711E7DD29001B8ECC /* PBXTextBookmark */; + 37FF4F7511E893F6001B8ECC /* PBXTextBookmark */ = 37FF4F7511E893F6001B8ECC /* PBXTextBookmark */; + 37FF4F7D11E8A895001B8ECC /* PBXTextBookmark */ = 37FF4F7D11E8A895001B8ECC /* PBXTextBookmark */; + 37FF4F8611E8A942001B8ECC /* PBXTextBookmark */ = 37FF4F8611E8A942001B8ECC /* PBXTextBookmark */; + 37FF4F8C11E8A986001B8ECC /* PBXTextBookmark */ = 37FF4F8C11E8A986001B8ECC /* PBXTextBookmark */; + 37FF4F8F11E8AA52001B8ECC /* PBXTextBookmark */ = 37FF4F8F11E8AA52001B8ECC /* PBXTextBookmark */; + 37FF4F9211E8AA61001B8ECC /* PBXTextBookmark */ = 37FF4F9211E8AA61001B8ECC /* PBXTextBookmark */; + 37FF4F9911E8AAEC001B8ECC /* PBXTextBookmark */ = 37FF4F9911E8AAEC001B8ECC /* PBXTextBookmark */; + 37FF4F9E11E8AB5B001B8ECC /* PBXTextBookmark */ = 37FF4F9E11E8AB5B001B8ECC /* PBXTextBookmark */; + 37FF4FA111E8ABD3001B8ECC /* PBXTextBookmark */ = 37FF4FA111E8ABD3001B8ECC /* PBXTextBookmark */; + 37FF4FA411E8ABE6001B8ECC /* PBXTextBookmark */ = 37FF4FA411E8ABE6001B8ECC /* PBXTextBookmark */; + 37FF4FA811E8ABF8001B8ECC /* PBXTextBookmark */ = 37FF4FA811E8ABF8001B8ECC /* PBXTextBookmark */; + 37FF4FAB11E8AC16001B8ECC /* PBXTextBookmark */ = 37FF4FAB11E8AC16001B8ECC /* PBXTextBookmark */; + 37FF4FB911E8ADB6001B8ECC /* PBXTextBookmark */ = 37FF4FB911E8ADB6001B8ECC /* PBXTextBookmark */; + 37FF4FBA11E8ADB6001B8ECC /* PBXTextBookmark */ = 37FF4FBA11E8ADB6001B8ECC /* PBXTextBookmark */; + 37FF4FBB11E8ADB6001B8ECC /* PBXTextBookmark */ = 37FF4FBB11E8ADB6001B8ECC /* PBXTextBookmark */; + 37FF4FBC11E8ADB6001B8ECC /* PBXTextBookmark */ = 37FF4FBC11E8ADB6001B8ECC /* PBXTextBookmark */; + 37FF4FBD11E8ADB6001B8ECC /* PBXTextBookmark */ = 37FF4FBD11E8ADB6001B8ECC /* PBXTextBookmark */; + 37FF4FBE11E8ADB6001B8ECC /* PBXTextBookmark */ = 37FF4FBE11E8ADB6001B8ECC /* PBXTextBookmark */; + 37FF4FC611E8AE58001B8ECC /* PBXTextBookmark */ = 37FF4FC611E8AE58001B8ECC /* PBXTextBookmark */; + 37FF4FCC11E8AE7B001B8ECC /* PBXTextBookmark */ = 37FF4FCC11E8AE7B001B8ECC /* PBXTextBookmark */; }; sourceControlManager = 3736558B101CCA7200709C8F /* Source Control */; userBuildSettings = { @@ -415,9 +436,9 @@ }; 371182B110C454E200732634 /* SidebarOutlineView.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1828, 8164}}"; - sepNavSelRange = "{8668, 0}"; - sepNavVisRange = "{8471, 1525}"; + sepNavIntBoundsRect = "{{0, 0}, {1828, 8268}}"; + sepNavSelRange = "{18623, 0}"; + sepNavVisRange = "{7049, 1594}"; }; }; 3735A79E11C6DBEF00DD7461 /* ImportBooksController.h */ = { @@ -575,7 +596,7 @@ ignoreCount = 0; lineNumber = 71; location = Sofia; - modificationTime = 300404388.574063; + modificationTime = 300461655.751287; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -593,7 +614,7 @@ ignoreCount = 0; lineNumber = 90; location = Sofia; - modificationTime = 300404388.575334; + modificationTime = 300461655.753025; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -611,7 +632,7 @@ ignoreCount = 0; lineNumber = 95; location = Sofia; - modificationTime = 300404388.580002; + modificationTime = 300461655.758032; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -774,16 +795,16 @@ }; 37365592101CCC3C00709C8F /* BooksWindowController.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1143, 1417}}"; - sepNavSelRange = "{3869, 0}"; - sepNavVisRange = "{1614, 1239}"; + sepNavIntBoundsRect = "{{0, 0}, {1828, 1586}}"; + sepNavSelRange = "{4508, 0}"; + sepNavVisRange = "{2587, 1921}"; }; }; 37365593101CCC3C00709C8F /* BooksWindowController.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1419, 6955}}"; - sepNavSelRange = "{4464, 0}"; - sepNavVisRange = "{4163, 1012}"; + sepNavIntBoundsRect = "{{0, 0}, {1828, 6656}}"; + sepNavSelRange = "{8687, 0}"; + sepNavVisRange = "{7792, 1906}"; }; }; 373751491054219600718317 /* database.xcdatamodel */ = { @@ -975,9 +996,9 @@ }; 373752C5105EB6D500718317 /* SofiaApplication.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1143, 5343}}"; - sepNavSelRange = "{8633, 0}"; - sepNavVisRange = "{8111, 1048}"; + sepNavIntBoundsRect = "{{0, 0}, {1828, 5369}}"; + sepNavSelRange = "{14632, 0}"; + sepNavVisRange = "{10707, 2087}"; }; }; 3745148411B70B85001C7960 /* BooksImageBrowserView.h */ = { @@ -1540,7 +1561,7 @@ ignoreCount = 0; lineNumber = 27; location = Sofia; - modificationTime = 300404388.60334; + modificationTime = 300461655.771109; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -1648,7 +1669,7 @@ ignoreCount = 0; lineNumber = 189; location = Sofia; - modificationTime = 300404388.609447; + modificationTime = 300461655.771772; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -2275,9 +2296,9 @@ }; 37D7073610B5D8BE0004F441 /* AuthorsWindowController.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1828, 1482}}"; + sepNavIntBoundsRect = "{{0, 0}, {1371, 1482}}"; sepNavSelRange = "{2299, 0}"; - sepNavVisRange = "{2142, 1496}"; + sepNavVisRange = "{1178, 2460}"; }; }; 37D708D910C190100004F441 /* MBPreferencesController.h */ = { @@ -2289,9 +2310,9 @@ }; 37D708DA10C190100004F441 /* MBPreferencesController.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1419, 3523}}"; + sepNavIntBoundsRect = "{{0, 0}, {1828, 3523}}"; sepNavSelRange = "{2278, 0}"; - sepNavVisRange = "{1955, 651}"; + sepNavVisRange = "{1527, 1095}"; }; }; 37D708F210C192980004F441 /* AccessKeyViewController.h */ = { @@ -2331,9 +2352,9 @@ }; 37D709A310C1D8E50004F441 /* SubjectWindowController.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {951, 1300}}"; + sepNavIntBoundsRect = "{{0, 0}, {1371, 1391}}"; sepNavSelRange = "{1577, 0}"; - sepNavVisRange = "{0, 2328}"; + sepNavVisRange = "{0, 2655}"; }; }; 37FF4DAD11E291EC001B8ECC /* SofiaApplication.m:308 */ = { @@ -2350,7 +2371,7 @@ ignoreCount = 0; lineNumber = 308; location = Sofia; - modificationTime = 300404388.610253; + modificationTime = 300461655.772373; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -2464,7 +2485,7 @@ ignoreCount = 0; lineNumber = 470; location = Sofia; - modificationTime = 300404388.610901; + modificationTime = 300461655.77323; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -2602,7 +2623,7 @@ ignoreCount = 0; lineNumber = 150; location = Sofia; - modificationTime = 300404388.617801; + modificationTime = 300461655.77404; originalNumberOfMultipleMatches = 1; state = 2; }; @@ -2767,7 +2788,7 @@ hitCount = 0; ignoreCount = 0; location = libobjc.A.dylib; - modificationTime = 300404388.969962; + modificationTime = 300461656.036021; originalNumberOfMultipleMatches = 1; state = 1; symbolName = objc_exception_throw; @@ -3094,7 +3115,7 @@ }; 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1371, 966}}"; + sepNavIntBoundsRect = "{{0, 0}, {1371, 989}}"; sepNavSelRange = "{923, 0}"; sepNavVisRange = "{0, 923}"; }; @@ -3189,6 +3210,230 @@ vrLen = 923; vrLoc = 0; }; + 37FF4F6711E7DD29001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F7511E893F6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F7D11E8A895001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F8611E8A942001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F8C11E8A986001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F8F11E8AA52001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F9211E8AA61001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F9911E8AAEC001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4F9E11E8AB5B001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4FA111E8ABD3001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4FA411E8ABE6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4FA811E8ABF8001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4FAB11E8AC16001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1371, 989}}"; + sepNavSelRange = "{300, 0}"; + sepNavVisRange = "{0, 300}"; + }; + }; + 37FF4FB311E8ACEA001B8ECC /* SubjectWindowControllerDelegate.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1371, 989}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 230}"; + }; + }; + 37FF4FB911E8ADB6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */; + name = "PredicateEditorWindowControllerDelegate.h: 31"; + rLen = 0; + rLoc = 923; + rType = 0; + vrLen = 923; + vrLoc = 0; + }; + 37FF4FBA11E8ADB6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37D7073610B5D8BE0004F441 /* AuthorsWindowController.m */; + name = "AuthorsWindowController.m: 71"; + rLen = 0; + rLoc = 2299; + rType = 0; + vrLen = 2460; + vrLoc = 1178; + }; + 37FF4FBB11E8ADB6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37D709A310C1D8E50004F441 /* SubjectWindowController.m */; + name = "SubjectWindowController.m: 49"; + rLen = 0; + rLoc = 1577; + rType = 0; + vrLen = 2655; + vrLoc = 0; + }; + 37FF4FBC11E8ADB6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4FB311E8ACEA001B8ECC /* SubjectWindowControllerDelegate.h */; + name = "SubjectWindowControllerDelegate.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 230; + vrLoc = 0; + }; + 37FF4FBD11E8ADB6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */; + name = "AuthorsWindowControllerDelegate.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 230; + vrLoc = 0; + }; + 37FF4FBE11E8ADB6001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */; + name = "AuthorsWindowControllerDelegate.h: 19"; + rLen = 0; + rLoc = 300; + rType = 0; + vrLen = 300; + vrLoc = 0; + }; + 37FF4FC611E8AE58001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */; + name = "AuthorsWindowControllerDelegate.h: 19"; + rLen = 0; + rLoc = 300; + rType = 0; + vrLen = 300; + vrLoc = 0; + }; + 37FF4FCC11E8AE7B001B8ECC /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */; + name = "AuthorsWindowControllerDelegate.h: 19"; + rLen = 0; + rLoc = 300; + rType = 0; + vrLen = 300; + vrLoc = 0; + }; 8D1107260486CEB800E47090 /* Sofia */ = { activeExec = 0; executables = ( diff --git a/books.xcodeproj/project.pbxproj b/books.xcodeproj/project.pbxproj index 7086e4c..b651eae 100644 --- a/books.xcodeproj/project.pbxproj +++ b/books.xcodeproj/project.pbxproj @@ -181,6 +181,8 @@ 37D709A210C1D8E50004F441 /* SubjectWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubjectWindowController.h; sourceTree = ""; }; 37D709A310C1D8E50004F441 /* SubjectWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubjectWindowController.m; sourceTree = ""; }; 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PredicateEditorWindowControllerDelegate.h; sourceTree = ""; }; + 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthorsWindowControllerDelegate.h; sourceTree = ""; }; + 37FF4FB311E8ACEA001B8ECC /* SubjectWindowControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubjectWindowControllerDelegate.h; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* Sofia.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sofia.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -311,6 +313,8 @@ children = ( 3735AAF011CEBDD300DD7461 /* BooksWindowControllerDelegate.h */, 37FF4F4311E7CC07001B8ECC /* PredicateEditorWindowControllerDelegate.h */, + 37FF4FB211E8ACDA001B8ECC /* AuthorsWindowControllerDelegate.h */, + 37FF4FB311E8ACEA001B8ECC /* SubjectWindowControllerDelegate.h */, ); name = Protocols; sourceTree = "";