IDE: Refactor code related to recent files. Reduce duplicate code.

git-svn-id: trunk@56057 -
This commit is contained in:
juha 2017-10-15 11:48:20 +00:00
parent 492172d626
commit 0210bf731d
2 changed files with 58 additions and 69 deletions

View File

@ -197,7 +197,6 @@ type
procedure mnuNewOtherClicked(Sender: TObject);
procedure mnuOpenClicked(Sender: TObject);
procedure mnuOpenUnitClicked(Sender: TObject);
procedure mnuOpenRecentClicked(Sender: TObject); override;
procedure mnuRevertClicked(Sender: TObject);
procedure mnuSaveClicked(Sender: TObject);
procedure mnuSaveAsClicked(Sender: TObject);
@ -2905,13 +2904,6 @@ begin
end;
procedure TMainIDE.mnuOpenClicked(Sender: TObject);
procedure UpdateEnvironment;
begin
SetRecentFilesMenu;
SaveEnvironment;
end;
var
OpenDialog: TOpenDialog;
AFilename: string;
@ -2976,7 +2968,7 @@ begin
finally
SourceEditorManager.DecUpdateLock;
end;
UpdateEnvironment;
UpdateRecentFilesEnv;
end;
InputHistories.StoreFileDialogSettings(OpenDialog);
finally
@ -2984,31 +2976,6 @@ begin
end;
end;
procedure TMainIDE.mnuOpenRecentClicked(Sender: TObject);
procedure UpdateEnvironment;
begin
SetRecentFilesMenu;
SaveEnvironment;
end;
var
AFilename: string;
begin
// Hint holds the full filename, Caption may have a shortened form.
AFileName:=(Sender as TIDEMenuItem).Hint;
if DoOpenEditorFile(AFilename,-1,-1,[ofAddToRecent])=mrOk then begin
UpdateEnvironment;
end else begin
// open failed
if not FileExistsUTF8(AFilename) then begin
// file does not exist -> delete it from recent file list
EnvironmentOptions.RemoveFromRecentOpenFiles(AFilename);
UpdateEnvironment;
end;
end;
end;
procedure TMainIDE.mnuOpenUnitClicked(Sender: TObject);
begin
DoSourceEditorCommand(ecOpenUnit);
@ -4465,10 +4432,8 @@ begin
OpenEditorsOnCodeToolChange:=true;
Converter:=TConvertDelphiUnit.Create(OpenDialog.Files);
try
if Converter.Convert=mrOK then begin
SetRecentFilesMenu;
SaveEnvironment;
end;
if Converter.Convert=mrOK then
UpdateRecentFilesEnv;
finally
Converter.Free;
OpenEditorsOnCodeToolChange:=OldChange;
@ -4501,8 +4466,7 @@ begin
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
if FileExistsUTF8(AFilename) then
DoConvertDelphiProject(AFilename);
SetRecentFilesMenu;
SaveEnvironment;
UpdateRecentFilesEnv;
end;
InputHistories.StoreFileDialogSettings(OpenDialog);
finally
@ -4531,8 +4495,7 @@ begin
//debugln('TMainIDE.mnuToolConvertDelphiProjectClicked A ',AFilename);
if FileExistsUTF8(AFilename) then
DoConvertDelphiPackage(AFilename);
SetRecentFilesMenu;
SaveEnvironment;
UpdateRecentFilesEnv;
end;
InputHistories.StoreFileDialogSettings(OpenDialog);
finally
@ -5682,7 +5645,7 @@ begin
finally
SourceEditorManager.DecUpdateLock;
end;
SetRecentFilesMenu;
UpdateRecentFilesEnv;
end;
procedure TMainIDE.DoDropFilesAsync(Data: PtrInt);

View File

