This is AskOperator.m in view mode; [Download] [Up]
// -------------------------------------------------------------------------------------
// AskOperator
// -------------------------------------------------------------------------------------
// Permission is granted to freely redistribute this source code, and to use fragments
// of this code in your own applications if you find them to be useful. This class,
// along with the source code, come with no warranty of any kind, and the user assumes
// all responsibility for its use.
// -------------------------------------------------------------------------------------
#import <appkit/appkit.h>
#import <libc.h>
#import <stdlib.h>
#import <c.h>
#import <sys/param.h>
#import <sys/types.h>
#import <sys/time.h>
#import "AskOperator.h"
#import "RemoteCommand.h"
// -------------------------------------------------------------------------------------
@implementation AskOperator
// -------------------------------------------------------------------------------------
// initialization
// -------------------------------------------------------------------------------------
+ new
{
static id _self = (id)nil;
if (!_self) _self = [[self alloc] init];
return _self;
}
- init
{
[super init];
[NXApp loadNibSection:"AskOperator.nib" owner:self];
return self;
}
// -------------------------------------------------------------------------------------
// view control
// -------------------------------------------------------------------------------------
- hideView:aView
{
if ([aView isKindOf:[Button class]]) {
[aView setEnabled:NO];
[aView setTransparent:YES];
[aView setTitle:""];
} else
if ([aView isKindOf:[TextField class]]) {
[aView setStringValue:""];
[aView setEnabled:NO];
[aView setBezeled:NO];
[aView setBackgroundGray:NX_LTGRAY];
[aView setBackgroundTransparent:YES];
[[aView superview] addSubview:self:NX_BELOW relativeTo:(id)nil];
} else
printf("hideView: unsupported View type %s\n", [aView name]);
return self;
}
- unhideView:aView title:(const char*)title
{
if ([aView isKindOf:[Button class]]) {
[aView setTitle:title];
[aView setEnabled:YES];
[aView setTransparent:NO];
} else
if ([aView isKindOf:[TextField class]]) {
[aView setBackgroundTransparent:NO];
[aView setStringValue:title];
[aView setEnabled:YES];
[aView setBezeled:YES];
[aView setBackgroundGray:NX_WHITE];
[[aView superview] addSubview:self:NX_ABOVE relativeTo:(id)nil];
} else
printf("unhideView: unsupported View type %s\n", [aView name]);
return self;
}
- fillView:aView title:(const char*)title dontHide:(BOOL)dontHide
{
if ((title && *title) || dontHide) [self unhideView:aView title:title];
else [self hideView:aView];
return self;
}
// -------------------------------------------------------------------------------------
// message panels
// -------------------------------------------------------------------------------------
- buildAskPanel:(askOperator_t*)ao
{
char *dftButton1 = (ao->button[0] && *ao->button[0])? ao->button[0]: "Continue";
[askPanel setTitle:ao->title];
[askMessage setStringValue:ao->message];
[self fillView:askText title:ao->text dontHide:(ao->type == 1)];
[self fillView:askButton1 title:dftButton1 dontHide:NO ];
[self fillView:askButton2 title:ao->button[1] dontHide:NO ];
[self fillView:askButton3 title:ao->button[2] dontHide:NO ];
[self fillView:askButton4 title:ao->button[3] dontHide:NO ];
return self;
}
+ (const char*)showAskPanel:(askOperator_t*)ao
{
self = [self new];
[self buildAskPanel:ao];
textResponse = (const char*)nil;
buttonResponse = (const char*)nil;
[askPanel center];
[askPanel display];
[askPanel makeKeyAndOrderFront:(id)nil];
[NXApp runModalFor:askPanel];
[askPanel orderOut:(id)nil];
return (ao->type == 0)? buttonResponse : textResponse;
}
// -------------------------------------------------------------------------------------
// operator responses
// -------------------------------------------------------------------------------------
- askButtonResponse:sender
{
buttonResponse = [sender title];
textResponse = [askText isEnabled]? [askText stringValue] : (const char*)nil;
[NXApp abortModal];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.