# HG changeset patch # User Claus Gittinger # Date 1199969979 -3600 # Node ID ae58d3ccbbfd6f79828da8f807292c56772b244b # Parent 33c98cefa7e6bb0e2494fbe4426057f44c94bb33 refactorings & code cleanup diff -r 33c98cefa7e6 -r ae58d3ccbbfd UIPainterView.st --- 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'!