A sizable number of changes to correct some bugs and add external/custom palette support and the file prefs gui which allows the user to set which version a given .gorm should be saved as.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@19719 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2004-07-12 04:16:09 +00:00
parent abb8f51e46
commit 958fdfcabb
41 changed files with 1044 additions and 135 deletions

View file

@ -1,3 +1,68 @@
2004-07-11 23:40 Gregory John Casamento <greg_casamento@yahoo.com>
* GormDocument.m: saveGormDocument.m: Changes to prevent a
new gorm from being saved twice. This was an innocuous problem
as it would simply overwrite the same .gorm with itself.
Added code to set isOlderArchive in loadDocument: method.
Added code to call [GormFilePrefsManager setClassVersions] and
[GormFilePrefsManager restoreClassVersions] in beginArchiving and
endArchiving respectively to set and reset the versions of classes
which need to be used for each .gorm file version to be saved.
Updated changeView: method to switch to the filePrefsView when clicking
on the button.
Added code to the toolbar delegate to add the "File" button to the
document toolbar.
Added code to loadDocument to load the data.info file if it's present, if not
we simply use the defaults.
* GormDocument.h: Added new ivars for isOlderArchive, filePrefsView,
and filePrefsManager.
* GormFilePrefsManager.[hm]: New files.
* GormPalettesPref.[hm]: New files.
* GormPrefsPalette.gorm: new interface for palette loading.
* GormDocument.gorm: Updated with new window to view
incompatibilities and controller for new "file" document
button.
* GormPreferences.gorm: Addition of palettes in pulldown.
* GormClassManager.[hm]: Added
- (BOOL) addClassNamed: (NSString*)class_name
withSuperClassNamed: (NSString*)super_class_name
withActions: (NSArray*)_actions
withOutlets: (NSArray*)_outlets
isCustom: (BOOL) isCustom;
So that classes can be added with out adding them to the custom
list.
Added logic in "init" to get the list of classes imported by
the palettes manager and add them into the master list of classes.
This allows the user to work with the classes added by the palette.
* GormFunctions.[hm]: appVersion function to calculate a useful value
which can be used to compare against easily when reading. This will
allow gorm to tell if this file was created with an older or newer
version of Gorm.app and take appropriate action.
* GormObjectEditor.m: Added capability to place non-UI instances in the
objects view directly. This will allow the user to place arbitrary
non-ui objects in a Gorm file. It will be useful for adding DB objects
or other things which a .gorm file might need.
* GormPalettesManager.[hm]: Added [GormPalettesManager importedClasses]
and [GormPalettesManager importClasses:withDictionary:] adds the classes
from the list in the palette.table.
* GormLib/IBPalette.h: Changed name of ivar. This ivar wasn't properly
named. It should have been originalWindow. This issue was causing the
.gorm load to not make a needed connection.
* GormLib/IBPalette.m: Change to read palette.table as a property list
instead of strings file format. This was needed to facilitate the
reading of all of the classes, sounds and images a palette might
import. Also modified to correctly load the nib file.
* Palettes/0Menus/main.m: Corrected window to originalWindow as detailed
above. It was referred to in a few places by the old name.
* Palettes/1Windows/main.m: same.
* Palettes/2Controls/main.m: same.
* Palettes/3Containers/main.m: same.
* Palettes/4Data/main.m: same.
* Palettes/2Controls/inspectors.m: Change to clarify the autoenable switch
on pulldown buttons.
* Palettes/2Controls/GormNSPopUpButtonInspector.gorm: Corresponding .gorm file
change for the above. Added new outlet and made new connection.
2004-07-09 16:24 Gregory John Casamento <greg_casamento@yahoo.com>
* Palettes/3Containers/GormNSTableViewInspector.gorm: Missing

View file

@ -49,6 +49,7 @@ Gorm_APPLICATION_ICON=Gorm.tiff
Gorm_RESOURCE_FILES = \
GormInfo.plist \
ClassInformation.plist \
VersionProfiles.plist \
Defaults.plist \
Palettes/0Menus/0Menus.palette \
Palettes/1Windows/1Windows.palette \
@ -125,6 +126,7 @@ Gorm_RESOURCE_FILES = \
Resources/GormPreferences.gorm \
Resources/GormPrefHeaders.gorm \
Resources/GormPrefGeneral.gorm \
Resources/GormPrefPalettes.gorm \
Resources/GormShelfPref.gorm \
Resources/GormScrollViewAttributesInspector.gorm \
Resources/GormNSSplitViewInspector.gorm \
@ -169,7 +171,9 @@ Gorm_HEADERS = \
GormFunctions.h \
GormShelfPref.h \
GormColorsPref.h \
GormSoundView.h
GormPalettesPref.h \
GormSoundView.h \
GormFilePrefsManager.h
Gorm_OBJC_FILES = \
Gorm.m \
@ -214,7 +218,9 @@ Gorm_OBJC_FILES = \
GormFunctions.m \
GormShelfPref.m \
GormColorsPref.m \
GormSoundView.m
GormPalettesPref.m \
GormSoundView.m \
GormFilePrefsManager.m
-include GNUmakefile.preamble

1
Gorm.m
View file

