/* scrollview.m Copyright (C) 1996-1999 Free Software Foundation, Inc. Author: Ovidiu Predescu Date: July 1997 This file is part of the GNUstep Testing package. This file 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 2 of the License, or (at your option) any later version. This file 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 library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA. */ #import #import #include "TestView.h" @interface MyObject : NSObject { id scrollView; NSRect viewFrame; } - (void)setScrollView:(id)aView; @end @implementation MyObject - (void)setScrollView:(id)aView { [aView retain]; [scrollView release]; scrollView = aView; viewFrame = [[scrollView documentView] frame]; } - (void)setZoomFactor:(id)sender { int tag = [[sender selectedCell] tag]; id docView = [scrollView documentView]; float scale; switch (tag) { default: case 1: scale = 1; break; case 2: scale = 1.5; break; case 3: scale = 2; break; case 4: scale = 4; break; } [docView setFrameSize:NSMakeSize (viewFrame.size.width * scale, viewFrame.size.height * scale)]; [docView setBoundsSize:viewFrame.size]; [scrollView setNeedsDisplay:YES]; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSWindow* window; NSScrollView* scrollView; TestView* view; NSButtonCell* buttonCell; NSMatrix* zoomMatrix; NSRect scrollViewRect = {{10, 10}, {250, 300}}; NSRect zoomMatrixRect = {{270, 10}, {120, 80}}; NSRect winRect = {{100, 100}, {380, 350}}; NSRect f = {{0, 0}, {500, 700}}; unsigned int style = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; #if 0 window = [[NSWindow alloc] initWithContentRect:winRect styleMask:style backing:NSBackingStoreNonretained defer:NO]; #else window = [[NSWindow alloc] init]; #endif view = [[[TestView alloc] initWithFrame:f] autorelease]; scrollView = [[NSScrollView alloc] initWithFrame:scrollViewRect]; [scrollView setHasHorizontalScroller:YES]; [scrollView setHasVerticalScroller:YES]; [scrollView setDocumentView:view]; [[window contentView] addSubview:scrollView]; [self setScrollView:scrollView]; buttonCell = [[NSButtonCell new] autorelease]; [buttonCell setButtonType:NSRadioButton]; [buttonCell setBordered:NO]; zoomMatrix = [[[NSMatrix alloc] initWithFrame:zoomMatrixRect mode:NSRadioModeMatrix prototype:buttonCell numberOfRows:4 numberOfColumns:1] autorelease]; [zoomMatrix setTarget: self]; [zoomMatrix setAction:@selector(setZoomFactor:)]; buttonCell = [zoomMatrix cellAtRow:0 column:0]; [buttonCell setTitle:@"100%"]; [buttonCell setTag:1]; buttonCell = [zoomMatrix cellAtRow:1 column:0]; [buttonCell setTitle:@"150%"]; [buttonCell setTag:2]; buttonCell = [zoomMatrix cellAtRow:2 column:0]; [buttonCell setTitle:@"200%"]; [buttonCell setTag:3]; buttonCell = [zoomMatrix cellAtRow:3 column:0]; [buttonCell setTitle:@"400%"]; [buttonCell setTag:4]; [[window contentView] addSubview:zoomMatrix]; [window setFrame:winRect display:YES]; [window center]; [window makeKeyAndOrderFront:nil]; { NSMenu *menu = [NSMenu new]; [menu addItemWithTitle: @"Quit" action: @selector(terminate:) keyEquivalent: @"q"]; [NSApp setMainMenu: menu]; } } @end int main(int argc, char **argv, char** env) { id object; NSApplication *theApp; NSAutoreleasePool* pool; #if LIB_FOUNDATION_LIBRARY [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif pool = [NSAutoreleasePool new]; theApp = [NSApplication sharedApplication]; object = [[MyObject new] autorelease]; [theApp setDelegate: object]; [theApp run]; [pool release]; return 0; }