From 55d61755dff7b1188799db2043023fe7b8600965 Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Fri, 3 Aug 2007 00:06:40 -0700 Subject: [PATCH] Adding support for error viewing on the Debugger window and statuses. * English.lproj/Debugger.nib: - Making the error text be hidden by default. - Hooking up outlets into DebuggerWindow * Source/DebuggerWindowController.m|h: Adding _status and _error outlets and setters for them ([DebuggerWindowController setStatus:]): New method ([DebuggerWindowController setError:]): New method * Source/DebuggerController.m: ([DebuggerController initWithPort:]): Set the inital status to be "Connecting" ([DebuggerController updateStatus:]): New method ([DebuggerController handshake:]): Send a status command to the server and then receive the results using updateStatus: ([DebuggerController errorEncountered:]): Calls [_windowController setError:] using the error message from the NSError --- English.lproj/Debugger.nib/classes.nib | 1 + English.lproj/Debugger.nib/keyedobjects.nib | Bin 11410 -> 11773 bytes Source/DebuggerConnection.m | 15 +++++++++++++-- Source/DebuggerWindowController.h | 6 ++++++ Source/DebuggerWindowController.m | 19 +++++++++++++++++++ 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/English.lproj/Debugger.nib/classes.nib b/English.lproj/Debugger.nib/classes.nib index 7c50c6a..3a7fdfa 100644 --- a/English.lproj/Debugger.nib/classes.nib +++ b/English.lproj/Debugger.nib/classes.nib @@ -3,6 +3,7 @@ { CLASS = DebuggerWindowController; LANGUAGE = ObjC; + OUTLETS = {"_error" = NSTextField; "_status" = NSTextField; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } diff --git a/English.lproj/Debugger.nib/keyedobjects.nib b/English.lproj/Debugger.nib/keyedobjects.nib index 744d6bf648d85a6b0fb4cde75b3779dfd9988a62..2a7196cdedf9917a120b511f831710bd90875e43 100644 GIT binary patch delta 7403 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 JefC#e_iw2B17ZLG diff --git a/Source/DebuggerConnection.m b/Source/DebuggerConnection.m index 7098918..a279d3b 100644 --- a/Source/DebuggerConnection.m +++ b/Source/DebuggerConnection.m @@ -35,6 +35,7 @@ // now that we have our host information, open the socket _socket = [[SocketWrapper alloc] initWithPort: port]; [_socket setDelegate: self]; + [_windowController setStatus: @"Connecting"]; [_socket connect]; // clean up after ourselves @@ -117,7 +118,7 @@ */ - (void)errorEncountered: (NSError *)error { - NSLog(@"error = %@", error); + [_windowController setError: [error domain]]; } /** @@ -126,7 +127,17 @@ */ - (void)handshake: (NSString *)packet { - NSLog(@"packet = %@", packet); + [_socket send: @"status -i foo"]; + [_socket receive: @selector(updateStatus:)]; +} + +/** + * Handler used by dataReceived:deliverTo: for anytime the status command is issued. It sets + * the window controller's status text + */ +- (void)updateStatus: (NSString *)packet +{ + [_windowController setStatus: packet]; } @end diff --git a/Source/DebuggerWindowController.h b/Source/DebuggerWindowController.h index d49a9b7..b1ba3b6 100644 --- a/Source/DebuggerWindowController.h +++ b/Source/DebuggerWindowController.h @@ -21,8 +21,14 @@ @interface DebuggerWindowController : NSWindowController { DebuggerConnection *_connection; + + IBOutlet NSTextField *_status; + IBOutlet NSTextField *_error; } - (id)initWithConnection: (DebuggerConnection *)cnx; +- (void)setStatus: (NSString *)status; +- (void)setError: (NSString *)error; + @end diff --git a/Source/DebuggerWindowController.m b/Source/DebuggerWindowController.m index 51b0819..3433caf 100644 --- a/Source/DebuggerWindowController.m +++ b/Source/DebuggerWindowController.m @@ -43,4 +43,23 @@ [super dealloc]; } +/** + * Sets the status and clears any error message + */ +- (void)setStatus: (NSString *)status +{ + [_error setHidden: YES]; + [_status setStringValue: status]; +} + +/** + * Sets the status to be "Error" and then displays the error message + */ +- (void)setError: (NSString *)error +{ + [_error setStringValue: error]; + [self setStatus: @"Error"]; + [_error setHidden: NO]; +} + @end -- 2.22.5