@ -988,7 +988,6 @@ NSString *GormResizeCellNotification = @"GormResizeCellNotification";
[[self palettesManager] openPalette: sender];
}
- (void) deferredEndTesting: (id) sender
{
[[NSRunLoop currentRunLoop]

View file

@ -1,3 +1,5 @@
#include <InterfaceBuilder/IBPalette.h>
#ifndef INCLUDED_GormClassManager_h
#define INCLUDED_GormClassManager_h
@ -42,19 +44,29 @@
- (BOOL) renameClassNamed: (NSString *)oldName newName: (NSString*)name;
- (void) removeClassNamed: (NSString *)className;
- (NSString*) addClassWithSuperClassName: (NSString*)name;
- (BOOL) addClassNamed: (NSString*)className
withSuperClassNamed: (NSString*)superClassName
withActions: (NSArray*)actions
withOutlets: (NSArray*)outlets;
- (BOOL) addClassNamed: (NSString*)class_name
withSuperClassNamed: (NSString*)super_class_name
withActions: (NSArray*)_actions
withOutlets: (NSArray*)_outlets
isCustom: (BOOL) isCustom;
- (BOOL) setSuperClassNamed: (NSString*)superclass
forClassNamed: (NSString*)subclass;
- (NSString*) superClassNameForClassNamed: (NSString*)className;
- (BOOL) isSuperclass: (NSString*)superclass
linkedToClass: (NSString*)subclass;
- (BOOL) makeSourceAndHeaderFilesForClass: (NSString*)className
withName:(NSString*)sourcePath
and:(NSString*)headerPath;
- (BOOL) parseHeader: (NSString *)headerPath;
- (BOOL) saveToFile: (NSString*)path;
- (BOOL) loadFromFile: (NSString*)path;
@ -69,15 +81,16 @@
// custom class support...
- (NSString *) customClassForObject: (id)object;
- (NSString *) customClassForName: (NSString *)name;
- (void) setCustomClass: (NSString *)className
forObject: (id)object;
- (void) removeCustomClassForObject: (id) object;
- (NSMutableDictionary *) customClassMap;
- (void) setCustomClassMap: (NSMutableDictionary *)dict;
- (BOOL) isCustomClassMapEmpty;
- (NSString *) nonCustomSuperClassOf: (NSString *)className;
- (NSString *)parentOfClass: (NSString *)aClass;
@end
#endif

View file

@ -26,7 +26,10 @@
#include "GormPrivate.h"
#include "GormCustomView.h"
#include "GormDocument.h"
#include "GormFilesOwner.h"
#include "GormPalettesManager.h"
#include <InterfaceBuilder/IBEditors.h>
#include <InterfaceBuilder/IBPalette.h>
@interface GormClassManager (Private)
- (NSMutableDictionary*) classInfoForClassName: (NSString*)className;
@ -127,6 +130,19 @@
withSuperClassNamed: (NSString*)super_class_name
withActions: (NSArray*)_actions
withOutlets: (NSArray*)_outlets
{
return [self addClassNamed: class_name
withSuperClassNamed: super_class_name
withActions: _actions
withOutlets: _outlets
isCustom: YES];
}
- (BOOL) addClassNamed: (NSString*)class_name
withSuperClassNamed: (NSString*)super_class_name
withActions: (NSArray*)_actions
withOutlets: (NSArray*)_outlets
isCustom: (BOOL) isCustom
{
BOOL result = NO;
NSString *className = [class_name copy];
@ -151,7 +167,12 @@
[classInfo setObject: actions forKey: @"Actions"];
[classInfo setObject: superClassName forKey: @"Super"];
[classInformation setObject: classInfo forKey: className];
[customClasses addObject: className];
// if it's a custom class add it to the list.
if(isCustom)
{
[customClasses addObject: className];
}
// copy all actions from the class imported to the first responder
while((action = [e nextObject]))
@ -818,6 +839,8 @@
}
else
{
GormPalettesManager *palettesManager = [(Gorm *)NSApp palettesManager];
// load the classes, initialize the custom class array and map..
[self loadFromFile: path];
customClasses = [[NSMutableArray alloc] initWithCapacity: 1];
@ -825,6 +848,9 @@
// add first responder so that it may be edited.
[customClasses addObject: @"FirstResponder"];
// add the imported classes to the class information list...
[classInformation addEntriesFromDictionary: [palettesManager importedClasses]];
}
}
@ -927,6 +953,7 @@
{
NSEnumerator *en = [customClassMap keyEnumerator];
id object = nil;
id owner = nil;
[customClasses removeObject: className];
@ -942,6 +969,13 @@
}
}
}
// get the owner and reset the class name to NSApplication.
owner = [document objectForName: @"NSOwner"];
if([className isEqual: [owner className]])
{
[owner setClassName: @"NSApplication"];
}
}
[classInformation removeObjectForKey: className];

View file

@ -70,7 +70,9 @@
NSMutableArray *openEditors;
NSToolbar *toolbar;
id lastEditor;
BOOL willUpgradeArchive;
BOOL isOlderArchive;
id filePrefsView;
id filePrefsManager;
}
- (void) addConnector: (id<IBConnectors>)aConnector;
- (NSArray*) allConnectors;

View file

