M haver/office/OfficeRoots.pck.st +56 -25
@@ 1,4 1,4 @@
-'From Haver7.0 [latest update: #6454] on 26 June 2024 at 2:01:48 pm'!
+'From Haver7.0 [latest update: #6454] on 26 June 2024 at 7:21:30 pm'!
'Description I provide a (persistent) root for all the office data like:
- ToDo items
@@ 6,10 6,10 @@
- Documents
and a lot more.'!
-!provides: 'OfficeRoots' 1 70!
+!provides: 'OfficeRoots' 1 71!
!requires: 'IdGeneration' 1 2 nil!
+!requires: 'ActionButtons' 1 47 nil!
!requires: 'ActionBuilder' 1 36 nil!
-!requires: 'ActionButtons' 1 47 nil!
!requires: 'States' 1 0 nil!
!requires: 'PlanF' 1 28 nil!
!requires: 'SystemMorphs' 1 15 nil!
@@ 27,9 27,9 @@ Modules newEnvironment: #OfficeRoots!
!interfacesOf: OfficeRoots!
Modules environment: #OfficeRoots ::
- interface: #API exporting: #(#OfficeItemListMorph #Roots #OfficeItemWrapper) ::
- interface: #SPI exporting: #(#ListItemWrapper #SubItemWrappersModel #AbstractRoots #SearchResultItemWrapper #OfficeItemListMorph #GroupingSubItemWrappersModel #ConfigurationSwitchingGroupingSubItemWrappersModel #OfficeItemWrapper) ::
- interface: #UTI exporting: #(#ListItemWrapper)!
+ interface: #API exporting: #(#OfficeItemWrapper #OfficeItemListMorph #Roots) ::
+ interface: #UTI exporting: #(#ListItemWrapper) ::
+ interface: #SPI exporting: #(#ConfigurationSwitchingGroupingSubItemWrappersModel #AbstractRoots #OfficeItemListMorph #ListItemWrapper #SearchResultItemWrapper #OfficeItemWrapper #SubItemWrappersModel #GroupingSubItemWrappersModel)!
!importsOf: OfficeRoots!
Modules environment: #OfficeRoots ::
@@ 73,9 73,20 @@ Modules environment: #OfficeRoots ::
(Modules>>#OfficeRoots>>#LinkingOfficeItem) class
instanceVariableNames: ''!
+!classDefinition: (Modules>>#OfficeRoots>>#AbstractRootOfficeItem) category: #'OfficeRoots-Items'!
+(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #AbstractRootOfficeItem
+ instanceVariableNames: 'root'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'OfficeRoots-Items'
+ inModule: #OfficeRoots!
+!classDefinition: (Modules>>#OfficeRoots>>#AbstractRootOfficeItem) class category: #'OfficeRoots-Items'!
+(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) class
+ instanceVariableNames: ''!
+
!classDefinition: (Modules>>#OfficeRoots>>#LinkContainersCollection) category: #'OfficeRoots-Items'!
-(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #LinkContainersCollection
- instanceVariableNames: 'root'
+(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) subclass: #LinkContainersCollection
+ instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'OfficeRoots-Items'
@@ 1590,29 1601,37 @@ recordDescriptionForPlanF: aStore
gettersAndSetters: #(
(itemsForPlanF itemsFromPlanF:))! !
-!(Modules>>#OfficeRoots>>#LinkContainersCollection) methodsFor: 'accessing' stamp: 'KLG 6/25/2024 20:47:55'!
+!(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 19:08:00'!
root
"Answer the value of root"
^ root! !
-!(Modules>>#OfficeRoots>>#LinkContainersCollection) methodsFor: 'accessing' stamp: 'KLG 6/25/2024 13:48:12'!
+!(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 19:08:23'!
root: aRoots
"Set the root object."
root := aRoots! !
-!(Modules>>#OfficeRoots>>#LinkContainersCollection) methodsFor: 'testing' stamp: 'KLG 6/25/2024 20:49:13'!
+!(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) methodsFor: 'testing' stamp: 'KLG 6/26/2024 19:08:15'!
canSave
"Answer true if we can save our self."
^ root notNil! !
-!(Modules>>#OfficeRoots>>#LinkContainersCollection) methodsFor: 'persistence' stamp: 'KLG 6/25/2024 20:52:56'!
+!(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) methodsFor: 'persistence' stamp: 'KLG 6/26/2024 19:17:27'!
+save
+ "Save me on my file entry."
+
+ self withStoreDo: [ :store | store backup ]! !
+
+!(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) methodsFor: 'persistence' stamp: 'KLG 6/26/2024 19:13:53'!
withStoreDo: aBlock
"Evaluate aBock with my store."
- ^ root ifNotNil: [ root withStoreDo: aBlock ]! !
+ ^ root
+ ifNotNil: [ root withStoreDo: aBlock ]
+ ifNil: [ super withStoreDo: aBlock ]! !
!(Modules>>#OfficeRoots>>#LinkContainersCollection) class methodsFor: 'instance creation' stamp: 'KLG 6/25/2024 13:32:31'!
browserMorphClass
@@ 2991,7 3010,7 @@ documents: anObject
updateObject: documents;
flush ]! !
-!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/25/2024 19:18:32'!
+!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 17:12:40'!
linkContainers
"Answer a collection of link containers."
@@ 3001,10 3020,12 @@ linkContainers
storeNonNil
updateObject: self;
flush ] ].
- linkContainers root: self. ": This instance variable is not persistent!!"
+ linkContainers
+ root: self; ": This instance variable is not persistent!!"
+ id: 'LC'. ": Use a descriptive id"
^ linkContainers! !
-!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 12/15/2023 15:34:29'!
+!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 17:13:13'!
portfolio
"Answer the value of investments"
@@ 3016,7 3037,9 @@ portfolio
ifNil: [
self notify: 'Investing package not available'.
^ nil ] ].
- portfolio root: self. ": This instance variable is not persistent!!"
+ portfolio
+ root: self; ": This instance variable is not persistent!!"
+ id: 'PF'. ": Use a descriptive id"
^ portfolio ! !
!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 12/14/2023 11:46:12'!
@@ 3030,14 3053,16 @@ portfolio: anObject
updateObject: portfolio;
flush ]! !
-!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/22/2023 11:21:55'!
+!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 17:13:37'!
spreadsheets
"Answer the value of spreadsheets"
spreadsheets ifNil: [
Feature require: 'SpreadSheet'.
self spreadsheets: (Modules >> #SpreadSheet >> #SpreadSheetList :: new) ].
- spreadsheets root: self. ": This instance variable is not persistent!!"
+ spreadsheets
+ root: self; ": This instance variable is not persistent!!"
+ id: 'SS'. ": Use a descriptive id"
^ spreadsheets! !
!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/22/2023 11:18:22'!
@@ 3051,14 3076,16 @@ spreadsheets: anObject
updateObject: spreadsheets;
flush ]! !
-!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/18/2023 21:59:27'!
+!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 17:14:14'!
todoItems
"Answer the value of todoItems"
todoItems ifNil: [
Feature require: 'NuMach'.
self todoItems: (Modules >> #NuMach >> #PersistentTodoItem :: defaultFromReferenceStream) ].
- todoItems root: self. ": This instance variable is not persistent!!"
+ todoItems
+ root: self; ": This instance variable is not persistent!!"
+ id: 'TD'. ": Use a descriptive id"
^todoItems! !
!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/14/2023 15:50:56'!
@@ 3071,14 3098,16 @@ todoItems: aPersistentTodoItem
updateObject: self;
flush ]! !
-!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/23/2023 13:27:21'!
+!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 17:15:19'!
workspaces
"Answer the value of workspaces"
workspaces ifNil: [
Feature require: 'Workspaces'.
self workspaces: (Modules >> #Workspaces >> #WorkspaceList :: new) ].
- workspaces root: self. ": This instance variable is not persistent!!"
+ workspaces
+ root: self; ": This instance variable is not persistent!!"
+ id: 'WorkS'. ": Use a descriptive id"
^ workspaces! !
!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/23/2023 20:01:38'!
@@ 3092,14 3121,16 @@ workspaces: anObject
updateObject: workspaces;
flush ]! !
-!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 9/6/2023 21:22:51'!
+!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 6/26/2024 17:15:40'!
worldStates
"Answer the world state list"
worldStates ifNil: [
Feature require: 'WorldStates'.
self worldStates: (Modules>>#WorldStates>>#WorldStateList :: new) ].
- worldStates root: self. ": This instance variable is not persistent!!"
+ worldStates
+ root: self; ": This instance variable is not persistent!!"
+ id: 'WorldS'.
^ worldStates! !
!(Modules>>#OfficeRoots>>#Roots) methodsFor: 'accessing' stamp: 'KLG 8/26/2023 16:10:58'!
M haver/office/WorldStates.pck.st +53 -85
@@ 1,10 1,10 @@
-'From Haver7.0 [latest update: #6452] on 8 June 2024 at 6:31:44 pm'!
+'From Haver7.0 [latest update: #6454] on 26 June 2024 at 7:22:35 pm'!
'Description I provide some means to persist the state of the world,
including window sets.'!
-!provides: 'WorldStates' 1 8!
+!provides: 'WorldStates' 1 9!
!requires: 'WindowSets' 1 27 nil!
!requires: 'FacetsMorphs' 1 4 nil!
-!requires: 'OfficeRoots' 1 22 nil!
+!requires: 'OfficeRoots' 1 71 nil!
!requires: 'ActionButtons' 1 33 nil!
SystemOrganization addCategory: #WorldStates!
SystemOrganization addCategory: #'WorldStates-Model'!
@@ 22,10 22,10 @@ Modules environment: #WorldStates ::
!importsOf: WorldStates!
Modules environment: #WorldStates ::
- import: #(#OfficeItemListMorph #OfficeItemWrapper) from: #API of: Modules>>#OfficeRoots ::
+ import: #(#DetailsMorph) from: #API of: Modules>>#FacetsMorphs ::
import: #(#ActionBuilder) from: #API of: Modules>>#ActionBuilder ::
import: #(#TargetToggleButton #TargetButton) from: #API of: Modules>>#ActionButtons ::
- import: #(#DetailsMorph) from: #API of: Modules>>#FacetsMorphs!
+ import: #(#OfficeItemListMorph #OfficeItemWrapper) from: #API of: Modules>>#OfficeRoots!
!classDefinition: (Modules>>#WorldStates>>#WindowSetsBrowser) category: #'WorldStates-Model'!
(Modules>>#WindowSets>>#WindowSetsBrowser) subclass: #WindowSetsBrowser
@@ 38,6 38,17 @@ Modules environment: #WorldStates ::
(Modules>>#WorldStates>>#WindowSetsBrowser) class
instanceVariableNames: ''!
+!classDefinition: (Modules>>#WorldStates>>#WorldStateList) category: #'WorldStates-Model'!
+(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) subclass: #WorldStateList
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'WorldStates-Model'
+ inModule: #WorldStates!
+!classDefinition: (Modules>>#WorldStates>>#WorldStateList) class category: #'WorldStates-Model'!
+(Modules>>#WorldStates>>#WorldStateList) class
+ instanceVariableNames: ''!
+
!classDefinition: (Modules>>#WorldStates>>#WorldState) category: #'WorldStates-Model'!
(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #WorldState
instanceVariableNames: 'snapshotDirty displayExtent windowSets morphMementos'
@@ 49,17 60,6 @@ Modules environment: #WorldStates ::
(Modules>>#WorldStates>>#WorldState) class
instanceVariableNames: ''!
-!classDefinition: (Modules>>#WorldStates>>#WorldStateList) category: #'WorldStates-Model'!
-(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #WorldStateList
- instanceVariableNames: 'root'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'WorldStates-Model'
- inModule: #WorldStates!
-!classDefinition: (Modules>>#WorldStates>>#WorldStateList) class category: #'WorldStates-Model'!
-(Modules>>#WorldStates>>#WorldStateList) class
- instanceVariableNames: ''!
-
!classDefinition: (Modules>>#WorldStates>>#WindowSetsBrowserMorph) category: #'WorldStates-Morphs'!
(Modules>>#WindowSets>>#WindowSetsBrowserMorph) subclass: #WindowSetsBrowserMorph
instanceVariableNames: ''
@@ 108,12 108,12 @@ Object subclass: #WindowStateMemento
!(Modules>>#WorldStates>>#WindowSetsBrowser) commentStamp: '<historical>' prior: 0!
I am a slightly modified window sets browser.!
+!(Modules>>#WorldStates>>#WorldStateList) commentStamp: '<historical>' prior: 0!
+I am represent a list of world states.!
+
!(Modules>>#WorldStates>>#WorldState) commentStamp: '<historical>' prior: 0!
I am a persistent world state.!
-!(Modules>>#WorldStates>>#WorldStateList) commentStamp: '<historical>' prior: 0!
-I am represent a list of world states.!
-
!(Modules>>#WorldStates>>#WindowSetsBrowserMorph) commentStamp: '<historical>' prior: 0!
I am browser morph for window sets with less actions.!
@@ 197,6 197,40 @@ windowSetItemWrapperClass
^ WindowSetItemWrapper! !
+!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'instance creation' stamp: 'KLG 8/26/2023 22:37:42'!
+browserMorphClass
+ "Answer my browser morph."
+
+ ^ OfficeItemListMorph! !
+
+!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'instance creation' stamp: 'KLG 8/26/2023 22:36:24'!
+itemClass
+ "Answer my item class."
+
+ ^ WorldState! !
+
+!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'user interface' stamp: 'KLG 8/26/2023 22:37:12'!
+displayCode
+ "Answer my 4 character display code."
+
+ ^ 'WstL'! !
+
+!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'user interface' stamp: 'KLG 8/26/2023 22:38:03'!
+printName
+ "Answer my print name."
+
+ ^ 'WorldStates'! !
+
+!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'persistence' stamp: 'KLG 8/26/2023 22:35:00'!
+recordDescriptionForPlanF: aStore
+ "Answer a record description for my instances."
+
+ ^ aStore recordDescriptionClass
+ forClass: self
+ storeInstanceVariables: #(id)
+ gettersAndSetters: #(
+ (itemsForPlanF itemsFromPlanF:))! !
+
!(Modules>>#WorldStates>>#WorldState) methodsFor: 'accessing' stamp: 'KLG 9/5/2023 19:18:22'!
collection
"Answer my window set collection."
@@ 355,72 389,6 @@ recordDescriptionForPlanF: aStore
gettersAndSetters: #(
(itemsForPlanF itemsFromPlanF:))! !
-!(Modules>>#WorldStates>>#WorldStateList) methodsFor: 'accessing' stamp: 'KLG 8/26/2023 22:35:00'!
-root
- "Answer the value of root"
-
- ^ root! !
-
-!(Modules>>#WorldStates>>#WorldStateList) methodsFor: 'accessing' stamp: 'KLG 8/26/2023 22:35:00'!
-root: anObject
- "Set the value of root"
-
- root := anObject! !
-
-!(Modules>>#WorldStates>>#WorldStateList) methodsFor: 'testing' stamp: 'KLG 8/26/2023 22:35:00'!
-canSave
- "Answer true if we can save our self."
-
- ^ root notNil! !
-
-!(Modules>>#WorldStates>>#WorldStateList) methodsFor: 'persistence PlanF' stamp: 'KLG 8/26/2023 22:35:00'!
-save
- "Save me on my file entry."
-
- self withStoreDo: [ :store | store backup ]! !
-
-!(Modules>>#WorldStates>>#WorldStateList) methodsFor: 'persistence PlanF' stamp: 'KLG 8/26/2023 22:35:00'!
-withStoreDo: aBlock
- "Evaluate aBock with my store."
-
- ^ root
- ifNotNil: [ root withStoreDo: aBlock ]
- ifNil: [ super withStoreDo: aBlock ]! !
-
-!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'instance creation' stamp: 'KLG 8/26/2023 22:37:42'!
-browserMorphClass
- "Answer my browser morph."
-
- ^ OfficeItemListMorph! !
-
-!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'instance creation' stamp: 'KLG 8/26/2023 22:36:24'!
-itemClass
- "Answer my item class."
-
- ^ WorldState! !
-
-!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'user interface' stamp: 'KLG 8/26/2023 22:37:12'!
-displayCode
- "Answer my 4 character display code."
-
- ^ 'WstL'! !
-
-!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'user interface' stamp: 'KLG 8/26/2023 22:38:03'!
-printName
- "Answer my print name."
-
- ^ 'WorldStates'! !
-
-!(Modules>>#WorldStates>>#WorldStateList) class methodsFor: 'persistence' stamp: 'KLG 8/26/2023 22:35:00'!
-recordDescriptionForPlanF: aStore
- "Answer a record description for my instances."
-
- ^ aStore recordDescriptionClass
- forClass: self
- storeInstanceVariables: #(id)
- gettersAndSetters: #(
- (itemsForPlanF itemsFromPlanF:))! !
-
!(Modules>>#WorldStates>>#WindowSetsBrowserMorph) methodsFor: 'GUI building' stamp: 'KLG 9/5/2023 19:53:35'!
buildActions
"Build all my actions."
M haver/office/spreadsheet/SpreadSheet.pck.st +53 -85
@@ 1,13 1,13 @@
-'From Haver 6.0 [latest update: #6067] on 1 November 2023 at 2:11:35 pm'!
+'From Haver7.0 [latest update: #6454] on 26 June 2024 at 7:21:41 pm'!
'Description I contain a simple spread sheet with either Smalltalk expression or expression in a simple language.'!
-!provides: 'SpreadSheet' 1 30!
-!requires: 'SystemMorphs' 1 7 nil!
+!provides: 'SpreadSheet' 1 31!
+!requires: 'PlanF' 1 19 nil!
!requires: 'ActionButtons' 1 31 nil!
-!requires: 'OfficeRoots' 1 22 nil!
+!requires: 'OfficeRoots' 1 71 nil!
!requires: 'EarleyCuisScanner' 1 8 nil!
!requires: 'GridLayout' 1 13 nil!
!requires: 'Earley' 1 72 nil!
-!requires: 'PlanF' 1 19 nil!
+!requires: 'SystemMorphs' 1 7 nil!
SystemOrganization addCategory: #SpreadSheet!
SystemOrganization addCategory: #'SpreadSheet-Grammar Items'!
SystemOrganization addCategory: #'SpreadSheet-Semantics'!
@@ 22,16 22,16 @@ Modules newEnvironment: #SpreadSheet!
!interfacesOf: SpreadSheet!
Modules environment: #SpreadSheet ::
- interface: #UTI exporting: #(#Sheet #Interpreter ) ::
- interface: #API exporting: #(#Grammar ) ::
+ interface: #API exporting: #(#Grammar) ::
+ interface: #UTI exporting: #(#Sheet #Interpreter) ::
interface: #SPI aliasFor: #API!
!importsOf: SpreadSheet!
Modules environment: #SpreadSheet ::
- import: #(#ε ) from: #API of: Modules>>#Earley ::
- import: #(#SystemWindow ) from: #API of: Modules>>#SystemMorphs ::
- import: #(#TargetButton ) from: #API of: Modules>>#ActionButtons ::
- import: #(#OfficeItemWrapper #OfficeItemListMorph ) from: #API of: Modules>>#OfficeRoots!
+ import: #(#ε) from: #API of: Modules>>#Earley ::
+ import: #(#SystemWindow) from: #API of: Modules>>#SystemMorphs ::
+ import: #(#TargetButton) from: #API of: Modules>>#ActionButtons ::
+ import: #(#OfficeItemWrapper #OfficeItemListMorph) from: #API of: Modules>>#OfficeRoots!
!classDefinition: (Modules>>#SpreadSheet>>#CellSourceModel) category: #'SpreadSheet-Model'!
TextModel subclass: #CellSourceModel
@@ 44,6 44,17 @@ TextModel subclass: #CellSourceModel
(Modules>>#SpreadSheet>>#CellSourceModel) class
instanceVariableNames: ''!
+!classDefinition: (Modules>>#SpreadSheet>>#SpreadSheetList) category: #'SpreadSheet-Model'!
+(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) subclass: #SpreadSheetList
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'SpreadSheet-Model'
+ inModule: #SpreadSheet!
+!classDefinition: (Modules>>#SpreadSheet>>#SpreadSheetList) class category: #'SpreadSheet-Model'!
+(Modules>>#SpreadSheet>>#SpreadSheetList) class
+ instanceVariableNames: ''!
+
!classDefinition: (Modules>>#SpreadSheet>>#Sheet) category: #'SpreadSheet-Model'!
(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #Sheet
instanceVariableNames: 'cellsByRow cellsByName interpreter addressPaster'
@@ 55,17 66,6 @@ TextModel subclass: #CellSourceModel
(Modules>>#SpreadSheet>>#Sheet) class
instanceVariableNames: ''!
-!classDefinition: (Modules>>#SpreadSheet>>#SpreadSheetList) category: #'SpreadSheet-Model'!
-(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #SpreadSheetList
- instanceVariableNames: 'root'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'SpreadSheet-Model'
- inModule: #SpreadSheet!
-!classDefinition: (Modules>>#SpreadSheet>>#SpreadSheetList) class category: #'SpreadSheet-Model'!
-(Modules>>#SpreadSheet>>#SpreadSheetList) class
- instanceVariableNames: ''!
-
!classDefinition: (Modules>>#SpreadSheet>>#Cell) category: #'SpreadSheet-Model'!
ActiveModel subclass: #Cell
instanceVariableNames: 'sheet rowIndex columnIndex sourceCode currentValue syntaxTree cellsReferenced cellsReferencingMe'
@@ 268,12 268,12 @@ Object subclass: #AbstractProcessor
!(Modules>>#SpreadSheet>>#CellSourceModel) commentStamp: '<historical>' prior: 0!
I am text model for editing spread sheet source code. !
+!(Modules>>#SpreadSheet>>#SpreadSheetList) commentStamp: '<historical>' prior: 0!
+I am represent a list of spread sheets, but I am no spread sheet by myself.!
+
!(Modules>>#SpreadSheet>>#Sheet) commentStamp: '<historical>' prior: 0!
I model a spread sheet.!
-!(Modules>>#SpreadSheet>>#SpreadSheetList) commentStamp: '<historical>' prior: 0!
-I am represent a list of spread sheets, but I am no spread sheet by myself.!
-
!(Modules>>#SpreadSheet>>#Cell) commentStamp: '<historical>' prior: 0!
I am a cell in my morph.!
@@ 423,6 423,34 @@ forSheet: aSheet andCell: aCell withGett
^ self new initalizeWithSheet: aSheet andCell: aCell withGetter: aSourceGetter andSetter: aSourceSetter! !
+!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'instance creation' stamp: 'KLG 8/21/2023 12:37:21'!
+browserMorphClass
+ "Answer my browser morph."
+
+ ^ OfficeItemListMorph! !
+
+!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'instance creation' stamp: 'KLG 8/21/2023 12:44:36'!
+itemClass
+ "Answer my item class."
+
+ ^ Sheet! !
+
+!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'user interface' stamp: 'KLG 8/21/2023 12:43:46'!
+printName
+ "Answer my print name."
+
+ ^ 'Spreadsheets'! !
+
+!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'persistence' stamp: 'KLG 8/21/2023 22:08:18'!
+recordDescriptionForPlanF: aStore
+ "Answer a record description for my instances."
+
+ ^ aStore recordDescriptionClass
+ forClass: self
+ storeInstanceVariables: #(id)
+ gettersAndSetters: #(
+ (itemsForPlanF itemsFromPlanF:))! !
+
!(Modules>>#SpreadSheet>>#Sheet) methodsFor: 'initialization' stamp: 'KLG 3/28/2023 12:02:01'!
initialize
"Initialize my cells."
@@ 583,66 611,6 @@ recordDescriptionForPlanF: aStore
(itemsForPlanF itemsFromPlanF:)
(cellsForPlanF cellsFromPlanF:))! !
-!(Modules>>#SpreadSheet>>#SpreadSheetList) methodsFor: 'accessing' stamp: 'KLG 8/21/2023 12:33:42'!
-root
- "Answer the value of root"
-
- ^ root! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) methodsFor: 'accessing' stamp: 'KLG 8/21/2023 12:33:42'!
-root: anObject
- "Set the value of root"
-
- root := anObject! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) methodsFor: 'testing' stamp: 'KLG 8/21/2023 12:56:38'!
-canSave
- "Answer true if we can save our self."
-
- ^ root notNil! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) methodsFor: 'persistence PlanF' stamp: 'KLG 8/21/2023 12:57:49'!
-save
- "Save me on my file entry."
-
- self withStoreDo: [ :store | store backup ]! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) methodsFor: 'persistence PlanF' stamp: 'KLG 8/22/2023 11:11:03'!
-withStoreDo: aBlock
- "Evaluate aBock with my store."
-
- ^ root
- ifNotNil: [ root withStoreDo: aBlock ]
- ifNil: [ super withStoreDo: aBlock ]! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'instance creation' stamp: 'KLG 8/21/2023 12:37:21'!
-browserMorphClass
- "Answer my browser morph."
-
- ^ OfficeItemListMorph! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'instance creation' stamp: 'KLG 8/21/2023 12:44:36'!
-itemClass
- "Answer my item class."
-
- ^ Sheet! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'user interface' stamp: 'KLG 8/21/2023 12:43:46'!
-printName
- "Answer my print name."
-
- ^ 'Spreadsheets'! !
-
-!(Modules>>#SpreadSheet>>#SpreadSheetList) class methodsFor: 'persistence' stamp: 'KLG 8/21/2023 22:08:18'!
-recordDescriptionForPlanF: aStore
- "Answer a record description for my instances."
-
- ^ aStore recordDescriptionClass
- forClass: self
- storeInstanceVariables: #(id)
- gettersAndSetters: #(
- (itemsForPlanF itemsFromPlanF:))! !
-
!(Modules>>#SpreadSheet>>#Cell) methodsFor: 'printing' stamp: 'KLG 3/31/2023 11:51:47'!
addressString
"Answer my address as string."
M haver/programming/Workspaces.pck.st +61 -93
@@ 1,14 1,14 @@
-'From Haver7.0 [latest update: #6454] on 21 June 2024 at 6:11:58 pm'!
+'From Haver7.0 [latest update: #6454] on 26 June 2024 at 7:24:32 pm'!
'Description I provide persistent and enhances Workspaces, featureing an bindings explorer.'!
-!provides: 'Workspaces' 1 34!
+!provides: 'Workspaces' 1 35!
!requires: 'IdGeneration' 1 2 nil!
!requires: 'ModulesTools' 1 44 nil!
+!requires: 'Modules' 1 116 nil!
!requires: 'ActionBuilder' 1 35 nil!
-!requires: 'Modules' 1 116 nil!
-!requires: 'OfficeRoots' 1 22 nil!
!requires: 'FacetsMorphs' 1 6 nil!
+!requires: 'ActionButtons' 1 42 nil!
!requires: 'PlanF' 1 22 nil!
-!requires: 'ActionButtons' 1 42 nil!
+!requires: 'OfficeRoots' 1 71 nil!
SystemOrganization addCategory: #Workspaces!
SystemOrganization addCategory: #'Workspaces-Model'!
SystemOrganization addCategory: #'Workspaces-Morphs'!
@@ 20,7 20,7 @@ Modules newEnvironment: #Workspaces!
!interfacesOf: Workspaces!
Modules environment: #Workspaces ::
- interface: #DMI exporting: #(#Workspace #WorkspaceMorph #TextModel #ObjectExplorerMorph #WorkspaceBindingWrapper) ::
+ interface: #DMI exporting: #(#Workspace #ObjectExplorerMorph #WorkspaceMorph #TextModel #WorkspaceBindingWrapper) ::
interface: #SPI exporting: #(#Workspace #WorkspaceMorph #TextModel) ::
interface: #UTI aliasFor: #API!
@@ 30,8 30,8 @@ Modules environment: #Workspaces ::
import: #(#ModulesListMorph) from: #SPI of: Modules>>#ModulesTools ::
import: #(#ActionBuilder) from: #API of: Modules>>#ActionBuilder ::
import: #(#TargetToggleButton #TargetButton #ActionButton) from: #API of: Modules>>#ActionButtons ::
+ import: #(#OfficeItemWrapper #OfficeItemListMorph) from: #API of: Modules>>#OfficeRoots ::
import: #(#SwitchingMorphButton #DetailsMorph) from: #API of: Modules>>#FacetsMorphs ::
- import: #(#OfficeItemWrapper #OfficeItemListMorph) from: #API of: Modules>>#OfficeRoots ::
import: #API of: Modules>>#SystemMorphs ::
import: #(#Module) from: #API of: Modules>>#Modules!
@@ 46,6 46,17 @@ Modules environment: #Workspaces ::
(Modules>>#Workspaces>>#ModulesList) class
instanceVariableNames: ''!
+!classDefinition: (Modules>>#Workspaces>>#WorkspaceList) category: #'Workspaces-Model'!
+(Modules>>#OfficeRoots>>#AbstractRootOfficeItem) subclass: #WorkspaceList
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Workspaces-Model'
+ inModule: #Workspaces!
+!classDefinition: (Modules>>#Workspaces>>#WorkspaceList) class category: #'Workspaces-Model'!
+(Modules>>#Workspaces>>#WorkspaceList) class
+ instanceVariableNames: ''!
+
!classDefinition: (Modules>>#Workspaces>>#BindingsModel) category: #'Workspaces-Model'!
(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #BindingsModel
instanceVariableNames: 'workspace'
@@ 79,17 90,6 @@ Modules environment: #Workspaces ::
(Modules>>#Workspaces>>#Workspace) class
instanceVariableNames: ''!
-!classDefinition: (Modules>>#Workspaces>>#WorkspaceList) category: #'Workspaces-Model'!
-(Modules>>#OfficeRoots>>#AbstractOfficeItem) subclass: #WorkspaceList
- instanceVariableNames: 'root'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'Workspaces-Model'
- inModule: #Workspaces!
-!classDefinition: (Modules>>#Workspaces>>#WorkspaceList) class category: #'Workspaces-Model'!
-(Modules>>#Workspaces>>#WorkspaceList) class
- instanceVariableNames: ''!
-
!classDefinition: (Modules>>#Workspaces>>#ObjectExplorer) category: #'Workspaces-Model'!
(Modules>>#SystemMorphs>>#AbstractSystemMorphModel) subclass: #ObjectExplorer
instanceVariableNames: 'rootObject monitorList currentSelection'
@@ 168,12 168,12 @@ ObjectExplorerWrapper subclass: #ObjectE
instanceVariableNames: ''!
+!(Modules>>#Workspaces>>#WorkspaceList) commentStamp: '<historical>' prior: 0!
+I am represent a list of work spaces, but I am no work space by myself.!
+
!(Modules>>#Workspaces>>#BindingsModel) commentStamp: '<historical>' prior: 0!
I am a model used in an object explorer for the workspace's bindings.!
-!(Modules>>#Workspaces>>#WorkspaceList) commentStamp: '<historical>' prior: 0!
-I am represent a list of work spaces, but I am no work space by myself.!
-
!(Modules>>#Workspaces>>#ObjectExplorer) commentStamp: '<historical>' prior: 0!
ObjectExplorer provides a hierarchical alternative to #inspect. Simply evaluate an expression like:
@@ 272,6 272,46 @@ moduleListItemClassForModules
^ ModuleListItemWrapper! !
+!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'accessing' stamp: 'KLG 8/23/2023 21:39:28'!
+workspaceModuleName
+ "Answer the module's name to be used to retrieve bindings."
+
+ ^ parentItem ifNotNil: [ parentItem workspaceModuleName ]! !
+
+!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'instance creation' stamp: 'KLG 8/23/2023 13:13:23'!
+browserMorphClass
+ "Answer my browser morph."
+
+ ^ OfficeItemListMorph! !
+
+!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'instance creation' stamp: 'KLG 8/26/2023 22:36:50'!
+itemClass
+ "Answer my item class."
+
+ ^ Workspace! !
+
+!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'user interface' stamp: 'KLG 8/23/2023 21:36:07'!
+displayCode
+ "Answer my 4 character display code."
+
+ ^ 'WspL'! !
+
+!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'user interface' stamp: 'KLG 8/23/2023 13:29:10'!
+printName
+ "Answer my print name."
+
+ ^ 'Workspaces'! !
+
+!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'persistence' stamp: 'KLG 8/23/2023 13:11:11'!
+recordDescriptionForPlanF: aStore
+ "Answer a record description for my instances."
+
+ ^ aStore recordDescriptionClass
+ forClass: self
+ storeInstanceVariables: #(id)
+ gettersAndSetters: #(
+ (itemsForPlanF itemsFromPlanF:))! !
+
!(Modules>>#Workspaces>>#BindingsModel) methodsFor: 'accessing' stamp: 'KLG 8/24/2023 13:31:00'!
workspace
"Answer the value of workspace"
@@ 1203,78 1243,6 @@ minmumLocalBindinigsIndexGap
^ 8! !
-!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'accessing' stamp: 'KLG 8/23/2023 13:11:11'!
-root
- "Answer the value of root"
-
- ^ root! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'accessing' stamp: 'KLG 8/23/2023 13:11:11'!
-root: anObject
- "Set the value of root"
-
- root := anObject! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'accessing' stamp: 'KLG 8/23/2023 21:39:28'!
-workspaceModuleName
- "Answer the module's name to be used to retrieve bindings."
-
- ^ parentItem ifNotNil: [ parentItem workspaceModuleName ]! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'testing' stamp: 'KLG 8/23/2023 13:11:11'!
-canSave
- "Answer true if we can save our self."
-
- ^ root notNil! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'persistence PlanF' stamp: 'KLG 8/23/2023 13:11:11'!
-save
- "Save me on my file entry."
-
- self withStoreDo: [ :store | store backup ]! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) methodsFor: 'persistence PlanF' stamp: 'KLG 8/23/2023 13:11:11'!
-withStoreDo: aBlock
- "Evaluate aBock with my store."
-
- ^ root
- ifNotNil: [ root withStoreDo: aBlock ]
- ifNil: [ super withStoreDo: aBlock ]! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'instance creation' stamp: 'KLG 8/23/2023 13:13:23'!
-browserMorphClass
- "Answer my browser morph."
-
- ^ OfficeItemListMorph! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'instance creation' stamp: 'KLG 8/26/2023 22:36:50'!
-itemClass
- "Answer my item class."
-
- ^ Workspace! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'user interface' stamp: 'KLG 8/23/2023 21:36:07'!
-displayCode
- "Answer my 4 character display code."
-
- ^ 'WspL'! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'user interface' stamp: 'KLG 8/23/2023 13:29:10'!
-printName
- "Answer my print name."
-
- ^ 'Workspaces'! !
-
-!(Modules>>#Workspaces>>#WorkspaceList) class methodsFor: 'persistence' stamp: 'KLG 8/23/2023 13:11:11'!
-recordDescriptionForPlanF: aStore
- "Answer a record description for my instances."
-
- ^ aStore recordDescriptionClass
- forClass: self
- storeInstanceVariables: #(id)
- gettersAndSetters: #(
- (itemsForPlanF itemsFromPlanF:))! !
-
!(Modules>>#Workspaces>>#ObjectExplorer) methodsFor: 'accessing' stamp: 'KLG 1/28/2024 14:08:09'!
getList