# HG changeset patch # User Claus Gittinger # Date 866543673 -7200 # Node ID 575239b7ad0b41d2a5bc76a7a8817e2a63fcb839 # Parent 34d5602e13d773a256dac3d1313b4571e4e7d062 confirm pick/new/fromClass if unsaved & modified diff -r 34d5602e13d7 -r 575239b7ad0b UIPainter.st --- a/UIPainter.st Mon Jun 16 19:00:00 1997 +0200 +++ b/UIPainter.st Tue Jun 17 12:34:33 1997 +0200 @@ -157,7 +157,7 @@ #(#Menu #( #(#MenuItem #'label:' 'new' - #'value:' #removeAll + #'value:' #doNew ) #(#MenuItem #'label:' 'from class ...' @@ -236,7 +236,7 @@ #'submenu:' #(#Menu #( #(#MenuItem - #'label:' 'class && method' + #'label:' 'class && method ...' #'value:' #defineClassAndSelector ) #(#MenuItem @@ -252,7 +252,7 @@ #'value:' #doInstallAspects ) #(#MenuItem - #'label:' 'windowSpec' + #'label:' 'show windowSpec' #'value:' #doWindowSpec ) #(#MenuItem @@ -288,6 +288,7 @@ nil ) + "Modified: 17.6.1997 / 12:30:17 / cg" ! nameAndSelectorSpec @@ -1125,59 +1126,66 @@ ! doFromClass - |className methodName cls sel accepted failed spec s painter| - - className := '' asValue. - methodName := '' asValue. - painter := self painter. + |className methodName cls sel accepted failed spec s painter| - (s := painter className) notNil ifTrue:[ - className value:s - ]. - (s := painter methodName) notNil ifTrue:[ - methodName value:s - ]. + objectList painter isModified ifTrue:[ + (self confirm:'edit another interface without saving your modifications ?') ifFalse:[ + ^ self + ] + ]. - failed := false. - [ - accepted := - (DialogBox new - addTextLabel:'Classes name:'; - addInputFieldOn:className; - addVerticalSpace; - addTextLabel:'methods name:'; - addInputFieldOn:methodName; - addAbortButton; - addOkButton; - open - ) accepted. + className := '' asValue. + methodName := '' asValue. + painter := self painter. + + (s := painter className) notNil ifTrue:[ + className value:s + ]. + (s := painter methodName) notNil ifTrue:[ + methodName value:s + ]. - accepted ifTrue:[ - cls := Smalltalk classNamed:className value. - cls isNil ifTrue:[ + failed := false. + [ + accepted := + (DialogBox new + addTextLabel:'Classes name:'; + addInputFieldOn:className; + addVerticalSpace; + addTextLabel:'methods name:'; + addInputFieldOn:methodName; + addAbortButton; + addOkButton; + open + ) accepted. + + accepted ifTrue:[ + cls := Smalltalk classNamed:className value. + cls isNil ifTrue:[ + failed := true. + self warn:'no such class'. + ] ifFalse:[ + sel := methodName value asSymbol. + (cls respondsTo:sel ) ifFalse:[ failed := true. - self warn:'no such class'. - ] ifFalse:[ - sel := methodName value asSymbol. - (cls respondsTo:sel ) ifFalse:[ + self warn:'no such method' + ] ifTrue:[ + spec := cls perform:sel. + spec isArray ifFalse:[ failed := true. - self warn:'no such method' - ] ifTrue:[ - spec := cls perform:sel. - spec isArray ifFalse:[ - failed := true. - self warn:'not a windowSpec method' - ]. - "/ ok, got it - painter className:className value. - painter methodName:methodName value. - painter setupFromSpec:spec. - ^ self - ] - ] - ] - ] doWhile:[accepted and:[failed]]. + self warn:'not a windowSpec method' + ]. + "/ ok, got it + painter className:className value. + painter methodName:methodName value. + painter setupFromSpec:spec. + ^ self + ] + ] + ] + ] doWhile:[accepted and:[failed]]. + "Modified: 17.6.1997 / 12:33:36 / cg" ! doInstallAspects @@ -1263,6 +1271,18 @@ ! +doNew + objectList painter isModified ifTrue:[ + (self confirm:'new interface without saving your modifications ?') ifFalse:[ + ^ self + ] + ]. + + self removeAll + + "Modified: 17.6.1997 / 12:33:31 / cg" +! + doOpen |box| @@ -1278,6 +1298,12 @@ doPickAView |painter view className methodName cls sel accepted spec s| + objectList painter isModified ifTrue:[ + (self confirm:'pick another interface without saving your modifications ?') ifFalse:[ + ^ self + ] + ]. + (view := Display viewFromUser) notNil ifTrue:[ painter := self painter. @@ -1288,6 +1314,8 @@ painter className:view class name. painter methodName:#newSpec. ] + + "Modified: 17.6.1997 / 12:33:23 / cg" ! doRaise