# HG changeset patch # User Jan Vrany # Date 1517692730 0 # Node ID e7d0453109a13507e5f94c5232ab8b4cc5482f3f # Parent df46b9c82b38a300073d40ec6e0b54dcd6e76818 Variable objects: splitted `VDBFrameApplication` into more generic `VDBVariableObjectListApplication` and `GDBFrameApplication`, the latter using the former. diff -r df46b9c82b38 -r e7d0453109a1 Make.proto --- a/Make.proto Thu Feb 01 23:28:51 2018 +0000 +++ b/Make.proto Sat Feb 03 21:18:50 2018 +0000 @@ -154,8 +154,9 @@ $(OUTDIR)VDBTabbingContainer.$(O) VDBTabbingContainer.$(C) VDBTabbingContainer.$(H): VDBTabbingContainer.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR) $(OUTDIR)VDBUnixDebuggerConsoleApplication.$(O) VDBUnixDebuggerConsoleApplication.$(C) VDBUnixDebuggerConsoleApplication.$(H): VDBUnixDebuggerConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR) $(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) VDBUnixInferiorConsoleApplication.$(C) VDBUnixInferiorConsoleApplication.$(H): VDBUnixInferiorConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR) -$(OUTDIR)VDBFrameApplication.$(O) VDBFrameApplication.$(C) VDBFrameApplication.$(H): VDBFrameApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR) $(OUTDIR)VDBStackApplication.$(O) VDBStackApplication.$(C) VDBStackApplication.$(H): VDBStackApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR) +$(OUTDIR)VDBVariableObjectListApplication.$(O) VDBVariableObjectListApplication.$(C) VDBVariableObjectListApplication.$(H): VDBVariableObjectListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR) +$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBVariableObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) # ENDMAKEDEPEND --- do not remove this line diff -r df46b9c82b38 -r e7d0453109a1 Make.spec --- a/Make.spec Thu Feb 01 23:28:51 2018 +0000 +++ b/Make.spec Sat Feb 03 21:18:50 2018 +0000 @@ -76,8 +76,9 @@ VDBTabbingContainer \ VDBUnixDebuggerConsoleApplication \ VDBUnixInferiorConsoleApplication \ - VDBFrameApplication \ VDBStackApplication \ + VDBVariableObjectListApplication \ + VDBFrameApplication \ @@ -108,8 +109,11 @@ $(OUTDIR)VDBTabbingContainer.$(O) \ $(OUTDIR)VDBUnixDebuggerConsoleApplication.$(O) \ $(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) \ + $(OUTDIR)VDBStackApplication.$(O) \ + $(OUTDIR)VDBVariableObjectListApplication.$(O) \ $(OUTDIR)VDBFrameApplication.$(O) \ - $(OUTDIR)VDBStackApplication.$(O) \ + $(OUTDIR)extensions.$(O) \ + diff -r df46b9c82b38 -r e7d0453109a1 VDBAbstractApplication.st --- a/VDBAbstractApplication.st Thu Feb 01 23:28:51 2018 +0000 +++ b/VDBAbstractApplication.st Sat Feb 03 21:18:50 2018 +0000 @@ -165,15 +165,31 @@ !VDBAbstractApplication methodsFor:'change & update'! enqueueDelayedUpdate: selector - self window sensor pushUserEvent: selector for:self + | w | + + w := self window. + w notNil ifTrue:[ + self window sensor pushUserEvent: selector for:self + ] ifFalse:[ + self perform: selector + ]. "Created: / 17-01-2018 / 06:50:29 / jv" + "Modified: / 03-02-2018 / 08:10:03 / Jan Vrany " ! enqueueDelayedUpdate: selector with: argument - self window sensor pushUserEvent: selector for:self withArgument: argument + | w | + + w := self window. + w notNil ifTrue:[ + self window sensor pushUserEvent: selector for:self withArgument: argument + ] ifFalse:[ + self perform: selector with: argument + ]. "Created: / 17-01-2018 / 06:50:39 / jv" + "Modified: / 03-02-2018 / 08:10:42 / Jan Vrany " ! update:something with:aParameter from:changedObject diff -r df46b9c82b38 -r e7d0453109a1 VDBAbstractListApplication.st --- a/VDBAbstractListApplication.st Thu Feb 01 23:28:51 2018 +0000 +++ b/VDBAbstractListApplication.st Sat Feb 03 21:18:50 2018 +0000 @@ -249,6 +249,14 @@ !VDBAbstractListApplication methodsFor:'change & update'! +enqueueDelayedInvalidateInternalList + internalListView notNil ifTrue:[ + internalListView scrolledView invalidate + ] + + "Created: / 01-02-2018 / 23:11:06 / Jan Vrany " +! + enqueueDelayedUpdateInternalList self enqueueDelayedUpdate: #delayedUpdateInternalList diff -r df46b9c82b38 -r e7d0453109a1 VDBDebuggerApplication.st --- a/VDBDebuggerApplication.st Thu Feb 01 23:28:51 2018 +0000 +++ b/VDBDebuggerApplication.st Sat Feb 03 21:18:50 2018 +0000 @@ -854,6 +854,18 @@ "Created: / 01-06-2017 / 13:42:25 / Jan Vrany " ! +onLogOutputEvent:aGDBLogOutputEvent + + Transcript nextPutAll: aGDBLogOutputEvent value. + Transcript isView ifTrue:[ + Transcript topView raise. + Transcript flash. + ]. + + "Created: / 02-02-2018 / 11:46:40 / Jan Vrany " + "Modified: / 02-02-2018 / 21:02:20 / Jan Vrany " +! + onRunningEvent: aGDBStoppedEvent self updateButtonEnablements @@ -904,10 +916,11 @@ when: GDBRunningEvent send: #onRunningEvent: to: self; when: GDBExitEvent send: #onExitEvent: to: self; when: GDBCommandResultEvent send: #onCommandResultEvent: to: self; - when: GDBThreadGroupExitedEvent send: #onThreadGroupExitedEvent: to: self. + when: GDBThreadGroupExitedEvent send: #onThreadGroupExitedEvent: to: self; + when: GDBLogOutputEvent send: #onLogOutputEvent: to: self. "Created: / 21-09-2014 / 22:43:21 / Jan Vrany " - "Modified: / 01-06-2017 / 23:42:52 / Jan Vrany " + "Modified: / 02-02-2018 / 21:02:04 / Jan Vrany " ! ! !VDBDebuggerApplication methodsFor:'menu actions'! diff -r df46b9c82b38 -r e7d0453109a1 VDBFrameApplication.st --- a/VDBFrameApplication.st Thu Feb 01 23:28:51 2018 +0000 +++ b/VDBFrameApplication.st Sat Feb 03 21:18:50 2018 +0000 @@ -10,8 +10,8 @@ "{ NameSpace: Smalltalk }" -VDBAbstractTreeApplication subclass:#VDBFrameApplication - instanceVariableNames:'frameHolder selectedVariableHolder' +VDBAbstractApplication subclass:#VDBFrameApplication + instanceVariableNames:'frameHolder variableObjectListHolder' classVariableNames:'' poolDictionaries:'' category:'VDB-UI-Others' @@ -30,44 +30,65 @@ " ! ! -!VDBFrameApplication class methodsFor:'accessing'! - -windowTitle - ^ 'Variables' - - "Created: / 11-07-2017 / 16:37:21 / Jan Vrany " -! ! - !VDBFrameApplication class methodsFor:'interface specs'! -columnsSpec +windowSpec "This resource specification was automatically generated - by the DataSetBuilder of ST/X." + by the UIPainter of ST/X." "Do not manually edit this!! If it is corrupted, - the DataSetBuilder may not be able to read the specification." + the UIPainter may not be able to read the specification." " - DataSetBuilder new openOnClass:VDBFrameApplication andSelector:#columnsSpec + UIPainter new openOnClass:VDBFrameApplication andSelector:#windowSpec + VDBFrameApplication new openInterface:#windowSpec + VDBFrameApplication open " - + - ^#( - (DataSetColumnSpec - label: 'Value' - labelAlignment: left - labelButtonType: Button - width: 1.0 - height: heightOfFirstRow - menuFromApplication: false - printSelector: value - backgroundSelector: backgroundColor - showRowSeparator: false - showColSeparator: false + ^ + #(FullSpec + name: windowSpec + uuid: 'aa3ebd80-08c8-11e8-bb5a-0021ccd5e3d3' + window: + (WindowSpec + label: 'Frame' + name: 'Frame' + uuid: '8a56b5e1-08c8-11e8-bb5a-0021ccd5e3d3' + min: (Point 10 10) + bounds: (Rectangle 0 0 300 300) ) - ) - + component: + (SpecCollection + collection: ( + (SubCanvasSpec + name: 'VariableObjectList' + layout: (LayoutFrame 0 0 0 0 0 1 0 1) + uuid: '8a56dcf0-08c8-11e8-bb5a-0021ccd5e3d3' + hasHorizontalScrollBar: false + hasVerticalScrollBar: false + miniScrollerVertical: false + majorKey: VDBVariableObjectListApplication + subAspectHolders: + (Array + + (SubChannelInfoSpec + subAspect: debuggerHolder + aspect: debuggerHolder + ) + (SubChannelInfoSpec + subAspect: variableObjectListHolder + aspect: variableObjectListHolder + ) + ) + createNewApplication: true + createNewBuilder: false + ) + ) + + ) + ) ! ! !VDBFrameApplication class methodsFor:'plugIn spec'! @@ -86,52 +107,12 @@ ^ #( #debuggerHolder #frameHolder - #selectedVariableHolder ). - "Modified: / 27-02-2015 / 16:04:37 / Jan Vrany " -! ! - -!VDBFrameApplication class methodsFor:'startup-web applications'! - -initialPageSpec - "this is only required for web-applications" - - ^ self shouldImplement -! - -pageSpecs - "this is only required for web-applications" - - ^ self shouldImplement -! ! - -!VDBFrameApplication methodsFor:'actions'! - -doDoubleClick - "Invoked when user double-clicks to list item." - - | selectedVariablePresenter | - - selectedVariablePresenter := self internalSelectionHolder value. - selectedVariablePresenter notNil ifTrue:[ - selectedVariablePresenter doCopyValue - ]. - - "Created: / 13-06-2017 / 17:09:46 / Jan Vrany " - "Modified: / 16-01-2018 / 23:33:12 / jv" ! ! !VDBFrameApplication methodsFor:'aspects'! -backgroundColorFor: aVDBVariableOjectPresenter - ^ aVDBVariableOjectPresenter varobj hasChanged - ifTrue:[ Color yellow lighter lighter ] - ifFalse:[ nil ] - - "Created: / 01-02-2018 / 09:08:42 / Jan Vrany " -! - frameHolder "return/create the 'frameHolder' value holder (automatically generated)" @@ -161,125 +142,74 @@ ]. ! -selectedVariableHolder - "return/create the 'selectedVariableHolder' value holder (automatically generated)" +variableObjectListHolder + "return/create the 'variableObjectListHolder' value holder (automatically generated)" - selectedVariableHolder isNil ifTrue:[ - selectedVariableHolder := ValueHolder new. - selectedVariableHolder addDependent:self. + variableObjectListHolder isNil ifTrue:[ + variableObjectListHolder := ValueHolder with: #(). + variableObjectListHolder addDependent:self. ]. - ^ selectedVariableHolder + ^ variableObjectListHolder + + "Modified: / 03-02-2018 / 07:33:13 / Jan Vrany " ! -selectedVariableHolder:something - "set the 'selectedVariableHolder' value holder (automatically generated)" +variableObjectListHolder:something + "set the 'variableObjectListHolder' value holder (automatically generated)" |oldValue newValue| - selectedVariableHolder notNil ifTrue:[ - oldValue := selectedVariableHolder value. - selectedVariableHolder removeDependent:self. + variableObjectListHolder notNil ifTrue:[ + oldValue := variableObjectListHolder value. + variableObjectListHolder removeDependent:self. ]. - selectedVariableHolder := something. - selectedVariableHolder notNil ifTrue:[ - selectedVariableHolder addDependent:self. + variableObjectListHolder := something. + variableObjectListHolder notNil ifTrue:[ + variableObjectListHolder addDependent:self. ]. - newValue := selectedVariableHolder value. + newValue := variableObjectListHolder value. oldValue ~~ newValue ifTrue:[ - self update:#value with:newValue from:selectedVariableHolder. + self update:#value with:newValue from:variableObjectListHolder. ]. ! ! !VDBFrameApplication methodsFor:'change & update'! +enqueueDelayedUpdateVariableObjectList + self enqueueDelayedUpdate:#delayedUpdateVariableObjectList + + "Created: / 03-02-2018 / 07:28:44 / Jan Vrany " +! + update:aspect with:param from:sender "Invoked when an object that I depend upon sends a change notification." - sender == frameHolder ifTrue:[ - self enqueueDelayedUpdateInternalList. + sender == frameHolder ifTrue:[ + self enqueueDelayedUpdateVariableObjectList. ^ self. ]. super update:aspect with:param from:sender - "Modified: / 27-02-2015 / 15:45:44 / Jan Vrany " + "Created: / 03-02-2018 / 09:48:30 / Jan Vrany " ! ! !VDBFrameApplication methodsFor:'change & update-delayed'! -delayedUpdateInternalList - | frame root | +delayedUpdateVariableObjectList + | frame list | debugger isNil ifTrue:[ - self internalListHolder root children:#(). + self variableObjectListHolder value:#(). ^ self. ]. frame := frameHolder value. frame isNil ifTrue:[ - self internalListHolder root children:#(). + self variableObjectListHolder value:#(). ^ self. ]. - root := self internalListHolder root. - root children:(frame variables - collect:[:v | - (VDBVariableObjectPresenter new) setVarobj:v varobj; - parent:root; - yourself - ]). - root expand. - internalListView notNil ifTrue:[ - internalListView invalidate. - ] + list := frame variables collect:[:v | v varobj ]. + self variableObjectListHolder value:list. - "Created: / 27-02-2015 / 15:47:18 / Jan Vrany " - "Modified: / 28-01-2018 / 22:43:44 / Jan Vrany " -! - -delayedUpdateSelection - | internalSelection | - - internalSelection := self internalSelectionHolder value. - internalSelection notNil ifTrue:[ - self selectedVariableHolder value: internalSelection varobj - ] ifFalse:[ - self selectedVariableHolder value: nil - ]. - - "Modified: / 28-01-2018 / 22:50:33 / Jan Vrany " + "Created: / 03-02-2018 / 07:30:50 / Jan Vrany " ! ! -!VDBFrameApplication methodsFor:'drag & drop'! - -dropObjects:aCollectionOfDropObjects - "drop manager wants to drop. - This is ony sent, if #canDrop: returned true. - Must be redefined in order for drop to work." - - ^ self shouldImplement -! ! - -!VDBFrameApplication methodsFor:'event handling'! - -onStoppedEvent: aGDBStoppedEvent - self enqueueDelayedInvalidateInternalList - - "Created: / 01-02-2018 / 23:14:05 / Jan Vrany " -! ! - -!VDBFrameApplication methodsFor:'initialization & release'! - -subscribe - "Register for debugger events. To be overrided by subclasses" - - debugger announcer - when: GDBStoppedEvent send: #onStoppedEvent: to: self - - "Created: / 01-02-2018 / 23:07:19 / Jan Vrany " -! ! - -!VDBFrameApplication class methodsFor:'documentation'! - -version_HG - - ^ '$Changeset: $' -! ! - diff -r df46b9c82b38 -r e7d0453109a1 VDBVariableObjectListApplication.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/VDBVariableObjectListApplication.st Sat Feb 03 21:18:50 2018 +0000 @@ -0,0 +1,294 @@ +" +jv:vdb - Visual / VM Debugger +Copyright (C) 2015-now Jan Vrany + +This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License' + +You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/ +" +"{ Package: 'jv:vdb' }" + +"{ NameSpace: Smalltalk }" + +VDBAbstractTreeApplication subclass:#VDBVariableObjectListApplication + instanceVariableNames:'frameHolder variableObjectListHolder selectedVariableObjectHolder' + classVariableNames:'' + poolDictionaries:'' + category:'VDB-UI-Others' +! + +!VDBVariableObjectListApplication class methodsFor:'documentation'! + +copyright +" +jv:vdb - Visual / VM Debugger +Copyright (C) 2015-now Jan Vrany + +This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License' + +You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/ +" +! ! + +!VDBVariableObjectListApplication class methodsFor:'accessing'! + +windowTitle + ^ 'Variables' + + "Created: / 11-07-2017 / 16:37:21 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication class methodsFor:'interface specs'! + +columnsSpec + "This resource specification was automatically generated + by the DataSetBuilder of ST/X." + + "Do not manually edit this!! If it is corrupted, + the DataSetBuilder may not be able to read the specification." + + " + DataSetBuilder new openOnClass:VDBFrameApplication andSelector:#columnsSpec + " + + + + ^#( + (DataSetColumnSpec + label: 'Value' + labelAlignment: left + labelButtonType: Button + width: 1.0 + height: heightOfFirstRow + menuFromApplication: false + printSelector: value + backgroundSelector: backgroundColor + showRowSeparator: false + showColSeparator: false + ) + ) + +! ! + +!VDBVariableObjectListApplication class methodsFor:'plugIn spec'! + +aspectSelectors + "This resource specification was automatically generated + by the UIPainter of ST/X." + + "Do not manually edit this. If it is corrupted, + the UIPainter may not be able to read the specification." + + "Return a description of exported aspects; + these can be connected to aspects of an embedding application + (if this app is embedded in a subCanvas)." + + ^ #( + #debuggerHolder + #variableObjectListHolder + #selectedVariableHolder + ). + + "Modified: / 03-02-2018 / 09:52:45 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication class methodsFor:'startup-web applications'! + +initialPageSpec + "this is only required for web-applications" + + ^ self shouldImplement +! + +pageSpecs + "this is only required for web-applications" + + ^ self shouldImplement +! ! + +!VDBVariableObjectListApplication methodsFor:'accessing'! + +variableObjectList: aSequencableCollection + self variableObjectListHolder value: aSequencableCollection + + "Created: / 03-02-2018 / 08:07:48 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication methodsFor:'actions'! + +doDoubleClick + "Invoked when user double-clicks to list item." + + | selectedVarObjPresenter | + + selectedVarObjPresenter := self internalSelectionHolder value. + selectedVarObjPresenter notNil ifTrue:[ + selectedVarObjPresenter varobj inspect + ]. + + "Created: / 13-06-2017 / 17:09:46 / Jan Vrany " + "Modified: / 16-01-2018 / 23:33:12 / jv" + "Modified: / 03-02-2018 / 08:03:56 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication methodsFor:'aspects'! + +backgroundColorFor: aVDBVariableOjectPresenter + ^ aVDBVariableOjectPresenter varobj hasChanged + ifTrue:[ Color yellow lighter lighter ] + ifFalse:[ nil ] + + "Created: / 01-02-2018 / 09:08:42 / Jan Vrany " +! + +selectedVariableObjectHolder + "return/create the 'selectedVariableHolder' value holder (automatically generated)" + + selectedVariableObjectHolder isNil ifTrue:[ + selectedVariableObjectHolder := ValueHolder new. + selectedVariableObjectHolder addDependent:self. + ]. + ^ selectedVariableObjectHolder +! + +selectedVariableObjectHolder:something + "set the 'selectedVariableHolder' value holder (automatically generated)" + + | oldValue newValue | + + selectedVariableObjectHolder notNil ifTrue:[ + oldValue := selectedVariableObjectHolder value. + selectedVariableObjectHolder removeDependent:self. + ]. + selectedVariableObjectHolder := something. + selectedVariableObjectHolder notNil ifTrue:[ + selectedVariableObjectHolder addDependent:self. + ]. + newValue := selectedVariableObjectHolder value. + oldValue ~~ newValue ifTrue:[ + self + update:#value + with:newValue + from:selectedVariableObjectHolder. + ]. +! + +variableObjectListHolder + "return/create the 'variableObjectListHolder' value holder (automatically generated)" + + variableObjectListHolder isNil ifTrue:[ + variableObjectListHolder := ValueHolder with: #(). + variableObjectListHolder addDependent:self. + ]. + ^ variableObjectListHolder + + "Modified: / 03-02-2018 / 07:33:13 / Jan Vrany " +! + +variableObjectListHolder:something + "set the 'variableObjectListHolder' value holder (automatically generated)" + + |oldValue newValue| + + variableObjectListHolder notNil ifTrue:[ + oldValue := variableObjectListHolder value. + variableObjectListHolder removeDependent:self. + ]. + variableObjectListHolder := something. + variableObjectListHolder notNil ifTrue:[ + variableObjectListHolder addDependent:self. + ]. + newValue := variableObjectListHolder value. + oldValue ~~ newValue ifTrue:[ + self update:#value with:newValue from:variableObjectListHolder. + ]. +! ! + +!VDBVariableObjectListApplication methodsFor:'change & update'! + +update:aspect with:param from:sender + "Invoked when an object that I depend upon sends a change notification." + + sender == variableObjectListHolder ifTrue:[ + self enqueueDelayedUpdateInternalList. + ^ self. + ]. + super update:aspect with:param from:sender + + "Modified: / 03-02-2018 / 09:47:53 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication methodsFor:'change & update-delayed'! + +delayedUpdateInternalList + | root | + + debugger isNil ifTrue:[ + self internalListHolder root children:#(). + ^ self. + ]. + root := self internalListHolder root. + root children:(self variableObjectListHolder value + collect:[:v | + (VDBVariableObjectPresenter new) setVarobj:v; + parent:root; + yourself + ]). + root expand. + internalListView notNil ifTrue:[ + internalListView invalidate. + ] + + "Created: / 27-02-2015 / 15:47:18 / Jan Vrany " + "Modified: / 03-02-2018 / 07:31:34 / Jan Vrany " +! + +delayedUpdateSelection + | internalSelection | + + internalSelection := self internalSelectionHolder value. + internalSelection notNil ifTrue:[ + self selectedVariableObjectHolder value: internalSelection varobj + ] ifFalse:[ + self selectedVariableObjectHolder value: nil + ]. + + "Modified: / 28-01-2018 / 22:50:33 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication methodsFor:'drag & drop'! + +dropObjects:aCollectionOfDropObjects + "drop manager wants to drop. + This is ony sent, if #canDrop: returned true. + Must be redefined in order for drop to work." + + ^ self shouldImplement +! ! + +!VDBVariableObjectListApplication methodsFor:'event handling'! + +onStoppedEvent: aGDBStoppedEvent + self enqueueDelayedInvalidateInternalList + + "Created: / 01-02-2018 / 23:14:05 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication methodsFor:'initialization & release'! + +subscribe + "Register for debugger events. To be overrided by subclasses" + + debugger announcer + when: GDBStoppedEvent send: #onStoppedEvent: to: self + + "Created: / 01-02-2018 / 23:07:19 / Jan Vrany " +! ! + +!VDBVariableObjectListApplication class methodsFor:'documentation'! + +version_HG + + ^ '$Changeset: $' +! ! + diff -r df46b9c82b38 -r e7d0453109a1 abbrev.stc --- a/abbrev.stc Thu Feb 01 23:28:51 2018 +0000 +++ b/abbrev.stc Sat Feb 03 21:18:50 2018 +0000 @@ -26,5 +26,5 @@ VDBTabbingContainer VDBTabbingContainer jv:vdb 'VDB-UI-Containers' 2 VDBUnixDebuggerConsoleApplication VDBUnixDebuggerConsoleApplication jv:vdb 'VDB-UI-Console-Unix' 2 VDBUnixInferiorConsoleApplication VDBUnixInferiorConsoleApplication jv:vdb 'VDB-UI-Console-Unix' 2 -VDBFrameApplication VDBFrameApplication jv:vdb 'VDB-UI-Others' 2 VDBStackApplication VDBStackApplication jv:vdb 'VDB-UI-Others' 2 +VDBVariableObjectListApplication VDBVariableObjectListApplication jv:vdb 'VDB-UI-Others' 2 diff -r df46b9c82b38 -r e7d0453109a1 bc.mak --- a/bc.mak Thu Feb 01 23:28:51 2018 +0000 +++ b/bc.mak Sat Feb 03 21:18:50 2018 +0000 @@ -101,8 +101,9 @@ $(OUTDIR)VDBTabbingContainer.$(O) VDBTabbingContainer.$(C) VDBTabbingContainer.$(H): VDBTabbingContainer.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR) $(OUTDIR)VDBUnixDebuggerConsoleApplication.$(O) VDBUnixDebuggerConsoleApplication.$(C) VDBUnixDebuggerConsoleApplication.$(H): VDBUnixDebuggerConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR) $(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) VDBUnixInferiorConsoleApplication.$(C) VDBUnixInferiorConsoleApplication.$(H): VDBUnixInferiorConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR) -$(OUTDIR)VDBFrameApplication.$(O) VDBFrameApplication.$(C) VDBFrameApplication.$(H): VDBFrameApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR) $(OUTDIR)VDBStackApplication.$(O) VDBStackApplication.$(C) VDBStackApplication.$(H): VDBStackApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR) +$(OUTDIR)VDBVariableObjectListApplication.$(O) VDBVariableObjectListApplication.$(C) VDBVariableObjectListApplication.$(H): VDBVariableObjectListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR) +$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBVariableObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) # ENDMAKEDEPEND --- do not remove this line diff -r df46b9c82b38 -r e7d0453109a1 extensions.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extensions.st Sat Feb 03 21:18:50 2018 +0000 @@ -0,0 +1,27 @@ +"{ Package: 'jv:vdb' }"! + +!GDBVariableObject methodsFor:'inspecting'! + +inspector2TabVariable + + + | varObjApp | + + varObjApp := Smalltalk at: #VDBVariableObjectListApplication ifAbsent:[ ^ nil ]. + ^ (self newInspector2Tab) + label:'Variable'; + priority:95; + "/ view: [ ... ]; + application: [ varObjApp new debugger: debugger; variableObjectList: (Array with: self); yourself ]; + "/ text: [ ... ]; + yourself + + "Modified: / 03-02-2018 / 09:58:42 / Jan Vrany " +! ! + +!jv_vdb class methodsFor:'documentation'! + +extensionsVersion_HG + + ^ '$Changeset: $' +! ! diff -r df46b9c82b38 -r e7d0453109a1 jv_vdb.st --- a/jv_vdb.st Thu Feb 01 23:28:51 2018 +0000 +++ b/jv_vdb.st Sat Feb 03 21:18:50 2018 +0000 @@ -51,7 +51,7 @@ Please take a look at the #referencedPreRequisites method as well." ^ #( - #'jv:libgdbs' "GDBOutputFormats - shared pool used by VDBMemoryApplication" + #'jv:libgdbs' "GDBDebuggerObject - extended" #'stx:libbasic' "LibraryDefinition - superclass of jv_vdb" #'stx:libview2' "ApplicationModel - superclass of VDBAbstractApplication" #'stx:libwidg2' "AbstractHierarchicalItem - superclass of VDBBreakpointPresenter" @@ -124,8 +124,9 @@ VDBTabbingContainer VDBUnixDebuggerConsoleApplication VDBUnixInferiorConsoleApplication + VDBStackApplication + VDBVariableObjectListApplication VDBFrameApplication - VDBStackApplication ) ! @@ -136,6 +137,7 @@ if it has extensions." ^ #( + GDBVariableObject inspector2TabVariable ) ! ! diff -r df46b9c82b38 -r e7d0453109a1 libInit.cc --- a/libInit.cc Thu Feb 01 23:28:51 2018 +0000 +++ b/libInit.cc Sat Feb 03 21:18:50 2018 +0000 @@ -41,10 +41,11 @@ extern void _VDBTabbingContainer_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); extern void _VDBUnixDebuggerConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); extern void _VDBUnixInferiorConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); +extern void _VDBStackApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); +extern void _VDBVariableObjectListApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); extern void _VDBFrameApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); -extern void _VDBStackApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); - +extern void _jv_137vdb_extensions_Init(int pass, struct __vmData__ *__pRT__, OBJ snd); void _libjv_vdb_InitDefinition(int pass, struct __vmData__ *__pRT__, OBJ snd) { @@ -82,9 +83,10 @@ _VDBTabbingContainer_Init(pass,__pRT__,snd); _VDBUnixDebuggerConsoleApplication_Init(pass,__pRT__,snd); _VDBUnixInferiorConsoleApplication_Init(pass,__pRT__,snd); + _VDBStackApplication_Init(pass,__pRT__,snd); + _VDBVariableObjectListApplication_Init(pass,__pRT__,snd); _VDBFrameApplication_Init(pass,__pRT__,snd); - _VDBStackApplication_Init(pass,__pRT__,snd); - + _jv_137vdb_extensions_Init(pass,__pRT__,snd); __END_PACKAGE__(); }