GScheme-20060213.tar
This commit is contained in:
parent
b87ebad788
commit
10faaed845
171
#EnvWindow.m#
171
#EnvWindow.m#
|
@ -1,171 +0,0 @@
|
||||||
|
|
||||||
#import "EnvWindow.h"
|
|
||||||
#import "VScheme.h"
|
|
||||||
|
|
||||||
@implementation EnvWindow
|
|
||||||
|
|
||||||
#define WIDTH 300
|
|
||||||
#define HEIGHT 200
|
|
||||||
|
|
||||||
static int count = 0;
|
|
||||||
- initWithEnv:(Environment *)env
|
|
||||||
{
|
|
||||||
NSWindow *window;
|
|
||||||
Environment *layer; int lind;
|
|
||||||
NSRect contentRect = {{0, 0}, {WIDTH, HEIGHT}};
|
|
||||||
NSRect winRect =
|
|
||||||
{{250+(count%12)*24, 100+(count%12)*24}, {WIDTH, HEIGHT}};
|
|
||||||
NSRect textRect;
|
|
||||||
unsigned int style = NSTitledWindowMask | NSClosableWindowMask |
|
|
||||||
NSMiniaturizableWindowMask | NSResizableWindowMask;
|
|
||||||
NSString *title =
|
|
||||||
[NSString stringWithFormat:@"Scheme Env. # %d", ++count];
|
|
||||||
|
|
||||||
length = [env chainLength];
|
|
||||||
names = NSZoneMalloc([self zone], length*sizeof(id));
|
|
||||||
values = NSZoneMalloc([self zone], length*sizeof(id));
|
|
||||||
|
|
||||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
|
||||||
|
|
||||||
for(lind=length-1, layer = env; lind>=0; lind--){
|
|
||||||
NSMapTable *data = [layer data];
|
|
||||||
|
|
||||||
names[lind] = [NSMutableArray arrayWithArray:[data allKeys]];
|
|
||||||
[names[lind] sortUsingSelector:@selector(compare:)];
|
|
||||||
[names[lind] retain];
|
|
||||||
|
|
||||||
values[lind] = [NSMutableArray arrayWithCapacity:[names[lind] count]];
|
|
||||||
[values[lind] retain];
|
|
||||||
|
|
||||||
NSMapEnumerator en = [names[lind] objectEnumerator];
|
|
||||||
id key, val;
|
|
||||||
while(NSNextMapEnumeratorPair(&enumerator, (void**)&key, (void**)&val)){
|
|
||||||
id obj = NSMapGet(data, key);
|
|
||||||
[values[lind] addObject:[VScheme valToString:obj]];
|
|
||||||
}
|
|
||||||
|
|
||||||
layer = [layer parent];
|
|
||||||
}
|
|
||||||
|
|
||||||
[pool release];
|
|
||||||
|
|
||||||
[self initWithContentRect:winRect
|
|
||||||
styleMask:style
|
|
||||||
backing:NSBackingStoreRetained
|
|
||||||
defer:NO];
|
|
||||||
[self setMinSize:NSMakeSize(WIDTH, HEIGHT)];
|
|
||||||
[self setReleasedWhenClosed:YES];
|
|
||||||
|
|
||||||
|
|
||||||
NSTableColumn *nameColumn, *valueColumn;
|
|
||||||
|
|
||||||
nameColumn =
|
|
||||||
[(NSTableColumn *)[NSTableColumn alloc]
|
|
||||||
initWithIdentifier: @"Name"];
|
|
||||||
[nameColumn setEditable: NO];
|
|
||||||
[[nameColumn headerCell] setStringValue: @"Name"];
|
|
||||||
[nameColumn setMinWidth:WIDTH/2];
|
|
||||||
|
|
||||||
valueColumn =
|
|
||||||
[(NSTableColumn *)[NSTableColumn alloc]
|
|
||||||
initWithIdentifier: @"Value"];
|
|
||||||
[valueColumn setEditable: NO];
|
|
||||||
[[valueColumn headerCell] setStringValue: @"Value"];
|
|
||||||
[valueColumn setMinWidth:WIDTH/2];
|
|
||||||
|
|
||||||
table =
|
|
||||||
[[NSTableView alloc] initWithFrame:contentRect];
|
|
||||||
[table addTableColumn:nameColumn]; RELEASE(nameColumn);
|
|
||||||
[table addTableColumn:valueColumn]; RELEASE(valueColumn);
|
|
||||||
|
|
||||||
current=length-1;
|
|
||||||
[table setDataSource:self];
|
|
||||||
|
|
||||||
scrollView = [[NSScrollView alloc] initWithFrame:contentRect];
|
|
||||||
[scrollView setHasHorizontalScroller:YES];
|
|
||||||
[scrollView setHasVerticalScroller:YES];
|
|
||||||
[scrollView setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable];
|
|
||||||
[[scrollView contentView]
|
|
||||||
setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable];
|
|
||||||
[[scrollView contentView] setAutoresizesSubviews:YES];
|
|
||||||
|
|
||||||
[table setFrameSize:[scrollView contentSize]];
|
|
||||||
[scrollView setDocumentView:table];
|
|
||||||
|
|
||||||
[self setContentView:scrollView];
|
|
||||||
// RELEASE(scrollView);
|
|
||||||
|
|
||||||
[self setTitle:title];
|
|
||||||
[self display];
|
|
||||||
[self makeKeyAndOrderFront:nil];
|
|
||||||
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- up:(id)sender
|
|
||||||
{
|
|
||||||
if(!current){
|
|
||||||
NSBeep();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
current--;
|
|
||||||
[table reloadData];
|
|
||||||
}
|
|
||||||
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- down:(id)sender
|
|
||||||
{
|
|
||||||
if(current==length-1){
|
|
||||||
NSBeep();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
current++;
|
|
||||||
[table reloadData];
|
|
||||||
}
|
|
||||||
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
|
|
||||||
{
|
|
||||||
return [names[current] count];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (id)tableView:(NSTableView *)aTableView
|
|
||||||
objectValueForTableColumn:(NSTableColumn *)aTableColumn
|
|
||||||
row:(int)rowIndex
|
|
||||||
{
|
|
||||||
if(rowIndex>=[names[current] count]){
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
if([[aTableColumn identifier] isEqualToString:@"Name"]){
|
|
||||||
return [names[current] objectAtIndex:rowIndex];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return [values[current] objectAtIndex:rowIndex];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)dealloc
|
|
||||||
{
|
|
||||||
int ind;
|
|
||||||
|
|
||||||
[table release];
|
|
||||||
[scrollView release];
|
|
||||||
|
|
||||||
for(ind=0; ind<length; ind++){
|
|
||||||
// NSLog(@"%@ %d %d\n", self, ind, [tables[ind] retainCount]);
|
|
||||||
[names[ind] release];
|
|
||||||
[values[ind] release];
|
|
||||||
}
|
|
||||||
|
|
||||||
NSZoneFree([self zone], names);
|
|
||||||
NSZoneFree([self zone], values);
|
|
||||||
|
|
||||||
[super dealloc];
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
|
|
||||||
GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_SYSTEM_ROOT)
|
|
||||||
|
|
||||||
GNUSTEP_MAKEFILES = $(GNUSTEP_SYSTEM_ROOT)/Makefiles
|
|
||||||
|
|
||||||
include $(GNUSTEP_MAKEFILES)/common.make
|
include $(GNUSTEP_MAKEFILES)/common.make
|
||||||
|
|
||||||
# The application to be compiled
|
# The application to be compiled
|
||||||
|
|
Loading…
Reference in New Issue