Author: gcasa
Date: Wed Nov 25 06:57:39 2015
New Revision: 39200

URL: http://svn.gna.org/viewcvs/gnustep?rev=39200&view=rev
Log:
Gorm changes to make recent fix for issue with NSPanel/NSWindow more generic

Modified:
    apps/gorm/branches/gorm_changes_for_nspanel/GormCore/GormWindowTemplate.m
    
apps/gorm/branches/gorm_changes_for_nspanel/Plugins/Nib/GormNibWrapperLoader.m

Modified: 
apps/gorm/branches/gorm_changes_for_nspanel/GormCore/GormWindowTemplate.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gorm/branches/gorm_changes_for_nspanel/GormCore/GormWindowTemplate.m?rev=39200&r1=39199&r2=39200&view=diff
==============================================================================
--- apps/gorm/branches/gorm_changes_for_nspanel/GormCore/GormWindowTemplate.m   
(original)
+++ apps/gorm/branches/gorm_changes_for_nspanel/GormCore/GormWindowTemplate.m   
Wed Nov 25 06:57:39 2015
@@ -25,6 +25,9 @@
 #include "GormWindowTemplate.h"
 #include "GormNSWindow.h" 
 #include "GormNSPanel.h"
+#include "GormPalettesManager.h"
+#include "GormClassManager.h"
+#include "GormProtocol.h"
 
 // @class GormNSWindow;
 // @class GormNSPanel;
@@ -41,6 +44,18 @@
 @end
 
 @implementation GormWindowTemplate
+/*
+- (id) initWithCoder: (NSCoder *)coder
+{
+  self = [super initWithCoder:coder];
+  if(self != nil)
+    {
+      RETAIN(_windowClass);
+    }
+  return self;
+}
+*/
+
 - (id) nibInstantiate
 {
   id object = [super nibInstantiate];
@@ -54,12 +69,29 @@
 
 - (Class) baseWindowClass
 {
+  GormClassManager *classManager = [(id<Gorm>)NSApp classManager];
+  NSString *superClassName = [classManager nonCustomSuperClassOf: 
_windowClass];
+  const char *superClassCstring = [superClassName UTF8String];
+  NSString *supClassName = [NSString stringWithUTF8String: superClassCstring];
+  GormPalettesManager *palettesManager = [(id<Gorm>)NSApp palettesManager];
+  NSDictionary *substituteClasses = [palettesManager substituteClasses];
+  NSString *substituteClass = [substituteClasses objectForKey: supClassName];
+  NSString *result = substituteClass;
+  /*
   if([_windowClass isEqualToString:@"NSPanel"])
     {
       return [GormNSPanel class];
     }
   
   return [GormNSWindow class];
+  */
+
+  if(result == nil)
+    {
+      result = superClassName;
+    }
+
+  return NSClassFromString(result);
 }
 @end
 

Modified: 
apps/gorm/branches/gorm_changes_for_nspanel/Plugins/Nib/GormNibWrapperLoader.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gorm/branches/gorm_changes_for_nspanel/Plugins/Nib/GormNibWrapperLoader.m?rev=39200&r1=39199&r2=39200&view=diff
==============================================================================
--- 
apps/gorm/branches/gorm_changes_for_nspanel/Plugins/Nib/GormNibWrapperLoader.m  
    (original)
+++ 
apps/gorm/branches/gorm_changes_for_nspanel/Plugins/Nib/GormNibWrapperLoader.m  
    Wed Nov 25 06:57:39 2015
@@ -140,6 +140,7 @@
            }
          else
            {
+
              /*
               * Create an unarchiver, and use it to unarchive the gorm file 
while
               * handling class replacement so that standard objects understood
@@ -183,6 +184,26 @@
                }
              else
                {
+                 //
+                 // Add custom classes...
+                 //
+                 classesTable = [container classes];
+                 classKeys = NSAllMapTableKeys(classesTable);
+                 en = [classKeys objectEnumerator];
+                 while((o = [en nextObject]) != nil)
+                   {
+                     NSString *name = [document nameForObject: o];
+                     NSString *customClass = NSMapGet(classesTable, o);
+                     if(name != nil && customClass != nil)
+                       {
+                         [classManager setCustomClass: customClass forName: 
name];
+                       }
+                     else
+                       {
+                         NSLog(@"Name %@ or class %@ for object %@ is nil.", 
name, customClass, o);
+                       }
+                   }
+
                  nibFilesOwner = [container objectForName: @"File's Owner"];
                  
                  docFilesOwner = [document filesOwner];
@@ -245,25 +266,7 @@
                        }
                    }
                  
-                 //
-                 // Add custom classes...
-                 //
-                 classesTable = [container classes];
-                 classKeys = NSAllMapTableKeys(classesTable);
-                 en = [classKeys objectEnumerator];
-                 while((o = [en nextObject]) != nil)
-                   {
-                     NSString *name = [document nameForObject: o];
-                     NSString *customClass = NSMapGet(classesTable, o);
-                     if(name != nil && customClass != nil)
-                       {
-                         [classManager setCustomClass: customClass forName: 
name];
-                       }
-                     else
-                       {
-                         NSLog(@"Name %@ or class %@ for object %@ is nil.", 
name, customClass, o);
-                       }
-                   }
+
                  
                  //
                  // add connections...


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to