This is COWSExampleLibrary.m in view mode; [Download] [Up]
/*
Copyright (C) 1994 Sean Luke
COWSExampleLibrary.m
Version 1.0
Sean Luke
*/
#import "COWSExampleLibrary.h"
@implementation COWSExampleLibrary
- loadLibrary:sender
{
id returnval=[super loadLibrary:sender];
if (![sender conformsTo:@protocol(LibraryControl)])
{
printf ("StandardLibrary error: Interpreter cannot accept Library Control protocol!\n");
return NULL;
}
[sender addLibraryFunction:"scroll-value"
selector:@selector(scrollValue:)
target:self];
[sender addLibraryFunction:"set-scroll-value"
selector:@selector(setScrollValue:)
target:self];
[sender addLibraryFunction:"check-value"
selector:@selector(checkValue:)
target:self];
[sender addLibraryFunction:"set-check-value"
selector:@selector(setCheckValue:)
target:self];
[sender addLibraryFunction:"radio-value"
selector:@selector(radioValue:)
target:self];
[sender addLibraryFunction:"select-radio-value"
selector:@selector(setRadioValue:)
target:self];
[sender addLibraryFunction:"press-button"
selector:@selector(pressButton:)
target:self];
[sender addLibraryFunction:"set-string-value"
selector:@selector(setStringValue:)
target:self];
[sender addLibraryFunction:"string-value"
selector:@selector(stringValue:)
target:self];
[sender addLibraryFunction:"set-window-position"
selector:@selector(setWindowPosition:)
target:self];
[sender addLibraryFunction:"window-x-position"
selector:@selector(windowXPosition:)
target:self];
[sender addLibraryFunction:"window-y-position"
selector:@selector(windowYPosition:)
target:self];
[sender addLibraryFunction:"window-title"
selector:@selector(windowTitle:)
target:self];
[sender addLibraryFunction:"set-window-title"
selector:@selector(setWindowTitle:)
target:self];
[sender addLibraryFunction:"ping"
selector:@selector(ping:)
target:self];
return returnval;
}
- scrollValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
char buf[COWSLARGENUMBER];
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
sprintf(buf,"%f",
[[scroll cellAt:0:[item intVal]] floatValue]);
[item free];
[returnval setString:buf];
return returnval;
}
- setScrollValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item,value;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
if ([arg_list top]==NULL) // just one arg
{
[returnval setBooleanVal:NO];
[item free];
return returnval;
}
value=[arg_list pop];
[[scroll cellAt:0:[item intVal]]
setFloatValue:[value floatVal]];
[item free];
[value free];
[returnval setBooleanVal:YES];
return returnval;
}
- checkValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
BOOL x;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
x=(BOOL)[[check cellAt:[item intVal]:0] state];
[item free];
[returnval setBooleanVal:(x ? YES : NO)];
return returnval;
}
- setCheckValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item,value;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
if ([arg_list top]==NULL) // just one arg
{
[returnval setBooleanVal:NO];
[item free];
return returnval;
}
value=[arg_list pop];
[[check cellAt:[item intVal]:0]
setIntValue:[value booleanVal] ? 1 : 0];
[item free];
[value free];
[returnval setBooleanVal:YES];
return returnval;
}
- radioValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
BOOL x;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
x=(BOOL)[[radio cellAt:[item intVal]:0] floatValue];
[item free];
[returnval setBooleanVal:(x ? YES : NO)];
return returnval;
}
- setRadioValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
[radio selectCellAt:[item intVal]:0];
[item free];
[returnval setBooleanVal:YES];
return returnval;
}
- pressButton:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
[[button cellAt:[item intVal]:0] performClick:self];
[item free];
[returnval setBooleanVal:YES];
return returnval;
}
- setStringValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item,value;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
if ([arg_list top]==NULL) // just one arg
{
[returnval setBooleanVal:NO];
[item free];
return returnval;
}
value=[arg_list pop];
[[field cellAt:[item intVal]:0]
setStringValue:[value string]];
[item free];
[value free];
[returnval setBooleanVal:YES];
return returnval;
}
- stringValue:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
[returnval setString:
[[field cellAt:[item intVal]:0] stringValue]];
[item free];
return returnval;
}
- setWindowPosition:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item,value;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
if ([arg_list top]==NULL) // just one arg
{
[returnval setBooleanVal:NO];
[item free];
return returnval;
}
value=[arg_list pop];
[window moveTo:[item floatVal]:[value floatVal]];
[item free];
[value free];
[returnval setBooleanVal:YES];
return returnval;
}
- windowXPosition:arg_list
{
id returnval=[[COWSStringNode alloc] init];
char buf[COWSLARGENUMBER];
NXRect rect;
[window getFrame:&rect];
sprintf(buf,"%f",rect.origin.x);
[returnval setString:buf];
return returnval;
}
- windowYPosition:arg_list
{
id returnval=[[COWSStringNode alloc] init];
char buf[COWSLARGENUMBER];
NXRect rect;
[window getFrame:&rect];
sprintf(buf,"%f",rect.origin.y);
[returnval setString:buf];
return returnval;
}
- windowTitle:arg_list
{
id returnval=[[COWSStringNode alloc] init];
[returnval setString:[window title]];
return returnval;
}
- setWindowTitle:arg_list
{
id returnval=[[COWSStringNode alloc] init];
id item;
if ([arg_list top]==NULL) // no args
{
[returnval setBooleanVal:NO];
return returnval;
}
item=[arg_list pop];
[window setTitle:[item string]];
[item free];
[returnval setBooleanVal:YES];
return returnval;
}
- ping:arg_list
{
id returnval=[[COWSStringNode alloc] init];
NXPing();
[returnval setBooleanVal:YES];
return returnval;
}
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.