the wrapper should be property of the controller, not the view

This commit is contained in:
Riccardo Mottola 2021-07-08 23:43:09 +02:00
parent 67381ab3cc
commit 7adfa56357
4 changed files with 19 additions and 38 deletions

View file

@ -27,6 +27,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <Protocols/CodeDebugger.h> #import <Protocols/CodeDebugger.h>
#import "PCDebuggerWrapperProtocol.h"
extern const NSString *PCBreakTypeKey; extern const NSString *PCBreakTypeKey;
extern NSString *PCBreakTypeByLine; extern NSString *PCBreakTypeByLine;
@ -49,8 +50,10 @@ extern NSString *PCDBDebuggerStartedNotification;
NSString *lastFileNameParsed; NSString *lastFileNameParsed;
NSUInteger lastLineNumberParsed; NSUInteger lastLineNumberParsed;
NSMutableArray *breakpoints; NSMutableArray *breakpoints;
id <PCDebuggerWrapperProtocol> debuggerWrapper;
} }
- (id <PCDebuggerWrapperProtocol>)debuggerWrapper;
- (void) setStatus: (NSString *) status; - (void) setStatus: (NSString *) status;
- (NSString *) status; - (NSString *) status;
- (NSString *)executablePath; - (NSString *)executablePath;

View file