@ -125,7 +125,7 @@ type
procedure DoMnuWindowClicked(Sender: TObject);
procedure mnuOpenProjectClicked(Sender: TObject); virtual; abstract;
procedure mnuOpenRecentClicked(Sender: TObject); virtual; abstract;
procedure mnuOpenRecentClicked(Sender: TObject);
procedure mnuWindowItemClick(Sender: TObject); virtual;
procedure mnuCenterWindowItemClick(Sender: TObject); virtual;
procedure mnuWindowSourceItemClick(Sender: TObject); virtual;
@ -141,8 +141,6 @@ type
destructor Destroy; override;
procedure CreateOftenUsedForms; virtual; abstract;
function GetMainBar: TForm; override;
procedure SetRecentProjectFilesMenu;
procedure SetRecentFilesMenu;
function BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
out ActiveUnitInfo: TUnitInfo;
Flags: TCodeToolsFlags): boolean;
@ -184,6 +182,11 @@ type
procedure SetRecentSubMenu(Section: TIDEMenuSection; FileList: TStringList;
OnClickEvent: TNotifyEvent); override;
procedure SetRecentProjectFilesMenu;
procedure SetRecentFilesMenu;
procedure UpdateRecentFilesEnv;
procedure DoOpenRecentFile(AFilename: string);
procedure UpdateHighlighters(Immediately: boolean = false); override;
procedure FindInFilesPerDialog(AProject: TProject); override;
@ -516,17 +519,12 @@ end;
procedure TOpenFileToolButton.mnuOpenFile(Sender: TObject);
begin
if MainIDE.DoOpenEditorFile((Sender as TOpenFileMenuItem).Hint, -1, -1,
[ofAddToRecent])=mrOk then
begin
MainIDE.SetRecentFilesMenu;
MainIDE.SaveEnvironment;
end;
// Hint holds the full filename, Caption may have a shortened form.
MainIDE.DoOpenRecentFile((Sender as TOpenFileMenuItem).Hint);
end;
procedure TOpenFileToolButton.mnuProjectFile(Sender: TObject);
begin
// Hint holds the full filename, Caption may have a shortened form.
MainIDE.DoOpenProjectFile((Sender as TOpenFileMenuItem).Hint, [ofAddToRecent]);
end;
@ -564,11 +562,13 @@ begin
DropdownMenu.Items.Clear;
// first add recent projects
AddFiles(EnvironmentOptions.RecentProjectFiles, EnvironmentOptions.MaxRecentProjectFiles, @mnuProjectFile);
AddFiles(EnvironmentOptions.RecentProjectFiles, EnvironmentOptions.MaxRecentProjectFiles,
@mnuProjectFile);
// add a separator
DropdownMenu.Items.AddSeparator;
// then add recent files
AddFiles(EnvironmentOptions.RecentOpenFiles, EnvironmentOptions.MaxRecentOpenFiles, @mnuOpenFile);
AddFiles(EnvironmentOptions.RecentOpenFiles, EnvironmentOptions.MaxRecentOpenFiles,
@mnuOpenFile);
end;
{ TSetBuildModeToolButton }
@ -752,20 +752,6 @@ begin
Result:=MainIDEBar;
end;
procedure TMainIDEBase.SetRecentProjectFilesMenu;
begin
SetRecentSubMenu(itmProjectRecentOpen,
EnvironmentOptions.RecentProjectFiles,
@mnuOpenProjectClicked);
end;
procedure TMainIDEBase.SetRecentFilesMenu;
begin
SetRecentSubMenu(itmFileRecentOpen,
EnvironmentOptions.RecentOpenFiles,
@mnuOpenRecentClicked);
end;
function TMainIDEBase.BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
out ActiveUnitInfo: TUnitInfo; Flags: TCodeToolsFlags): boolean;
begin
@ -1942,6 +1928,46 @@ begin
end;
end;
procedure TMainIDEBase.SetRecentProjectFilesMenu;
begin
SetRecentSubMenu(itmProjectRecentOpen,
EnvironmentOptions.RecentProjectFiles,
@mnuOpenProjectClicked);
end;
procedure TMainIDEBase.SetRecentFilesMenu;
begin
SetRecentSubMenu(itmFileRecentOpen,
EnvironmentOptions.RecentOpenFiles,
@mnuOpenRecentClicked);
end;
procedure TMainIDEBase.UpdateRecentFilesEnv;
begin
SetRecentFilesMenu;
SaveEnvironment;
end;
procedure TMainIDEBase.DoOpenRecentFile(AFilename: string);
begin
if DoOpenEditorFile(AFilename,-1,-1,[ofAddToRecent])=mrOk then
UpdateRecentFilesEnv
else begin
// open failed
if not FileExistsUTF8(AFilename) then begin
// file does not exist -> delete it from recent file list
EnvironmentOptions.RemoveFromRecentOpenFiles(AFilename);
UpdateRecentFilesEnv;
end;
end;
end;
procedure TMainIDEBase.mnuOpenRecentClicked(Sender: TObject);
begin
// Hint holds the full filename, Caption may have a shortened form.
DoOpenRecentFile((Sender as TIDEMenuItem).Hint);
end;
procedure TMainIDEBase.UpdateHighlighters(Immediately: boolean = false);
var
ASrcEdit: TSourceEditor;