mirror of
https://github.com/gnustep/apps-gorm.git
synced 2025-04-22 22:20:44 +00:00
Added code to use the toolbar and added a .gorm for the document window to
reduce code. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@19376 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
d9c26fa4af
commit
5548627a42
8 changed files with 492 additions and 313 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2004-05-19 07:20 Gregory John Casamento <greg_casamento@yahoo.com>
|
||||
|
||||
* GormDocument.gorm: Added. This replaces much of the code which
|
||||
was once in [GormDocument init].
|
||||
* Gorm.m: Missing definition for GormLinkPboardType added.
|
||||
* GormDocument.h: Removed selectionView, added toolbar.
|
||||
* GormDocument.m: Added include for NSNibLoading and NSToolbar
|
||||
and removed some of the old rect declarations for creating the GUI.
|
||||
Portions of this will stay hard-coded, since the editors
|
||||
all need to be initialized with the document. Moved some
|
||||
of the initialization around. Added awakeFromNib method to
|
||||
load the toolbar and the toolbar delegate methods.
|
||||
|
||||
2004-05-18 07:20 Gregory John Casamento <greg_casamento@yahoo.com>
|
||||
|
||||
* GModelDecoder.m: Changed reference to the class loader.
|
||||
|
|
|
@ -131,6 +131,7 @@ Gorm_RESOURCE_FILES = \
|
|||
Resources/GormClassInspector.gorm \
|
||||
Resources/GormFontView.gorm \
|
||||
Resources/GormSetName.gorm \
|
||||
Resources/GormDocument.gorm \
|
||||
Resources/Gorm.gorm
|
||||
|
||||
Gorm_HEADERS = \
|
||||
|
|
1
Gorm.m
1
Gorm.m
|
@ -34,6 +34,7 @@
|
|||
#include <AppKit/NSButton.h>
|
||||
|
||||
NSDate *startDate;
|
||||
NSString *GormLinkPboardType = @"GormLinkPboardType";
|
||||
NSString *GormToggleGuidelineNotification = @"GormToggleGuidelineNotification";
|
||||
NSString *GormDidModifyClassNotification = @"GormDidModifyClassNotification";
|
||||
NSString *GormDidAddClassNotification = @"GormDidAddClassNotification";
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
NSString *documentPath;
|
||||
NSMapTable *objToName;
|
||||
NSWindow *window;
|
||||
NSMatrix *selectionView;
|
||||
// NSMatrix *selectionView;
|
||||
NSBox *selectionBox;
|
||||
NSScrollView *scrollView;
|
||||
NSScrollView *classesScrollView;
|
||||
|
@ -68,6 +68,7 @@
|
|||
NSMutableArray *savedEditors;
|
||||
NSMutableArray *hidden;
|
||||
NSMutableArray *openEditors;
|
||||
NSToolbar *toolbar;
|
||||
}
|
||||
- (void) addConnector: (id<IBConnectors>)aConnector;
|
||||
- (NSArray*) allConnectors;
|
||||
|
|
626
GormDocument.m
626
GormDocument.m
|
@ -34,6 +34,7 @@
|
|||
#include <AppKit/NSNibConnector.h>
|
||||
#include <GNUstepGUI/GSNibTemplates.h>
|
||||
#include "GormFunctions.h"
|
||||
#include <AppKit/NSNibLoading.h>
|
||||
|
||||
@interface GormDisplayCell : NSButtonCell
|
||||
@end
|
||||
|
@ -172,303 +173,243 @@ static NSImage *classesImage = nil;
|
|||
self = [super init];
|
||||
if (self != nil)
|
||||
{
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
NSRect winrect = NSMakeRect(100,100,342,256);
|
||||
NSRect selectionRect = {{6, 188}, {234, 64}};
|
||||
NSRect scrollRect = {{0, 0}, {340, 188}};
|
||||
NSRect mainRect = {{20, 0}, {320, 188}};
|
||||
NSImage *image;
|
||||
GormDisplayCell *cell;
|
||||
NSTableColumn *tableColumn;
|
||||
unsigned style;
|
||||
NSColor *salmonColor =
|
||||
[NSColor colorWithCalibratedRed: 0.850980
|
||||
green: 0.737255
|
||||
blue: 0.576471
|
||||
alpha: 1.0 ];
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
openEditors = [NSMutableArray new];
|
||||
classManager = [[GormClassManager alloc] initWithDocument: self];
|
||||
classEditor = [[GormClassEditor alloc] initWithDocument: self];
|
||||
|
||||
/*
|
||||
* NB. We must retain the map values (object names) as the nameTable
|
||||
* may not hold identical name objects, but merely equal strings.
|
||||
*/
|
||||
objToName = NSCreateMapTableWithZone(NSObjectMapKeyCallBacks,
|
||||
NSObjectMapValueCallBacks, 128, [self zone]);
|
||||
|
||||
// for saving the editors when the gorm file is persisted.
|
||||
savedEditors = [NSMutableArray new];
|
||||
|
||||
style = NSTitledWindowMask | NSClosableWindowMask
|
||||
| NSResizableWindowMask | NSMiniaturizableWindowMask;
|
||||
window = [[NSWindow alloc] initWithContentRect: winrect
|
||||
styleMask: style
|
||||
backing: NSBackingStoreRetained
|
||||
defer: NO];
|
||||
[window setMinSize: [window frame].size];
|
||||
[window setTitle: _(@"UNTITLED")];
|
||||
[window setReleasedWhenClosed: NO];
|
||||
[window setDelegate: self];
|
||||
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowWillCloseNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowDidBecomeKeyNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowWillMiniaturizeNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowDidDeminiaturizeNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBClassNameChangedNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBInspectorDidModifyObjectNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: GormDidModifyClassNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: GormDidAddClassNotification
|
||||
object: classManager];
|
||||
selectionView = [[NSMatrix alloc] initWithFrame: selectionRect
|
||||
mode: NSRadioModeMatrix
|
||||
cellClass: [GormDisplayCell class]
|
||||
numberOfRows: 1
|
||||
numberOfColumns: 4];
|
||||
[selectionView setTarget: self];
|
||||
[selectionView setAction: @selector(changeView:)];
|
||||
[selectionView setAutosizesCells: NO];
|
||||
[selectionView setCellSize: NSMakeSize(64,64)];
|
||||
[selectionView setIntercellSpacing: NSMakeSize(24,0)];
|
||||
[selectionView setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable];
|
||||
|
||||
if ((image = objectsImage) != nil)
|
||||
{
|
||||
cell = [selectionView cellAtRow: 0 column: 0];
|
||||
[cell setTag: 0];
|
||||
[cell setImage: image];
|
||||
[cell setTitle: _(@"Objects")];
|
||||
[cell setBordered: NO];
|
||||
[cell setAlignment: NSCenterTextAlignment];
|
||||
[cell setImagePosition: NSImageAbove];
|
||||
[cell setButtonType: NSOnOffButton];
|
||||
}
|
||||
|
||||
if ((image = imagesImage) != nil)
|
||||
{
|
||||
cell = [selectionView cellAtRow: 0 column: 1];
|
||||
[cell setTag: 1];
|
||||
[cell setImage: image];
|
||||
[cell setTitle: _(@"Images")];
|
||||
[cell setBordered: NO];
|
||||
[cell setAlignment: NSCenterTextAlignment];
|
||||
[cell setImagePosition: NSImageAbove];
|
||||
[cell setButtonType: NSOnOffButton];
|
||||
}
|
||||
|
||||
if ((image = soundsImage) != nil)
|
||||
{
|
||||
cell = [selectionView cellAtRow: 0 column: 2];
|
||||
[cell setTag: 2];
|
||||
[cell setImage: image];
|
||||
[cell setTitle: _(@"Sounds")];
|
||||
[cell setBordered: NO];
|
||||
[cell setAlignment: NSCenterTextAlignment];
|
||||
[cell setImagePosition: NSImageAbove];
|
||||
[cell setButtonType: NSOnOffButton];
|
||||
}
|
||||
|
||||
if ((image = classesImage) != nil)
|
||||
{
|
||||
cell = [selectionView cellAtRow: 0 column: 3];
|
||||
[cell setTag: 3];
|
||||
[cell setImage: image];
|
||||
[cell setTitle: _(@"Classes")];
|
||||
[cell setBordered: NO];
|
||||
[cell setAlignment: NSCenterTextAlignment];
|
||||
[cell setImagePosition: NSImageAbove];
|
||||
[cell setButtonType: NSOnOffButton];
|
||||
}
|
||||
|
||||
[[window contentView] addSubview: selectionView];
|
||||
RELEASE(selectionView);
|
||||
|
||||
selectionBox = [[NSBox alloc] initWithFrame: scrollRect];
|
||||
[selectionBox setTitlePosition: NSNoTitle];
|
||||
[selectionBox setBorderType: NSNoBorder];
|
||||
[selectionBox setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[[window contentView] addSubview: selectionBox];
|
||||
RELEASE(selectionBox);
|
||||
|
||||
// objects...
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
scrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[scrollView setHasVerticalScroller: YES];
|
||||
[scrollView setHasHorizontalScroller: YES];
|
||||
[scrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[scrollView setBorderType: NSBezelBorder];
|
||||
|
||||
objectsView = [[GormObjectEditor alloc] initWithObject: nil
|
||||
if([NSBundle loadNibNamed: @"GormDocument" owner: self])
|
||||
{
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
NSRect scrollRect = {{0, 0}, {340, 188}};
|
||||
NSRect mainRect = {{20, 0}, {320, 188}};
|
||||
NSTableColumn *tableColumn;
|
||||
NSColor *salmonColor =
|
||||
[NSColor colorWithCalibratedRed: 0.850980
|
||||
green: 0.737255
|
||||
blue: 0.576471
|
||||
alpha: 1.0 ];
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
|
||||
openEditors = [NSMutableArray new];
|
||||
classManager = [[GormClassManager alloc] initWithDocument: self];
|
||||
classEditor = [[GormClassEditor alloc] initWithDocument: self];
|
||||
|
||||
/*
|
||||
* NB. We must retain the map values (object names) as the nameTable
|
||||
* may not hold identical name objects, but merely equal strings.
|
||||
*/
|
||||
objToName = NSCreateMapTableWithZone(NSObjectMapKeyCallBacks,
|
||||
NSObjectMapValueCallBacks, 128, [self zone]);
|
||||
|
||||
// for saving the editors when the gorm file is persisted.
|
||||
savedEditors = [NSMutableArray new];
|
||||
[window setMinSize: [window frame].size];
|
||||
[window setTitle: _(@"UNTITLED")];
|
||||
|
||||
// observe certain notifications...
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowWillCloseNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowDidBecomeKeyNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowWillMiniaturizeNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: NSWindowDidDeminiaturizeNotification
|
||||
object: window];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBClassNameChangedNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBInspectorDidModifyObjectNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: GormDidModifyClassNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: GormDidAddClassNotification
|
||||
object: classManager];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBWillBeginTestingInterfaceNotification
|
||||
object: nil];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBWillEndTestingInterfaceNotification
|
||||
object: nil];
|
||||
|
||||
// selectionBox = [[NSBox alloc] initWithFrame: scrollRect];
|
||||
// [selectionBox setTitlePosition: NSNoTitle];
|
||||
// [selectionBox setBorderType: NSNoBorder];
|
||||
// [selectionBox setAutoresizingMask:
|
||||
// NSViewHeightSizable|NSViewWidthSizable];
|
||||
// [[window contentView] addSubview: selectionBox];
|
||||
// RELEASE(selectionBox);
|
||||
|
||||
// objects...
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
scrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[scrollView setHasVerticalScroller: YES];
|
||||
[scrollView setHasHorizontalScroller: YES];
|
||||
[scrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[scrollView setBorderType: NSBezelBorder];
|
||||
|
||||
objectsView = [[GormObjectEditor alloc] initWithObject: nil
|
||||
inDocument: self];
|
||||
[objectsView setFrame: mainRect];
|
||||
[objectsView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[scrollView setDocumentView: objectsView];
|
||||
RELEASE(objectsView);
|
||||
|
||||
// images...
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
imagesScrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[imagesScrollView setHasVerticalScroller: YES];
|
||||
[imagesScrollView setHasHorizontalScroller: YES];
|
||||
[imagesScrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[imagesScrollView setBorderType: NSBezelBorder];
|
||||
|
||||
imagesView = [[GormImageEditor alloc] initWithObject: nil
|
||||
[objectsView setFrame: mainRect];
|
||||
[objectsView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[scrollView setDocumentView: objectsView];
|
||||
RELEASE(objectsView);
|
||||
|
||||
// images...
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
imagesScrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[imagesScrollView setHasVerticalScroller: YES];
|
||||
[imagesScrollView setHasHorizontalScroller: YES];
|
||||
[imagesScrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[imagesScrollView setBorderType: NSBezelBorder];
|
||||
|
||||
imagesView = [[GormImageEditor alloc] initWithObject: nil
|
||||
inDocument: self];
|
||||
[imagesView setFrame: mainRect];
|
||||
[imagesView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable];
|
||||
[imagesScrollView setDocumentView: imagesView];
|
||||
RELEASE(imagesView);
|
||||
|
||||
// sounds...
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
soundsScrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[soundsScrollView setHasVerticalScroller: YES];
|
||||
[soundsScrollView setHasHorizontalScroller: YES];
|
||||
[soundsScrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[soundsScrollView setBorderType: NSBezelBorder];
|
||||
|
||||
soundsView = [[GormSoundEditor alloc] initWithObject: nil
|
||||
[imagesView setFrame: mainRect];
|
||||
[imagesView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable];
|
||||
[imagesScrollView setDocumentView: imagesView];
|
||||
RELEASE(imagesView);
|
||||
|
||||
// sounds...
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
soundsScrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[soundsScrollView setHasVerticalScroller: YES];
|
||||
[soundsScrollView setHasHorizontalScroller: YES];
|
||||
[soundsScrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[soundsScrollView setBorderType: NSBezelBorder];
|
||||
|
||||
soundsView = [[GormSoundEditor alloc] initWithObject: nil
|
||||
inDocument: self];
|
||||
[soundsView setFrame: mainRect];
|
||||
[soundsView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable];
|
||||
[soundsScrollView setDocumentView: soundsView];
|
||||
RELEASE(soundsView);
|
||||
|
||||
// classes...
|
||||
classesScrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[classesScrollView setHasVerticalScroller: YES];
|
||||
[classesScrollView setHasHorizontalScroller: NO];
|
||||
[classesScrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[classesScrollView setBorderType: NSBezelBorder];
|
||||
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
classesView = [[GormOutlineView alloc] initWithFrame: mainRect];
|
||||
[classesView setMenu: [(Gorm*)NSApp classMenu]];
|
||||
[classesView setDataSource: self];
|
||||
[classesView setDelegate: self];
|
||||
[classesView setAutoresizesAllColumnsToFit: YES];
|
||||
[classesView setAllowsColumnResizing: NO];
|
||||
[classesView setDrawsGrid: NO];
|
||||
[classesView setIndentationMarkerFollowsCell: YES];
|
||||
[classesView setAutoresizesOutlineColumn: YES];
|
||||
[classesView setIndentationPerLevel: 10];
|
||||
[classesView setAttributeOffset: 30];
|
||||
[classesView setBackgroundColor: salmonColor ];
|
||||
[classesView setRowHeight: 18];
|
||||
[classesScrollView setDocumentView: classesView];
|
||||
RELEASE(classesView);
|
||||
|
||||
tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"classes"];
|
||||
[[tableColumn headerCell] setStringValue: _(@"Classes")];
|
||||
[tableColumn setMinWidth: 190];
|
||||
[tableColumn setResizable: YES];
|
||||
[tableColumn setEditable: YES];
|
||||
[classesView addTableColumn: tableColumn];
|
||||
[classesView setOutlineTableColumn: tableColumn];
|
||||
RELEASE(tableColumn);
|
||||
|
||||
tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"outlets"];
|
||||
[[tableColumn headerCell] setStringValue: _(@"Outlet")];
|
||||
[tableColumn setWidth: 50];
|
||||
[tableColumn setResizable: NO];
|
||||
[tableColumn setEditable: NO];
|
||||
[classesView addTableColumn: tableColumn];
|
||||
[classesView setOutletColumn: tableColumn];
|
||||
RELEASE(tableColumn);
|
||||
|
||||
tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"actions"];
|
||||
[[tableColumn headerCell] setStringValue: _(@"Action")];
|
||||
[tableColumn setWidth: 50];
|
||||
[tableColumn setResizable: NO];
|
||||
[tableColumn setEditable: NO];
|
||||
[classesView addTableColumn: tableColumn];
|
||||
[classesView setActionColumn: tableColumn];
|
||||
RELEASE(tableColumn);
|
||||
|
||||
[classesView sizeToFit];
|
||||
|
||||
// expand all of the items in the classesView...
|
||||
[classesView expandItem: @"NSObject"];
|
||||
|
||||
[selectionBox setContentView: scrollView];
|
||||
|
||||
/*
|
||||
* Set up special-case dummy objects and add them to the objects view.
|
||||
*/
|
||||
filesOwner = [GormFilesOwner new];
|
||||
[self setName: @"NSOwner" forObject: filesOwner];
|
||||
[objectsView addObject: filesOwner];
|
||||
firstResponder = [GormFirstResponder new];
|
||||
[self setName: @"NSFirst" forObject: firstResponder];
|
||||
[objectsView addObject: firstResponder];
|
||||
|
||||
/*
|
||||
* Set image for this miniwindow.
|
||||
*/
|
||||
[window setMiniwindowImage: [(id)filesOwner imageForViewer]];
|
||||
|
||||
hidden = [NSMutableArray new];
|
||||
/*
|
||||
* Watch to see when we are starting/ending testing.
|
||||
*/
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBWillBeginTestingInterfaceNotification
|
||||
object: nil];
|
||||
[nc addObserver: self
|
||||
selector: @selector(handleNotification:)
|
||||
name: IBWillEndTestingInterfaceNotification
|
||||
object: nil];
|
||||
|
||||
// preload headers...
|
||||
if ([defaults boolForKey: @"PreloadHeaders"])
|
||||
{
|
||||
NSArray *headerList = [defaults arrayForKey: @"HeaderList"];
|
||||
NSEnumerator *en = [headerList objectEnumerator];
|
||||
id obj = nil;
|
||||
|
||||
while ((obj = [en nextObject]) != nil)
|
||||
[soundsView setFrame: mainRect];
|
||||
[soundsView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable];
|
||||
[soundsScrollView setDocumentView: soundsView];
|
||||
RELEASE(soundsView);
|
||||
|
||||
// classes...
|
||||
classesScrollView = [[NSScrollView alloc] initWithFrame: scrollRect];
|
||||
[classesScrollView setHasVerticalScroller: YES];
|
||||
[classesScrollView setHasHorizontalScroller: NO];
|
||||
[classesScrollView setAutoresizingMask:
|
||||
NSViewHeightSizable|NSViewWidthSizable];
|
||||
[classesScrollView setBorderType: NSBezelBorder];
|
||||
|
||||
mainRect.origin = NSMakePoint(0,0);
|
||||
classesView = [[GormOutlineView alloc] initWithFrame: mainRect];
|
||||
[classesView setMenu: [(Gorm*)NSApp classMenu]];
|
||||
[classesView setDataSource: self];
|
||||
[classesView setDelegate: self];
|
||||
[classesView setAutoresizesAllColumnsToFit: YES];
|
||||
[classesView setAllowsColumnResizing: NO];
|
||||
[classesView setDrawsGrid: NO];
|
||||
[classesView setIndentationMarkerFollowsCell: YES];
|
||||
[classesView setAutoresizesOutlineColumn: YES];
|
||||
[classesView setIndentationPerLevel: 10];
|
||||
[classesView setAttributeOffset: 30];
|
||||
[classesView setBackgroundColor: salmonColor ];
|
||||
[classesView setRowHeight: 18];
|
||||
[classesScrollView setDocumentView: classesView];
|
||||
RELEASE(classesView);
|
||||
|
||||
tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"classes"];
|
||||
[[tableColumn headerCell] setStringValue: _(@"Classes")];
|
||||
[tableColumn setMinWidth: 190];
|
||||
[tableColumn setResizable: YES];
|
||||
[tableColumn setEditable: YES];
|
||||
[classesView addTableColumn: tableColumn];
|
||||
[classesView setOutlineTableColumn: tableColumn];
|
||||
RELEASE(tableColumn);
|
||||
|
||||
tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"outlets"];
|
||||
[[tableColumn headerCell] setStringValue: _(@"Outlet")];
|
||||
[tableColumn setWidth: 50];
|
||||
[tableColumn setResizable: NO];
|
||||
[tableColumn setEditable: NO];
|
||||
[classesView addTableColumn: tableColumn];
|
||||
[classesView setOutletColumn: tableColumn];
|
||||
RELEASE(tableColumn);
|
||||
|
||||
tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"actions"];
|
||||
[[tableColumn headerCell] setStringValue: _(@"Action")];
|
||||
[tableColumn setWidth: 50];
|
||||
[tableColumn setResizable: NO];
|
||||
[tableColumn setEditable: NO];
|
||||
[classesView addTableColumn: tableColumn];
|
||||
[classesView setActionColumn: tableColumn];
|
||||
RELEASE(tableColumn);
|
||||
|
||||
[classesView sizeToFit];
|
||||
|
||||
// expand all of the items in the classesView...
|
||||
[classesView expandItem: @"NSObject"];
|
||||
|
||||
[selectionBox setContentView: scrollView];
|
||||
|
||||
/*
|
||||
* Set up special-case dummy objects and add them to the objects view.
|
||||
*/
|
||||
filesOwner = [GormFilesOwner new];
|
||||
[self setName: @"NSOwner" forObject: filesOwner];
|
||||
[objectsView addObject: filesOwner];
|
||||
firstResponder = [GormFirstResponder new];
|
||||
[self setName: @"NSFirst" forObject: firstResponder];
|
||||
[objectsView addObject: firstResponder];
|
||||
|
||||
/*
|
||||
* Set image for this miniwindow.
|
||||
*/
|
||||
[window setMiniwindowImage: [(id)filesOwner imageForViewer]];
|
||||
|
||||
hidden = [NSMutableArray new];
|
||||
|
||||
// preload headers...
|
||||
if ([defaults boolForKey: @"PreloadHeaders"])
|
||||
{
|
||||
NSDebugLog(@"Preloading %@", obj);
|
||||
[classManager parseHeader: (NSString *)obj];
|
||||
NSArray *headerList = [defaults arrayForKey: @"HeaderList"];
|
||||
NSEnumerator *en = [headerList objectEnumerator];
|
||||
id obj = nil;
|
||||
|
||||
while ((obj = [en nextObject]) != nil)
|
||||
{
|
||||
NSDebugLog(@"Preloading %@", obj);
|
||||
[classManager parseHeader: (NSString *)obj];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"Couldn't load GormDocument interface.");
|
||||
[NSApp terminate: self];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) awakeFromNib
|
||||
{
|
||||
// set up the toolbar...
|
||||
toolbar = [[NSToolbar alloc] initWithIdentifier: @"GormToolbar"];
|
||||
[toolbar setAllowsUserCustomization: NO];
|
||||
[toolbar setDelegate: self];
|
||||
[window setToolbar: toolbar];
|
||||
}
|
||||
|
||||
- (void) addConnector: (id<IBConnectors>)aConnector
|
||||
{
|
||||
if ([connections indexOfObjectIdenticalTo: aConnector] == NSNotFound)
|
||||
|
@ -501,7 +442,7 @@ static NSImage *classesImage = nil;
|
|||
// set the holder in the document.
|
||||
fontManager = (GormObjectProxy *)item;
|
||||
|
||||
[selectionView selectCellWithTag: 0];
|
||||
// [selectionView selectCellWithTag: 0];
|
||||
[selectionBox setContentView: scrollView];
|
||||
}
|
||||
|
||||
|
@ -816,7 +757,7 @@ static NSImage *classesImage = nil;
|
|||
// change the views...
|
||||
- (void) changeView: (id)sender
|
||||
{
|
||||
int tag = [[sender selectedCell] tag];
|
||||
int tag = [sender tag];
|
||||
|
||||
switch (tag)
|
||||
{
|
||||
|
@ -1053,6 +994,7 @@ static NSImage *classesImage = nil;
|
|||
- (void) dealloc
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver: self];
|
||||
[window close];
|
||||
RELEASE(classManager);
|
||||
RELEASE(classEditor);
|
||||
RELEASE(hidden);
|
||||
|
@ -1067,6 +1009,7 @@ static NSImage *classesImage = nil;
|
|||
RELEASE(savedEditors);
|
||||
RELEASE(scrollView);
|
||||
RELEASE(classesScrollView);
|
||||
RELEASE(toolbar);
|
||||
RELEASE(openEditors);
|
||||
RELEASE(window);
|
||||
[super dealloc];
|
||||
|
@ -1671,30 +1614,26 @@ static NSImage *classesImage = nil;
|
|||
|
||||
- (id) instantiateClass: (id)sender
|
||||
{
|
||||
NSDebugLog(@"document -> instantiateClass: ");
|
||||
if ([[selectionView selectedCell] tag] == 3)
|
||||
int i = [classesView selectedRow];
|
||||
|
||||
if (i >= 0)
|
||||
{
|
||||
int i = [classesView selectedRow];
|
||||
|
||||
if (i >= 0)
|
||||
id object = [classesView itemAtRow: i];
|
||||
GSNibItem *item = nil;
|
||||
|
||||
if([object isKindOfClass: [NSString class]])
|
||||
{
|
||||
id object = [classesView itemAtRow: i];
|
||||
GSNibItem *item = nil;
|
||||
|
||||
if([object isKindOfClass: [NSString class]])
|
||||
{
|
||||
if([object isEqualToString: @"FirstResponder"])
|
||||
return nil;
|
||||
|
||||
item = [[GormObjectProxy alloc] initWithClassName: object
|
||||
frame: NSMakeRect(0,0,0,0)];
|
||||
|
||||
[self setName: nil forObject: item];
|
||||
[self attachObject: item toParent: nil];
|
||||
|
||||
[selectionView selectCellWithTag: 0];
|
||||
[selectionBox setContentView: scrollView];
|
||||
}
|
||||
if([object isEqualToString: @"FirstResponder"])
|
||||
return nil;
|
||||
|
||||
item = [[GormObjectProxy alloc] initWithClassName: object
|
||||
frame: NSMakeRect(0,0,0,0)];
|
||||
|
||||
[self setName: nil forObject: item];
|
||||
[self attachObject: item toParent: nil];
|
||||
|
||||
// [selectionView selectCellWithTag: 0];
|
||||
[selectionBox setContentView: scrollView];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1731,7 +1670,7 @@ static NSImage *classesImage = nil;
|
|||
int i = [classesView selectedRow];
|
||||
BOOL result = NO;
|
||||
|
||||
if (i >= 0)
|
||||
if (i >= 0 && i <= ([classesView numberOfRows] - 1))
|
||||
{
|
||||
id object = [classesView itemAtRow: i];
|
||||
if([object isKindOfClass: [NSString class]])
|
||||
|
@ -3713,3 +3652,66 @@ shouldEditTableColumn: (NSTableColumn *)tableColumn
|
|||
return ([selectionBox contentView] == classesScrollView);
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation GormDocument (NSToolbarDelegate)
|
||||
|
||||
- (NSToolbarItem*)toolbar: (NSToolbar*)toolbar
|
||||
itemForItemIdentifier: (NSString*)itemIdentifier
|
||||
willBeInsertedIntoToolbar: (BOOL)flag
|
||||
{
|
||||
NSToolbarItem *toolbarItem = AUTORELEASE([[NSToolbarItem alloc]
|
||||
initWithItemIdentifier: itemIdentifier]);
|
||||
|
||||
if([itemIdentifier isEqual: @"ObjectsItem"])
|
||||
{
|
||||
[toolbarItem setLabel: @"Objects"];
|
||||
[toolbarItem setImage: objectsImage];
|
||||
[toolbarItem setTarget: self];
|
||||
[toolbarItem setAction: @selector(changeView:)];
|
||||
[toolbarItem setTag: 0];
|
||||
}
|
||||
else if([itemIdentifier isEqual: @"ImagesItem"])
|
||||
{
|
||||
[toolbarItem setLabel: @"Images"];
|
||||
[toolbarItem setImage: imagesImage];
|
||||
[toolbarItem setTarget: self];
|
||||
[toolbarItem setAction: @selector(changeView:)];
|
||||
[toolbarItem setTag: 1];
|
||||
}
|
||||
else if([itemIdentifier isEqual: @"SoundsItem"])
|
||||
{
|
||||
[toolbarItem setLabel: @"Sounds"];
|
||||
[toolbarItem setImage: soundsImage];
|
||||
[toolbarItem setTarget: self];
|
||||
[toolbarItem setAction: @selector(changeView:)];
|
||||
[toolbarItem setTag: 2];
|
||||
}
|
||||
else if([itemIdentifier isEqual: @"ClassesItem"])
|
||||
{
|
||||
[toolbarItem setLabel: @"Classes"];
|
||||
[toolbarItem setImage: classesImage];
|
||||
[toolbarItem setTarget: self];
|
||||
[toolbarItem setAction: @selector(changeView:)];
|
||||
[toolbarItem setTag: 3];
|
||||
}
|
||||
|
||||
return toolbarItem;
|
||||
}
|
||||
|
||||
- (NSArray*) toolbarAllowedItemIdentifiers: (NSToolbar*)toolbar
|
||||
{
|
||||
return [NSArray arrayWithObjects: @"ObjectsItem",
|
||||
@"ImagesItem",
|
||||
@"SoundsItem",
|
||||
@"ClassesItem", nil];
|
||||
|
||||
}
|
||||
|
||||
- (NSArray*) toolbarDefaultItemIdentifiers: (NSToolbar*)toolbar
|
||||
{
|
||||
return [NSArray arrayWithObjects: @"ObjectsItem",
|
||||
@"ImagesItem",
|
||||
@"SoundsItem",
|
||||
@"ClassesItem", nil];
|
||||
}
|
||||
@end
|
||||
|
|
|
@ -149,6 +149,7 @@ static NSColor *darkGreyBlueColor = nil;
|
|||
{
|
||||
if (!_isEditing)
|
||||
{
|
||||
// [self deselectAll: self];
|
||||
[super collapseItem: item
|
||||
collapseChildren: collapseChildren];
|
||||
}
|
||||
|
@ -158,6 +159,7 @@ static NSColor *darkGreyBlueColor = nil;
|
|||
{
|
||||
if (!_isEditing)
|
||||
{
|
||||
// [self deselectAll: self];
|
||||
[super expandItem: item
|
||||
expandChildren: expandChildren];
|
||||
}
|
||||
|
|
159
Resources/GormDocument.gorm/data.classes
Normal file
159
Resources/GormDocument.gorm/data.classes
Normal file
|
@ -0,0 +1,159 @@
|
|||
{
|
||||
FirstResponder = {
|
||||
Actions = (
|
||||
"activateContextHelpMode:",
|
||||
"alignCenter:",
|
||||
"alignJustified:",
|
||||
"alignLeft:",
|
||||
"alignRight:",
|
||||
"arrangeInFront:",
|
||||
"cancel:",
|
||||
"capitalizeWord:",
|
||||
"changeColor:",
|
||||
"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:",
|
||||
"open:",
|
||||
"openDocument:",
|
||||
"orderBack:",
|
||||
"orderFront:",
|
||||
"orderFrontColorPanel:",
|
||||
"orderFrontDataLinkPanel:",
|
||||
"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:",
|
||||
"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:"
|
||||
);
|
||||
Super = NSObject;
|
||||
};
|
||||
GSNibContainer = {
|
||||
Actions = (
|
||||
);
|
||||
Outlets = (
|
||||
);
|
||||
Super = NSObject;
|
||||
};
|
||||
GormDocument = {
|
||||
Actions = (
|
||||
);
|
||||
Outlets = (
|
||||
selectionBox,
|
||||
window
|
||||
);
|
||||
Super = GSNibContainer;
|
||||
};
|
||||
}
|
BIN
Resources/GormDocument.gorm/objects.gorm
Normal file
BIN
Resources/GormDocument.gorm/objects.gorm
Normal file
Binary file not shown.
Loading…
Reference in a new issue