@ -28,13 +28,15 @@
#include "GormClassManager.h"
#include "GormCustomView.h"
#include "GormOutlineView.h"
#include "GormFunctions.h"
#include "GormFilePrefsManager.h"
#include <Foundation/NSUserDefaults.h>
#include <AppKit/NSImage.h>
#include <AppKit/NSSound.h>
#include <Foundation/NSUserDefaults.h>
#include <AppKit/NSNibConnector.h>
#include <GNUstepGUI/GSNibTemplates.h>
#include "GormFunctions.h"
#include <AppKit/NSNibLoading.h>
#include <GNUstepGUI/GSNibTemplates.h>
@interface GormDisplayCell : NSButtonCell
@end
@ -139,6 +141,7 @@ static NSImage *objectsImage = nil;
static NSImage *imagesImage = nil;
static NSImage *soundsImage = nil;
static NSImage *classesImage = nil;
static NSImage *fileImage = nil;
+ (void) initialize
{
@ -168,6 +171,11 @@ static NSImage *classesImage = nil;
{
classesImage = [[NSImage alloc] initWithContentsOfFile: path];
}
path = [bundle pathForImageResource: @"Gorm"];
if (path != nil)
{
fileImage = [[NSImage alloc] initWithContentsOfFile: path];
}
[self setVersion: GNUSTEP_NIB_VERSION];
}
@ -379,10 +387,12 @@ static NSImage *classesImage = nil;
/*
* Set image for this miniwindow.
*/
[window setMiniwindowImage: [(id)filesOwner imageForViewer]];
[window setMiniwindowImage: [(id)filesOwner imageForViewer]];
hidden = [NSMutableArray new];
// retain the file prefs view...
RETAIN(filePrefsView);
// preload headers...
if ([defaults boolForKey: @"PreloadHeaders"])
{
@ -398,7 +408,7 @@ static NSImage *classesImage = nil;
}
// are we upgrading an archive?
willUpgradeArchive = NO;
isOlderArchive = NO;
}
else
{
@ -725,6 +735,12 @@ static NSImage *classesImage = nil;
/* Add information about the NSOwner to the archive */
NSMapInsert(objToName, (void*)[filesOwner className], (void*)@"NSOwner");
[nameTable setObject: [filesOwner className] forKey: @"NSOwner"];
/*
* Set the appropriate profile so that we save the right versions of
* the classes for older GNUstep releases.
*/
[filePrefsManager setClassVersions];
}
- (void) changeCurrentClass: (id)sender
@ -798,45 +814,50 @@ static NSImage *classesImage = nil;
switch (tag)
{
case 0: // objects
{
[selectionBox setContentView: scrollView];
}
break;
case 1: // images
{
[selectionBox setContentView: imagesScrollView];
}
break;
case 2: // sounds
{
[selectionBox setContentView: soundsScrollView];
}
break;
case 3: // classes
{
NSArray *selection = [[(id<IB>)NSApp selectionOwner] selection];
[selectionBox setContentView: classesScrollView];
// if something is selected, in the object view.
// show the equivalent class in the classes view.
if ([selection count] > 0)
{
id obj = [selection objectAtIndex: 0];
// if it's a scrollview focus on it's contents.
if([obj isKindOfClass: [NSScrollView class]])
{
id newobj = nil;
newobj = [obj documentView];
if(newobj != nil)
{
obj = newobj;
}
}
[self selectClassWithObject: obj];
}
}
break;
case 0: // objects
{
[selectionBox setContentView: scrollView];
}
break;
case 1: // images
{
[selectionBox setContentView: imagesScrollView];
}
break;
case 2: // sounds
{
[selectionBox setContentView: soundsScrollView];
}
break;
case 3: // classes
{
NSArray *selection = [[(id<IB>)NSApp selectionOwner] selection];
[selectionBox setContentView: classesScrollView];
// if something is selected, in the object view.
// show the equivalent class in the classes view.
if ([selection count] > 0)
{
id obj = [selection objectAtIndex: 0];
// if it's a scrollview focus on it's contents.
if([obj isKindOfClass: [NSScrollView class]])
{
id newobj = nil;
newobj = [obj documentView];
if(newobj != nil)
{
obj = newobj;
}
}
[self selectClassWithObject: obj];
}
}
break;
case 4: // file prefs
{
[selectionBox setContentView: filePrefsView];
}
break;
}
}
@ -1008,8 +1029,8 @@ static NSImage *classesImage = nil;
return self;
}
// For debugging ONLY.
/*
// For debugging
- (id) retain
{
NSLog(@"Document being retained... %d: %@", [self retainCount], self);
@ -1021,9 +1042,9 @@ static NSImage *classesImage = nil;
NSLog(@"Document being released... %d: %@", [self retainCount], self);
[super release];
}
*/
*/
- (void) pasteboardChangedOwner: (NSPasteboard*)sender
- (void) pasteboardChangedOwner: (NSPasteboard *)sender
{
NSDebugLog(@"Owner changed for %@", sender);
}
@ -1032,6 +1053,7 @@ static NSImage *classesImage = nil;
{
[[NSNotificationCenter defaultCenter] removeObserver: self];
[window close];
// [toolbar setDelegate: nil];
RELEASE(classManager);
RELEASE(classEditor);
RELEASE(hidden);
@ -1047,6 +1069,7 @@ static NSImage *classesImage = nil;
RELEASE(scrollView);
RELEASE(classesScrollView);
RELEASE(toolbar);
RELEASE(filePrefsManager);
RELEASE(openEditors);
RELEASE(window);
[super dealloc];
@ -1459,6 +1482,11 @@ static NSImage *classesImage = nil;
id<IBConnectors> con;
id obj;
/*
* Restore class versions.
*/
[filePrefsManager restoreClassVersions];
/*
* Restore removed objects.
*/
@ -1575,6 +1603,9 @@ static NSImage *classesImage = nil;
[nc postNotificationName: IBWillCloseDocumentNotification
object: self];
[nc removeObserver: self]; // stop listening to all notifications.
// [window setToolbar: nil]; // close the toolbar
// [toolbar setDelegate: nil]; // unset the delegate...
// RELEASE(self);
}
else if ([name isEqual: NSWindowDidBecomeKeyNotification] == YES)
{
@ -1937,6 +1968,12 @@ static NSImage *classesImage = nil;
@"You won't be able to edit connections on custom classes"),
_(@"OK"), NULL, NULL);
}
s = [aFile stringByAppendingPathComponent: @"data.info"];
if (![filePrefsManager loadFromFile: s])
{
NSLog(@"Loading gorm without data.info file. Default settings will be assumed.");
}
}
[classesView reloadData];
@ -1969,8 +2006,8 @@ static NSImage *classesImage = nil;
}
/*
* Now we merge the objects from the nib container into our own data
* structures, taking care not to overwrite our NSOwner and NSFirst.
* If the .gorm file is version 0, we need to add the top level objects
* to the list so that they can be properly processed.
*/
if([u versionForClassName: NSStringFromClass([GSNibContainer class])] == 0)
{
@ -1986,10 +2023,13 @@ static NSImage *classesImage = nil;
[topLevelObjects addObject: obj];
}
}
willUpgradeArchive = YES;
isOlderArchive = YES;
}
/*
* Now we merge the objects from the nib container into our own data
* structures, taking care not to overwrite our NSOwner and NSFirst.
*/
[nt removeObjectForKey: @"NSOwner"];
[nt removeObjectForKey: @"NSFirst"];
[topLevelObjects addObjectsFromArray: [[c topLevelObjects] allObjects]];
@ -2306,13 +2346,13 @@ static NSImage *classesImage = nil;
// issue pre notification..
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName: IBWillRemoveConnectorNotification
object: aConnector];
object: self];
// mark the document as changed.
[self touch];
// issue port notification..
[connections removeObjectIdenticalTo: aConnector];
[nc postNotificationName: IBDidRemoveConnectorNotification
object: aConnector];
object: self];
}
- (void) resignSelectionForEditor: (id<IBEditors>)editor
@ -2751,6 +2791,7 @@ static NSImage *classesImage = nil;
NSMutableData *archiverData;
NSString *gormPath;
NSString *classesPath;
NSString *infoPath;
NSFileManager *mgr = [NSFileManager defaultManager];
BOOL isDir;
BOOL fileExists;
@ -2758,12 +2799,13 @@ static NSImage *classesImage = nil;
if (documentPath == nil)
{
if (! [self saveAsDocument: sender] )
return NO;
// if no path has been defined... define one.
return ([self saveAsDocument: sender]);
}
// Warn the user about possible incompatibility.
if(willUpgradeArchive)
// TODO: Remove after the next release of GUI.
if(isOlderArchive && [filePrefsManager isLatest])
{
retval = NSRunAlertPanel(_(@"Compatibility Warning"),
_(@"Saving will update this gorm to the latest version, which is not compatible with GNUstep's gui 0.9.3 Release or CVS prior to Jun 28 2004."),
@ -2776,7 +2818,7 @@ static NSImage *classesImage = nil;
else
{
// we're saving anyway... set to new value.
willUpgradeArchive = NO;
isOlderArchive = NO;
}
}
@ -2788,6 +2830,7 @@ static NSImage *classesImage = nil;
// set up the necessary paths...
gormPath = [documentPath stringByAppendingPathComponent: @"objects.gorm"];
classesPath = [documentPath stringByAppendingPathComponent: @"data.classes"];
infoPath = [documentPath stringByAppendingPathComponent: @"data.info"];
archiverData = [NSMutableData dataWithCapacity: 0];
archiver = [[NSArchiver alloc] initForWritingWithMutableData: archiverData];
@ -2863,6 +2906,12 @@ static NSImage *classesImage = nil;
{
// save the custom classes.. and we're done...
archiveResult = [classManager saveToFile: classesPath];
// save the file prefs metadata...
if (archiveResult)
{
archiveResult = [filePrefsManager saveToFile: infoPath];
}
// copy sounds into the new folder...
if (archiveResult)
@ -3829,6 +3878,14 @@ willBeInsertedIntoToolbar: (BOOL)flag
[toolbarItem setAction: @selector(changeView:)];
[toolbarItem setTag: 3];
}
else if([itemIdentifier isEqual: @"FileItem"])
{
[toolbarItem setLabel: @"File"];
[toolbarItem setImage: fileImage];
[toolbarItem setTarget: self];
[toolbarItem setAction: @selector(changeView:)];
[toolbarItem setTag: 4];
}
return toolbarItem;
}
@ -3838,8 +3895,9 @@ willBeInsertedIntoToolbar: (BOOL)flag
return [NSArray arrayWithObjects: @"ObjectsItem",
@"ImagesItem",
@"SoundsItem",
@"ClassesItem", nil];
@"ClassesItem",
@"FileItem",
nil];
}
- (NSArray*) toolbarDefaultItemIdentifiers: (NSToolbar*)toolbar
@ -3847,15 +3905,8 @@ willBeInsertedIntoToolbar: (BOOL)flag
return [NSArray arrayWithObjects: @"ObjectsItem",
@"ImagesItem",
@"SoundsItem",
@"ClassesItem", nil];
@"ClassesItem",
@"FileItem",
nil];
}
@end
/*
@implementation NSColor (Extensions)
+ (NSColor *) toolbarBackgroundColor
{
return RETAIN([NSColor colorWithCalibratedRed: 0.8 green: 0.8 blue: 0.8 alpha: 1.0]);
}
@end
*/

