From a291805aaf6e91d36b4e8f9794c6ad0c93f30201 Mon Sep 17 00:00:00 2001 From: Robert Sesek Date: Sun, 5 Aug 2007 01:06:15 -0700 Subject: [PATCH] The depth fetching of child nodes now works and are properly inserted into the register tree * Source/DebuggerConnection.h: Changing _depthFetchElement to type id for the mysterious _NSArrayControllerTreeNode type * Source/DebuggerConnection.m: ([DebuggerConnection propertyReceived:]): Get all the children from the property and then detach them so they can be injected into the tree * Source/DebuggerWindowController.h: Added a _registerController outlet * Source/DebuggerWindowController.m: ([DebuggerWindowController addChildren:toNode:]): New method that adds detached children to the specified _NSArrayControllerTreeNod using it's index set ([DebuggerWindowController outlineViewItemDidExpand:]): Change from using an NSXMLElement to the internal TreeNode * English.lproj/Debugger.nib: Hook up the RegisterController to the outlet --- English.lproj/Debugger.nib/classes.nib | 1 + English.lproj/Debugger.nib/keyedobjects.nib | Bin 16402 -> 16494 bytes Source/DebuggerConnection.h | 2 +- Source/DebuggerConnection.m | 7 ++++++- Source/DebuggerWindowController.h | 3 +++ Source/DebuggerWindowController.m | 19 +++++++++++++++++-- 6 files changed, 28 insertions(+), 4 deletions(-) diff --git a/English.lproj/Debugger.nib/classes.nib b/English.lproj/Debugger.nib/classes.nib index ec73ec1..64f8ae5 100644 --- a/English.lproj/Debugger.nib/classes.nib +++ b/English.lproj/Debugger.nib/classes.nib @@ -6,6 +6,7 @@ LANGUAGE = ObjC; OUTLETS = { "_error" = NSTextField; + "_registerController" = NSTreeController; "_sourceViewer" = NSTextView; "_sourceViewerScroller" = NSScrollView; "_stackController" = NSArrayController; diff --git a/English.lproj/Debugger.nib/keyedobjects.nib b/English.lproj/Debugger.nib/keyedobjects.nib index 8a5a79ff98d385025d4951208cb9621650dfb819..886a4b86da6972f5077a1c944d0563946cac0bf3 100644 GIT binary patch delta 5673 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 F>%S0iZ$JP5 delta 5663 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 */ - [_depthFetchElement setChildren: [[[doc rootElement] nextSibling] children]]; + + // we now have to detach all the children so we can insert them into another document + NSXMLElement *parent = [[doc rootElement] childAtIndex: 0]; + NSArray *children = [parent children]; + [parent setChildren: nil]; + [_windowController addChildren: children toNode: _depthFetchElement]; _depthFetchElement = nil; [doc release]; } diff --git a/Source/DebuggerWindowController.h b/Source/DebuggerWindowController.h index 5fc0fc4..7000d6c 100644 --- a/Source/DebuggerWindowController.h +++ b/Source/DebuggerWindowController.h @@ -26,6 +26,7 @@ NSArray *_stack; NSXMLElement *_register; + IBOutlet NSTreeController *_registerController; IBOutlet NSTextField *_status; IBOutlet NSTextField *_error; @@ -41,6 +42,8 @@ - (void)setStack: (NSArray *)node; - (void)setRegister: (NSXMLElement *)reg; +- (void)addChildren: (NSArray *)children toNode: (id)node; + - (IBAction)run: (id)sender; - (IBAction)stepIn: (id)sender; - (IBAction)stepOut: (id)sender; diff --git a/Source/DebuggerWindowController.m b/Source/DebuggerWindowController.m index 669acc5..2b50fa0 100644 --- a/Source/DebuggerWindowController.m +++ b/Source/DebuggerWindowController.m @@ -201,13 +201,28 @@ // XXX: This very well may break because NSTreeController sends us a _NSArrayControllerTreeNode object // which is presumably private, and thus this is not a reliable method for getting the object. But // we damn well need it, so f!ck the rules and we're using it. - NSXMLElement *obj = [[[notif userInfo] objectForKey: @"NSObject"] observedObject]; + id notifObj = [[notif userInfo] objectForKey: @"NSObject"]; + NSXMLElement *obj = [notifObj observedObject]; // we're not a leaf but have no children. this must be beyond our depth, so go make us deeper if (![obj isLeaf] && [[obj children] count] < 1) { - [_connection getProperty: [[obj attributeForName: @"fullname"] stringValue] forElement: obj]; + [_connection getProperty: [[obj attributeForName: @"fullname"] stringValue] forElement: notifObj]; } } +/** + * Updates the register view by reinserting a given node back into the outline view + */ +- (void)addChildren: (NSArray *)children toNode: (id)node +{ + NSIndexPath *masterPath = [node indexPath]; + for (int i = 0; i < [children count]; i++) + { + [_registerController insertObject: [children objectAtIndex: i] atArrangedObjectIndexPath: [masterPath indexPathByAddingIndex: i]]; + } + + [_registerController rearrangeObjects]; +} + @end -- 2.22.5