
/* Generated by Interface Builder */
#import <appkit/graphics.h>
#import <appkit/publicWraps.h>
#import <appkit/Application.h>
#import <appkit/Listener.h>
#import <appkit/Speaker.h>
#import <appkit/Window.h>
#import <appkit/TextField.h>
#import <appkit/Panel.h>
#import "UtilityObject.h"

@implementation UtilityObject

-appDidInit:sender
{
	unsigned int wn;
	id speaker = [NXApp appSpeaker];
	
        NXConvertWinNumToGlobal([[NXApp appIcon] windowNum], &wn);
	[speaker setSendPort:
	 		NXPortFromName(NX_WORKSPACEREQUEST, NULL)];
        [speaker registerWindow:wn 
		toPort:[[NXApp appListener] listenPort]];
	
        return self;
}

- (int)iconEntered:(int)windowNum at:(double)x :(double)y
    iconWindow:(int)iconWindowNum 
    iconX:(double)iconX iconY:(double)iconY
    iconWidth:(double)iconWidth 
    iconHeight:(double)iconHeight
    pathList:(char *)pathList
{
    if (!iconPathList || strcmp(iconPathList, pathList)) {
        NX_FREE(iconPathList);
        NX_MALLOC(iconPathList, char, strlen(pathList)+1);
        strcpy(iconPathList, pathList);
    }
        
    return 0;
}

- (int)iconReleasedAt:(double)x :(double)y ok:(int *)flag
{
    char *file;
    char command[128];
    int which;
    
    NX_DURING
        file = iconPathList;
        [NXApp activateSelf:YES];
	if (file[strlen(file)-1] == 'Z')
	{
	   if (NXRunAlertPanel(file, 
	   	"File is of type .Z : Uncompresss?",
	   	"Uncompress", "Cancel",NULL) != 0)
		{
		    sprintf(command,"uncompress %s",file);
		    system(command);
		}
        }
	else if ((strlen(file) > 3) &&
		 (file[strlen(file)-1] == 'r') &&
 		 (file[strlen(file)-2] == 'a') &&
 		 (file[strlen(file)-3] == 't'))
	{
	   if (NXRunAlertPanel(file, 
	   	"File is of type .tar : Untar?",
	   	"Untar", "Cancel",NULL) != 0)
		{
		    sprintf(command,"tar xf %s",file);
		    system(command);
		}
        }
	else if ((which = NXRunAlertPanel(file, 
			"Do you wish to Print?",
	   		"Print", "Cancel", "Compress")) != 0)
	{
	     if (which == -1)
	     {
	     	 sprintf(command, "compress %s",file);
		 system(command);
	     }
	     else 
	     if (which == 1)
	     {
	         sprintf(command, "lpr %s", file);
		 system(command);
	     }
	}
    NX_HANDLER
    NX_ENDHANDLER
    *flag = YES;

    return 0;
}

@end
