mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 19:18:01 +02:00
IDE: Refactor code related to recent files. Reduce duplicate code.
git-svn-id: trunk@56057 -
This commit is contained in:
parent
492172d626
commit
0210bf731d
49
ide/main.pp
49
ide/main.pp
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user