diff --git a/ide/main.pp b/ide/main.pp index 46f9256492..17e812e019 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -738,6 +738,8 @@ type deprecated 'use method with EditorObject'; // deprecated in 0.9.29 March 2010 function DoSaveEditorFile(AEditor: TSourceEditorInterface; Flags: TSaveFlags): TModalResult; override; + function DoSaveEditorFile(const Filename: string; + Flags: TSaveFlags): TModalResult; override; function DoCloseEditorFile(PageIndex:integer; Flags: TCloseFlags):TModalResult; override; @@ -746,6 +748,7 @@ type Flags: TCloseFlags):TModalResult; override; function DoCloseEditorFile(const Filename: string; Flags: TCloseFlags): TModalResult; override; + function DoSaveAll(Flags: TSaveFlags): TModalResult; override; function DoOpenEditorFile(AFileName: string; PageIndex: integer; Flags: TOpenFlags): TModalResult; override; @@ -5473,7 +5476,7 @@ begin SourceFileMgr.CreateFileDialogFilterForSourceEditorFiles(Filter, AllEditorMask, AllMask); end; -function TMainIDE.DoSaveEditorFile(PageIndex:integer; Flags: TSaveFlags):TModalResult; +function TMainIDE.DoSaveEditorFile(PageIndex:integer; Flags: TSaveFlags): TModalResult; begin Result := DoSaveEditorFile( SourceEditorManager.ActiveSourceWindow.FindSourceEditorWithPageIndex(PageIndex),Flags); @@ -5484,6 +5487,11 @@ begin Result:=SourceFileMgr.SaveEditorFile(AEditor, Flags); end; +function TMainIDE.DoSaveEditorFile(const Filename: string; Flags: TSaveFlags): TModalResult; +begin + Result:=SourceFileMgr.SaveEditorFile(Filename, Flags); +end; + function TMainIDE.DoCloseEditorFile(PageIndex:integer; Flags: TCloseFlags): TModalResult; begin Result := DoCloseEditorFile( diff --git a/ide/sourcefilemanager.pas b/ide/sourcefilemanager.pas index 7d78d0b23d..e591cf4780 100644 --- a/ide/sourcefilemanager.pas +++ b/ide/sourcefilemanager.pas @@ -78,10 +78,10 @@ type out AllEditorMask, AllMask: string); function SaveEditorFile(AEditor: TSourceEditorInterface; Flags: TSaveFlags): TModalResult; + function SaveEditorFile(const Filename: string; Flags: TSaveFlags): TModalResult; function CloseEditorFile(AEditor: TSourceEditorInterface; Flags: TCloseFlags):TModalResult; - function CloseEditorFile(const Filename: string; - Flags: TCloseFlags): TModalResult; + function CloseEditorFile(const Filename: string; Flags: TCloseFlags): TModalResult; function OpenEditorFile(AFileName:string; PageIndex, WindowIndex: integer; AEditorInfo: TUnitEditorInfo; Flags: TOpenFlags; @@ -980,6 +980,24 @@ begin Result:=mrOk; end; +function TLazSourceFileManager.SaveEditorFile(const Filename: string; + Flags: TSaveFlags): TModalResult; +var + UnitIndex: Integer; + AnUnitInfo: TUnitInfo; + i: Integer; +begin + Result:=mrOk; + if Filename='' then exit; + UnitIndex:=Project1.IndexOfFilename(TrimFilename(Filename),[pfsfOnlyEditorFiles]); + if UnitIndex<0 then exit; + AnUnitInfo:=Project1.Units[UnitIndex]; + for i := 0 to AnUnitInfo.OpenEditorInfoCount-1 do begin + Result:=SaveEditorFile(AnUnitInfo.OpenEditorInfo[i].EditorComponent, Flags); + if Result <> mrOK then Break; + end; +end; + function TLazSourceFileManager.CloseEditorFile(AEditor: TSourceEditorInterface; Flags: TCloseFlags): TModalResult; var @@ -1113,11 +1131,9 @@ var begin Result:=mrOk; if Filename='' then exit; - UnitIndex:=Project1.IndexOfFilename(TrimFilename(Filename), - [pfsfOnlyEditorFiles]); + UnitIndex:=Project1.IndexOfFilename(TrimFilename(Filename),[pfsfOnlyEditorFiles]); if UnitIndex<0 then exit; AnUnitInfo:=Project1.Units[UnitIndex]; - Result:=mrOk; while (AnUnitInfo.OpenEditorInfoCount > 0) and (Result = mrOK) do Result:=CloseEditorFile(AnUnitInfo.OpenEditorInfo[0].EditorComponent, Flags); end; @@ -2047,8 +2063,7 @@ begin and AnUnitInfo.IsPartOfProject and (Project1.MainUnitID<>i) and (AnUnitInfo.OpenEditorInfoCount > 0) then begin - SaveFileFlags:=[sfSaveAs,sfProjectSaving] - +[sfCheckAmbiguousFiles]*Flags; + SaveFileFlags:=[sfSaveAs,sfProjectSaving]+[sfCheckAmbiguousFiles]*Flags; if sfSaveToTestDir in Flags then begin if AnUnitInfo.IsPartOfProject or AnUnitInfo.IsVirtual then Include(SaveFileFlags,sfSaveToTestDir); @@ -2068,8 +2083,7 @@ begin AnUnitInfo:=Project1.UnitWithEditorComponent(SrcEdit); if (Project1.MainUnitID>=0) and (Project1.MainUnitInfo = AnUnitInfo) then continue; - SaveFileFlags:=[sfProjectSaving] - +Flags*[sfCheckAmbiguousFiles]; + SaveFileFlags:=[sfProjectSaving]+Flags*[sfCheckAmbiguousFiles]; if AnUnitInfo = nil then begin // consistency check diff --git a/ideintf/lazideintf.pas b/ideintf/lazideintf.pas index 6a3360305e..cf62562766 100644 --- a/ideintf/lazideintf.pas +++ b/ideintf/lazideintf.pas @@ -206,6 +206,8 @@ type deprecated 'use method with EditorObject'; // deprecated in 0.9.29 March 2010 function DoSaveEditorFile(AEditor: TSourceEditorInterface; Flags: TSaveFlags): TModalResult; virtual; abstract; + function DoSaveEditorFile(const Filename: string; + Flags: TSaveFlags): TModalResult; virtual; abstract; function DoSaveAll(Flags: TSaveFlags): TModalResult; virtual; abstract; function DoCloseEditorFile(PageIndex:integer; Flags: TCloseFlags):TModalResult; virtual; abstract;