Author: mlytwyn
Date: Tue Jun 30 23:58:51 2015
New Revision: 38724
URL: http://svn.gna.org/viewcvs/gnustep?rev=38724&view=rev
Log:
Merge Source/NSDocumentController.m - fix Source/NSDocumentFrameworkPrivate.h
Modified:
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentFrameworkPrivate.h
Modified:
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m?rev=38724&r1=38723&r2=38724&view=diff
==============================================================================
--- libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m
(original)
+++ libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m
Tue Jun 30 23:58:51 2015
@@ -277,42 +277,8 @@
_documents = [[NSMutableArray alloc] init];
/* Get list of recent documents */
- _recent_documents = [[NSUserDefaults standardUserDefaults]
- objectForKey: NSRecentDocuments];
- if (_recent_documents)
- {
- int i, count, max;
-
- _recent_documents = [_recent_documents mutableCopy];
- count = [_recent_documents count];
- for (i = 0; i < count; i++)
- {
- NSString *str;
- NSURL *url;
-
- str = [_recent_documents objectAtIndex: i];
- url = [NSURL URLWithString: str];
- if (url == nil)
- {
- NSLog(@"NSRecentItems value '%@' is not valid ... ignored", str);
- [_recent_documents removeObjectAtIndex: i];
- i--;
- count--;
- }
- else
- {
- [_recent_documents replaceObjectAtIndex: i withObject: url];
- }
- }
-
- max = [self maximumRecentDocumentCount];
- if (count > max)
- {
- [_recent_documents removeObjectsInRange: NSMakeRange(0, count - max)];
- }
- }
- else
- _recent_documents = RETAIN([NSMutableArray array]);
+ [self _loadRecentDocuments];
+
[self setShouldCreateUI: YES];
[[[NSWorkspace sharedWorkspace] notificationCenter]
@@ -1347,7 +1313,6 @@
- (void) noteNewRecentDocumentURL: (NSURL *)anURL
{
NSUInteger index = [_recent_documents indexOfObject: anURL];
- NSMutableArray *a;
if (index != NSNotFound)
{
@@ -1362,16 +1327,8 @@
[_recent_documents addObject: anURL];
// Save the changed list
- a = [_recent_documents mutableCopy];
- index = [a count];
- while (index-- > 0)
- {
- [a replaceObjectAtIndex: index withObject:
- [[a objectAtIndex: index] absoluteString]];
- }
- [[NSUserDefaults standardUserDefaults]
- setObject: a forKey: NSRecentDocuments];
- RELEASE(a);
+ [self _saveRecentDocuments];
+
[self _updateRecentDocumentsMenu];
}
@@ -1501,14 +1458,24 @@
if ([fm fileExistsAtPath: path isDirectory: &isDir] == NO)
{
- if (![fm createDirectoryAtPath: path attributes: nil])
- return nil;
+ if (![fm createDirectoryAtPath: path
+ withIntermediateDirectories: YES
+ attributes: nil
+ error: NULL])
+ {
+ return nil;
+ }
}
else if (isDir == NO)
{
- if (![fm removeFileAtPath: path handler: nil] ||
- ![fm createDirectoryAtPath: path attributes: nil])
- return nil;
+ if (![fm removeFileAtPath: path handler: nil]
+ || ![fm createDirectoryAtPath: path
+ withIntermediateDirectories: YES
+ attributes: nil
+ error: NULL])
+ {
+ return nil;
+ }
}
}
@@ -1649,7 +1616,6 @@
{
NSMenu *recentMenu;
BOOL listUpdated;
- NSMutableArray *a;
int i;
recentMenu = [self _recentDocumentsMenu];
@@ -1668,40 +1634,32 @@
{
NSURL *u = [_recent_documents objectAtIndex: i];
NSError *error;
- // if resource has been deleted
+ // Check if resource has been deleted
if (![u checkResourceIsReachableAndReturnError:&error])
{
[_recent_documents removeObjectAtIndex:i];
listUpdated = YES;
- continue;
}
}
if ( listUpdated )
{
// Save the changed list
- a = [_recent_documents mutableCopy];
- i = [a count];
- while (i-- > 0)
- {
- [a replaceObjectAtIndex: i withObject:
- [[a objectAtIndex: i] absoluteString]];
- }
- [[NSUserDefaults standardUserDefaults]
- setObject: a forKey: NSRecentDocuments];
- RELEASE(a);
- }
+ [self _saveRecentDocuments];
+ }
+ // remove them all
while ([recentMenu numberOfItems] > 0)
{
- [recentMenu removeItemAtIndex: 0]; // remove them all
- }
+ [recentMenu removeItemAtIndex: 0];
+ }
+
for (i = [_recent_documents count] - 1; i >= -2; i--)
{
// add all items incl. a Clear List item if needed
NSMenuItem *item;
if (i == -1)
- {
+ {
if ([_recent_documents count] == 0)
continue; // skip if menu is empty
item = (NSMenuItem *) [NSMenuItem separatorItem];
@@ -1709,26 +1667,26 @@
RETAIN(item);
}
else if (i == -2)
- {
+ {
item = [[NSMenuItem alloc] initWithTitle: _(@"Clear List")
- action: @selector(clearRecentDocuments:)
+ action:
@selector(clearRecentDocuments:)
keyEquivalent: nil];
// disable for empty list
[item setEnabled: [_recent_documents count] > 0];
}
else
- {
+ {
// standard item
NSURL *u = [_recent_documents objectAtIndex: i]; // get URL
if ([u isFileURL])
item = [[NSMenuItem alloc]
- initWithTitle: [[u path] lastPathComponent]
- action: @selector(_openRecentDocument:)
+ initWithTitle: [[u path] lastPathComponent]
+ action: @selector(_openRecentDocument:)
+ keyEquivalent:nil];
+ else
+ item = [[NSMenuItem alloc] initWithTitle: [u relativeString]
+ action:
@selector(_openRecentDocument:)
keyEquivalent:nil];
- else
- item = [[NSMenuItem alloc] initWithTitle: [u relativeString]
- action:
@selector(_openRecentDocument:)
- keyEquivalent:nil];
[item setTag: i];
}
[item setTarget: self];
@@ -1769,10 +1727,67 @@
[self openDocumentWithContentsOfURL: url display: YES error: &err];
if (err)
- {
- [self presentError: err];
- [self _updateRecentDocumentsMenu];
- }
+ {
+ [self presentError: err];
+ [self _updateRecentDocumentsMenu];
+ }
+}
+
+- (void) _saveRecentDocuments
+{
+ NSMutableArray *a = [_recent_documents mutableCopy];
+ NSUInteger index = [a count];
+
+ while (index-- > 0)
+ {
+ [a replaceObjectAtIndex: index withObject:
+ [[a objectAtIndex: index] absoluteString]];
+ }
+ [[NSUserDefaults standardUserDefaults]
+ setObject: a forKey: NSRecentDocuments];
+ RELEASE(a);
+}
+
+- (void) _loadRecentDocuments
+{
+ _recent_documents = [[NSUserDefaults standardUserDefaults]
+ objectForKey: NSRecentDocuments];
+ if (_recent_documents)
+ {
+ int i, count, max;
+
+ _recent_documents = [_recent_documents mutableCopy];
+ count = [_recent_documents count];
+ for (i = 0; i < count; i++)
+ {
+ NSString *str;
+ NSURL *url;
+
+ str = [_recent_documents objectAtIndex: i];
+ url = [NSURL URLWithString: str];
+ if (url == nil)
+ {
+ NSLog(@"NSRecentItems value '%@' is not valid ... ignored", str);
+ [_recent_documents removeObjectAtIndex: i];
+ i--;
+ count--;
+ }
+ else
+ {
+ [_recent_documents replaceObjectAtIndex: i withObject: url];
+ }
+ }
+
+ max = [self maximumRecentDocumentCount];
+ if (count > max)
+ {
+ [_recent_documents removeObjectsInRange: NSMakeRange(0, count - max)];
+ }
+ }
+ else
+ {
+ _recent_documents = RETAIN([NSMutableArray array]);
+ }
}
@end
Modified:
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentFrameworkPrivate.h
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentFrameworkPrivate.h?rev=38724&r1=38723&r2=38724&view=diff
==============================================================================
---
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentFrameworkPrivate.h
(original)
+++
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentFrameworkPrivate.h
Tue Jun 30 23:58:51 2015
@@ -47,9 +47,11 @@
@interface NSDocumentController (RecentDocumentsMenu)
- (NSMenu *) _recentDocumentsMenu;
-- (void) _setRecentDocumentsMenu: (NSMenu *)menu;
-- (void) _updateRecentDocumentsMenu;
+- (void) _setRecentDocumentsMenu: (NSMenu *)menu;
+- (void) _updateRecentDocumentsMenu;
- (IBAction) _openRecentDocument: (id)sender;
+- (void) _saveRecentDocuments;
+- (void) _loadRecentDocuments;
@end
@interface NSDocument (Private)
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs