mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 12:16:18 +02:00
IDE, IDEIntf: changes needed for Favorites package
git-svn-id: trunk@50511 -
This commit is contained in:
parent
22c38e578f
commit
151f452c84
@ -118,6 +118,38 @@ type
|
||||
TAbstractIDEEnvironmentOptions = class(TAbstractIDEOptions);
|
||||
TAbstractIDEHelpOptions = class(TAbstractIDEEnvironmentOptions);
|
||||
|
||||
TOnAddToRecent = procedure(Sender: TObject; AFileName: string; var AAllow: Boolean) of object;
|
||||
TIDERecentHandler = (irhOpenFiles, irhProjectFiles, irhPackageFiles);
|
||||
|
||||
TIDEEnvironmentOptions = class(TAbstractIDEEnvironmentOptions)
|
||||
private
|
||||
fRecentHandlers: array[TIDERecentHandler] of TMethodList;
|
||||
|
||||
procedure DoCallRecentHandlers(AHandler: TIDERecentHandler;
|
||||
const AFileName: string; var AAllow: Boolean);
|
||||
protected
|
||||
procedure DoAddToRecentOpenFiles(const AFileName: string; var AAllow: Boolean);
|
||||
procedure DoAddToRecentProjectFiles(const AFileName: string; var AAllow: Boolean);
|
||||
procedure DoAddToRecentPackageFiles(const AFileName: string; var AAllow: Boolean);
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
public
|
||||
procedure AddToRecentOpenFiles(const AFilename: string); virtual; abstract;
|
||||
procedure RemoveFromRecentOpenFiles(const AFilename: string); virtual; abstract;
|
||||
procedure AddToRecentProjectFiles(const AFilename: string); virtual; abstract;
|
||||
procedure RemoveFromRecentProjectFiles(const AFilename: string); virtual; abstract;
|
||||
procedure AddToRecentPackageFiles(const AFilename: string); virtual; abstract;
|
||||
procedure RemoveFromRecentPackageFiles(const AFilename: string); virtual; abstract;
|
||||
|
||||
procedure AddHandlerAddToRecentOpenFiles(Handler: TOnAddToRecent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||
procedure RemoveHandlerAddToRecentOpenFiles(Handler: TOnAddToRecent);
|
||||
procedure AddHandlerAddToRecentProjectFiles(Handler: TOnAddToRecent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||
procedure RemoveHandlerAddToRecentProjectFiles(Handler: TOnAddToRecent);
|
||||
procedure AddHandlerAddToRecentPackageFiles(Handler: TOnAddToRecent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||
procedure RemoveHandlerAddToRecentPackageFiles(Handler: TOnAddToRecent);
|
||||
end;
|
||||
|
||||
TOnLoadIDEOptions = procedure(Sender: TObject; AOptions: TAbstractIDEOptions) of object;
|
||||
TOnSaveIDEOptions = procedure(Sender: TObject; AOptions: TAbstractIDEOptions) of object;
|
||||
|
||||
@ -233,6 +265,9 @@ function RegisterIDEOptionsEditor(AGroupIndex: Integer;
|
||||
|
||||
function IDEEditorGroups: TIDEOptionsGroupList;
|
||||
|
||||
var
|
||||
IDEEnvironmentOptions: TIDEEnvironmentOptions;
|
||||
|
||||
const
|
||||
// Font style used by filter
|
||||
MatchFontStyle: TFontStyles = [fsBold, fsItalic]; // Color = clFuchsia;
|
||||
@ -423,6 +458,95 @@ begin
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
{ TIDEEnvironmentOptions }
|
||||
|
||||
constructor TIDEEnvironmentOptions.Create;
|
||||
var
|
||||
I: TIDERecentHandler;
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
for I := Low(fRecentHandlers) to High(fRecentHandlers) do
|
||||
fRecentHandlers[I] := TMethodList.Create;
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.AddHandlerAddToRecentOpenFiles(
|
||||
Handler: TOnAddToRecent; const AsFirst: boolean);
|
||||
begin
|
||||
fRecentHandlers[irhOpenFiles].Add(TMethod(Handler), AsFirst);
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.AddHandlerAddToRecentPackageFiles(
|
||||
Handler: TOnAddToRecent; const AsFirst: boolean);
|
||||
begin
|
||||
fRecentHandlers[irhPackageFiles].Add(TMethod(Handler), AsFirst);
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.AddHandlerAddToRecentProjectFiles(
|
||||
Handler: TOnAddToRecent; const AsFirst: boolean);
|
||||
begin
|
||||
fRecentHandlers[irhProjectFiles].Add(TMethod(Handler), AsFirst);
|
||||
end;
|
||||
|
||||
destructor TIDEEnvironmentOptions.Destroy;
|
||||
var
|
||||
I: TIDERecentHandler;
|
||||
begin
|
||||
for I := Low(fRecentHandlers) to High(fRecentHandlers) do
|
||||
fRecentHandlers[I].Free;
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.DoAddToRecentOpenFiles(
|
||||
const AFileName: string; var AAllow: Boolean);
|
||||
begin
|
||||
DoCallRecentHandlers(irhOpenFiles, AFileName, AAllow);
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.DoAddToRecentPackageFiles(
|
||||
const AFileName: string; var AAllow: Boolean);
|
||||
begin
|
||||
DoCallRecentHandlers(irhPackageFiles, AFileName, AAllow);
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.DoAddToRecentProjectFiles(
|
||||
const AFileName: string; var AAllow: Boolean);
|
||||
begin
|
||||
DoCallRecentHandlers(irhProjectFiles, AFileName, AAllow);
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.DoCallRecentHandlers(
|
||||
AHandler: TIDERecentHandler; const AFileName: string; var AAllow: Boolean);
|
||||
var
|
||||
xMethod: TOnAddToRecent;
|
||||
I: Integer;
|
||||
begin
|
||||
for I := 0 to fRecentHandlers[AHandler].Count-1 do
|
||||
begin
|
||||
xMethod := TOnAddToRecent(fRecentHandlers[AHandler][I]);
|
||||
xMethod(Self, AFileName, AAllow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.RemoveHandlerAddToRecentOpenFiles(
|
||||
Handler: TOnAddToRecent);
|
||||
begin
|
||||
fRecentHandlers[irhOpenFiles].Remove(TMethod(Handler));
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.RemoveHandlerAddToRecentPackageFiles(
|
||||
Handler: TOnAddToRecent);
|
||||
begin
|
||||
fRecentHandlers[irhPackageFiles].Remove(TMethod(Handler));
|
||||
end;
|
||||
|
||||
procedure TIDEEnvironmentOptions.RemoveHandlerAddToRecentProjectFiles(
|
||||
Handler: TOnAddToRecent);
|
||||
begin
|
||||
fRecentHandlers[irhProjectFiles].Remove(TMethod(Handler));
|
||||
end;
|
||||
|
||||
{ TAbstractDesktopDockingOpt }
|
||||
|
||||
constructor TAbstractDesktopDockingOpt.Create;
|
||||
|
@ -316,6 +316,7 @@ end;
|
||||
constructor TBuildManager.Create(AOwner: TComponent);
|
||||
begin
|
||||
EnvironmentOptions := TEnvironmentOptions.Create;
|
||||
IDEEnvironmentOptions := EnvironmentOptions;
|
||||
EnvironmentOptions.IsGlobalMode:=@EnvironmentOptionsIsGlobalMode;
|
||||
DefaultCfgVars:=TCTCfgScriptVariables.Create;
|
||||
DefaultCfgVarsBuildMacroStamp:=CTInvalidChangeStamp;
|
||||
|
@ -376,7 +376,7 @@ type
|
||||
|
||||
{ TEnvironmentOptions - class for storing environment options }
|
||||
|
||||
TEnvironmentOptions = class(TAbstractIDEEnvironmentOptions)
|
||||
TEnvironmentOptions = class(TIDEEnvironmentOptions)
|
||||
private
|
||||
// config file
|
||||
FFilename: string;
|
||||
@ -739,16 +739,18 @@ type
|
||||
property RecentOpenFiles: TStringList read FRecentOpenFiles;
|
||||
property MaxRecentOpenFiles: integer read FMaxRecentOpenFiles
|
||||
write FMaxRecentOpenFiles;
|
||||
procedure AddToRecentOpenFiles(const AFilename: string);
|
||||
procedure RemoveFromRecentOpenFiles(const AFilename: string);
|
||||
procedure AddToRecentOpenFiles(const AFilename: string); override;
|
||||
procedure RemoveFromRecentOpenFiles(const AFilename: string); override;
|
||||
property RecentProjectFiles: TStringList read FRecentProjectFiles;
|
||||
property MaxRecentProjectFiles: integer read FMaxRecentProjectFiles
|
||||
write FMaxRecentProjectFiles;
|
||||
procedure AddToRecentProjectFiles(const AFilename: string);
|
||||
procedure RemoveFromRecentProjectFiles(const AFilename: string);
|
||||
procedure AddToRecentProjectFiles(const AFilename: string); override;
|
||||
procedure RemoveFromRecentProjectFiles(const AFilename: string); override;
|
||||
property RecentPackageFiles: TStringList read FRecentPackageFiles;
|
||||
property MaxRecentPackageFiles: integer read FMaxRecentPackageFiles
|
||||
write FMaxRecentPackageFiles;
|
||||
procedure AddToRecentPackageFiles(const AFilename: string); override;
|
||||
procedure RemoveFromRecentPackageFiles(const AFilename: string); override;
|
||||
property LastSavedProjectFile: string read FLastSavedProjectFile
|
||||
write FLastSavedProjectFile; { if empty then create new project,
|
||||
if '-' then do not load/create any project }
|
||||
@ -2194,8 +2196,23 @@ begin
|
||||
end;
|
||||
|
||||
procedure TEnvironmentOptions.AddToRecentOpenFiles(const AFilename: string);
|
||||
var
|
||||
Allow: Boolean;
|
||||
begin
|
||||
AddToRecentList(AFilename,FRecentOpenFiles,FMaxRecentOpenFiles,rltFile);
|
||||
Allow := True;
|
||||
DoAddToRecentOpenFiles(AFilename, Allow);
|
||||
if Allow then
|
||||
AddToRecentList(AFilename,FRecentOpenFiles,FMaxRecentOpenFiles,rltFile);
|
||||
end;
|
||||
|
||||
procedure TEnvironmentOptions.AddToRecentPackageFiles(const AFilename: string);
|
||||
var
|
||||
Allow: Boolean;
|
||||
begin
|
||||
Allow := True;
|
||||
DoAddToRecentPackageFiles(AFilename, Allow);
|
||||
if Allow then
|
||||
AddToRecentList(AFilename,FRecentPackageFiles,FMaxRecentPackageFiles,rltFile);
|
||||
end;
|
||||
|
||||
procedure TEnvironmentOptions.RemoveFromRecentOpenFiles(const AFilename: string);
|
||||
@ -2203,9 +2220,20 @@ begin
|
||||
RemoveFromRecentList(AFilename,FRecentOpenFiles,rltFile);
|
||||
end;
|
||||
|
||||
procedure TEnvironmentOptions.AddToRecentProjectFiles(const AFilename: string);
|
||||
procedure TEnvironmentOptions.RemoveFromRecentPackageFiles(
|
||||
const AFilename: string);
|
||||
begin
|
||||
AddToRecentList(AFilename,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile);
|
||||
RemoveFromRecentList(AFilename,FRecentPackageFiles,rltFile);
|
||||
end;
|
||||
|
||||
procedure TEnvironmentOptions.AddToRecentProjectFiles(const AFilename: string);
|
||||
var
|
||||
Allow: Boolean;
|
||||
begin
|
||||
Allow := True;
|
||||
DoAddToRecentProjectFiles(AFilename, Allow);
|
||||
if Allow then
|
||||
AddToRecentList(AFilename,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile);
|
||||
{$ifdef Windows}
|
||||
SHAddToRecentDocs(SHARD_PATHW, PWideChar(UTF8ToUTF16(AFileName)));
|
||||
{$endif}
|
||||
|
@ -3039,8 +3039,7 @@ end;
|
||||
|
||||
procedure TPkgManager.AddToMenuRecentPackages(const Filename: string);
|
||||
begin
|
||||
AddToRecentList(Filename,EnvironmentOptions.RecentPackageFiles,
|
||||
EnvironmentOptions.MaxRecentPackageFiles,rltFile);
|
||||
EnvironmentOptions.AddToRecentPackageFiles(Filename);
|
||||
SetRecentPackagesMenu;
|
||||
MainIDE.SaveEnvironment;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user