ftp.nice.ch/pub/next/tools/frontends/Ping.2.1.NIHS.bs.tar.gz#/Ping.2.1.NIHS.bs/Source/Pinger.m

This is Pinger.m in view mode; [Download] [Up]

/* Generated by Interface Builder */

#import "Pinger.h"
#import "Subprocess.h"
#import <nikit/NIOpenPanel.h>
#import <appkit/TextField.h>
#import <soundkit/Sound.h>
#import <strings.h>

id theSubprocess;
id theSound;
id thePanel;


@implementation Pinger

- init
{
    pinging=NO;
    theSound=[Sound findSoundFor:"Sonar"];
    thePanel=[NIDomainPanel new];
    return self;
}

- beginPing:sender
{
    char buf[120],host[110];
    
    if (pinging) [self stopPing:self];
    [hostForm selectText:self];
    sprintf(buf,"%s//ping ",[pingPath stringValue]);
    strcpy(host,[hostForm stringValue]);
    if (host[0]=='/') host[0]=' ';
    strcat(buf,host);
    theSubprocess=[[Subprocess alloc] init:buf
										withDelegate:self
										andPtySupport:NO andStdErr:YES];
    pinging=YES;
    return self;
}

- chooseHost:sender
{
	id	thePanel = [NIOpenPanel new];
	[thePanel setListTitle: "Machine Names"];
	[thePanel setPanelTitle: "Machine Name Picker" ];

	if ([thePanel runModal] == NX_OKTAG)
	{
		const char *fullDomain = [thePanel directory];
		if (fullDomain && *fullDomain){
			[hostForm setStringValue: (char *)fullDomain];
			//[self changeHostName:self];
			//optional, add this method if you want to trigger the change.
		}
	}
	return self;
}

- stopPing:sender
{
    if (!pinging) return self;
    [theSubprocess terminate:sender];
    return self;
}

- subprocessOutput:(char *)buffer
{
    if (index(buffer,'_')!=0)
       [theSound play];
    return self;
}

- subprocessDone
{
    pinging=NO;
    return self;
}

- subprocessError:(const char *)errorString
{
    [self stopPing:self];
    return self;
}

- appWillTerminate:sender
{
    [theSubprocess terminate:sender];
    return self;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.