1/*
2 Project: Graphos
3 GRTools.m
4
5 Copyright (C) 2000-2008 GNUstep Application Project
6
7 Author: Enrico Sersale (original GDraw implementation)
8 Author: Ing. Riccardo Mottola
9
10 This application is free software; you can redistribute it and/or
11 modify it under the terms of the GNU General Public
12 License as published by the Free Software Foundation; either
13 version 2 of the License, or (at your option) any later version.
14
15 This application is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 Library General Public License for more details.
19
20 You should have received a copy of the GNU General Public
21 License along with this library; if not, write to the Free
22 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
23 */
24
25
26#import "GRTools.h"
27#import "Graphos.h"
28
29@implementation GRToolButton
30
31- (id)initWithFrame:(NSRect)rect toolType:(int)type
32{
33    self = [super initWithFrame: rect];
34    if(self) {
35        tooltype = type;
36    }
37    return self;
38}
39
40- (int)tooltype
41{
42    return tooltype;
43}
44
45@end
46
47@implementation GRToolsView
48
49- (id)initWithFrame:(NSRect)rect
50{
51    self = [super initWithFrame: rect];
52    if(self)
53    {
54        buttons = [[NSMutableArray alloc] initWithCapacity: 14];
55
56        barrowButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 120, 25, 20)
57                                                toolType: blackarrowtool];
58        [barrowButt setButtonType: NSOnOffButton];
59        [barrowButt setImage: [NSImage imageNamed: @"blackarrow.tiff"]];
60        [barrowButt setImagePosition: NSImageOnly];
61        [barrowButt setTarget:self];
62        [barrowButt setAction:@selector(buttonPressed:)];
63        [self addSubview: barrowButt];
64        [buttons addObject: barrowButt];
65        [barrowButt release];
66
67        warrowButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 120, 25, 20)
68                                                toolType: whitearrowtool];
69        [warrowButt setButtonType: NSOnOffButton];
70        [warrowButt setImage: [NSImage imageNamed: @"whitearrow.tiff"]];
71        [warrowButt setImagePosition: NSImageOnly];
72        [warrowButt setTarget:self];
73        [warrowButt setAction:@selector(buttonPressed:)];
74        [self addSubview: warrowButt];
75        [buttons addObject: warrowButt];
76        [warrowButt release];
77
78        bezierButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 100, 25, 20)
79                                                toolType: beziertool];
80        [bezierButt setButtonType: NSOnOffButton];
81        [bezierButt setImage: [NSImage imageNamed: @"bezier.tiff"]];
82        [bezierButt setImagePosition: NSImageOnly];
83        [bezierButt setTarget:self];
84        [bezierButt setAction:@selector(buttonPressed:)];
85        [self addSubview: bezierButt];
86        [buttons addObject: bezierButt];
87        [bezierButt release];
88
89        textButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 100, 25, 20)
90                                              toolType: texttool];
91        [textButt setButtonType: NSOnOffButton];
92        [textButt setImage: [NSImage imageNamed: @"text.tiff"]];
93        [textButt setImagePosition: NSImageOnly];
94        [textButt setTarget:self];
95        [textButt setAction:@selector(buttonPressed:)];
96        [self addSubview: textButt];
97        [buttons addObject: textButt];
98        [textButt release];
99
100        circleButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 80, 25, 20)
101                                                toolType: circletool];
102        [circleButt setButtonType: NSOnOffButton];
103        [circleButt setImage: [NSImage imageNamed: @"circle.tiff"]];
104        [circleButt setImagePosition: NSImageOnly];
105        [circleButt setTarget:self];
106        [circleButt setAction:@selector(buttonPressed:)];
107        [self addSubview: circleButt];
108        [buttons addObject: circleButt];
109        [circleButt release];
110
111        rectangleButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 80, 25, 20)
112                                                   toolType: rectangletool];
113        [rectangleButt setButtonType: NSOnOffButton];
114        [rectangleButt setImage: [NSImage imageNamed: @"rectangle.tiff"]];
115        [rectangleButt setImagePosition: NSImageOnly];
116        [rectangleButt setTarget:self];
117        [rectangleButt setAction:@selector(buttonPressed:)];
118        [self addSubview: rectangleButt];
119        [buttons addObject: rectangleButt];
120        [rectangleButt release];
121
122        paintButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 60, 25, 20)
123                                               toolType: painttool];
124        [paintButt setButtonType: NSOnOffButton];
125        [paintButt setImage: [NSImage imageNamed: @"paint.tiff"]];
126        [paintButt setImagePosition: NSImageOnly];
127        [paintButt setTarget:self];
128        [paintButt setAction:@selector(buttonPressed:)];
129        [self addSubview: paintButt];
130        [buttons addObject: paintButt];
131        [paintButt release];
132        [paintButt setEnabled:NO];
133
134
135        pencilButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 60, 25, 20)
136                                                toolType: penciltool];
137        [pencilButt setButtonType: NSOnOffButton];
138        [pencilButt setImage: [NSImage imageNamed: @"pencil.tiff"]];
139        [pencilButt setImagePosition: NSImageOnly];
140        [pencilButt setTarget:self];
141        [pencilButt setAction:@selector(buttonPressed:)];
142        [self addSubview: pencilButt];
143        [buttons addObject: pencilButt];
144        [pencilButt release];
145        [pencilButt setEnabled:NO];
146
147        rotateButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 40, 25, 20)
148                                                toolType: rotatetool];
149        [rotateButt setButtonType: NSOnOffButton];
150        [rotateButt setImage: [NSImage imageNamed: @"rotate.tiff"]];
151        [rotateButt setImagePosition: NSImageOnly];
152        [rotateButt setTarget:self];
153        [rotateButt setAction:@selector(buttonPressed:)];
154        [self addSubview: rotateButt];
155        [buttons addObject: rotateButt];
156        [rotateButt release];
157        [rotateButt setEnabled:NO];
158
159        reduceButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 40, 25, 20)
160                                                toolType: reducetool];
161        [reduceButt setButtonType: NSOnOffButton];
162        [reduceButt setImage: [NSImage imageNamed: @"reduce.tiff"]];
163        [reduceButt setImagePosition: NSImageOnly];
164        [reduceButt setTarget:self];
165        [reduceButt setAction:@selector(buttonPressed:)];
166        [self addSubview: reduceButt];
167        [buttons addObject: reduceButt];
168        [reduceButt release];
169        [reduceButt setEnabled:NO];
170
171        reflectButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 20, 25, 20)
172                                                 toolType: reflecttool];
173        [reflectButt setButtonType: NSOnOffButton];
174        [reflectButt setImage: [NSImage imageNamed: @"reflect.tiff"]];
175        [reflectButt setImagePosition: NSImageOnly];
176        [reflectButt setTarget:self];
177        [reflectButt setAction:@selector(buttonPressed:)];
178        [self addSubview: reflectButt];
179        [buttons addObject: reflectButt];
180        [reflectButt release];
181        [reflectButt setEnabled:NO];
182
183        scissorsButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 20, 25, 20)
184                                                  toolType: scissorstool];
185        [scissorsButt setButtonType: NSOnOffButton];
186        [scissorsButt setImage: [NSImage imageNamed: @"shissors.tiff"]];
187        [scissorsButt setImagePosition: NSImageOnly];
188        [scissorsButt setTarget:self];
189        [scissorsButt setAction:@selector(buttonPressed:)];
190        [self addSubview: scissorsButt];
191        [buttons addObject: scissorsButt];
192        [scissorsButt release];
193        //[scissorsButt setEnabled:NO];
194
195        handButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(0, 0, 25, 20)
196                                              toolType: handtool];
197        [handButt setButtonType: NSOnOffButton];
198        [handButt setImage: [NSImage imageNamed: @"hand.tiff"]];
199        [handButt setImagePosition: NSImageOnly];
200        [handButt setTarget:self];
201        [handButt setAction:@selector(buttonPressed:)];
202        [self addSubview: handButt];
203        [buttons addObject: handButt];
204        [handButt release];
205        [handButt setEnabled:NO];
206
207        magnifyButt = [[GRToolButton alloc] initWithFrame: NSMakeRect(25, 0, 25, 20)
208                                                 toolType: magnifytool];
209        [magnifyButt setButtonType: NSOnOffButton];
210        [magnifyButt setImage: [NSImage imageNamed: @"magnify.tiff"]];
211        [magnifyButt setImagePosition: NSImageOnly];
212        [magnifyButt setTarget:self];
213        [magnifyButt setAction:@selector(buttonPressed:)];
214        [self addSubview: magnifyButt];
215        [buttons addObject: magnifyButt];
216        [magnifyButt release];
217
218        [barrowButt setState: NSOnState];
219        [[NSApp delegate] setToolType: blackarrowtool];
220    }
221    return self;
222}
223
224- (void)dealloc
225{
226    [buttons release];
227    [super dealloc];
228}
229
230- (void)buttonPressed:(id)sender
231{
232    ToolType type;
233
234    type = [(GRToolButton *)sender tooltype];
235    [[NSApp delegate] setToolType: type];
236}
237
238- (void)setButtonsPositions:(int)ptype
239{
240    GRToolButton *butt;
241    int i;
242
243    for(i = 0; i < [buttons count]; i++)
244    {
245        butt = [buttons objectAtIndex: i];
246        if([butt tooltype] != ptype)
247            [butt setState: NSOffState];
248        else
249            [butt setState: NSOnState];
250    }
251}
252
253@end
254
255
256@implementation GRToolsWindow
257
258- (id)init
259{
260    unsigned int style = NSTitledWindowMask;
261
262    self = [super initWithContentRect: NSMakeRect(10, 400, 50, 140)
263                            styleMask: style
264                              backing: NSBackingStoreBuffered
265                                defer: NO];
266    if(self)
267    {
268        [self setTitle: @" "];
269        toolsView = [[GRToolsView alloc] initWithFrame: NSMakeRect(0, 0, 50, 140)];
270        [[self contentView] addSubview: toolsView];
271        [self setFrameAutosaveName:@"Draw_Tools"];
272    }
273    NSLog(@"inited GRToolsWindow");
274    return self;
275}
276
277- (void)dealloc
278{
279    [toolsView release];
280    [super dealloc];
281}
282
283- (void)setButtonsPositions:(int)ptype
284{
285    [toolsView setButtonsPositions: ptype];
286}
287
288
289- (BOOL) canBecomeKeyWindow
290{
291    return NO;
292}
293@end
294
295