40
GormFilePrefsManager.h Normal file
View file

@ -0,0 +1,40 @@
/* All Rights reserved */
#include <AppKit/AppKit.h>
@interface GormFilePrefsManager : NSObject <NSCoding>
{
id showIncompatibilities;
id targetVersion;
id gormAppVersion;
id archiveType;
id iwindow;
id itable;
// encoded ivars...
int version;
NSString *targetVersionName;
NSString *archiveTypeName;
// version profiles...
NSDictionary *versionProfiles;
NSDictionary *currentProfile;
}
- (void) showIncompatibilities: (id)sender;
- (void) selectTargetVersion: (id)sender;
- (void) selectArchiveType: (id)sender;
- (BOOL) loadFromFile: (NSString *)path;
- (BOOL) saveToFile: (NSString *)path;
- (void) loadProfile: (NSString *)version;
// accessors...
- (int) version;
- (NSString *)targetVersionName;
- (NSString *)archiveTypeName;
- (BOOL) isLatest;
// set class versions
- (void) setClassVersions;
- (void) restoreClassVersions;
@end

269
GormFilePrefsManager.m Normal file
View file

@ -0,0 +1,269 @@
/** <title>GormFilePrefsManager</title>
<abstract>Sets the information about the .gorm file's version.
This allows a file to be saved as an older version of the .gorm
format so that older releases can still use .gorm files created
by people who have the latest GNUstep and Gorm version.</abstract>
Copyright (C) 2003 Free Software Foundation, Inc.
Author: Gregory John Casamento
Date: July 2003.
This file is part of the GNUstep GUI Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library;
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* All Rights reserved */
#include <AppKit/AppKit.h>
#include <GNUstepGUI/GSNibTemplates.h>
#include "GormFilePrefsManager.h"
#include "GormFunctions.h"
#include <Foundation/NSFileManager.h>
#include <Foundation/NSArchiver.h>
#include <GNUstepBase/GSObjCRuntime.h>
#include <values.h>
#include <math.h>
NSString *formatVersion(int version)
{
int bit16 = 65536;
int bit8 = 256;
int maj = 0;
int min = 0;
int pch = 0;
int v = version;
// pull the version fromt the number
maj = (int)((float)v / (float)bit16);
v -= (bit16 * maj);
min = (int)((float)v / (float)bit8);
v -= (bit8 * min);
pch = v;
return [NSString stringWithFormat: @"%d.%d.%d / %d",maj,min,pch,version];
}
@implementation GormFilePrefsManager
// initializers...
- (id) init
{
if((self = [super init]) != nil)
{
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource: @"VersionProfiles" ofType: @"plist"];
versionProfiles = RETAIN([[NSString stringWithContentsOfFile: path] propertyList]);
}
return self;
}
- (void) dealloc
{
NSDebugLog(@"Deallocating...");
[iwindow performClose: self];
RELEASE(iwindow);
RELEASE(versionProfiles);
[super dealloc];
}
- (void) awakeFromNib
{
version = appVersion(0,7,8);
[gormAppVersion setStringValue: formatVersion(version)];
ASSIGN(targetVersionName, [[targetVersion selectedItem] title]);
ASSIGN(archiveTypeName, [[archiveType selectedItem] title]);
[self selectTargetVersion: targetVersion];
}
// set class versions
- (void) setClassVersions
{
NSEnumerator *en = [currentProfile keyEnumerator];
id className = nil;
NSLog(@"set the class versions to the profile selected... %@",targetVersionName);
while((className = [en nextObject]) != nil)
{
Class cls = NSClassFromString(className);
NSDictionary *info = [currentProfile objectForKey: className];
int v = [[info objectForKey: @"version"] intValue];
NSLog(@"Setting version %d for class %@",v,className);
[cls setVersion: v];
}
}
- (void) restoreClassVersions
{
NSDictionary *latestVersion = [versionProfiles objectForKey: @"Latest Version"];
NSEnumerator *en = [latestVersion keyEnumerator];
id className = nil;
// The "Latest Version" key must always exist.
NSLog(@"restore the class versions to the latest version...");
while((className = [en nextObject]) != nil)
{
Class cls = NSClassFromString(className);
NSDictionary *info = [latestVersion objectForKey: className];
int v = [[info objectForKey: @"version"] intValue];
NSLog(@"Setting version %d for class %@",v,className);
[cls setVersion: v];
}
}
// class profile
- (void) loadProfile: (NSString *)profileName
{
NSLog(@"Loading profile %@",profileName);
currentProfile = [versionProfiles objectForKey: targetVersionName];
}
// actions...
- (void) showIncompatibilities: (id)sender
{
[itable reloadData];
[iwindow orderFront: self];
}
- (void) selectTargetVersion: (id)sender
{
ASSIGN(targetVersionName, [[sender selectedItem] title]);
[self loadProfile: targetVersionName];
[itable reloadData];
}
- (void) selectArchiveType: (id)sender
{
ASSIGN(archiveTypeName, [[sender selectedItem] title]);
NSLog(@"Set Archive type... %@",sender);
}
// Loading and saving the file.
- (BOOL) saveToFile: (NSString *)path
{
return [NSArchiver archiveRootObject: self toFile: path];
}
- (BOOL) loadFromFile: (NSString *)path
{
BOOL result = YES;
NSFileManager *mgr = [NSFileManager defaultManager];
// read/load the file...
if([mgr isReadableFileAtPath: path])
{
NS_DURING
{
id object = [NSUnarchiver unarchiveObjectWithFile: path];
[gormAppVersion setStringValue: formatVersion([object version])];
version = [object version];
[targetVersion selectItemWithTitle: [object targetVersionName]];
ASSIGN(targetVersionName,[object targetVersionName]);
[archiveType selectItemWithTitle: [object archiveTypeName]];
ASSIGN(archiveTypeName, [object archiveTypeName]);
[self selectTargetVersion: targetVersion];
result = YES;
}
NS_HANDLER
{
NSLog(@"Problem loading info file: %@",[localException reason]);
result = NO;
}
NS_ENDHANDLER
}
return result;
}
// encoding...
- (void) encodeWithCoder: (NSCoder *)coder
{
[coder encodeValueOfObjCType: @encode(int) at: &version];
[coder encodeObject: targetVersionName];
[coder encodeObject: archiveTypeName];
}
- (id) initWithCoder: (NSCoder *)coder
{
if((self = [super init]) != nil)
{
[coder decodeValueOfObjCType: @encode(int) at: &version];
targetVersionName = [coder decodeObject];
archiveTypeName = [coder decodeObject];
}
return self;
}
// accessors
- (int) version
{
return version;
}
- (NSString *)targetVersionName
{
return targetVersionName;
}
- (NSString *)archiveTypeName
{
return archiveTypeName;
}
- (BOOL) isLatest
{
return ([targetVersionName isEqual: @"Latest Version"]);
}
// Data Source
- (int) numberOfRowsInTableView: (NSTableView *)aTableView
{
return [currentProfile count];
}
- (id) tableView: (NSTableView *)aTableView
objectValueForTableColumn: (NSTableColumn *)aTableColumn
row: (int)rowIndex
{
id obj = nil;
if([[aTableColumn identifier] isEqual: @"item"])
{
obj = [NSString stringWithFormat: @"#%d",rowIndex+1];
}
else if([[aTableColumn identifier] isEqual: @"description"])
{
NSArray *keys = [currentProfile allKeys];
NSString *key = [keys objectAtIndex: rowIndex];
NSDictionary *info = [currentProfile objectForKey: key];
obj = [info objectForKey: @"comment"];
}
return obj;
}
- (void) tableView: (NSTableView *)aTableView
setObjectValue: (id)anObject
forTableColumn: (NSTableColumn *)aTableColumn
row: (int)rowIndex
{
}
@end

