diff -r de091386bbae -r dde823aeca4c UIPainter.st --- a/UIPainter.st Fri Jan 30 12:49:54 1998 +0100 +++ b/UIPainter.st Fri Jan 30 14:58:10 1998 +0100 @@ -162,6 +162,9 @@ #fileLoad 'Opens dialog to load an interface from a class.' +#fileLoadSubspec +'Opens dialog to load an subspec interface from a class.' + #fileNew 'Creates new interface.' @@ -662,7 +665,7 @@ #'name:' 'infoBarSubSpec' #'layout:' #(#LayoutFrame 0 0.0 -22 1 0 1.0 0 1.0) #'majorKey:' #ToolApplicationModel - #'minorKey:' #windowSpecForInfoBar + #'minorKey:' #windowSpecForInfoBarWithClock ) ) ) @@ -716,6 +719,11 @@ #'activeHelpKey:' #fileLoad ) #(#MenuItem + #'label:' 'Load Subspec...' + #'value:' #loadSubspec + #'activeHelpKey:' #fileLoadSubspec + ) + #(#MenuItem #'label:' '-' ) #(#MenuItem @@ -1468,6 +1476,30 @@ self modifiedChannel value:false. ! +addWidgetOfSpec: aSpec + + |newSel| + (newSel := self pasteSpecifications:aSpec keepLayout:false at:0@0) notNil + ifTrue: + [ + self select: newSel + ] + ifFalse: + [ + treeView selection size = 0 + ifTrue: + [ + treeView selection: #(1). + ] + ifFalse: + [ + treeView selectNode: (treeView detectNode: [:n| n = treeView selectedNode parent]) + ]. + self addWidgetOfSpec: aSpec + ] + +! + cancel "cancel all changes done to the specification; reread attributes from the assigned component @@ -2400,7 +2432,13 @@ doFromClass - self loadFromInClassesOf: #Object + self loadFromMessage: + (ResourceSelectionBrowser + request: 'Load Interface From Class' + onSuperclass: nil + andClass: specClass + andSelector: specSelector + withResourceTypes: #(canvas)) ! doInstallAspects @@ -2594,17 +2632,6 @@ ! -loadFromInClassesOf: aSuperclassOrSymbol - - self loadFromMessage: - (ResourceSelectionBrowser - request: 'Load Interface From Class' - onSuperclass: aSuperclassOrSymbol - andClass: specClass - andSelector: specSelector - withResourceTypes: #(canvas)) -! - loadFromMessage: aMessage ((aMessage size > 0) and: [self checkModified]) @@ -2625,6 +2652,33 @@ ] ] +! + +loadSubspec + + |subSpecMessage| + (subSpecMessage := ResourceSelectionBrowser + request: 'Load Subspec From Class' + onSuperclass: nil + andClass: specClass + andSelector: specSelector + withResourceTypes: #(canvas)) notNil + ifTrue: + [ + |readStream aClass aSelector| + readStream := subSpecMessage readStream. + (aClass := Smalltalk at: (readStream upTo: $ ) asSymbol) notNil + ifTrue: + [ + aSelector := readStream upToEnd asSymbol. + (aClass name == specClass and: [aSelector == specSelector]) ifTrue: [^self warn: 'Current interface as subspec not allowed!!']. + (aClass respondsTo:aSelector) + ifTrue: + [ + self addWidgetOfSpec: (Array with: (UISubSpecification new majorKey: aClass name; minorKey: aSelector)) + ] + ] + ] ! ! !UIPainter methodsFor:'user interactions - dialog'! @@ -2934,7 +2988,7 @@ addProperty:aProperty "add a new item " - |parent| + |parent| parent := self detectItemRespondsToView:(aProperty view superView).