File: nsbrowsercell.m

package info (click to toggle)
gnustep-examples 1%3A1.4.0%2Bgit20210703-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 3,164 kB
  • sloc: objc: 17,202; makefile: 56
file content (124 lines) | stat: -rw-r--r-- 3,358 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
   nsbrowsercell.m
   
   Copyright (C) 1996 Free Software Foundation, Inc.
   
   Author: Scott Christley <scottc@net-community.com>
   Date: October 1997
   Author:  Felipe A. Rodriguez <far@ix.netcom.com>
   Date: July 1998
   
   This file is part of the GNUstep GUI X/RAW Library.
   
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.
   
   This library 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
   Library General Public License for more details.
   
   You should have received a copy of the GNU Library General Public
   License along with this library; if not, write to the Free
   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA.
*/

#import <Foundation/NSAutoreleasePool.h>
#import <AppKit/AppKit.h>

@interface MyObject : NSObject
{
  NSMatrix* matrix;
}
@end

@implementation MyObject
- (void)setMatrix:(NSMatrix*)anObject
{
  matrix = anObject;
}

- (void)setMatrixMode:sender
{
  [matrix setMode:[[sender selectedCell] tag]];
}

- (void)setSelectionByRect:sender
{
  [matrix setSelectionByRect:[sender state]];
}
@end

int
main(int argc, char **argv, char** env)
{
NSApplication *theApp;
NSWindow *window;
NSRect winRect = {{100, 100}, {600, 600}};
NSRect scrollViewRect = {{20, 115}, {150, 335}};
NSRect matrixRect = {{0, 0}, {100, 550}};
id pool = [NSAutoreleasePool new];
NSMatrix* matrix;
NSBrowserCell* browserCell;
NSScrollView* scrollView;
MyObject* handler = [[MyObject new] autorelease];
NSSize cs, ms;
NSRect mr;

#if LIB_FOUNDATION_LIBRARY
	[NSProcessInfo initializeWithArguments:argv count:argc environment:env];
#endif

	theApp = [NSApplication sharedApplication];

//#if 1
//  window = [[NSWindow alloc]
//	      initWithContentRect:winRect
//	      styleMask:NSTitledWindowMask
//	      backing:NSBackingStoreNonretained
//	      defer:NO];
//#else
	window = [[NSWindow alloc] init];
//#endif

	browserCell = [[NSBrowserCell new] autorelease];
	[browserCell setStringValue:@"aTitle"];				// for NS compatibility

	matrix = [[[NSMatrix alloc] initWithFrame:matrixRect
							  	mode:NSRadioModeMatrix
//		mode:NSListModeMatrix	// selectedRow/selectedColumn get set to -1 
								// during matrix init. the program then crashes
								// when a cell is selected FAR 6/19/98 (fix me)
								prototype:browserCell
								numberOfRows:10
								numberOfColumns:1]
								autorelease];

//  [matrix _test];

	scrollView = [[NSScrollView alloc] initWithFrame:scrollViewRect];
	[scrollView setHasHorizontalScroller:NO];
	[scrollView setHasVerticalScroller:YES];
	[scrollView setBorderType:NSBezelBorder];			// for NS compatibility

	cs = [scrollView contentSize];
	ms = [matrix cellSize];
	ms.width = cs.width;
	[matrix setCellSize: ms];

	[matrix sizeToCells];								// for NS compatibility
	[scrollView setDocumentView:matrix];
	
	[[window contentView] addSubview:scrollView];
	
	[window setTitle:@"NSMatrix with NSBrowserCells"];
	[window setFrame:winRect display:YES];
	[window orderFrontRegardless];
	
	[theApp run];
	[pool release];

	return 0;
}