--- a/UIPainterView.st Thu Jan 10 13:59:22 2008 +0100
+++ b/UIPainterView.st Thu Jan 10 13:59:39 2008 +0100
@@ -1821,13 +1821,13 @@
!
propertyOfName:aString
- "returns property assigned to name
- "
+ "returns the property for a given widgets name (name in tree)"
+
|name|
aString isNil ifFalse:[
- name := aString string withoutSeparators.
- ^ treeView propertyDetect:[:p| p name = name ].
+ name := aString string withoutSeparators.
+ ^ treeView propertyDetect:[:p| p name = name ].
].
^ nil
!
@@ -1859,31 +1859,28 @@
!
uniqueNameFor:aSpecOrString
- "generate and return an unique name for a class
- "
- |next name size|
-
- aSpecOrString isString ifFalse:[name := aSpecOrString userFriendlyName]
- ifTrue:[name := aSpecOrString].
-
- size := name size + 1.
- next := 0.
+ "generate and return a unique name for a specClass or an items name.
+ (unique name in the tree)"
+
+ |maxUsedIndex name nameLen|
+
+ name := aSpecOrString isString
+ ifFalse:[aSpecOrString userFriendlyName]
+ ifTrue:[aSpecOrString].
+
+ nameLen := name size.
+ maxUsedIndex := 0.
treeView propertiesDo:[:p|
- |n|
- n := p name.
-
- (n size >= size and:[n startsWith:name]) ifTrue:[
- next := next max:(p extractNumberStartingAt:size)
- ]
+ |thisName|
+
+ thisName := p name.
+
+ (thisName size > nameLen and:[thisName startsWith:name]) ifTrue:[
+ maxUsedIndex := maxUsedIndex max:(p extractNumberStartingAt:nameLen+1)
+ ]
].
- next := next + 1.
- name := name, next printString.
- ^ name
-
-
-
-
+ ^ name, (maxUsedIndex+1) printString.
!
uniqueNameOf:aView
@@ -2014,25 +2011,25 @@
"/ remember view<->spec associations to tree
aBuilder componentCreationHook:[:aView :aSpec :builder|
- |sv p s n|
-
- p := ViewProperty new.
- s := aSpec copy.
- p spec:s.
- p view:aView.
+ |newProperty copyOfSpec nameOfSpec|
+
+ newProperty := ViewProperty new.
+ copyOfSpec := aSpec copy.
+ newProperty spec:copyOfSpec.
+ newProperty view:aView.
"/ break refs to child-specs
"/ (not needed, as we keep the child info in the view hierarchy)
- s class supportsSubComponents ifTrue:[
- s component:nil
+ copyOfSpec class supportsSubComponents ifTrue:[
+ copyOfSpec component:nil
].
- n := s name.
-
- (n isNil or:[(self propertyOfName:n) notNil]) ifTrue:[
- s name:(self uniqueNameFor:s)
+ nameOfSpec := copyOfSpec name.
+
+ (nameOfSpec isNil or:[(self propertyOfName:nameOfSpec) notNil]) ifTrue:[
+ copyOfSpec name:(self uniqueNameFor:copyOfSpec)
].
- treeView addProperty:p.
+ treeView addProperty:newProperty.
].
^ aSpecification buildViewWithLayoutFor:aBuilder in:aFrame.
@@ -2435,18 +2432,26 @@
!UIPainterView::ViewProperty methodsFor:'misc'!
extractNumberStartingAt:anIndex
- "return the number from the name starting at anIndex or 0.
+ "return the number from the name starting at anIndex (or 0 if there is no number)."
+
+ "/ cg: code cleanup.
+ ^ Integer
+ readFrom:(self name readStream skip:(anIndex-1))
+ onError:0
+
+"/ |val|
+"/
+"/ val := 0.
+"/
+"/ self name from:anIndex do:[:c|
+"/ c isDigit ifTrue:[val := val * 10 + c digitValue]
+"/ ifFalse:[^ 0]
+"/ ].
+"/ ^ val
+
"
- |val|
-
- val := 0.
-
- self name from:anIndex do:[:c|
- c isDigit ifTrue:[val := val * 10 + c digitValue]
- ifFalse:[^ 0]
- ].
- ^ val
-
+ (self basicNew spec:(ButtonSpec new name:'button12')) extractNumberStartingAt:7
+ "
! !
!UIPainterView::ViewProperty methodsFor:'spec messages'!