View file

@ -61,4 +61,7 @@ NSArray *systemImagesList();
// get the list of images...
NSArray *systemSoundsList();
// compute the gorm version
int appVersion(long a, long b, long c);
#endif

View file

@ -267,3 +267,9 @@ NSArray *systemSoundsList()
return result;
}
int appVersion(long a, long b, long c)
{
return (((a) << 16)+((b) << 8) + (c));
}

View file

@ -11,12 +11,12 @@
NSIcon = "FileIcon_gmodel.tiff";
}
);
ApplicationDescription = "[GNUstep | Graphica] Object Relationship Modeller";
ApplicationDescription = "[GNUstep | Graphical] Object Relationship Modeller";
ApplicationIcon = "Gorm.tiff";
ApplicationName = "Gorm";
ApplicationRelease = "Gorm 0.7.8 (Alpha)";
Authors = ("Gregory John Casamento <greg_casamento@yahoo.com>","Richard Frith-Macdonald <rfm@gnu.org>","Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>");
Copyright = "Copyright (C) 1999, 2000, 2001, 2002, 2003 FSF";
CopyrightDescription = "Released under the GNU General Public License 2.0";
NSBuildVersion = "0.7.8 June 30 2004";
NSBuildVersion = "0.7.8 July 10 2004";
}

View file

@ -1060,14 +1060,6 @@ selectCellWithString: (NSString*)title
[revertButton setTarget: self];
[revertButton setTitle: _(@"Revert")];
[revertButton setEnabled: NO];
// catch notifications concerning connection deletions...
/*
[nc addObserver: self
selector: @selector(handleNotification:)
name: IBDidRemoveConnectorNotification
object: nil];
*/
}
return self;
}

View file

@ -59,7 +59,7 @@ extern NSString *GormLinkPboardType;
@interface IBPalette : NSObject
{
NSWindow *window;
NSWindow *originalWindow;
NSImage *icon;
id<IBDocuments> document;
}

View file

