Variable objects: splitted `VDBFrameApplication`
into more generic `VDBVariableObjectListApplication`
and `GDBFrameApplication`, the latter using the former.
--- 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
--- 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) \
+
--- 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 <jan.vrany@fit.cvut.cz>"
!
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 <jan.vrany@fit.cvut.cz>"
!
update:something with:aParameter from:changedObject
--- 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 <jan.vrany@fit.cvut.cz>"
+!
+
enqueueDelayedUpdateInternalList
self enqueueDelayedUpdate: #delayedUpdateInternalList
--- 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 <jan.vrany@fit.cvut.cz>"
!
+onLogOutputEvent:aGDBLogOutputEvent
+
+ Transcript nextPutAll: aGDBLogOutputEvent value.
+ Transcript isView ifTrue:[
+ Transcript topView raise.
+ Transcript flash.
+ ].
+
+ "Created: / 02-02-2018 / 11:46:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-02-2018 / 21:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
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 <jan.vrany@fit.cvut.cz>"
- "Modified: / 01-06-2017 / 23:42:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 02-02-2018 / 21:02:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBDebuggerApplication methodsFor:'menu actions'!
--- 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 <jan.vrany@fit.cvut.cz>"
-! !
-
!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
"
- <resource: #tableColumns>
+ <resource: #canvas>
- ^#(
- (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 <jan.vrany@fit.cvut.cz>"
-! !
-
-!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 <jan.vrany@fit.cvut.cz>"
- "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 <jan.vrany@fit.cvut.cz>"
-!
-
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 <jan.vrany@fit.cvut.cz>"
!
-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 <jan.vrany@fit.cvut.cz>"
+!
+
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 <jan.vrany@fit.cvut.cz>"
+ "Created: / 03-02-2018 / 09:48:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!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 <jan.vrany@fit.cvut.cz>"
- "Modified: / 28-01-2018 / 22:43:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-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 <jan.vrany@fit.cvut.cz>"
+ "Created: / 03-02-2018 / 07:30:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!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 <jan.vrany@fit.cvut.cz>"
-! !
-
-!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 <jan.vrany@fit.cvut.cz>"
-! !
-
-!VDBFrameApplication class methodsFor:'documentation'!
-
-version_HG
-
- ^ '$Changeset: <not expanded> $'
-! !
-
--- /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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!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
+ "
+
+ <resource: #tableColumns>
+
+ ^#(
+ (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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!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 <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-01-2018 / 23:33:12 / jv"
+ "Modified: / 03-02-2018 / 08:03:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBVariableObjectListApplication methodsFor:'aspects'!
+
+backgroundColorFor: aVDBVariableOjectPresenter
+ ^ aVDBVariableOjectPresenter varobj hasChanged
+ ifTrue:[ Color yellow lighter lighter ]
+ ifFalse:[ nil ]
+
+ "Created: / 01-02-2018 / 09:08:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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 <jan.vrany@fit.cvut.cz>"
+!
+
+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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!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 <jan.vrany@fit.cvut.cz>"
+ "Modified: / 03-02-2018 / 07:31:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBVariableObjectListApplication class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- 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
--- 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
--- /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
+ <inspector2Tab>
+
+ | 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 <jan.vrany@fit.cvut.cz>"
+! !
+
+!jv_vdb class methodsFor:'documentation'!
+
+extensionsVersion_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
--- 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
)
! !
--- 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__();
}