@ -139,8 +139,7 @@ NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification";
{ {
if((self = [super init]) != nil) if((self = [super init]) != nil)
{ {
NSLog(@"PCDebugger Init"); NSLog(@"PCDebugger Init");
id <PCDebuggerWrapperProtocol> debuggerWrapper;
// initialization here... // initialization here...
if([NSBundle loadNibNamed: @"PCDebugger" owner: self] == NO) if([NSBundle loadNibNamed: @"PCDebugger" owner: self] == NO)
{ {
@ -149,10 +148,8 @@ NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification";
[(PCDebuggerView *)debuggerView setDebugger:self]; [(PCDebuggerView *)debuggerView setDebugger:self];
debuggerWrapper = [[GDBWrapper alloc] init]; debuggerWrapper = [[GDBWrapper alloc] init];
[debuggerView setDebuggerWrapper:debuggerWrapper];
[debuggerWrapper setTextView:debuggerView]; [debuggerWrapper setTextView:debuggerView];
[debuggerWrapper setDebugger:self]; [debuggerWrapper setDebugger:self];
[debuggerWrapper release];
[debuggerView setFont: [self consoleFont]]; [debuggerView setFont: [self consoleFont]];
subProcessId = 0; subProcessId = 0;
@ -196,8 +193,6 @@ NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification";
- (void) initBreakpoints - (void) initBreakpoints
{ {
id <PCDebuggerWrapperProtocol> debuggerWrapper;
breakpoints = [[NSMutableArray alloc] init]; breakpoints = [[NSMutableArray alloc] init];
/* CRUDE EXAMPLES * TODO FIXME * /* CRUDE EXAMPLES * TODO FIXME *
NSDictionary *dP; NSDictionary *dP;
@ -208,15 +203,11 @@ NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification";
dP = [NSDictionary dictionaryWithObjectsAndKeys: PCBreakTypeByLine, PCBreakTypeKey, @"AppController.m", PCBreakFilename, [NSNumber numberWithInt:100], PCBreakLineNumber, nil]; dP = [NSDictionary dictionaryWithObjectsAndKeys: PCBreakTypeByLine, PCBreakTypeKey, @"AppController.m", PCBreakFilename, [NSNumber numberWithInt:100], PCBreakLineNumber, nil];
[breakpoints addObject:dP]; [breakpoints addObject:dP];
*/ */
debuggerWrapper = [debuggerView debuggerWrapper];
[debuggerWrapper setBreakpoints:breakpoints]; [debuggerWrapper setBreakpoints:breakpoints];
} }
- (void) debuggerSetup - (void) debuggerSetup
{ {
id <PCDebuggerWrapperProtocol> debuggerWrapper;
debuggerWrapper = [debuggerView debuggerWrapper];
[debuggerWrapper debuggerSetup]; [debuggerWrapper debuggerSetup];
} }
@ -239,6 +230,11 @@ NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification";
[self setStatus: @"Idle."]; [self setStatus: @"Idle."];
} }
- (id <PCDebuggerWrapperProtocol>)debuggerWrapper
{
return debuggerWrapper;
}
- (NSWindow *)debuggerWindow - (NSWindow *)debuggerWindow
{ {
return debuggerWindow; return debuggerWindow;
@ -413,6 +409,7 @@ NSString *PCDBDebuggerStartedNotification = @"PCDBDebuggerStartedNotification";
- (void) dealloc - (void) dealloc
{ {
[debuggerWrapper release];
[breakpoints release]; [breakpoints release];
[super dealloc]; [super dealloc];
} }

View file

@ -24,20 +24,16 @@
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <AppKit/NSTextView.h> #import <AppKit/NSTextView.h>
#import "PCDebuggerWrapperProtocol.h"
@class PCDebugger; @class PCDebugger;
@interface PCDebuggerView : NSTextView @interface PCDebuggerView : NSTextView
{ {
PCDebugger *debugger; PCDebugger *debugger;
id <PCDebuggerWrapperProtocol> debuggerWrapper;
NSString *currentFile; NSString *currentFile;
} }
- (void) setDebugger:(PCDebugger *)theDebugger; - (void) setDebugger:(PCDebugger *)theDebugger;
- (id <PCDebuggerWrapperProtocol>)debuggerWrapper;
- (void) setDebuggerWrapper:(id <PCDebuggerWrapperProtocol>) dw;
- (void) setCurrentFile: (NSString *)fileName; - (void) setCurrentFile: (NSString *)fileName;
- (NSString *) currentFile; - (NSString *) currentFile;

View file

@ -41,25 +41,10 @@
debugger = theDebugger; debugger = theDebugger;
} }
- (id <PCDebuggerWrapperProtocol>)debuggerWrapper
{
return debuggerWrapper;
}
- (void) setDebuggerWrapper:(id <PCDebuggerWrapperProtocol>) dw
{
if (debuggerWrapper != dw)
{
[debuggerWrapper release];
debuggerWrapper = dw;
[debuggerWrapper retain];
}
}
- (void)setFont:(NSFont *)aFont - (void)setFont:(NSFont *)aFont
{ {
[debuggerWrapper setFont:aFont]; [[debugger debuggerWrapper] setFont:aFont];
} }
/** /**
@ -68,7 +53,7 @@
- (void) logString:(NSString *)str - (void) logString:(NSString *)str
newLine:(BOOL)newLine newLine:(BOOL)newLine
{ {
[debuggerWrapper logString: str newLine: newLine withColor:[debuggerWrapper debuggerColor]]; [[debugger debuggerWrapper] logString: str newLine: newLine withColor:[[debugger debuggerWrapper] debuggerColor]];
} }
- (void) setCurrentFile: (NSString *)fileName - (void) setCurrentFile: (NSString *)fileName
@ -83,7 +68,7 @@
- (void) terminate - (void) terminate
{ {
[debuggerWrapper terminate]; [[debugger debuggerWrapper] terminate];
} }
- (void) mouseDown: (NSEvent *)event - (void) mouseDown: (NSEvent *)event
@ -99,10 +84,10 @@
withArguments: (NSArray *)array withArguments: (NSArray *)array
logStandardError: (BOOL)logError logStandardError: (BOOL)logError
{ {
[debuggerWrapper runProgram: path [[debugger debuggerWrapper] runProgram: path
inCurrentDirectory: directory inCurrentDirectory: directory
withArguments: array withArguments: array
logStandardError: logError]; logStandardError: logError];
} }
- (void) putString: (NSString *)string - (void) putString: (NSString *)string
@ -110,12 +95,12 @@
NSAttributedString* attr = [[NSAttributedString alloc] initWithString:string]; NSAttributedString* attr = [[NSAttributedString alloc] initWithString:string];
[[self textStorage] appendAttributedString:attr]; [[self textStorage] appendAttributedString:attr];
[self scrollRangeToVisible:NSMakeRange([[self string] length], 0)]; [self scrollRangeToVisible:NSMakeRange([[self string] length], 0)];
[debuggerWrapper putString:string]; [[debugger debuggerWrapper] putString:string];
} }
- (void) keyDown: (NSEvent*)theEvent - (void) keyDown: (NSEvent*)theEvent
{ {
[debuggerWrapper keyDown:theEvent]; [[debugger debuggerWrapper] keyDown:theEvent];
} }
@end @end