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

Reply via email to