@ -106,10 +106,10 @@ static NSMapTable *viewToType = 0;
fileName = [bundle pathForResource: @"palette" ofType: @"table"];
paletteInfo = [[NSString stringWithContentsOfFile: fileName]
propertyListFromStringsFileFormat];
propertyList];
fileName = [paletteInfo objectForKey: @"Icon"];
fileName = [bundle pathForImageResource: fileName];
fileName = [bundle pathForImageResource: fileName];
if (fileName == nil)
{
NSRunAlertPanel(NULL, @"Icon for palette is missing",
@ -122,7 +122,10 @@ static NSMapTable *viewToType = 0;
fileName = [paletteInfo objectForKey: @"NibFile"];
if (fileName != nil && [fileName isEqual: @""] == NO)
{
if ([NSBundle loadNibNamed: fileName owner: self] == NO)
NSDictionary *context = [NSDictionary dictionaryWithObjectsAndKeys: self, @"NSOwner",nil];
if ([bundle loadNibFile: fileName
externalNameTable: context
withZone: NSDefaultMallocZone()] == NO)
{
NSRunAlertPanel(NULL, @"Nib for palette would not load",
@"OK", NULL, NULL);
@ -141,7 +144,7 @@ static NSMapTable *viewToType = 0;
- (NSWindow*) originalWindow
{
return window;
return originalWindow;
}
- (id<IBDocuments>) paletteDocument

View file

@ -407,12 +407,13 @@ static NSMapTable *docMap = 0;
* Ask the document to get the dragged objects from the pasteboard and
* add them to it's collection of known objects.
*/
array = [document pasteType: IBViewPboardType
array = [document pasteType: IBObjectPboardType
fromPasteboard: dragPb
parent: [objects objectAtIndex: 0]];
enumerator = [array objectEnumerator];
while ((obj = [enumerator nextObject]) != nil)
{
[[(GormDocument *)document topLevelObjects] addObject: obj];
[self addObject: obj];
}
return YES;
@ -488,9 +489,13 @@ static NSMapTable *docMap = 0;
id obj = [self changeSelection: sender];
id e;
e = [document editorForObject: obj create: YES];
[e orderFront];
[e resetObject: obj];
if(obj != nil)
{
e = [document editorForObject: obj create: YES];
[e orderFront];
[e resetObject: obj];
}
return self;
}

View file

@ -10,11 +10,14 @@
NSMutableArray *palettes;
int current;
BOOL hiddenDuringTest;
NSMutableDictionary *importedClasses;
}
- (void) loadPalette: (NSString*)path;
- (id) openPalette: (id) sender;
- (NSPanel*) panel;
- (void) setCurrentPalette: (id)anObject;
- (NSDictionary *) importClasses: (NSArray *)classes withDictionary: (NSDictionary *)dict;
- (NSDictionary *) importedClasses;
@end
#endif

View file

@ -264,10 +264,10 @@ static NSImage *dragImage = nil;
NSRect scrollRect = {{0, 192}, {272, 74}};
NSRect dragRect = {{0, 0}, {272, 192}};
unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask;
// NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *userPalettes = [defaults arrayForKey: USER_PALETTES];
// NSArray *builtinPalettes = [defaults arrayForKey: BUILTIN_PALETTES];
// NSArray *userPalettes = [defaults arrayForKey: USER_PALETTES];
panel = [[GormPalettePanel alloc] initWithContentRect: contentRect
styleMask: style
backing: NSBackingStoreRetained
@ -277,6 +277,7 @@ static NSImage *dragImage = nil;
bundles = [NSMutableArray new];
palettes = [NSMutableArray new];
importedClasses = [NSMutableDictionary new];
scrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
[scrollView setHasHorizontalScroller: YES];
@ -315,17 +316,21 @@ static NSImage *dragImage = nil;
array = [array sortedArrayUsingSelector: @selector(compare:)];
/*
if(userPalettes != nil)
{
[array addObjectFromArray: userPalettes];
}
*/
for (index = 0; index < [array count]; index++)
{
[self loadPalette: [array objectAtIndex: index]];
}
// if we have any user palettes load them as well.
if(userPalettes != nil)
{
NSEnumerator *en = [userPalettes objectEnumerator];
id paletteName = nil;
while((paletteName = [en nextObject]) != nil)
{
[self loadPalette: paletteName];
}
}
}
/*
@ -353,6 +358,9 @@ static NSImage *dragImage = nil;
Class paletteClass;
NSDictionary *paletteInfo;
NSString *className;
NSArray *exportClasses;
NSArray *exportSounds;
NSArray *exportImages;
IBPalette *palette;
NSImageCell *cell;
int col;
@ -384,8 +392,7 @@ static NSImage *dragImage = nil;
return;
}
paletteInfo = [[NSString stringWithContentsOfFile: path]
propertyListFromStringsFileFormat];
paletteInfo = [[NSString stringWithContentsOfFile: path] propertyList];
if (paletteInfo == nil)
{
NSRunAlertPanel(NULL, _(@"Failed to load 'palette.table'"),
@ -418,6 +425,27 @@ static NSImage *dragImage = nil;
return;
}
exportClasses = [paletteInfo objectForKey: @"ExportClasses"];
if(exportClasses != nil)
{
NSDictionary *classes = [self importClasses: exportClasses withDictionary: nil];
[importedClasses addEntriesFromDictionary: classes];
}
exportImages = [paletteInfo objectForKey: @"ExportImages"];
if(exportImages != nil)
{
// id classManager = [(Gorm *)NSApp classManager];
// [classManager importClasses: exportClasses fromPalette: palette];
}
exportSounds = [paletteInfo objectForKey: @"ExportSounds"];
if(exportSounds != nil)
{
// id classManager = [(Gorm *)NSApp classManager];
// [classManager importClasses: exportClasses fromPalette: palette];
}
[palette finishInstantiate];
window = [palette originalWindow];
[window setExcludedFromWindowsMenu: YES];
@ -437,9 +465,13 @@ static NSImage *dragImage = nil;
- (id) openPalette: (id) sender
{
NSArray *fileTypes = [NSArray arrayWithObject: @"palette"];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
int result;
NSArray *fileTypes = [NSArray arrayWithObject: @"palette"];
NSOpenPanel *oPanel = [NSOpenPanel openPanel];
int result;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *userPalettes = [defaults arrayForKey: USER_PALETTES];
NSMutableArray *newUserPalettes =
(userPalettes == nil)?[NSMutableArray array]:[NSMutableArray arrayWithArray: userPalettes];
[oPanel setAllowsMultipleSelection: YES];
[oPanel setCanChooseFiles: YES];
@ -458,8 +490,12 @@ static NSImage *dragImage = nil;
{
NSString *aFile = [filesToOpen objectAtIndex: i];
[newUserPalettes addObject: aFile];
[self loadPalette: aFile];
}
// reset the defaults to include the new palette.
[defaults setObject: newUserPalettes forKey: USER_PALETTES];
return self;
}
return nil;
@ -520,4 +556,35 @@ static NSImage *dragImage = nil;
[dragView setNeedsDisplay: YES];
}
- (NSDictionary *) importClasses: (NSArray *)classes withDictionary: (NSDictionary *)dict
{
NSEnumerator *en = [classes objectEnumerator];
id className = nil;
NSMutableDictionary *masterDict = [NSMutableDictionary dictionary];
// import the classes.
while((className = [en nextObject]) != nil)
{
NSMutableDictionary *classDict = [NSMutableDictionary dictionary];
Class cls = NSClassFromString(className);
Class supercls = [cls superclass];
NSString *superClassName = NSStringFromClass(supercls);
[classDict setObject: superClassName forKey: @"Super"];
[masterDict setObject: classDict forKey: className];
}
// override any elements needed, if it's present.
if(dict != nil)
{
[masterDict addEntriesFromDictionary: dict];
}
return masterDict;
}
- (NSDictionary *)importedClasses
{
return importedClasses;
}
@end

24
GormPalettesPref.h Normal file
View file

@ -0,0 +1,24 @@
#ifndef INCLUDED_GormPalettesPref_h
#define INCLUDED_GormPalettesPref_h
#include <Foundation/NSObject.h>
#include <Foundation/NSArray.h>
#include <AppKit/NSView.h>
@interface GormPalettesPref : NSObject
{
id table;
id addButton;
id removeButton;
id window;
id _view;
NSMutableArray *palettes;
}
- (NSView *) view;
- (void) addAction: (id)sender;
- (void) removeAction: (id)sender;
@end
#endif

111
GormPalettesPref.m Normal file
View file

@ -0,0 +1,111 @@
#include "GormPalettesPref.h"
#include "GormPrivate.h"
#include <Foundation/NSUserDefaults.h>
#include <AppKit/NSButton.h>
#include <AppKit/NSTableView.h>
#include <AppKit/NSWindow.h>
#include <AppKit/NSNibLoading.h>
#include <AppKit/NSOpenPanel.h>
#include <AppKit/NSStringDrawing.h>
// data source...
@interface PaletteDataSource : NSObject
@end
@implementation PaletteDataSource
- (int) numberOfRowsInTableView: (NSTableView *)tv
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *list = [defaults objectForKey: @"UserPalettes"];
return [list count];
}
- (id) tableView: (NSTableView *)tv
objectValueForTableColumn: (NSTableColumn *)tc
row: (int)rowIndex
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *list = [defaults objectForKey: @"UserPalettes"];
id value = nil; // NSFontAttributeName
if([list count] > 0)
{
value = [[list objectAtIndex: rowIndex] lastPathComponent];
}
return value;
}
@end
@implementation GormPalettesPref
- (id) init
{
_view = nil;
self = [super init];
if ( ! [NSBundle loadNibNamed:@"GormPrefPalettes" owner:self] )
{
NSLog(@"Can not load bundle GormPrefPalettes");
return nil;
}
_view = [[window contentView] retain];
return self;
}
- (void) dealloc
{
TEST_RELEASE(_view);
[super dealloc];
}
-(NSView *) view
{
return _view;
}
- (void) addAction: (id)sender
{
NSLog(@"Here...");
[[(Gorm *)NSApp palettesManager] openPalette: self];
[table reloadData];
}
- (void) removeAction: (id)sender
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *list = [defaults objectForKey: @"UserPalettes"];
int row = [table selectedRow];
if(row >= 0)
{
NSString *stringValue = [list objectAtIndex: row];
if(stringValue != nil)
{
[list removeObject: stringValue];
[defaults setObject: list forKey: @"UserPalettes"];
[table reloadData];
}
}
}
- (BOOL) tableView: (NSTableView *)tableView
shouldEditTableColumn: (NSTableColumn *)aTableColumn
row: (int)rowIndex
{
BOOL result = NO;
return result;
}
- (BOOL) tableView: (NSTableView *)tv
shouldSelectRow: (int)rowIndex
{
BOOL result = YES;
return result;
}
@end

View file

@ -15,6 +15,7 @@
id _headersView;
id _shelfView;
id _colorsView;
id _palettesView;
}
- (void) popupAction: (id)sender;

View file

@ -3,6 +3,7 @@
#include "GormHeadersPref.h"
#include "GormShelfPref.h"
#include "GormColorsPref.h"
#include "GormPalettesPref.h"
#include <AppKit/NSBox.h>
#include <AppKit/NSPopUpButton.h>
@ -13,17 +14,17 @@
- (void) awakeFromNib
{
_generalView = [[GormGeneralPref alloc] init];
_headersView = [[GormHeadersPref alloc] init];
_shelfView = [[GormShelfPref alloc] init];
_colorsView = [[GormColorsPref alloc] init];
_generalView = [[GormGeneralPref alloc] init];
_headersView = [[GormHeadersPref alloc] init];
_shelfView = [[GormShelfPref alloc] init];
_colorsView = [[GormColorsPref alloc] init];
_palettesView = [[GormPalettesPref alloc] init];
[prefBox setContentView:[_generalView view]];
[[self window] setFrameUsingName: @"Preferences"];
[[self window] setFrameAutosaveName: @"Preferences"];
}
- (void) popupAction: (id)sender
{
if ( sender != popup )
@ -45,8 +46,11 @@
case 3:
[prefBox setContentView: [_colorsView view]];
break;
case 4:
[prefBox setContentView: [_palettesView view]];
break;
default:
NSLog(@"Ouch Default : - (void) popupAction: (id)sender");
NSLog(@"Error Default (GormPrefController.m) : - (void) popupAction: (id)sender, no match for tag %d",tag);
break;
}
}
@ -58,6 +62,7 @@
RELEASE(_headersView);
RELEASE(_shelfView);
RELEASE(_colorsView);
RELEASE(_palettesView);
[super dealloc];
}
@end

View file

@ -74,11 +74,12 @@
NSString *path = [bundle pathForImageResource: @"GormMenuDrag"];
NSImage *dragImage = [[NSImage alloc] initWithContentsOfFile: path];
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(0, 0, 272, 192)
originalWindow = [[NSWindow alloc] initWithContentRect:
NSMakeRect(0, 0, 272, 192)
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreRetained
defer: NO];
contents = [window contentView];
contents = [originalWindow contentView];
/*

View file

@ -107,12 +107,13 @@
NSString *path = [bundle pathForImageResource: @"WindowDrag"];
NSImage *dragImage = [[NSImage alloc] initWithContentsOfFile: path];
RELEASE(window);
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(0, 0, 272, 192)
RELEASE(originalWindow);
originalWindow= [[NSWindow alloc] initWithContentRect:
NSMakeRect(0, 0, 272, 192)
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreRetained
defer: NO];
contents = [window contentView];
contents = [originalWindow contentView];
w = [GormWindowMaker new];
v = [[NSButton alloc] initWithFrame: NSMakeRect(35, 60, 80, 64)];

View file

@ -145,10 +145,11 @@
Actions = (
);
Outlets = (
disabledSwitch,
autoenableSwitch,
tagForm,
typeMatrix,
defaultItemForm
defaultItemForm,
enableSwitch
);
Super = IBInspector;
};

View file

@ -860,7 +860,8 @@
@interface GormPopUpButtonAttributesInspector : IBInspector
{
id typeMatrix;
id disabledSwitch;
id autoenableSwitch;
id enableSwitch;
id tagForm;
id defaultItemForm;
}
@ -878,9 +879,13 @@
[object selectItem: nil];
[object selectItem: selectedItem];
}
else if (control == disabledSwitch)
else if (control == autoenableSwitch)
{
[object setAutoenablesItems: ([control state] == NSOffState)];
[object setAutoenablesItems: ([control state] == NSOnState)];
}
else if (control == enableSwitch)
{
[object setEnabled: ([control state] == NSOnState)];
}
else if (control == tagForm)
{
@ -904,7 +909,8 @@
return;
}
[typeMatrix selectCellWithTag: [anObject pullsDown]];
[disabledSwitch setState: ![anObject autoenablesItems]];
[autoenableSwitch setState: [anObject autoenablesItems]];
[enableSwitch setState: [anObject isEnabled]];
[[tagForm cellAtRow: 0 column: 0] setIntValue: [anObject tag]];
[[defaultItemForm cellAtRow: 0 column: 0] setIntValue: [anObject indexOfSelectedItem]];
}

View file

@ -41,11 +41,12 @@
NSView *contents;
id v;
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(0, 0, 272, 192)
originalWindow = [[NSWindow alloc] initWithContentRect:
NSMakeRect(0, 0, 272, 192)
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreRetained
defer: NO];
contents = [window contentView];
contents = [originalWindow contentView];
/*******************/

View file

@ -51,11 +51,12 @@
NSSize contentSize;
id v;
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(0, 0, 272, 192)
originalWindow = [[NSWindow alloc] initWithContentRect:
NSMakeRect(0, 0, 272, 192)
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreRetained
defer: NO];
contents = [window contentView];
contents = [originalWindow contentView];
/*******************/
/* First Column... */

View file

@ -198,11 +198,12 @@ int defaultDateFormatIndex = 3;
NSRect rect;
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(0, 0, 272, 192)
originalWindow = [[NSWindow alloc] initWithContentRect:
NSMakeRect(0, 0, 272, 192)
styleMask: NSBorderlessWindowMask
backing: NSBackingStoreRetained
defer: NO];
contents = [window contentView];
contents = [originalWindow contentView];
/*******************/
/* First Column... */

View file

@ -136,7 +136,8 @@
"useStandardKerning:",
"useStandardLigatures:",
"yank:",
"zoom:"
"zoom:",
"selectArchiveType:"
);
Super = NSObject;
};
@ -152,8 +153,26 @@
);
Outlets = (
selectionBox,
window
window,
filePrefsView,
filePrefsManager
);
Super = GSNibContainer;
};
GormFilePrefsManager = {
Actions = (
"showIncompatibilities:",
"selectTargetVersion:",
"selectArchiveType:"
);
Outlets = (
showIncompatibilities,
targetVersion,
gormAppVersion,
archiveType,
iwindow,
itable
);
Super = NSObject;
};
}

