mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-07 15:03:35 +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 mnuNewOtherClicked(Sender: TObject);
|
||||||
procedure mnuOpenClicked(Sender: TObject);
|
procedure mnuOpenClicked(Sender: TObject);
|
||||||
procedure mnuOpenUnitClicked(Sender: TObject);
|
procedure mnuOpenUnitClicked(Sender: TObject);
|
||||||
procedure mnuOpenRecentClicked(Sender: TObject); override;
|
|
||||||
procedure mnuRevertClicked(Sender: TObject);
|
procedure mnuRevertClicked(Sender: TObject);
|
||||||
procedure mnuSaveClicked(Sender: TObject);
|
procedure mnuSaveClicked(Sender: TObject);
|
||||||
procedure mnuSaveAsClicked(Sender: TObject);
|
procedure mnuSaveAsClicked(Sender: TObject);
|
||||||
@ -2905,13 +2904,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.mnuOpenClicked(Sender: TObject);
|
procedure TMainIDE.mnuOpenClicked(Sender: TObject);
|
||||||
|
|
||||||
procedure UpdateEnvironment;
|
|
||||||
begin
|
|
||||||
SetRecentFilesMenu;
|
|
||||||
SaveEnvironment;
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
var
|
||||||
OpenDialog: TOpenDialog;
|
OpenDialog: TOpenDialog;
|
||||||
AFilename: string;
|
AFilename: string;
|
||||||
@ -2976,7 +2968,7 @@ begin
|
|||||||
finally
|
finally
|
||||||
SourceEditorManager.DecUpdateLock;
|
SourceEditorManager.DecUpdateLock;
|
||||||
end;
|
end;
|
||||||
UpdateEnvironment;
|
UpdateRecentFilesEnv;
|
||||||
end;
|
end;
|
||||||
InputHistories.StoreFileDialogSettings(OpenDialog);
|
InputHistories.StoreFileDialogSettings(OpenDialog);
|
||||||
finally
|
finally
|
||||||
@ -2984,31 +2976,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
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);
|
procedure TMainIDE.mnuOpenUnitClicked(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DoSourceEditorCommand(ecOpenUnit);
|
DoSourceEditorCommand(ecOpenUnit);
|
||||||
@ -4465,10 +4432,8 @@ begin
|
|||||||
OpenEditorsOnCodeToolChange:=true;
|
OpenEditorsOnCodeToolChange:=true;
|
||||||
Converter:=TConvertDelphiUnit.Create(OpenDialog.Files);
|
Converter:=TConvertDelphiUnit.Create(OpenDialog.Files);
|
||||||
try
|
try
|
||||||
if Converter.Convert=mrOK then begin
|
if Converter.Convert=mrOK then
|
||||||
SetRecentFilesMenu;
|
UpdateRecentFilesEnv;
|
||||||
SaveEnvironment;
|
|
||||||
end;
|
|
||||||
finally
|
finally
|
||||||
Converter.Free;
|
Converter.Free;
|
||||||
OpenEditorsOnCodeToolChange:=OldChange;
|
OpenEditorsOnCodeToolChange:=OldChange;
|
||||||
@ -4501,8 +4466,7 @@ begin
|
|||||||
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
|
AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
|
||||||
if FileExistsUTF8(AFilename) then
|
if FileExistsUTF8(AFilename) then
|
||||||
DoConvertDelphiProject(AFilename);
|
DoConvertDelphiProject(AFilename);
|
||||||
SetRecentFilesMenu;
|
UpdateRecentFilesEnv;
|
||||||
SaveEnvironment;
|
|
||||||
end;
|
end;
|
||||||
InputHistories.StoreFileDialogSettings(OpenDialog);
|
InputHistories.StoreFileDialogSettings(OpenDialog);
|
||||||
finally
|
finally
|
||||||
@ -4531,8 +4495,7 @@ begin
|
|||||||
//debugln('TMainIDE.mnuToolConvertDelphiProjectClicked A ',AFilename);
|
//debugln('TMainIDE.mnuToolConvertDelphiProjectClicked A ',AFilename);
|
||||||
if FileExistsUTF8(AFilename) then
|
if FileExistsUTF8(AFilename) then
|
||||||
DoConvertDelphiPackage(AFilename);
|
DoConvertDelphiPackage(AFilename);
|
||||||
SetRecentFilesMenu;
|
UpdateRecentFilesEnv;
|
||||||
SaveEnvironment;
|
|
||||||
end;
|
end;
|
||||||
InputHistories.StoreFileDialogSettings(OpenDialog);
|
InputHistories.StoreFileDialogSettings(OpenDialog);
|
||||||
finally
|
finally
|
||||||
@ -5682,7 +5645,7 @@ begin
|
|||||||
finally
|
finally
|
||||||
SourceEditorManager.DecUpdateLock;
|
SourceEditorManager.DecUpdateLock;
|
||||||
end;
|
end;
|
||||||
SetRecentFilesMenu;
|
UpdateRecentFilesEnv;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoDropFilesAsync(Data: PtrInt);
|
procedure TMainIDE.DoDropFilesAsync(Data: PtrInt);
|
||||||
|
@ -125,7 +125,7 @@ type
|
|||||||
|
|
||||||
procedure DoMnuWindowClicked(Sender: TObject);
|
procedure DoMnuWindowClicked(Sender: TObject);
|
||||||
procedure mnuOpenProjectClicked(Sender: TObject); virtual; abstract;
|
procedure mnuOpenProjectClicked(Sender: TObject); virtual; abstract;
|
||||||
procedure mnuOpenRecentClicked(Sender: TObject); virtual; abstract;
|
procedure mnuOpenRecentClicked(Sender: TObject);
|
||||||
procedure mnuWindowItemClick(Sender: TObject); virtual;
|
procedure mnuWindowItemClick(Sender: TObject); virtual;
|
||||||
procedure mnuCenterWindowItemClick(Sender: TObject); virtual;
|
procedure mnuCenterWindowItemClick(Sender: TObject); virtual;
|
||||||
procedure mnuWindowSourceItemClick(Sender: TObject); virtual;
|
procedure mnuWindowSourceItemClick(Sender: TObject); virtual;
|
||||||
@ -141,8 +141,6 @@ type
|
|||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure CreateOftenUsedForms; virtual; abstract;
|
procedure CreateOftenUsedForms; virtual; abstract;
|
||||||
function GetMainBar: TForm; override;
|
function GetMainBar: TForm; override;
|
||||||
procedure SetRecentProjectFilesMenu;
|
|
||||||
procedure SetRecentFilesMenu;
|
|
||||||
function BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
function BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
||||||
out ActiveUnitInfo: TUnitInfo;
|
out ActiveUnitInfo: TUnitInfo;
|
||||||
Flags: TCodeToolsFlags): boolean;
|
Flags: TCodeToolsFlags): boolean;
|
||||||
@ -184,6 +182,11 @@ type
|
|||||||
|
|
||||||
procedure SetRecentSubMenu(Section: TIDEMenuSection; FileList: TStringList;
|
procedure SetRecentSubMenu(Section: TIDEMenuSection; FileList: TStringList;
|
||||||
OnClickEvent: TNotifyEvent); override;
|
OnClickEvent: TNotifyEvent); override;
|
||||||
|
procedure SetRecentProjectFilesMenu;
|
||||||
|
procedure SetRecentFilesMenu;
|
||||||
|
procedure UpdateRecentFilesEnv;
|
||||||
|
procedure DoOpenRecentFile(AFilename: string);
|
||||||
|
|
||||||
procedure UpdateHighlighters(Immediately: boolean = false); override;
|
procedure UpdateHighlighters(Immediately: boolean = false); override;
|
||||||
|
|
||||||
procedure FindInFilesPerDialog(AProject: TProject); override;
|
procedure FindInFilesPerDialog(AProject: TProject); override;
|
||||||
@ -516,17 +519,12 @@ end;
|
|||||||
|
|
||||||
procedure TOpenFileToolButton.mnuOpenFile(Sender: TObject);
|
procedure TOpenFileToolButton.mnuOpenFile(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if MainIDE.DoOpenEditorFile((Sender as TOpenFileMenuItem).Hint, -1, -1,
|
// Hint holds the full filename, Caption may have a shortened form.
|
||||||
[ofAddToRecent])=mrOk then
|
MainIDE.DoOpenRecentFile((Sender as TOpenFileMenuItem).Hint);
|
||||||
begin
|
|
||||||
MainIDE.SetRecentFilesMenu;
|
|
||||||
MainIDE.SaveEnvironment;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TOpenFileToolButton.mnuProjectFile(Sender: TObject);
|
procedure TOpenFileToolButton.mnuProjectFile(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// Hint holds the full filename, Caption may have a shortened form.
|
|
||||||
MainIDE.DoOpenProjectFile((Sender as TOpenFileMenuItem).Hint, [ofAddToRecent]);
|
MainIDE.DoOpenProjectFile((Sender as TOpenFileMenuItem).Hint, [ofAddToRecent]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -564,11 +562,13 @@ begin
|
|||||||
DropdownMenu.Items.Clear;
|
DropdownMenu.Items.Clear;
|
||||||
|
|
||||||
// first add recent projects
|
// first add recent projects
|
||||||
AddFiles(EnvironmentOptions.RecentProjectFiles, EnvironmentOptions.MaxRecentProjectFiles, @mnuProjectFile);
|
AddFiles(EnvironmentOptions.RecentProjectFiles, EnvironmentOptions.MaxRecentProjectFiles,
|
||||||
|
@mnuProjectFile);
|
||||||
// add a separator
|
// add a separator
|
||||||
DropdownMenu.Items.AddSeparator;
|
DropdownMenu.Items.AddSeparator;
|
||||||
// then add recent files
|
// then add recent files
|
||||||
AddFiles(EnvironmentOptions.RecentOpenFiles, EnvironmentOptions.MaxRecentOpenFiles, @mnuOpenFile);
|
AddFiles(EnvironmentOptions.RecentOpenFiles, EnvironmentOptions.MaxRecentOpenFiles,
|
||||||
|
@mnuOpenFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TSetBuildModeToolButton }
|
{ TSetBuildModeToolButton }
|
||||||
@ -752,20 +752,6 @@ begin
|
|||||||
Result:=MainIDEBar;
|
Result:=MainIDEBar;
|
||||||
end;
|
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;
|
function TMainIDEBase.BeginCodeTool(var ActiveSrcEdit: TSourceEditor;
|
||||||
out ActiveUnitInfo: TUnitInfo; Flags: TCodeToolsFlags): boolean;
|
out ActiveUnitInfo: TUnitInfo; Flags: TCodeToolsFlags): boolean;
|
||||||
begin
|
begin
|
||||||
@ -1942,6 +1928,46 @@ begin
|
|||||||
end;
|
end;
|
||||||
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);
|
procedure TMainIDEBase.UpdateHighlighters(Immediately: boolean = false);
|
||||||
var
|
var
|
||||||
ASrcEdit: TSourceEditor;
|
ASrcEdit: TSourceEditor;
|
||||||
|
Loading…
Reference in New Issue
Block a user