diff -r 7b2b8ae7a123 -r 920de32128c2 Tools__ChangeSetBrowser2.st --- a/Tools__ChangeSetBrowser2.st Mon Mar 05 10:19:20 2018 +0000 +++ b/Tools__ChangeSetBrowser2.st Mon Mar 05 12:33:37 2018 +0000 @@ -3120,49 +3120,54 @@ ! doSave - - changesetFile - ifNil:[self doSaveAs] - ifNotNil:[self doSaveAs: changesetFile] - - "Modified: / 24-10-2009 / 22:55:07 / Jan Vrany " + changesetFile isNil ifTrue:[ + self doSaveAs + ] ifFalse:[ + self doSaveAs:changesetFile format: (self formatFromFile: changesetFile) + ] + + "Modified: / 05-03-2018 / 12:29:11 / Jan Vrany " ! doSaveAs - | file | + | file formatMap formatHolder | + + formatMap := Dictionary new + at: (resources string: 'Smalltalk/X changeset') put: nil; + at: (resources string: 'Smalltalk/X source') put: #classSource; + at: (resources string: 'Bee Smalltalk changseset') put: #Bee; + yourself. + formatHolder := (formatMap keyAtValue: (self formatFromFile: changesetFile)) asValue. Dialog aboutToOpenBoxNotificationSignal handle:[:ex| -"/ | dialog | -"/ dialog := ex box application. -"/ dialog addComponent:(CheckBox label:'x' -"/ model:true asValue). -"/ ex pass. + | dialog | + dialog := ex box application. + dialog addComponent: (ComboListView new + list: formatMap keys asArray sort; + model: formatHolder; + yourself) + labeled: (resources string: 'Format:'). + ex pass. ] do:[ file := Dialog requestFileName:'Select File for Save' default: (changesetFile ? 'somechanges.chg') pattern:('*.chg'). ]. file isNil ifTrue:[^self]. - self doSaveAs: file. + self doSaveAs: file format: (formatMap at: formatHolder value) "Modified: / 27-12-2011 / 10:39:52 / cg" - "Modified: / 05-03-2018 / 10:09:55 / Jan Vrany " + "Modified: / 05-03-2018 / 12:28:47 / Jan Vrany " ! -doSaveAs: newFile +doSaveAs: newFile format: format | changesetToSave | changesetToSave := ChangeSet new. self list1Holder value do:[:e| e removed ~~ true ifTrue:[changesetToSave add:e]. ]. - -"/ [ - (newFile asFilename suffix = 'st') ifTrue:[ - changesetToSave saveToFile: newFile format: #classSource. - ] ifFalse:[ - changesetToSave saveToFile: newFile - ]. - changesetFile := newFile. -"/ ] on: Error do: -"/ [:ex|Dialog warn: 'Error saving changes: ' , ex description] + changesetToSave saveToFile: newFile format: format. + changesetFile := newFile. + + "Created: / 05-03-2018 / 12:12:55 / Jan Vrany " ! doScrollToBottom @@ -3831,6 +3836,21 @@ "Created: / 30-08-2011 / 14:30:58 / cg" ! +formatFromFile: aFilename + "Guess and return format of given changefile." + aFilename notNil ifTrue:[ + | suffix | + + suffix := aFilename asFilename suffix. + suffix = '.chg' ifTrue:[ ^ nil ]. + suffix = '.ch' ifTrue:[ ^ #Bee ]. + suffix = '.st' ifTrue:[ ^ #classSource ]. + ]. + ^ nil + + "Created: / 05-03-2018 / 12:28:15 / Jan Vrany " +! + getNavigatorChangeSet | changeset |