This is Document.m in view mode; [Download] [Up]
/* * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved. * * (b) If this Sample Code is distributed as part of the Display PostScript * System Software Development Kit from Adobe Systems Incorporated, * then this copy is designated as Development Software and its use is * subject to the terms of the License Agreement attached to such Kit. * * (c) If this Sample Code is distributed independently, then the following * terms apply: * * (d) This file may be freely copied and redistributed as long as: * 1) Parts (a), (d), (e) and (f) continue to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * (e) PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED. * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY) * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT * OF THIRD PARTY RIGHTS. */ /* * Document.m * * Portions of the source code in this file are based on source code * from the Draw example application provided by NeXT. * * The Document class serves to keep track of the global information * concerning a particular file. It sets up the window and the view. * * Version: 2.0 * Author: Ken Fromm * History: * 03-07-91 Added this comment. */ #import "Document.h" #import "ImportApp.h" #import "DrawingView.h" #import "SaveAsPanel.h" #import <appkit/Matrix.h> #import <appkit/OpenPanel.h> #import <appkit/nextstd.h> #import <appkit/publicWraps.h> #import <objc/hashtable.h> #import <string.h> const NXRect DefaultWindowRect = {300.0, 110.0, 575.0, 660.0}; @implementation Document /* * Creates a new, empty, document. */ + new { self = [super new]; [self createWindow]; [self setWindow]; return self; } - setWindow { [windowId makeFirstResponder:[windowId contentView]]; [windowId setDelegate:self]; [windowId setTitle:"Epsf Introduction"]; [windowId display]; [windowId makeKeyAndOrderFront:self]; return self; } /* * Create the drawing window and place a scrollview as the content view. * A DrawingView instance is placed as the DocView of the ScrollView. */ - createWindow { id drawingView; drawingView = [DrawingView newFrame:&DefaultWindowRect]; windowId = [Window newContent:&DefaultWindowRect style:NX_TITLEDSTYLE backing:NX_BUFFERED buttonMask:0 defer:NO]; [[windowId setContentView:drawingView] free]; return self; } - window { return windowId; } - (char const *) filename { return [[SaveAsPanel new] filename]; } /* * Bring up the import (open) panel to obtain the file and then pass * to the drawing view. */ - import:sender { id openpanel; static const char *const filetype[4] = {"ps", "eps", "tiff", NULL}; openpanel = [OpenPanel new]; if ([openpanel runModalForTypes:filetype]) [[windowId contentView] importFile:[openpanel filename]]; return self; } - saveTo:sender { id savepanel; NXStream *stream; savepanel = [[SaveAsPanel new] setSaveTo]; if ([savepanel runModal]) { stream = NXOpenMemory(NULL, 0, NX_WRITEONLY); if (stream) { [[windowId contentView] writePSToStream:stream]; NXSaveToFile(stream, [savepanel filename]); NXCloseMemory(stream, NX_FREEBUFFER); } else Notify("Save Error", "Cannot open a stream to the file."); } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.