IDE, IDEIntf: changes needed for Favorites package

git-svn-id: trunk@50511 -
This commit is contained in:
ondrej 2015-11-27 05:35:22 +00:00
parent 22c38e578f
commit 151f452c84
4 changed files with 162 additions and 10 deletions

View File

@ -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;

View File

@ -316,6 +316,7 @@ end;
constructor TBuildManager.Create(AOwner: TComponent);
begin
EnvironmentOptions := TEnvironmentOptions.Create;
IDEEnvironmentOptions := EnvironmentOptions;
EnvironmentOptions.IsGlobalMode:=@EnvironmentOptionsIsGlobalMode;
DefaultCfgVars:=TCTCfgScriptVariables.Create;
DefaultCfgVarsBuildMacroStamp:=CTInvalidChangeStamp;

View File

@ -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}

View File

@ -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;