# HG changeset patch # User Claus Gittinger # Date 1063980964 -7200 # Node ID 17755f89feab7a9dcffda55942a5e89950067463 # Parent 13f6e4eaac9174532c4292327ff2316ea546ae06 save changed fixed diff -r 13f6e4eaac91 -r 17755f89feab FileApplicationNoteBook.st --- a/FileApplicationNoteBook.st Fri Sep 19 14:57:17 2003 +0200 +++ b/FileApplicationNoteBook.st Fri Sep 19 16:16:04 2003 +0200 @@ -70,9 +70,10 @@ AbstractFileApplicationNoteBookComponent subclass:#TextEditor instanceVariableNames:'fileContentsModel modifiedChannel editView enableSave enableReload presentation changeItemProcess closeApplication - semaChangeItem printAsHexDump itemChanged itemRemoved - enableHexToggle md5CheckSum md5HashValueComputationProcess - viewModifiedChannel textEditorModificationTime checkModifiedBlock' + semaChangeItem wantToPrintAsHexDump printAsHexDump itemChanged + itemRemoved enableHexToggle md5CheckSum + md5HashValueComputationProcess viewModifiedChannel + textEditorModificationTime checkModifiedBlock' classVariableNames:'' poolDictionaries:'' privateIn:FileApplicationNoteBook @@ -1011,7 +1012,7 @@ tryCloseApplications self listOfApplications do:[:appl| - appl doClose not ifTrue:[ + appl doClose ifFalse:[ ^ false. ]. ]. @@ -3760,68 +3761,68 @@ ^ - #(#Menu - #( - #(#MenuItem - #label: 'Save' - #translateLabel: true - #isButton: true - #nameKey: #Save - #value: #accept - #enabled: #enableSave - #labelImage: #(#ResourceRetriever #ToolbarIconLibrary #saveToFile28x22Icon) + #(Menu + ( + (MenuItem + enabled: enableSave + label: 'Save' + itemValue: accept + nameKey: Save + translateLabel: true + isButton: true + labelImage: (ResourceRetriever ToolbarIconLibrary saveToFile28x22Icon) ) - #(#MenuItem - #label: 'Reload' - #translateLabel: true - #isButton: true - #nameKey: #Reload - #value: #reload - #enabled: #enableReload - #labelImage: #(#ResourceRetriever #ToolbarIconLibrary #reloadFromFile28x22Icon) + (MenuItem + enabled: enableReload + label: 'Reload' + itemValue: reload + nameKey: Reload + translateLabel: true + isButton: true + labelImage: (ResourceRetriever ToolbarIconLibrary reloadFromFile28x22Icon) ) - #(#MenuItem - #label: '' + (MenuItem + label: '' ) - #(#MenuItem - #label: 'Print' - #translateLabel: true - #isButton: true - #nameKey: #Print - #value: #doPrint - #enabled: #enableHexToggle - #labelImage: #(#ResourceRetriever #ToolbarIconLibrary #printer22x22Icon) + (MenuItem + enabled: enableHexToggle + label: 'Print' + itemValue: doPrint + nameKey: Print + translateLabel: true + isButton: true + labelImage: (ResourceRetriever ToolbarIconLibrary printer22x22Icon) ) - #(#MenuItem - #label: '' + (MenuItem + label: '' ) - #(#MenuItem - #label: 'Hex' - #translateLabel: true - #isButton: true - #enabled: #enableHexToggle - #labelImage: #(#ResourceRetriever #AbstractFileBrowser #hexToggle22x22Icon) - #indication: #printAsHexDump + (MenuItem + enabled: enableHexToggle + label: 'Hex' + translateLabel: true + isButton: true + indication: printAsHexDump + labelImage: (ResourceRetriever AbstractFileBrowser hexToggle22x22Icon) ) - #(#MenuItem - #label: '' + (MenuItem + label: '' ) - #(#MenuItem - #label: 'Diff to Current' - #translateLabel: true - #isButton: true - #value: #openDiffView - #labelImage: #(#ResourceRetriever #AbstractFileBrowser #diffIcon) + (MenuItem + label: 'Diff to Current' + itemValue: openDiffView + translateLabel: true + isButton: true + labelImage: (ResourceRetriever AbstractFileBrowser diffIcon) ) - #(#MenuItem - #label: 'Close' - #translateLabel: true - #isButton: true - #hideMenuOnActivated: false - #isVisible: #isEmbeddedApplication - #startGroup: #right - #value: #doClose - #labelImage: #(#ResourceRetriever #AbstractFileBrowser #closeIcon) + (MenuItem + label: 'Close' + itemValue: doClose + translateLabel: true + isButton: true + startGroup: right + isVisible: isEmbeddedApplication + hideMenuOnActivated: false + labelImage: (ResourceRetriever AbstractFileBrowser closeIcon) ) ) nil @@ -3835,9 +3836,10 @@ self releaseCheckModify. (self item = aDirContentsItem and:[(self presentation == #hexDump) == self printAsHexDump value]) ifTrue:[^ true]. + self askForChange. + super item:aDirContentsItem. self printAsHexDump value:(self presentation == #hexDump) withoutNotifying:self. - (self askForChange) isNil ifTrue:[ ^ false]. self setContents ifFalse:[ ^ false]. checkModifiedBlock isNil ifTrue:[ checkModifiedBlock := [ @@ -3903,33 +3905,33 @@ ! askForChange - "ask for save changes + "ask for save changes; + if modified and answered true, the current contents is written back (accepted) " |answer string arg| - answer := false. - self modifiedChannel value ifTrue:[ - arg := self fileName baseName allBold. - - self itemChanged value ifTrue:[ - string := '%1 was changed by someone else.\Save your changes (overwrite someones changes) ?' - ]. + self modifiedChannel value ifFalse:[ ^ false]. + + arg := self fileName baseName allBold. + + self itemChanged value ifTrue:[ + string := '%1 was changed by someone else.\Save your changes anyway (overwrite someones changes) ?' + ] ifFalse:[ self itemRemoved value ifTrue:[ string := '%1 was removed by someone else.\Save your changes anyway (recreate the removed file) ?' - ]. - string isNil ifTrue:[ + ] ifFalse:[ string := 'Save changed file %1 ?'. - ]. + ] ]. - string notNil ifTrue:[ - answer := (Dialog confirmWithCancel:(resources string:string with:arg) withCRs). - answer isNil ifTrue:[^ nil]. - answer ifTrue:[ - self accept - ] ifFalse:[ - self setContents. - ] + + answer := (Dialog confirmWithCancel:(resources string:string with:arg) withCRs). + answer isNil ifTrue:[^ AbortOperationRequest raise ]. + + answer ifTrue:[ + self accept + ] ifFalse:[ + self setContents. ]. ^ answer ! @@ -3959,7 +3961,7 @@ doClose - (self askForChange) isNil ifTrue:[ ^ false]. + self askForChange. self masterApplication notNil ifTrue:[ ^ super doClose ]. @@ -4317,24 +4319,19 @@ self itemModified. ^ self ]. + changedObject == self printAsHexDump ifTrue:[ - (self askForChange) isNil ifTrue:[ - self printAsHexDump value:changedObject value not withoutNotifying:self. - ^ self + AbortOperationRequest handle:[:ex | + self printAsHexDump value:false withoutNotifying:self. + ^ self. + ] do:[ + self askForChange. ]. - changedObject value ifTrue:[ - self presentation:#hexDump. - ] ifFalse:[ - self presentation:#asText. - ]. + self presentation:(changedObject value ifTrue:[#hexDump] ifFalse:[#asText]). self changeInformation. self setContents. editView notNil ifTrue:[ - (self presentation == #hexDump) ifTrue:[ - editView readOnly:true. - ] ifFalse:[ - editView readOnly:false. - ]. + editView readOnly:(self presentation == #hexDump). ]. ^ self ]. @@ -4952,5 +4949,5 @@ !FileApplicationNoteBook class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/FileApplicationNoteBook.st,v 1.106 2003-09-17 08:43:17 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/FileApplicationNoteBook.st,v 1.107 2003-09-19 14:16:04 cg Exp $' ! !