DebugView.st
changeset 3187 3d8f1bbf585b
parent 3165 03d3c485e67d
child 3210 f5c4ab32840e
--- a/DebugView.st	Mon Sep 24 10:12:36 2001 +0200
+++ b/DebugView.st	Mon Sep 24 11:45:26 2001 +0200
@@ -20,12 +20,12 @@
 		continueButton stepButton nextButton nextOverButton nextOutButton
 		sendButton returnButton restartButton exclusive inspecting
 		nChainShown inspectedProcess updateProcess stopButton
-		updateButton monitorToggle stepping steppedContextLineno
-		stepForReturn actualContext inWrap stackInspector steppedContext
-		wrapperContext verboseBacktrace firstContext stepHow cachable
-		currentMethod ignoreBreakpoints stepUntilEntering
-		lastStepUntilEntering lastSelectionInReceiverInspector
-		lastSelectionInContextInspector'
+		updateButton defineButton monitorToggle stepping
+		steppedContextLineno stepForReturn actualContext inWrap
+		stackInspector steppedContext wrapperContext verboseBacktrace
+		firstContext stepHow cachable currentMethod ignoreBreakpoints
+		stepUntilEntering lastStepUntilEntering
+		lastSelectionInReceiverInspector lastSelectionInContextInspector'
 	classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
 		DebuggingDebugger VerboseBacktraceDefault DefaultIcon
 		InitialNCHAINShown'
@@ -1456,6 +1456,15 @@
                         action:[terminateButton turnOffWithoutRedraw. self doTerminate]
                         in:bpanel.
 
+
+    separator := View extent:(30 @ 5) in:bpanel.
+    separator borderWidth:0; level:0.
+    defineButton := Button
+                        label:(resources at:'define')
+                        action:[defineButton turnOffWithoutRedraw. self doDefine]
+                        in:bpanel.
+    defineButton beInvisible.
+
     bpanel origin:(0.0 @ 0.0)
            extent:(1.0 @ (bpanel preferredExtent y)).
 
@@ -2518,6 +2527,12 @@
     "Modified: / 26.7.1999 / 15:38:45 / stefan"
 !
 
+doDefine
+    self 
+        codeAccept:('%1\    self halt:''%1 is not yet implemented''.' bindWith:actualContext selector) withCRs
+        unwind:false.
+!
+
 doIgnoreBreakpoints
     ignoreBreakpoints := true.
     self initializeMiddleButtonMenu
@@ -3870,6 +3885,13 @@
     "user wants some code to be recompiled - must unwind stack since everything above
      and including selected method cannot be continued."
 
+    ^ self codeAccept:someCode unwind:true
+!
+
+codeAccept:someCode unwind:doUnwind
+    "user wants some code to be recompiled - must unwind stack since everything above
+     and including selected method cannot be continued."
+
     "
      actually, this is not true, since the active methods will still be
      executed correctly - however, the code shown in the debugger is no
@@ -3920,7 +3942,7 @@
                     ^ self "/ cancelled
                 ].
             ].
-            category := '** As yet undefined **'.
+            category := '** As yet uncategorized **'.
         ].
 
         "/
@@ -3947,16 +3969,18 @@
              from context chain
             "
             (newMethod notNil and:[newMethod ~~ #Error]) ifTrue:[
-                self setContext:(top sender).
-
                 codeView modified:false.
 
-                "
-                 continue/step is no longer possible
-                "
-                canContinue := false.
+                doUnwind ifTrue:[
+                    self setContext:(top sender).
+
+                    "
+                     continue/step is no longer possible
+                    "
+                    canContinue := false.
+                    exitAction := #return.
+                ].
                 self showSelection:1.
-                exitAction := #return
             ].
         ].
     ].
@@ -4031,8 +4055,10 @@
     |con homeContext sel method code canAccept
      implementorClass lineNrInMethod rec m line
      sender selSender tryVars possibleBlocks errMsg 
-     mthd cls mCls rCls codeSet highlighter evaluatorClass|
-
+     mthd cls mCls rCls codeSet highlighter evaluatorClass
+     canDefine|
+
+    canDefine := false.
     currentMethod := nil.
 
     contextArray notNil ifTrue:[
@@ -4243,7 +4269,8 @@
                     homeContext isNil ifTrue:[
                         errMsg := '** sorry; cannot show code of all optimized blocks (yet) **'.
                     ] ifFalse:[
-                        errMsg := '** no method - no source **'
+                        errMsg := '** no method - no source **'.
+                        canDefine := true.
                     ]
                 ].
                 errMsg notNil ifTrue:[
@@ -4358,6 +4385,12 @@
     con := nil.
     homeContext := nil.
 
+    canDefine ifTrue:[
+        defineButton beVisible.
+    ] ifFalse:[
+        defineButton beInvisible.
+    ].
+
     "
      enable/disable some menu items
     "
@@ -4400,6 +4433,6 @@
 !DebugView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.281 2001-09-13 09:26:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.282 2001-09-24 09:45:26 cg Exp $'
 ! !
 DebugView initialize!