home *** CD-ROM | disk | FTP | other *** search
- #import <appkit/appkit.h>
-
- // minimal program to demonstrate
- // a text object and scrolling
-
- main()
- {
- id NXApp = [Application new];
- id theWindow;
- id theMenu;
- id theText;
- id theScrollView;
- NXRect theRect;
- NXSize theSize;
- id otherWindow, otherText;
- NXSize otherSize;
-
- // create the window
- NXSetRect(&theRect, 200.0, 300.0, 350.0, 150.0);
- theWindow = [ [Window alloc]
- initContent:&theRect
- style: NX_TITLEDSTYLE
- backing:NX_BUFFERED
- buttonMask:NX_MINIATURIZEBUTTONMASK
- defer:YES];
- [theWindow setBackgroundGray:NX_WHITE];
-
- // create a scrollview
- NXSetRect(&theRect, 0.0, 0.0, 350.0, 150.0);
- theScrollView = [ [ScrollView alloc]
- initFrame:&theRect];
- [theScrollView
- setVertScrollerRequired:YES];
- [theScrollView
- setHorizScrollerRequired:NO];
- [ [theWindow contentView]
- addSubview :theScrollView];
-
- // get the size of the content view
- [theScrollView getContentSize:&theSize];
-
- // create another text object
- NXSetRect(&theRect, 0.0, 0.0,
- theSize.width, theSize.height);
- theText = [ [Text alloc] initFrame:&theRect
- text:"Text in scrollview"
- alignment:NX_LEFTALIGNED];
- [theText setOpaque:YES];
- // notify superview when frame
- // rectangle changes -- allows scrollview
- // to update the scrollers
- [theText notifyAncestorWhenFrameChanged:YES];
- [theText setVertResizable:YES];
- [theText setHorizResizable:NO];
- // select all the text
-
- // create min and max size of text
- theSize.width = 0.0;
- [theText setMinSize:&theSize];
- theSize.height = 1000000;
- [theText setMaxSize:&theSize];
-
- // set the text as docview of scrollview
- [theScrollView setDocView:theText];
-
- // create other window
- NXSetRect(&theRect, 100.0, 100.0, 350.0, 150.0);
- otherWindow = [ [Window alloc]
- initContent:&theRect
- style: NX_TITLEDSTYLE
- backing:NX_BUFFERED
- buttonMask:NX_MINIATURIZEBUTTONMASK
- defer:YES];
- [theWindow setBackgroundGray:NX_WHITE];
-
- // create other text
- NXSetRect(&theRect, 0.0, 0.0, 350.0, 150.0);
- otherText = [ [Text alloc]
- initFrame:&theRect
- text:"Text without scrollview"
- alignment:NX_LEFTALIGNED];
- [otherText setOpaque:YES];
- [ [otherWindow contentView]
- addSubview:otherText];
-
- // create min and max size of text
- otherSize.width = 0.0;
- [otherText setMinSize:&otherSize];
- otherSize.height = 1000000;
- [theText setMaxSize:&otherSize];
-
- // create the menu
- theMenu = [ [Menu alloc]
- initTitle: [NXApp appName] ];
- [theMenu addItem:"Quit"
- action:@selector(terminate:)
- keyEquivalent:'q'];
- [theMenu sizeToFit];
- [NXApp setMainMenu:theMenu];
-
- // display both windows
- [theWindow makeKeyAndOrderFront:nil];
- // set the selection in the text
- [theText setSel:0 :0];
- [otherWindow orderFront:nil];
-
- // Enter event loop
- [NXApp run];
- }
-