Hooking up the BSSourceView outlet and implement delegates
[macgdbp.git] / Source / BreakpointWindowController.m
1 /*
2 * MacGDBp
3 * Copyright (c) 2007 - 2008, Blue Static <http://www.bluestatic.org>
4 *
5 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
6 * General Public License as published by the Free Software Foundation; either version 2 of the
7 * License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
10 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along with this program; if not,
14 * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
15 */
16
17 #import "BreakpointWindowController.h"
18
19
20 @implementation BreakpointWindowController
21
22 /**
23 * Constructor
24 */
25 - (id)init
26 {
27 if (self = [super initWithWindowNibName:@"Breakpoints"])
28 {
29 manager = [BreakpointManager sharedManager];
30 }
31 return self;
32 }
33
34
35 /**
36 * Adds a breakpoint by calling up a file chooser and selecting a file for
37 * breaking in
38 */
39 - (IBAction)addBreakpoint:(id)sender
40 {
41 NSOpenPanel *panel = [NSOpenPanel openPanel];
42
43 if ([panel runModal] != NSOKButton)
44 {
45 return;
46 }
47
48 [sourceView setFile:[panel filename]];
49 }
50
51 /**
52 * Removes a breakpoint
53 */
54 - (IBAction)removeBreakpoint:(id)sender
55 {
56
57 }
58
59 #pragma mark BSSourceView Delegate
60
61 /**
62 * The gutter was clicked, which indicates that a breakpoint needs to be changed
63 */
64 - (void)gutterClickedAtLine:(int)line forFile:(NSString *)file
65 {
66 if ([manager hasBreakpointAt:line inFile:file])
67 {
68 [manager removeBreakpointAt:line inFile:file];
69 }
70 else
71 {
72 Breakpoint *bp = [[Breakpoint alloc] initWithLine:line inFile:file];
73 [manager addBreakpoint:bp];
74 }
75
76 [[sourceView numberView] setMarkers:[manager breakpointsForFile:file]];
77 [[sourceView numberView] setNeedsDisplay:YES];
78 }
79
80 @end