Robert Sesek [Wed, 18 Jun 2008 13:26:40 +0000 (09:26 -0400)]
Fix a few exceptions/warnings related to going no-gc
* Source/AppDelegate.m
(versionCheck:): Add an NSAutoreleasePool
* Source/BreakpointManager.h: Specify an assignment type for the connection ivar
* Source/SocketWrapper.m:
(connect:): Add an NSAutoreleasePool
Robert Sesek [Mon, 16 Jun 2008 23:51:40 +0000 (19:51 -0400)]
Adding a *real* version checking system
* English.lproj/MainMenu.xib: Adding the version update window
* Source/AppDelegate.h: Adding IBOs for the updater window and the update information string
* Source/AppDelegate.m:
(init): Run the version check method
(versionCheck:): New method
(openUpdateInformation:): New method
Robert Sesek [Thu, 12 Jun 2008 15:31:53 +0000 (11:31 -0400)]
The breakpoint manager now works -- breakpoints can be set from the main debugger or the manager
* English.lproj/Breakpoints.xib: Set the NSTableView's delegate to be File's Owner and disconnect the content IBO to the NS-AC
* Source/BreakpointManager.m:
(updateDisplaysForfile:): New private method
(addBreakpoint:): Call [updateDisplaysForfile:]
(removeBreakpointAt:inFile:): ditto
* BreakpointWindowController.m+h: Add props and synth them for sourceView and arrayController ivars
(removeBreakpoint:): Fill out method stub
(tableViewSelectionDidChange:): Implement delegate method
* DebuggerWindowController.m+h: Add prop/synth for sourceViewer ivar
Robert Sesek [Thu, 12 Jun 2008 13:51:57 +0000 (09:51 -0400)]
Fixing a bug where if the register depth was too deep, more properties would not be fetched/inserted correctly
* Source/AppDelegate.m+h: Add and synthesize props for debugger and breakpoint ivars
* Source/DebuggerConnection.m+h:
(getProperty:forNode:): Renamed [getProperty:] and now return an NSArray rather than attaching to a node
* Source/DebuggerWindowController.m+h:
(addChildren:toNode:): Removed
(outlineViewItemDidExpand:): Don't have to do extra fetch work here because it will now be done in the model
* Source/NSXMLElementAdditions.m+h:
(subnodes): New method that does the same thing as [children] but intelligently fetches more depth
* English.lproj/Debugger.xib: Tell the regiser NSTreeController to use [subnodes] instead of [children]
Robert Sesek [Tue, 10 Jun 2008 17:59:53 +0000 (13:59 -0400)]
Hooking up the BSSourceView outlet and implement delegates
* English.lproj/Breakpoints.xib: Hook up outlet
* Source/BreakpointWindowController.h: Add the ivar
* Source/BreakpointWindowController.m:
(addBreakpoint:): Show the NSOpenPanel to select a file
(gutterClickedAtLine:forFile:): New method
Robert Sesek [Mon, 9 Jun 2008 20:35:40 +0000 (16:35 -0400)]
Finishing hooking up the XIB
* English.lproj/Breakpoints.xib: Set File's Owner to be BreakpointWindowController and set the window IBO
* Source/BreakpointWindowController.m:
(init): Adding a comment
Robert Sesek [Mon, 9 Jun 2008 19:51:01 +0000 (15:51 -0400)]
Adding a breakpoints NSWindowController for Breakpoints.xib
* Source/BreakpointWindowController.m+h: New files
* MacGDBp.xcodeproj: Project updates for BreakpointWindowController
* Source/AppDelegate.m+h:
(showBreakpointWindow:): New method
* English.lproj/MainMenu.xib: Add a
Robert Sesek [Thu, 5 Jun 2008 01:39:16 +0000 (21:39 -0400)]
When calling -[SocketWrapper remoteHost], we don't want to continually query the hostname
* Source/SocketWrapper.h: Adding a hostname ivar
* Source/SocketWrapper.m:
(remoteHost): Just return the hostname ivar
(connect:): Query the hostname and store it in the hostname ivar
Robert Sesek [Wed, 28 May 2008 18:29:14 +0000 (14:29 -0400)]
Trying to add some bounds checking so we don't get unhandled exceptions
* Source/DebuggerConnection.m:
(-[processData:]): Try to catch malformed data
* Source/DebuggerWindowController.m:
(-[updateSourceViewer]): Don't proceed if there is no stack
Robert Sesek [Wed, 23 Apr 2008 19:47:16 +0000 (15:47 -0400)]
Making a reference to the debugger in the Window menu
* English.lproj/MainMenu.xib: Add a Window->Debugger item
* Source/AppDelegate.m/h: Add a debugger ivar to hold the DebuggerWindowController
([showDebuggerWindow:]): New method to bring the debugger window to the front
* Source/DebuggerWindowContrller.m:
([awakeFromNib]): Exclude the window from the dynamic Window menu
Robert Sesek [Wed, 23 Apr 2008 19:12:05 +0000 (15:12 -0400)]
Removing the connect dialog
* English.lproj/Connect.xib: Removed
* English.lproj/MainMenu.xib: Removing the "Connection" menu and adding a "File" menu
* Source/AppDelegate.m/h:
([showConnectWindow:]): Removed
* Source/ConnectWindowController.m/h: Removed
* MacGDBp.xcodeproj: Project updates for removed files
Robert Sesek [Wed, 2 Apr 2008 21:26:36 +0000 (17:26 -0400)]
Adding support to actually set breakpoints on the debuger side
* Source/Breakpoint.h: New debuggerId ivar to keep track of the engine's tracking ID
* Source/Breakpoint.m: Synthesize ivar
* Source/DebuggerConnection.m/h:
([DebuggerConnection addBreakpoint:]): New method
([DebuggerConnection removeBreakpoint:]): New method
* Source/DebuggerWindowController.m:
([DebuggerWindowController gutterClickedAtLine:forFile:]): When adding a breakpoint, tell the engine to set it
Robert Sesek [Wed, 2 Apr 2008 18:55:06 +0000 (14:55 -0400)]
Adding a new class called BreakpointManager so we don't clutter up AppDelegate
* Source/AppDelegate.m/h: Removing the breakpoint code
* Source/BSLineNumberView.m:
([BSLineNumberView mouseDown:]): We need to add the lineNumberRange so we get an accurate number
* Source/DebuggerWindowController.m: Switching to BreakpointManager instead of AppDelegate for managing breakpoints
* Source/BreakpointManager.m/h: New files
* MacGDBp.xcodeproj: Project updates for BreakpointManager
Robert Sesek [Wed, 2 Apr 2008 17:53:46 +0000 (13:53 -0400)]
Initial breakpoint adding code
* MacGDBp.xcodeproj: Project updates for Breakpoint.m/h
* Source/AppDelegate.h: Add a breakpoints ivar
* Source/AppDelegate.m:
([AppDelegate addBreakpoint:]): New method
([AppDelegate breakpointsForFile:]): New method
* Source/BSLineNumberView.h: Add a markers ivar
* Source/BSLineNumberView.m:
([BSLineNumberView drawRect:]): Add breakpoint-detecting code
* Source/DebuggerWindowController.m: Making this the delegate of BSSourceView
([DebuggerWindowController gutterClickedAtLine:forFile:]): Implementing delegate method
Robert Sesek [Tue, 1 Apr 2008 04:33:22 +0000 (00:33 -0400)]
We now properly handle the mouseDown event in the gutter
* Source/BSLineNumberView.h: New property called lineNumberRange
* Source/BSLineNumberView.m: Synthesize lineNumberRange and set it to be empty in -[init]
([BSLineNumberView drawRect:]): Set lineNumberRange to be the range of visible lines in the source viewer
([BSLineNumberView mouseDown:]): Use the line number range to simplify the code of determining which line was clicked
* Source/BSSourceView.h: New property file to hold the filename; also create delegate category
* Source/BSSourceView.h: Synthesize file
([BSSourceView setFile:]): Sets the file property as well as setting the string of the textView object
* Source/DebuggerWindowController.m:
([DebuggerWindowController updateSourceViewer]): Use the new -[setFile:] method
Robert Sesek [Sat, 29 Mar 2008 03:02:36 +0000 (23:02 -0400)]
Add an application icon
* Icons/MacGDBp.icns: New icon file
* Info.plist: Add a reference to the icon file
* MacGDBp.xcodeproj: Project updates for the icon file
* Resource Masters/App Icon.psd: New file
* Resource Masters/Globe.ai: New file
* Resource Masters/Toolbar Buttons.psd: Moved from root folder
Robert Sesek [Mon, 10 Mar 2008 19:13:09 +0000 (15:13 -0400)]
Making progress on our -[mouseDown:] event handler, but it's not quite working
* Source/BSLineNumberView.m:
([BSLineNumberView mouseDown:]): New method
* Source/BSSourceView.h: New delegate prop-ivar
* Source/BSSourceView.m: Synthesizing the delegate ivar
Robert Sesek [Sun, 9 Mar 2008 17:13:14 +0000 (13:13 -0400)]
Adding a method to scroll to a given line in the BSSourceView
* Source/BSSourceView.m:
([BSSourceView scrollToLine:]): New method that scrolls to a specific line in the NSTextView
* Source/BSSourceView.h: ditto
* Source/DebuggerWindowController.m:
([DebuggerWindowController updateSourceViewer]): Removing the scrolling logic that used to be here
Robert Sesek [Sun, 9 Mar 2008 16:50:16 +0000 (12:50 -0400)]
We now draw the line number in the the middle of the the line's height, which means that if the line number is a smaller size than the line text it will be centered instead of drawn at the top
Robert Sesek [Sun, 9 Mar 2008 15:03:30 +0000 (11:03 -0400)]
Fixing a memory leak
* Source/NSXMLElementAdditions.m:
([NSXMLElement(NSXMLElementAdditions) value]): base64_decode_alloc() calls malloc() but not free() so we need to do it ourselves
Robert Sesek [Sun, 9 Mar 2008 04:38:07 +0000 (23:38 -0500)]
Add a bunch of new NSView classes (to form a meta-view BSSourceView) that adds a line-numbered NSTextView embedded in a NSScrollView
* English.lproj/Debugger.xib: Use our BSSourceView instead of an NSTextView for the source viewer
* Source/BSLineNumberView.h: new file
* Source/BSLineNumberView.m: new file
* Source/BSSourceView.h: new file
* Source/BSSourceView.m: new file
* Source/BSSourceViewTextView.h: new file
* Source/BSSourceViewTextView.m: new file
* MacGDBp.xcodeproj: Project updates for all the new files
* Source/DebuggerWindowController.h: Switch to using a BSSourceView
* Source/DebuggerWindowController.m: ditto
Robert Sesek [Fri, 11 Jan 2008 01:07:20 +0000 (17:07 -0800)]
Converting the rest of the NIBs to be XIBs simply for the sake of consistency
* English.lproj/Connect.nib: Removed
* English.lproj/MainMenu.nib: Removed
* English.lproj/Connect.xib: New file
* English.lproj/MainMenu.xib: New file
* MacGDBp.xcodeproj: Project updates for removed NIBs and new XIBs, also put all the XIBs into a group for organization sake
Robert Sesek [Fri, 11 Jan 2008 00:10:17 +0000 (16:10 -0800)]
We were previously using, for the stack table, the index of the row to determine which source file to show instead of the "level" column of the row, which means sorting the stack table would screw things up
* Source/DebuggerWindowController.m:
([DebuggerWindowController updateSourceViewer]): Switch to using the selected item's "level" rather than the selected row index
Robert Sesek [Thu, 10 Jan 2008 00:11:51 +0000 (16:11 -0800)]
Instead of using NSSplitView, use BSSplitView which is our custom implementation which draws a smaller, gradiated divider
* English.lproj/Debugger.xib: Switch to using a custom class for our two SplitView's
* Source/BSSplitView.h: New file
* Source/BSSplitView.m: ditto
* MacGDBp.xcodeproj: Project updates for new files
Robert Sesek [Wed, 9 Jan 2008 23:26:52 +0000 (15:26 -0800)]
Adding some icons for the toolbar buttons (only Step In and Step Out)
* English.lproj/Debugger.xib: Set the icons for the two buttons
* Icons/StepIn.png: New file
* Icons/StepOut.png: ditto
* MacGDBp.xcodeproj: Project updates to add the icons to the resources
* Toolbar Buttons.psd: Original file for the icons
Robert Sesek [Wed, 9 Jan 2008 09:22:09 +0000 (01:22 -0800)]
Use an NSToolbar for the debugger controls instead of NSButtons
* English.lproj/Debugger.nib: Removed because the designable NSToolbar requires an XIB
* English.lproj/Debugger.xib: Coverted old NIB
* MacGDBp.xcodeproj: Project updates for the nib->xib conversion
* Source/DebuggerWindowController.h: Changing the buttons to be of type NSButton to NSToolbarItem
Robert Sesek [Wed, 9 Jan 2008 09:05:22 +0000 (01:05 -0800)]
The reconnect functionality now works
* Source/DebuggerConnection.h:
* Source/DebuggerConnection.m:
([DebuggerConnection reconnect]): New method that communicates the reconnect to the debugger
([Debuggerconnection refreshStatus]): If the status is "stopped", we are no longer connected
* Source/DebuggerWindowController.h:
* Source/DebuggerWindowController.m:
([DebuggerWindowController resetDisplays]): New method to set all the display information to be blank
([DebuggerWindowController reconnect:]): Forward the message to reconnect to the DebuggerConnection
Robert Sesek [Sun, 6 Jan 2008 01:14:00 +0000 (17:14 -0800)]
The registers now have memory and stay expanded
* Source/DebuggerWindowController.h: expandedRegisters is now an NSMutableSet
* Source/DebuggerWindowController.m:
([DebuggerWindowController initWithPort:session:]): Change allocated type of expandedRegisters
([DebuggerWindowController setRegister:]): Finished logic for expanding remembered registers
([DebuggerWindowController outlineViewItemDidExpand:]): Use the "fullname" attribute to get the full variable name so scope is accounted for in expanded memory
([DebuggerWindowController outlineViewItemDidCollapse:]): ditto
* Source/NSXMLElementAdditions.h:
* Source/NSXMLElementAdditions.m:
([NSXMLElement(NSXMLElementAdditions) fullname]): New method
Robert Sesek [Sun, 6 Jan 2008 00:50:56 +0000 (16:50 -0800)]
We now properly fetch registers who need to have more data attached
* Source/DebuggerWindowController.m:
([DebuggerWindowController addChildren:toNode:]): Don't attach nodes through the controller, but rather through the XMLElement (via the node's -[representedObject])
Robert Sesek [Sat, 5 Jan 2008 23:55:52 +0000 (15:55 -0800)]
Removing the notification-delegate system that SocketWrapper used because it wasn't necessary because the only action that can block the UI is -[connect]
Changes:
-[SocketWrapper receive] now returns the data directly, cleaning up the DebuggerConnection class a lot
-[SocketWrapper send] returns BOOL depending on the success of the send
Robert Sesek [Sat, 5 Jan 2008 23:09:16 +0000 (15:09 -0800)]
In SocketWraper, don't use the notification posting system to send errors to the delegate, instead just use performSelectorOnMainThread:withObject:waitUntilDone: on the delegate object. Also, -[NSObject(SocketWrapperDelegate) errorEncountered:] now just takes a string.