Binary file not shown.

View file

@ -0,0 +1,168 @@
{
FirstResponder = {
Actions = (
"activateContextHelpMode:",
"alignCenter:",
"alignJustified:",
"alignLeft:",
"alignRight:",
"arrangeInFront:",
"cancel:",
"capitalizeWord:",
"changeColor:",
"changeFont:",
"checkSpelling:",
"close:",
"complete:",
"copy:",
"copyFont:",
"copyRuler:",
"cut:",
"delete:",
"deleteBackward:",
"deleteForward:",
"deleteToBeginningOfLine:",
"deleteToBeginningOfParagraph:",
"deleteToEndOfLine:",
"deleteToEndOfParagraph:",
"deleteToMark:",
"deleteWordBackward:",
"deleteWordForward:",
"deminiaturize:",
"deselectAll:",
"fax:",
"hide:",
"hideOtherApplications:",
"indent:",
"loosenKerning:",
"lowerBaseline:",
"lowercaseWord:",
"makeKeyAndOrderFront:",
"miniaturize:",
"miniaturizeAll:",
"moveBackward:",
"moveBackwardAndModifySelection:",
"moveDown:",
"moveDownAndModifySelection:",
"moveForward:",
"moveForwardAndModifySelection:",
"moveLeft:",
"moveRight:",
"moveToBeginningOfDocument:",
"moveToBeginningOfLine:",
"moveToBeginningOfParagraph:",
"moveToEndOfDocument:",
"moveToEndOfLine:",
"moveToEndOfParagraph:",
"moveUp:",
"moveUpAndModifySelection:",
"moveWordBackward:",
"moveWordBackwardAndModifySelection:",
"moveWordForward:",
"moveWordForwardAndModifySelection:",
"newDocument:",
"ok:",
"openDocument:",
"orderBack:",
"orderFront:",
"orderFrontColorPanel:",
"orderFrontDataLinkPanel:",
"orderFrontFontPanel:",
"orderFrontHelpPanel:",
"orderFrontStandardAboutPanel:",
"orderFrontStandardInfoPanel:",
"orderOut:",
"pageDown:",
"pageUp:",
"paste:",
"pasteAsPlainText:",
"pasteAsRichText:",
"pasteFont:",
"pasteRuler:",
"performClose:",
"performMiniaturize:",
"performZoom:",
"print:",
"raiseBaseline:",
"revertDocumentToSaved:",
"runPageLayout:",
"runToolbarCustomizationPalette:",
"saveAllDocuments:",
"saveDocument:",
"saveDocumentAs:",
"saveDocumentTo:",
"scrollLineDown:",
"scrollLineUp:",
"scrollPageDown:",
"scrollPageUp:",
"scrollViaScroller:",
"selectAll:",
"selectLine:",
"selectNextKeyView:",
"selectParagraph:",
"selectPreviousKeyView:",
"selectText:",
"selectText:",
"selectToMark:",
"selectWord:",
"showContextHelp:",
"showGuessPanel:",
"showHelp:",
"showWindow:",
"stop:",
"subscript:",
"superscript:",
"swapWithMark:",
"takeDoubleValueFrom:",
"takeFloatValueFrom:",
"takeIntValueFrom:",
"takeObjectValueFrom:",
"takeStringValueFrom:",
"terminate:",
"tightenKerning:",
"toggle:",
"toggleContinuousSpellChecking:",
"toggleRuler:",
"toggleToolbarShown:",
"toggleTraditionalCharacterShape:",
"transpose:",
"transposeWords:",
"turnOffKerning:",
"turnOffLigatures:",
"underline:",
"unhide:",
"unhideAllApplications:",
"unscript:",
"uppercaseWord:",
"useAllLigatures:",
"useStandardKerning:",
"useStandardLigatures:",
"yank:",
"zoom:",
"removeAction:",
"addAction:"
);
Super = NSObject;
};
GormPalettesPref = {
Actions = (
"removeAction:",
"addAction:"
);
Outlets = (
_view,
window,
removeButton,
addButton,
table
);
Super = NSObject;
};
PaletteDataSource = {
Actions = (
);
Outlets = (
);
Super = NSObject;
};
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

11
VersionProfiles.plist Normal file
View file

@ -0,0 +1,11 @@
{
"GNUstep gui-0.9.3" = {
GSNibContainer = {
comment = "Will not properly store any non-UI objects which have been dragged into the objects view.";
version = 0;
};
};
"Latest Version" = {
GSNibContainer = {comment = "Not compatible with GNUstep gui-0.9.3 or earlier."; version = 1; };
};
}