This is macpaintController.m in view mode; [Download] [Up]
/***********************************************************************\ Controller class for Convert MacPaint which converts MacPaint files to PostScript files. Copyright (C) 1993 David John Burrowes This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. The author, David John Burrowes, can be reached at: davidjohn@kira.net.netcom.com David John Burrowes 1926 Ivy #10 San Mateo, CA 94403-1367 \***********************************************************************/ #import "macpaintController.h" #import <stdio.h> #import <libc.h> // for mkdir #import <string.h> // for strrchr #include <sys/vnode.h> #import "PSFile.h" #import "macpaintConverter.h" #import <appkit/Matrix.h> // For matrix stuff for preferences setting #import <appkit/Cell.h> // for menu command work @implementation macpaintController ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Routine: init // Parameters: none // Returns: self // Stores: none // Description: // This overrides the defalut init method. The purpose of this overriding // is to give ourselves a chance to set up some internal variables which are used // later on // Bugs: ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - init { static NXDefaultsVector theDefaults = { {"DoPacking", "YES"}, {NULL, NULL} }; [super init]; ConversionString = "Converting MacPaint file"; SourcePrompt = "Paint file:"; DestPrompt = "eps file:"; DestExtension = ".eps"; DefaultsOwner = "MacPaint_to_eps"; NXRegisterDefaults(DefaultsOwner, theDefaults); PackTheImage = [self GetBoolPref: "DoPacking"]; converterInst = [[macpaintConverter alloc] init]; return self; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Routine: displayPreferences: // Parameters: the object that called us // Description: // This is called whenever we need to bring the preferences panel onto the screen. // Using the value in our internal PackTheImage variable, then we set the buttons // in the preference panel to reflect these, and then we show the panel. // Bugs: // Well, strictly speaking, this is only needed the first time this is called, // because thereafter the buttons maintain their own highlite properly. // Oh well. This whole scheme is a bit awkward, given my trivial use, and the fact // that it really seems to be designed for bigger things. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -displayPreferences: sender { // // Get the default preference values, and compare judge what buttons to // highlight for the user. // if (PackTheImage == YES) [PackingButton selectCellWithTag: 1]; else [PackingButton selectCellWithTag: 0]; [prefPanel makeKeyAndOrderFront:self]; return self; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Routine: ChangePacking: // Parameters: the object that called us // Description: // This method gets called whenever the user clicks on a button to change // the setting of whether the output should be packed or not. If the button they // clicked on had a key of '1', then we will pack the image, otherwise we don't. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -ChangePacking: target { if ( [[target selectedCell] tag] == 1) PackTheImage = YES; else PackTheImage = NO; [self SetBoolPref: "DoPacking" To: PackTheImage]; return self; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Routine: openDestFile // Parameters: the path to the file to be opened // Returns: the opened file object // Stores: none // Description: // This is used to open the destination file object (a PS file). This is needed so // that our superclass, when it is doing some of the work that we don' want to, // will open an instance of the right class. // Bugs: ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - openDestFile: (roCString) theFile { Instance fileInstance; [self ResetResults]; fileInstance = [[PSFile alloc] initAndUse: theFile]; if ([fileInstance GetErrorCode] == ERR_OK) [fileInstance CreateAndOpenFor: FILE_WRITE]; if ([fileInstance GetErrorCode] != ERR_OK) { [self StoreErrorCode: ERR_OPENFAILED AndText: "We failed to open the file"]; [fileInstance free]; fileInstance = NullInstance; } return fileInstance; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Routine: ConvertFrom:To: // Parameters: The file to be converted from, and the file to be converted to // Returns: self // Stores: error code // Description: // This merely acts (like the rest of this object) as a kinda minimal interface // shell. This merely creates the converting object, asks it to convert the stuff, // stores whether there were any results, and returns. // Bugs ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ConvertFrom: sourceFile To: destinationFile { CString tempString; [super ConvertFrom: sourceFile To: destinationFile]; [ConvertCommand setEnabled: NO]; [converterInst SetPacking: PackTheImage AndPath: AppHome]; [converterInst Convert: sourceFile To: destinationFile]; [ConvertCommand setEnabled: YES]; // // 93.01.31 djb YOW!!! I was not storing the error code here!!! // if ( [converterInst GetErrorCode] < ERR_OK) { tempString = [converterInst GetErrorText]; [self StoreErrorCode: [converterInst GetErrorCode] AndText: tempString]; FreeCString(tempString); } else [self StoreErrorCode: ERR_OK AndText: "Converted Successfully" ]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.