mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-12 10:19:15 +02:00
IDEIntf: TAbstractIDEOptions added Restore parameter to distinguish between Ok and Cancel
git-svn-id: trunk@27681 -
This commit is contained in:
parent
e17fee021d
commit
5223a83d19
@ -155,7 +155,7 @@ type
|
|||||||
public
|
public
|
||||||
class function GetGroupCaption:string; override;
|
class function GetGroupCaption:string; override;
|
||||||
class function GetInstance: TAbstractIDEOptions; override;
|
class function GetInstance: TAbstractIDEOptions; override;
|
||||||
procedure DoAfterWrite; override;
|
procedure DoAfterWrite(Restore: boolean); override;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -414,9 +414,10 @@ begin
|
|||||||
Result := CodeExplorerOptions;
|
Result := CodeExplorerOptions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCodeExplorerOptions.DoAfterWrite;
|
procedure TCodeExplorerOptions.DoAfterWrite(Restore: boolean);
|
||||||
begin
|
begin
|
||||||
Save;
|
if not Restore then
|
||||||
|
Save;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCodeExplorerOptions.Clear;
|
procedure TCodeExplorerOptions.Clear;
|
||||||
|
@ -104,7 +104,7 @@ type
|
|||||||
public
|
public
|
||||||
class function GetGroupCaption:string; override;
|
class function GetGroupCaption:string; override;
|
||||||
class function GetInstance: TAbstractIDEOptions; override;
|
class function GetInstance: TAbstractIDEOptions; override;
|
||||||
procedure DoAfterWrite; override;
|
procedure DoAfterWrite(Restore: boolean); override;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -317,10 +317,11 @@ begin
|
|||||||
Result := CodeToolsOpts;
|
Result := CodeToolsOpts;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCodeToolsOptions.DoAfterWrite;
|
procedure TCodeToolsOptions.DoAfterWrite(Restore: boolean);
|
||||||
begin
|
begin
|
||||||
inherited DoAfterWrite;
|
inherited DoAfterWrite(Restore);
|
||||||
Save;
|
if not Restore then
|
||||||
|
Save;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCodeToolsOptions.Load;
|
procedure TCodeToolsOptions.Load;
|
||||||
|
@ -91,7 +91,8 @@
|
|||||||
- history
|
- history
|
||||||
- refactor compiler options (default options, load, save to file)
|
- refactor compiler options (default options, load, save to file)
|
||||||
- disabled project compiler options, used only for storage
|
- disabled project compiler options, used only for storage
|
||||||
- replaced OwnerProject with LazProject
|
- replaced project compiler options OwnerProject+Project with LazProject
|
||||||
|
- addded changestamp, assign, equals to compiler options
|
||||||
- added buildmodes to project
|
- added buildmodes to project
|
||||||
- moved compileroptions and macrovalues to active buildmode
|
- moved compileroptions and macrovalues to active buildmode
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ uses
|
|||||||
type
|
type
|
||||||
|
|
||||||
{ TCompilerDiffTool
|
{ TCompilerDiffTool
|
||||||
A tool to create the difference between two option sets }
|
A tool to collect the difference between two option sets }
|
||||||
|
|
||||||
TCompilerDiffTool = class
|
TCompilerDiffTool = class
|
||||||
private
|
private
|
||||||
|
@ -1009,7 +1009,7 @@ type
|
|||||||
public
|
public
|
||||||
class function GetGroupCaption:string; override;
|
class function GetGroupCaption:string; override;
|
||||||
class function GetInstance: TAbstractIDEOptions; override;
|
class function GetInstance: TAbstractIDEOptions; override;
|
||||||
procedure DoAfterWrite; override;
|
procedure DoAfterWrite(Restore: boolean); override;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
constructor CreateDefaultOnly;
|
constructor CreateDefaultOnly;
|
||||||
@ -3709,9 +3709,10 @@ begin
|
|||||||
Result := EditorOpts;
|
Result := EditorOpts;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TEditorOptions.DoAfterWrite;
|
procedure TEditorOptions.DoAfterWrite(Restore: boolean);
|
||||||
begin
|
begin
|
||||||
Save;
|
if not Restore then
|
||||||
|
Save;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TEditorOptions.GetSynEditOptionName(SynOption: TSynEditorOption): string;
|
function TEditorOptions.GetSynEditOptionName(SynOption: TSynEditorOption): string;
|
||||||
|
@ -286,7 +286,7 @@ type
|
|||||||
public
|
public
|
||||||
class function GetGroupCaption:string; override;
|
class function GetGroupCaption:string; override;
|
||||||
class function GetInstance: TAbstractIDEOptions; override;
|
class function GetInstance: TAbstractIDEOptions; override;
|
||||||
procedure DoAfterWrite; override;
|
procedure DoAfterWrite(Restore: boolean); override;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -797,10 +797,11 @@ begin
|
|||||||
Result := EnvironmentOptions;
|
Result := EnvironmentOptions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TEnvironmentOptions.DoAfterWrite;
|
procedure TEnvironmentOptions.DoAfterWrite(Restore: boolean);
|
||||||
begin
|
begin
|
||||||
Save(False);
|
if not Restore then
|
||||||
inherited DoAfterWrite;
|
Save(False);
|
||||||
|
inherited DoAfterWrite(Restore);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TEnvironmentOptions.SetLazarusDefaultFilename;
|
procedure TEnvironmentOptions.SetLazarusDefaultFilename;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
The frame for 'build modes' on the compiler options.
|
The frame for 'build modes' on the compiler options.
|
||||||
Allows to edit build modes and build macro values.
|
Allows to add/delete/edit build modes and build macro values.
|
||||||
It does not allow to define new build macros, only values.
|
It does not allow to define new build macros, only values.
|
||||||
|
|
||||||
ToDo:
|
ToDo:
|
||||||
|
@ -54,7 +54,7 @@ type
|
|||||||
public
|
public
|
||||||
class function GetGroupCaption:string; override;
|
class function GetGroupCaption:string; override;
|
||||||
class function GetInstance: TAbstractIDEOptions; override;
|
class function GetInstance: TAbstractIDEOptions; override;
|
||||||
procedure DoAfterWrite; override;
|
procedure DoAfterWrite(Restore: boolean); override;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
@ -110,9 +110,10 @@ begin
|
|||||||
Result := HelpOpts;
|
Result := HelpOpts;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure THelpOptions.DoAfterWrite;
|
procedure THelpOptions.DoAfterWrite(Restore: boolean);
|
||||||
begin
|
begin
|
||||||
Save;
|
if not Restore then
|
||||||
|
Save;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure THelpOptions.Clear;
|
procedure THelpOptions.Clear;
|
||||||
|
@ -85,7 +85,7 @@ type
|
|||||||
function FindEditorClass(GroupIndex, AIndex: integer): TAbstractIDEOptionsEditorClass; override;
|
function FindEditorClass(GroupIndex, AIndex: integer): TAbstractIDEOptionsEditorClass; override;
|
||||||
procedure TraverseSettings(AOptions: TAbstractIDEOptions; anAction: TIDEOptsDlgAction);
|
procedure TraverseSettings(AOptions: TAbstractIDEOptions; anAction: TIDEOptsDlgAction);
|
||||||
procedure ReadAll;
|
procedure ReadAll;
|
||||||
procedure WriteAll;
|
procedure WriteAll(Restore: boolean);
|
||||||
|
|
||||||
property OptionsFilter: TAbstractIDEOptionsClass read FOptionsFilter write FOptionsFilter;
|
property OptionsFilter: TAbstractIDEOptionsClass read FOptionsFilter write FOptionsFilter;
|
||||||
property OnLoadIDEOptions: TOnLoadIDEOptions read FOnLoadOptions write FOnLoadOptions;
|
property OnLoadIDEOptions: TOnLoadIDEOptions read FOnLoadOptions write FOnLoadOptions;
|
||||||
@ -277,7 +277,7 @@ begin
|
|||||||
InstanceList.Free;
|
InstanceList.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIDEOptionsDialog.WriteAll;
|
procedure TIDEOptionsDialog.WriteAll(Restore: boolean);
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
Rec: PIDEOptionsGroupRec;
|
Rec: PIDEOptionsGroupRec;
|
||||||
@ -295,9 +295,12 @@ begin
|
|||||||
Instance := Rec^.GroupClass.GetInstance;
|
Instance := Rec^.GroupClass.GetInstance;
|
||||||
if Instance <> nil then
|
if Instance <> nil then
|
||||||
begin
|
begin
|
||||||
Instance.DoBeforeWrite;
|
Instance.DoBeforeWrite(Restore);
|
||||||
TraverseSettings(Instance,iodaWrite);
|
if Restore then
|
||||||
Instance.DoAfterWrite;
|
TraverseSettings(Instance,iodaWrite)
|
||||||
|
else
|
||||||
|
TraverseSettings(Instance,iodaRestore);
|
||||||
|
Instance.DoAfterWrite(Restore);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
50
ide/main.pp
50
ide/main.pp
@ -366,16 +366,16 @@ type
|
|||||||
AOptionsFilter: TAbstractIDEOptionsClass = nil); override;
|
AOptionsFilter: TAbstractIDEOptionsClass = nil); override;
|
||||||
|
|
||||||
procedure DoEnvironmentOptionsBeforeRead(Sender: TObject);
|
procedure DoEnvironmentOptionsBeforeRead(Sender: TObject);
|
||||||
procedure DoEnvironmentOptionsBeforeWrite(Sender: TObject);
|
procedure DoEnvironmentOptionsBeforeWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoEnvironmentOptionsAfterWrite(Sender: TObject);
|
procedure DoEnvironmentOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoEditorOptionsBeforeRead(Sender: TObject);
|
procedure DoEditorOptionsBeforeRead(Sender: TObject);
|
||||||
procedure DoEditorOptionsAfterWrite(Sender: TObject);
|
procedure DoEditorOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoCodetoolsOptionsAfterWrite(Sender: TObject);
|
procedure DoCodetoolsOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoCodeExplorerOptionsAfterWrite(Sender: TObject);
|
procedure DoCodeExplorerOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoProjectOptionsBeforeRead(Sender: TObject);
|
procedure DoProjectOptionsBeforeRead(Sender: TObject);
|
||||||
procedure DoProjectOptionsAfterWrite(Sender: TObject);
|
procedure DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoCompilerOptionsBeforeWrite(Sender: TObject);
|
procedure DoCompilerOptionsBeforeWrite(Sender: TObject; Restore: boolean);
|
||||||
procedure DoCompilerOptionsAfterWrite(Sender: TObject);
|
procedure DoCompilerOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
|
|
||||||
// SourceNotebook events
|
// SourceNotebook events
|
||||||
procedure OnSrcNoteBookActivated(Sender: TObject);
|
procedure OnSrcNoteBookActivated(Sender: TObject);
|
||||||
@ -4294,7 +4294,7 @@ begin
|
|||||||
ReadAll;
|
ReadAll;
|
||||||
end;
|
end;
|
||||||
if IDEOptionsDialog.ShowModal = mrOk then begin
|
if IDEOptionsDialog.ShowModal = mrOk then begin
|
||||||
IDEOptionsDialog.WriteAll;
|
IDEOptionsDialog.WriteAll(false);
|
||||||
MainBuildBoss.SetBuildTarget(Project1.CompilerOptions.TargetOS,
|
MainBuildBoss.SetBuildTarget(Project1.CompilerOptions.TargetOS,
|
||||||
Project1.CompilerOptions.TargetCPU,Project1.CompilerOptions.LCLWidgetType);
|
Project1.CompilerOptions.TargetCPU,Project1.CompilerOptions.LCLWidgetType);
|
||||||
UpdateHighlighters(True);
|
UpdateHighlighters(True);
|
||||||
@ -4303,6 +4303,8 @@ begin
|
|||||||
Application.TaskBarBehavior := tbSingleButton
|
Application.TaskBarBehavior := tbSingleButton
|
||||||
else
|
else
|
||||||
Application.TaskBarBehavior := tbDefault;
|
Application.TaskBarBehavior := tbDefault;
|
||||||
|
end else begin
|
||||||
|
IDEOptionsDialog.WriteAll(true);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
IDEOptionsDialog.Free;
|
IDEOptionsDialog.Free;
|
||||||
@ -4315,13 +4317,16 @@ begin
|
|||||||
SaveDesktopSettings(EnvironmentOptions);
|
SaveDesktopSettings(EnvironmentOptions);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoEnvironmentOptionsBeforeWrite(Sender: TObject);
|
procedure TMainIDE.DoEnvironmentOptionsBeforeWrite(Sender: TObject;
|
||||||
|
Restore: boolean);
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
OldCompilerFilename:=EnvironmentOptions.CompilerFilename;
|
OldCompilerFilename:=EnvironmentOptions.CompilerFilename;
|
||||||
OldLanguage:=EnvironmentOptions.LanguageID;
|
OldLanguage:=EnvironmentOptions.LanguageID;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoEnvironmentOptionsAfterWrite(Sender: TObject);
|
procedure TMainIDE.DoEnvironmentOptionsAfterWrite(Sender: TObject;
|
||||||
|
Restore: boolean);
|
||||||
var
|
var
|
||||||
MacroValueChanged,
|
MacroValueChanged,
|
||||||
FPCSrcDirChanged, FPCCompilerChanged,
|
FPCSrcDirChanged, FPCCompilerChanged,
|
||||||
@ -4373,6 +4378,7 @@ var
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
// invalidate cached substituted macros
|
// invalidate cached substituted macros
|
||||||
IncreaseCompilerParseStamp;
|
IncreaseCompilerParseStamp;
|
||||||
CompileProgress.SetEnabled(EnvironmentOptions.ShowCompileDialog);
|
CompileProgress.SetEnabled(EnvironmentOptions.ShowCompileDialog);
|
||||||
@ -4416,21 +4422,25 @@ begin
|
|||||||
Project1.UpdateAllCustomHighlighter;
|
Project1.UpdateAllCustomHighlighter;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoEditorOptionsAfterWrite(Sender: TObject);
|
procedure TMainIDE.DoEditorOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
Project1.UpdateAllSyntaxHighlighter;
|
Project1.UpdateAllSyntaxHighlighter;
|
||||||
UpdateHighlighters(True);
|
UpdateHighlighters(True);
|
||||||
SourceEditorManager.ReloadEditorOptions;
|
SourceEditorManager.ReloadEditorOptions;
|
||||||
ReloadMenuShortCuts;
|
ReloadMenuShortCuts;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoCodetoolsOptionsAfterWrite(Sender: TObject);
|
procedure TMainIDE.DoCodetoolsOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
CodeToolsOpts.AssignTo(CodeToolBoss);
|
CodeToolsOpts.AssignTo(CodeToolBoss);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoCodeExplorerOptionsAfterWrite(Sender: TObject);
|
procedure TMainIDE.DoCodeExplorerOptionsAfterWrite(Sender: TObject;
|
||||||
|
Restore: boolean);
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
if CodeExplorerView<>nil then
|
if CodeExplorerView<>nil then
|
||||||
CodeExplorerView.Refresh(true);
|
CodeExplorerView.Refresh(true);
|
||||||
end;
|
end;
|
||||||
@ -4448,7 +4458,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoProjectOptionsAfterWrite(Sender: TObject);
|
procedure TMainIDE.DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean
|
||||||
|
);
|
||||||
var
|
var
|
||||||
Project: TProject absolute Sender;
|
Project: TProject absolute Sender;
|
||||||
|
|
||||||
@ -4534,6 +4545,7 @@ var
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
SetTitle;
|
SetTitle;
|
||||||
SetAutoCreateForms;
|
SetAutoCreateForms;
|
||||||
// extend include path
|
// extend include path
|
||||||
@ -4547,17 +4559,21 @@ begin
|
|||||||
Project.DefineTemplates.AllChanged;
|
Project.DefineTemplates.AllChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoCompilerOptionsBeforeWrite(Sender: TObject);
|
procedure TMainIDE.DoCompilerOptionsBeforeWrite(Sender: TObject;
|
||||||
|
Restore: boolean);
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
OldCompOpts := TBaseCompilerOptionsClass(Sender.ClassType).Create(nil);
|
OldCompOpts := TBaseCompilerOptionsClass(Sender.ClassType).Create(nil);
|
||||||
OldCompOpts.Assign(TBaseCompilerOptions(Sender));
|
OldCompOpts.Assign(TBaseCompilerOptions(Sender));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.DoCompilerOptionsAfterWrite(Sender: TObject);
|
procedure TMainIDE.DoCompilerOptionsAfterWrite(Sender: TObject; Restore: boolean
|
||||||
|
);
|
||||||
var
|
var
|
||||||
ProjCompOpts: TProjectCompilerOptions;
|
ProjCompOpts: TProjectCompilerOptions;
|
||||||
aFilename: String;
|
aFilename: String;
|
||||||
begin
|
begin
|
||||||
|
if Restore then exit;
|
||||||
if not OldCompOpts.IsEqual(TBaseCompilerOptions(Sender)) then
|
if not OldCompOpts.IsEqual(TBaseCompilerOptions(Sender)) then
|
||||||
begin
|
begin
|
||||||
TBaseCompilerOptions(Sender).Modified := True;
|
TBaseCompilerOptions(Sender).Modified := True;
|
||||||
|
@ -22,6 +22,13 @@
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
Defines the standard message Quick Fix menu items.
|
Defines the standard message Quick Fix menu items.
|
||||||
|
|
||||||
|
ToDo:
|
||||||
|
- There is no method in an ancestor class to be overriden:
|
||||||
|
1. option: if the ancestor has a function with the same name: update the parameter list
|
||||||
|
2. option: remove the method
|
||||||
|
3. option: add a virtual method to the ancestor
|
||||||
|
|
||||||
}
|
}
|
||||||
unit MsgQuickFixes;
|
unit MsgQuickFixes;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ unit IDEOptionsIntf;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Controls, Buttons, Forms;
|
Classes, SysUtils, LCLProc, Controls, Buttons, Forms;
|
||||||
|
|
||||||
const
|
const
|
||||||
NoParent = -1;
|
NoParent = -1;
|
||||||
@ -36,27 +36,50 @@ type
|
|||||||
|
|
||||||
// types
|
// types
|
||||||
|
|
||||||
|
TIDEOptionsHandler = (
|
||||||
|
iohBeforeRead,
|
||||||
|
iohAfterRead,
|
||||||
|
iohBeforeWrite,
|
||||||
|
iohAfterWrite
|
||||||
|
);
|
||||||
|
TIDEOptionsHandlers = set of TIDEOptionsHandler;
|
||||||
|
|
||||||
|
TIDEOptionsWriteEvent = procedure(Sender: TObject; Restore: boolean) of object;
|
||||||
|
|
||||||
{ TAbstractIDEOptions }
|
{ TAbstractIDEOptions }
|
||||||
|
|
||||||
TAbstractIDEOptions = class(TPersistent)
|
TAbstractIDEOptions = class(TPersistent)
|
||||||
private
|
private
|
||||||
|
fHandlers: array[TIDEOptionsHandler] of TMethodList;
|
||||||
FOnAfterRead: TNotifyEvent;
|
FOnAfterRead: TNotifyEvent;
|
||||||
FOnAfterWrite: TNotifyEvent;
|
FOnAfterWrite: TIDEOptionsWriteEvent;
|
||||||
FOnBeforeRead: TNotifyEvent;
|
FOnBeforeRead: TNotifyEvent;
|
||||||
FOnBeforeWrite: TNotifyEvent;
|
FOnBeforeWrite: TIDEOptionsWriteEvent;
|
||||||
public
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
class function GetGroupCaption: string; virtual; abstract;
|
class function GetGroupCaption: string; virtual; abstract;
|
||||||
class function GetInstance: TAbstractIDEOptions; virtual; abstract;
|
class function GetInstance: TAbstractIDEOptions; virtual; abstract;
|
||||||
|
|
||||||
procedure DoBeforeRead; virtual;
|
procedure DoBeforeRead; virtual;
|
||||||
procedure DoAfterRead; virtual;
|
procedure DoAfterRead; virtual;
|
||||||
procedure DoBeforeWrite; virtual;
|
procedure DoBeforeWrite(Restore: boolean); virtual;
|
||||||
procedure DoAfterWrite; virtual;
|
procedure DoAfterWrite(Restore: boolean); virtual;
|
||||||
|
|
||||||
|
procedure AddHandlerBeforeRead(const Handler: TNotifyEvent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||||
|
procedure RemoveHandlerBeforeRead(const Handler: TNotifyEvent);
|
||||||
|
procedure AddHandlerAfterRead(const Handler: TNotifyEvent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||||
|
procedure RemoveHandlerAfterRead(const Handler: TNotifyEvent);
|
||||||
|
procedure AddHandlerBeforeWrite(const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||||
|
procedure RemoveHandlerBeforeWrite(const Handler: TIDEOptionsWriteEvent);
|
||||||
|
procedure AddHandlerAfterWrite(const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean = true); // AsFirst means: first to call
|
||||||
|
procedure RemoveHandlerAfterWrite(const Handler: TIDEOptionsWriteEvent);
|
||||||
|
|
||||||
property OnBeforeRead: TNotifyEvent read FOnBeforeRead write FOnBeforeRead;
|
property OnBeforeRead: TNotifyEvent read FOnBeforeRead write FOnBeforeRead;
|
||||||
property OnAfterRead: TNotifyEvent read FOnAfterRead write FOnAfterRead;
|
property OnAfterRead: TNotifyEvent read FOnAfterRead write FOnAfterRead;
|
||||||
property OnBeforeWrite: TNotifyEvent read FOnBeforeWrite write FOnBeforeWrite;
|
property OnBeforeWrite: TIDEOptionsWriteEvent read FOnBeforeWrite write FOnBeforeWrite;
|
||||||
property OnAfterWrite: TNotifyEvent read FOnAfterWrite write FOnAfterWrite;
|
property OnAfterWrite: TIDEOptionsWriteEvent read FOnAfterWrite write FOnAfterWrite;
|
||||||
end;
|
end;
|
||||||
TAbstractIDEOptionsClass = class of TAbstractIDEOptions;
|
TAbstractIDEOptionsClass = class of TAbstractIDEOptions;
|
||||||
|
|
||||||
@ -139,7 +162,7 @@ type
|
|||||||
procedure Notify(Ptr: Pointer; Action: TListNotification); override;
|
procedure Notify(Ptr: Pointer; Action: TListNotification); override;
|
||||||
public
|
public
|
||||||
procedure Resort;
|
procedure Resort;
|
||||||
procedure DoAfterWrite;
|
procedure DoAfterWrite(Restore: boolean);
|
||||||
function GetByIndex(AIndex: Integer): PIDEOptionsGroupRec;
|
function GetByIndex(AIndex: Integer): PIDEOptionsGroupRec;
|
||||||
function GetByGroupClass(AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec;
|
function GetByGroupClass(AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec;
|
||||||
function Add(AGroupIndex: Integer; AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec; reintroduce;
|
function Add(AGroupIndex: Integer; AGroupClass: TAbstractIDEOptionsClass): PIDEOptionsGroupRec; reintroduce;
|
||||||
@ -470,7 +493,7 @@ begin
|
|||||||
Items[i]^.Items.Resort;
|
Items[i]^.Items.Resort;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIDEOptionsGroupList.DoAfterWrite;
|
procedure TIDEOptionsGroupList.DoAfterWrite(Restore: boolean);
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
Rec: PIDEOptionsGroupRec;
|
Rec: PIDEOptionsGroupRec;
|
||||||
@ -485,7 +508,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Instance := Rec^.GroupClass.GetInstance;
|
Instance := Rec^.GroupClass.GetInstance;
|
||||||
if Instance <> nil then
|
if Instance <> nil then
|
||||||
Instance.DoAfterWrite;
|
Instance.DoAfterWrite(Restore);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -510,28 +533,105 @@ end;
|
|||||||
|
|
||||||
{ TAbstractIDEOptions }
|
{ TAbstractIDEOptions }
|
||||||
|
|
||||||
|
constructor TAbstractIDEOptions.Create;
|
||||||
|
var
|
||||||
|
h: TIDEOptionsHandler;
|
||||||
|
begin
|
||||||
|
for h:=low(TIDEOptionsHandler) to high(TIDEOptionsHandler) do
|
||||||
|
fHandlers[h]:=TMethodList.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TAbstractIDEOptions.Destroy;
|
||||||
|
var
|
||||||
|
h: TIDEOptionsHandler;
|
||||||
|
begin
|
||||||
|
for h:=low(TIDEOptionsHandler) to high(TIDEOptionsHandler) do
|
||||||
|
FreeAndNil(fHandlers[h]);
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TAbstractIDEOptions.DoBeforeRead;
|
procedure TAbstractIDEOptions.DoBeforeRead;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnBeforeRead) then
|
if Assigned(FOnBeforeRead) then
|
||||||
OnBeforeRead(Self);
|
FOnBeforeRead(Self);
|
||||||
|
fHandlers[iohBeforeRead].CallNotifyEvents(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAbstractIDEOptions.DoAfterRead;
|
procedure TAbstractIDEOptions.DoAfterRead;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnAfterRead) then
|
if Assigned(FOnAfterRead) then
|
||||||
OnAfterRead(Self);
|
FOnAfterRead(Self);
|
||||||
|
fHandlers[iohAfterRead].CallNotifyEvents(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAbstractIDEOptions.DoBeforeWrite;
|
procedure TAbstractIDEOptions.DoBeforeWrite(Restore: boolean);
|
||||||
|
var
|
||||||
|
i: LongInt;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnBeforeWrite) then
|
if Assigned(FOnBeforeWrite) then
|
||||||
OnBeforeWrite(Self);
|
FOnBeforeWrite(Self,Restore);
|
||||||
|
i:=fHandlers[iohBeforeWrite].Count;
|
||||||
|
while fHandlers[iohBeforeWrite].NextDownIndex(i) do
|
||||||
|
TIDEOptionsWriteEvent(fHandlers[iohBeforeWrite][i])(Self,Restore);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAbstractIDEOptions.DoAfterWrite;
|
procedure TAbstractIDEOptions.DoAfterWrite(Restore: boolean);
|
||||||
|
var
|
||||||
|
i: LongInt;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnAfterWrite) then
|
if Assigned(FOnAfterWrite) then
|
||||||
OnAfterWrite(Self);
|
FOnAfterWrite(Self,Restore);
|
||||||
|
i:=fHandlers[iohBeforeWrite].Count;
|
||||||
|
while fHandlers[iohBeforeWrite].NextDownIndex(i) do
|
||||||
|
TIDEOptionsWriteEvent(fHandlers[iohBeforeWrite][i])(Self,Restore);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.AddHandlerBeforeRead(const Handler: TNotifyEvent;
|
||||||
|
const AsFirst: boolean);
|
||||||
|
begin
|
||||||
|
fHandlers[iohBeforeRead].Add(TMethod(Handler),AsFirst);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.RemoveHandlerBeforeRead(
|
||||||
|
const Handler: TNotifyEvent);
|
||||||
|
begin
|
||||||
|
fHandlers[iohBeforeRead].Remove(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.AddHandlerAfterRead(const Handler: TNotifyEvent;
|
||||||
|
const AsFirst: boolean);
|
||||||
|
begin
|
||||||
|
fHandlers[iohAfterRead].Add(TMethod(Handler),AsFirst);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.RemoveHandlerAfterRead(const Handler: TNotifyEvent
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
fHandlers[iohAfterRead].Remove(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.AddHandlerBeforeWrite(
|
||||||
|
const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean);
|
||||||
|
begin
|
||||||
|
fHandlers[iohBeforeWrite].Add(TMethod(Handler),AsFirst);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.RemoveHandlerBeforeWrite(
|
||||||
|
const Handler: TIDEOptionsWriteEvent);
|
||||||
|
begin
|
||||||
|
fHandlers[iohBeforeWrite].Remove(TMethod(Handler));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.AddHandlerAfterWrite(
|
||||||
|
const Handler: TIDEOptionsWriteEvent; const AsFirst: boolean);
|
||||||
|
begin
|
||||||
|
fHandlers[iohAfterWrite].Add(TMethod(Handler),AsFirst);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAbstractIDEOptions.RemoveHandlerAfterWrite(
|
||||||
|
const Handler: TIDEOptionsWriteEvent);
|
||||||
|
begin
|
||||||
|
fHandlers[iohAfterWrite].Remove(TMethod(Handler));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
Loading…
Reference in New Issue
Block a user