3317 ! |
3317 ! |
3318 |
3318 |
3319 openEditMenu |
3319 openEditMenu |
3320 "opens a Menu Editor on current widget" |
3320 "opens a Menu Editor on current widget" |
3321 |
3321 |
3322 |cls selectorOrMenu editor selectedSpec spec holder| |
3322 |cls selectorOrMenu editor selectedSpec windowSpec holder| |
3323 |
3323 |
3324 (cls := self resolveName:specClassName) isNil ifTrue:[ |
3324 self isEditingSpecOnly ifFalse:[ |
3325 self askForSaving ifTrue:[cls := self resolveName:specClassName]. |
3325 "/ normal mode |
3326 ]. |
3326 (cls := self resolveName:specClassName) isNil ifTrue:[ |
3327 cls isNil ifTrue:[^ self]. |
3327 self askForSaving ifTrue:[cls := self resolveName:specClassName]. |
|
3328 ]. |
|
3329 cls isNil ifTrue:[^ self]. |
|
3330 ]. |
3328 |
3331 |
3329 self acceptOrIgnoreSectionModification. |
3332 self acceptOrIgnoreSectionModification. |
3330 spec := self specTool specification. |
3333 windowSpec := self specTool specification. |
3331 |
3334 |
3332 (selectorOrMenu := spec menuSelector) notNil ifTrue:[ |
3335 self isEditingSpecOnly ifTrue:[ |
3333 selectorOrMenu := selectorOrMenu asSymbol |
3336 selectorOrMenu := windowSpec menu |
3334 ] ifFalse:[ |
3337 ] ifFalse:[ |
3335 "/ cg: q&d hack ... |
3338 (selectorOrMenu := windowSpec menuSelector) notNil ifTrue:[ |
3336 selectorOrMenu := nil. |
3339 selectorOrMenu := selectorOrMenu asSymbol |
3337 |
3340 ] ifFalse:[ |
3338 (selectedSpec := treeView propertySelected) notNil ifTrue:[ |
3341 "/ cg: q&d hack ... |
3339 Error handle:[:ex | |
3342 selectorOrMenu := nil. |
3340 selectorOrMenu := nil. |
3343 |
3341 ] do:[ |
3344 (selectedSpec := treeView propertySelected) notNil ifTrue:[ |
3342 selectorOrMenu := selectedSpec view asMenu. |
3345 Error handle:[:ex | |
3343 ] |
3346 selectorOrMenu := nil. |
|
3347 ] do:[ |
|
3348 selectorOrMenu := selectedSpec view asMenu. |
|
3349 ] |
|
3350 ]. |
3344 ]. |
3351 ]. |
3345 ]. |
3352 ]. |
3346 |
3353 |
3347 editor := MenuEditor new. |
3354 editor := MenuEditor new. |
3348 editor masterApplication:self. |
3355 editor masterApplication:self. |
3349 editor specClass: cls. |
3356 self isEditingSpecOnly ifFalse:[ |
3350 editor useHelpTool:(self helpTool). |
3357 editor specClass: cls. |
3351 |
3358 editor useHelpTool:(self helpTool). |
3352 selectorOrMenu class == Menu |
3359 ]. |
3353 ifTrue: [self breakPoint:#cg."no resources"editor openModalOnMenu:selectorOrMenu] |
3360 |
3354 ifFalse: [editor openModalOnClass:cls andSelector:selectorOrMenu]. |
3361 (self isEditingSpecOnly or:[selectorOrMenu class == Menu]) ifTrue: [ |
3355 |
3362 editor openModalOnMenu:(selectorOrMenu). |
3356 editor hasSaved ifTrue:[ |
3363 editor hasSaved ifTrue:[ |
3357 holder := self specTool aspectFor:#menuSelector. |
3364 windowSpec menu:(editor savedSpec). |
3358 holder value:(editor specSelector). |
3365 self accept. |
3359 self accept. |
3366 ]. |
3360 ^ self |
3367 ] ifFalse: [ |
|
3368 editor openModalOnClass:cls andSelector:selectorOrMenu. |
|
3369 editor hasSaved ifTrue:[ |
|
3370 holder := self specTool aspectFor:#menuSelector. |
|
3371 holder value:(editor specSelector). |
|
3372 self accept. |
|
3373 ]. |
3361 ]. |
3374 ]. |
3362 |
3375 |
3363 "Modified: / 12-01-2008 / 10:31:41 / cg" |
3376 "Modified: / 12-01-2008 / 10:31:41 / cg" |
3364 ! |
3377 ! |
3365 |
3378 |