ide: convert environment options editor to IDE options editor

ideintf: add ideoptionsintf - base classes and functions to register IDE options editors, editor groups

git-svn-id: trunk@17070 -
This commit is contained in:
paul 2008-10-20 08:22:09 +00:00
parent 3462df6c3e
commit 472544c43b
17 changed files with 327 additions and 322 deletions

7
.gitattributes vendored
View File

@ -2361,9 +2361,6 @@ ide/encloseselectiondlg.lfm svneol=native#text/plain
ide/encloseselectiondlg.lrs svneol=native#text/pascal
ide/encloseselectiondlg.pas svneol=native#text/pascal
ide/environmentopts.pp svneol=native#text/pascal
ide/environmentopts_dlg.lfm svneol=native#text/plain
ide/environmentopts_dlg.lrs svneol=native#text/plain
ide/environmentopts_dlg.pas svneol=native#text/pascal
ide/extractprocdlg.lfm svneol=native#text/plain
ide/extractprocdlg.lrs svneol=native#text/pascal
ide/extractprocdlg.pas svneol=native#text/pascal
@ -2440,6 +2437,9 @@ ide/idecontexthelpedit.lrs svneol=native#text/plain
ide/idecontexthelpedit.pas svneol=native#text/plain
ide/idedefs.pas svneol=native#text/pascal
ide/ideoptiondefs.pas svneol=native#text/pascal
ide/ideoptionsdlg.lfm svneol=native#text/plain
ide/ideoptionsdlg.lrs svneol=native#text/plain
ide/ideoptionsdlg.pas svneol=native#text/pascal
ide/ideprocs.pp svneol=native#text/pascal
ide/ideprotocol.pas svneol=native#text/pascal
ide/idetranslations.pas svneol=native#text/pascal
@ -2644,6 +2644,7 @@ ideintf/ideexterntoolintf.pas svneol=native#text/plain
ideintf/idehelpintf.pas svneol=native#text/plain
ideintf/ideimagesintf.pas svneol=native#text/pascal
ideintf/idemsgintf.pas svneol=native#text/plain
ideintf/ideoptionsintf.pas svneol=native#text/pascal
ideintf/idetextconverter.pas svneol=native#text/plain
ideintf/idewindowintf.pas svneol=native#text/plain
ideintf/imagelisteditor.lfm svneol=native#text/plain

View File

@ -36,7 +36,8 @@ uses
{$ENDIF}
Classes, SysUtils, Graphics, Controls, Forms, LCLProc, FileUtil, Dialogs,
Laz_XMLCfg, IDEProcs, LazarusIDEStrConsts, IDETranslations, LazConf,
ObjectInspector, IDEOptionDefs, IDEWindowIntf, ExtToolDialog, TransferMacros;
ObjectInspector, IDEOptionDefs, IDEWindowIntf, ExtToolDialog, TransferMacros,
IDEOptionsIntf;
const
EnvOptsVersion: integer = 106;
@ -122,7 +123,7 @@ type
{ TEnvironmentOptions }
TEnvironmentOptions = class
TEnvironmentOptions = class(TAbstractIDEOptions)
private
FFilename: string;
FFileAge: longint;
@ -434,32 +435,6 @@ type
property MsgViewFocus: boolean read fMsgViewFocus write fMsgViewFocus;
end;
TOnLoadEnvironmentSettings = procedure (Sender: TObject;
EnvironmentOptions: TEnvironmentOptions) of object;
TOnSaveEnvironmentSettings = procedure (Sender: TObject;
EnvironmentOptions: TEnvironmentOptions) of object;
{ TAbstractOptionsFrame }
TAbstractOptionsFrame = class(TFrame)
private
FOnLoadEnvironmentSettings: TOnLoadEnvironmentSettings;
FOnSaveEnvironmentSettings: TOnSaveEnvironmentSettings;
public
function Check: Boolean; virtual; abstract;
function GetTitle: String; virtual; abstract;
procedure Setup; virtual; abstract;
procedure ReadSettings(AOptions: TEnvironmentOptions); virtual; abstract;
procedure WriteSettings(AOptions: TEnvironmentOptions); virtual; abstract;
property OnSaveEnvironmentSettings: TOnSaveEnvironmentSettings
read FOnSaveEnvironmentSettings write FOnSaveEnvironmentSettings;
property OnLoadEnvironmentSettings: TOnLoadEnvironmentSettings
read FOnLoadEnvironmentSettings write FOnLoadEnvironmentSettings;
end;
TAbstractOptionsFrameClass = class of TAbstractOptionsFrame;
TEnvironmentOptionsEditorGetProc = procedure(AEditor: TAbstractOptionsFrameClass) of object;
var
EnvironmentOptions: TEnvironmentOptions = nil;
@ -476,9 +451,6 @@ function CheckDirPathExists(const Dir,
function SimpleDirectoryCheck(const OldDir, NewDir,
NotFoundErrMsg: string; out StopChecking: boolean): boolean;
procedure RegisterEnvironmentOptionsEditor(AEditor: TAbstractOptionsFrameClass);
procedure EnumEnvironmentOptionsEditors(ACallBack: TEnvironmentOptionsEditorGetProc);
const
DefaultLazDocPath = '$(LazarusDir)/docs/xml/lcl';
DefaultMsgViewFocus = {$IFDEF Windows}true{$ELSE}false{$ENDIF};
@ -491,34 +463,6 @@ implementation
uses
IDEContextHelpEdit;
type
{ TEnvironmentOptionsEditorList }
TEnvironmentOptionsEditorList = class(TList)
private
function GetItem(AIndex: Integer): TAbstractOptionsFrameClass;
procedure SetItem(AIndex: Integer; const AValue: TAbstractOptionsFrameClass);
public
property Items[AIndex: Integer]: TAbstractOptionsFrameClass read GetItem write SetItem; default;
end;
{ TEnvironmentOptionsEditorList }
function TEnvironmentOptionsEditorList.GetItem(AIndex: Integer
): TAbstractOptionsFrameClass;
begin
Result := TAbstractOptionsFrameClass(inherited Get(AIndex));
end;
procedure TEnvironmentOptionsEditorList.SetItem(AIndex: Integer;
const AValue: TAbstractOptionsFrameClass);
begin
inherited Put(AIndex, AValue);
end;
var
RegisteredEditors: TEnvironmentOptionsEditorList = nil;
function DebuggerNameToType(const s: string): TDebuggerType;
begin
for Result:=Low(TDebuggerType) to High(TDebuggerType) do
@ -1491,26 +1435,5 @@ begin
copy(FDebuggerFilename,SpacePos,length(FDebuggerFilename)-SpacePos+1);
end;
procedure RegisterEnvironmentOptionsEditor(AEditor: TAbstractOptionsFrameClass);
begin
if RegisteredEditors = nil then
RegisteredEditors := TEnvironmentOptionsEditorList.Create;
if RegisteredEditors.IndexOf(AEditor) = -1 then
RegisteredEditors.Add(AEditor);
end;
procedure EnumEnvironmentOptionsEditors(ACallBack: TEnvironmentOptionsEditorGetProc);
var
i: integer;
begin
if RegisteredEditors = nil then
Exit;
for i := 0 to RegisteredEditors.Count - 1 do
ACallBack(RegisteredEditors[i]);
end;
finalization
RegisteredEditors.Free;
end.

View File

@ -1,17 +0,0 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TEnvironmentOptionsDialog','FORMDATA',[
'TPF0'#25'TEnvironmentOptionsDialog'#24'EnvironmentOptionsDialog'#4'Left'#3'='
+#1#6'Height'#3#244#1#3'Top'#3'0'#1#5'Width'#3#147#2#7'Caption'#6#24'Environm'
+'entOptionsDialog'#12'ClientHeight'#3#244#1#11'ClientWidth'#3#147#2#10'Paren'
+'tFont'#8#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.27'#0#12'T'
+'ButtonPanel'#11'ButtonPanel'#4'Left'#2#6#6'Height'#2'('#3'Top'#3#204#1#5'Wi'
+'dth'#3#135#2#5'Align'#7#8'alBottom'#8'AutoSize'#9#8'TabOrder'#2#0#11'ShowBu'
+'ttons'#11#4'pbOK'#8'pbCancel'#6'pbHelp'#0#0#0#9'TTreeView'#12'CategoryTree'
+#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'
+#24'AnchorSideBottom.Control'#7#11'ButtonPanel'#4'Left'#2#6#6'Height'#3#192#1
+#3'Top'#2#6#5'Width'#3#206#0#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0
+#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Botto'
+'m'#2#6#20'Constraints.MinWidth'#3#206#0#17'DefaultItemHeight'#2#15#8'TabOrd'
+'er'#2#1#8'OnChange'#7#18'CategoryTreeChange'#0#0#0
]);

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, StdCtrls, ExtCtrls,
EnvironmentOpts, LazarusIDEStrConsts, IDEProcs;
EnvironmentOpts, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf;
type
{ TBackupOptionsFrame }
TBackupOptionsFrame = class(TAbstractOptionsFrame)
TBackupOptionsFrame = class(TAbstractIDEOptionsEditor)
BackupHelpLabel: TLabel;
BackupOtherGroupBox: TGroupBox;
BackupProjectGroupBox: TGroupBox;
@ -53,11 +53,10 @@ type
procedure BakTypeRadioGroupClick(Sender: TObject);
private
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
@ -84,11 +83,6 @@ begin
end;
end;
function TBackupOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TBackupOptionsFrame.GetTitle: String;
begin
Result := dlgEnvBckup;
@ -201,9 +195,9 @@ begin
end;
end;
procedure TBackupOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TBackupOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
with BackupInfoProjectFiles do
begin
@ -250,9 +244,9 @@ begin
end;
end;
procedure TBackupOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TBackupOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
with BackupInfoProjectFiles do
begin
@ -298,7 +292,6 @@ end;
initialization
{$I options_backup.lrs}
RegisterEnvironmentOptionsEditor(TBackupOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TBackupOptionsFrame, TEnvironmentOptions, EnvOptionsBackup);
end.

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, StdCtrls, Dialogs, LCLProc,
EnvironmentOpts, LazarusIDEStrConsts, IDETranslations, InputHistory, IDEProcs;
EnvironmentOpts, LazarusIDEStrConsts, IDETranslations, InputHistory, IDEProcs, IDEOptionsIntf;
type
{ TDesktopOptionsFrame }
TDesktopOptionsFrame = class(TAbstractOptionsFrame)
TDesktopOptionsFrame = class(TAbstractIDEOptionsEditor)
AutoSaveEditorFilesCheckBox: TCheckBox;
AutoSaveGroupBox: TGroupBox;
AutoSaveIntervalInSecsComboBox: TComboBox;
@ -54,25 +54,19 @@ type
function LangIDToCaption(const LangID: string): string;
function CaptionToLangID(const ACaption: string): string;
procedure DoLoadSettings(AOptions: TEnvironmentOptions);
procedure DoSaveSettings(AOptions: TEnvironmentOptions);
procedure DoLoadSettings(AOptions: TAbstractIDEOptions);
procedure DoSaveSettings(AOptions: TAbstractIDEOptions);
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
{ TDesktopOptionsFrame }
function TDesktopOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TDesktopOptionsFrame.GetTitle: String;
begin
Result := dlgDesktop;
@ -121,9 +115,9 @@ begin
MsgViewFocusCheckBox.Caption:=dlgEOFocusMessagesAfterCompilation;
end;
procedure TDesktopOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TDesktopOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
// language
LanguageComboBox.Text:=LangIDToCaption(LanguageID);
@ -149,9 +143,9 @@ begin
end;
end;
procedure TDesktopOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TDesktopOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
// language
LanguageID:=CaptionToLangID(LanguageComboBox.Text);
@ -270,21 +264,20 @@ begin
Result := '';
end;
procedure TDesktopOptionsFrame.DoLoadSettings(AOptions: TEnvironmentOptions);
procedure TDesktopOptionsFrame.DoLoadSettings(AOptions: TAbstractIDEOptions);
begin
if Assigned(OnLoadEnvironmentSettings) then
OnLoadEnvironmentSettings(Self, AOptions);
if Assigned(OnLoadIDEOptions) then
OnLoadIDEOptions(Self, AOptions);
end;
procedure TDesktopOptionsFrame.DoSaveSettings(AOptions: TEnvironmentOptions);
procedure TDesktopOptionsFrame.DoSaveSettings(AOptions: TAbstractIDEOptions);
begin
if Assigned(OnSaveEnvironmentSettings) then
OnSaveEnvironmentSettings(Self, AOptions);
if Assigned(OnSaveIDEOptions) then
OnSaveIDEOptions(Self, AOptions);
end;
initialization
{$I options_desktop.lrs}
RegisterEnvironmentOptionsEditor(TDesktopOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TDesktopOptionsFrame, TEnvironmentOptions, EnvOptionsDesktop);
end.

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, StdCtrls, Dialogs, Controls,
EnvironmentOpts, LazarusIDEStrConsts, InputHistory, LazConf, IDEProcs;
EnvironmentOpts, LazarusIDEStrConsts, InputHistory, LazConf, IDEProcs, IDEOptionsIntf;
type
{ TFilesOptionsFrame }
TFilesOptionsFrame = class(TAbstractOptionsFrame)
TFilesOptionsFrame = class(TAbstractIDEOptionsEditor)
CompilerPathButton: TButton;
CompilerPathComboBox: TComboBox;
CompilerPathGroupBox: TGroupBox;
@ -69,8 +69,8 @@ type
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
@ -228,9 +228,9 @@ begin
Result := True;
end;
procedure TFilesOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TFilesOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
LazarusDirComboBox.Items.Assign(LazarusDirHistory);
FOldLazarusDir:=LazarusDirectory;
@ -265,9 +265,9 @@ begin
end;
end;
procedure TFilesOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TFilesOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
LazarusDirectory:=LazarusDirComboBox.Text;
LazarusDirHistory.Assign(LazarusDirComboBox.Items);
@ -345,7 +345,6 @@ end;
initialization
{$I options_files.lrs}
RegisterEnvironmentOptionsEditor(TFilesOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TFilesOptionsFrame, TEnvironmentOptions, EnvOptionsFiles);
end.

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, StdCtrls, Dialogs,
EnvironmentOpts, LazarusIDEStrConsts, IDEProcs;
EnvironmentOpts, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf;
type
{ TFormEditorOptionsFrame }
TFormEditorOptionsFrame = class(TAbstractOptionsFrame)
TFormEditorOptionsFrame = class(TAbstractIDEOptionsEditor)
AutoCreateFormsOnOpenCheckBox: TCheckBox;
DesignerPaintLazyCheckBox: TCheckBox;
FormEditMiscGroupBox: TGroupBox;
@ -69,22 +69,16 @@ type
procedure FrameResize(Sender: TObject);
private
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
{ TFormEditorOptionsFrame }
function TFormEditorOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TFormEditorOptionsFrame.GetTitle: String;
begin
Result := dlgFrmEditor;
@ -143,9 +137,9 @@ begin
SetupMiscGroupBox;
end;
procedure TFormEditorOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TFormEditorOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
ShowBorderSpaceCheckBox.Checked:=ShowBorderSpacing;
ShowGridCheckBox.Checked:=ShowGrid;
@ -170,9 +164,9 @@ begin
end;
end;
procedure TFormEditorOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TFormEditorOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
ShowBorderSpacing:=ShowBorderSpaceCheckBox.Checked;
ShowGrid:=ShowGridCheckBox.Checked;
@ -208,7 +202,6 @@ end;
initialization
{$I options_formed.lrs}
RegisterEnvironmentOptionsEditor(TFormEditorOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TFormEditorOptionsFrame, TEnvironmentOptions, EnvOptionsFormEd);
end.

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Dialogs, StdCtrls,
EnvironmentOpts, LazarusIDEStrConsts, IDEProcs;
EnvironmentOpts, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf;
type
{ TFpDocOptionsFrame }
TFpDocOptionsFrame = class(TAbstractOptionsFrame)
TFpDocOptionsFrame = class(TAbstractIDEOptionsEditor)
LazDocAddPathButton: TButton;
LazDocBrowseButton: TButton;
LazDocDeletePathButton: TButton;
@ -45,22 +45,16 @@ type
procedure LazDocBrowseButtonClick(Sender: TObject);
private
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
{ TFpDocOptionsFrame }
function TFpDocOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TFpDocOptionsFrame.GetTitle: String;
begin
Result := lisFPDocEditor;
@ -75,15 +69,15 @@ begin
LazDocPathEdit.Clear;
end;
procedure TFpDocOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TFpDocOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
SplitString(LazDocPaths, ';', LazDocListBox.Items);
end;
procedure TFpDocOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TFpDocOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
LazDocPaths := StringListToText(LazDocListBox.Items, ';', true);
end;
@ -106,7 +100,6 @@ end;
initialization
{$I options_fpdoc.lrs}
RegisterEnvironmentOptionsEditor(TFpDocOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TFpDocOptionsFrame, TEnvironmentOptions, EnvOptionsFpDoc);
end.

View File

@ -26,34 +26,28 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, ExtCtrls,
EnvironmentOpts, LazarusIDEStrConsts;
EnvironmentOpts, LazarusIDEStrConsts, IDEOptionsIntf;
type
{ TNamingOptionsFrame }
TNamingOptionsFrame = class(TAbstractOptionsFrame)
TNamingOptionsFrame = class(TAbstractIDEOptionsEditor)
AmbiguousFileActionRadioGroup: TRadioGroup;
CharcaseFileActionRadioGroup: TRadioGroup;
PascalFileExtRadiogroup: TRadioGroup;
private
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
{ TNamingOptionsFrame }
function TNamingOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TNamingOptionsFrame.GetTitle: String;
begin
Result := dlgNaming;
@ -106,11 +100,11 @@ begin
end;
end;
procedure TNamingOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TNamingOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
var
i: integer;
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
for i := 0 to PascalFileExtRadiogroup.Items.Count-1 do
if PascalFileExtRadiogroup.Items[i] = PascalExtension[PascalFileExtension] then
@ -121,9 +115,9 @@ begin
end;
end;
procedure TNamingOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TNamingOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
if PascalFileExtRadiogroup.ItemIndex >= 0 then
PascalFileExtension := PascalExtToType(PascalFileExtRadiogroup.Items[PascalFileExtRadiogroup.ItemIndex])
@ -136,7 +130,6 @@ end;
initialization
{$I options_naming.lrs}
RegisterEnvironmentOptionsEditor(TNamingOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TNamingOptionsFrame, TEnvironmentOptions, EnvOptionsNaming);
end.

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, StdCtrls, Dialogs, Spin, LCLProc,
ObjectInspector, LazarusIDEStrConsts, EnvironmentOpts;
ObjectInspector, LazarusIDEStrConsts, EnvironmentOpts, IDEOptionsIntf;
type
{ TOIOptionsFrame }
TOIOptionsFrame = class(TAbstractOptionsFrame)
TOIOptionsFrame = class(TAbstractIDEOptionsEditor)
ObjectInspectorColorsGroupBox: TGroupBox;
OIAutoShowCheckBox: TCheckBox;
OIBackgroundColorButton: TColorButton;
@ -55,11 +55,10 @@ type
OIValueColorLabel: TLabel;
private
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
@ -83,19 +82,14 @@ begin
OIDrawGridLinesCheckBox.Caption := lisDrawGridLinesObjectInspector;
end;
function TOIOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TOIOptionsFrame.GetTitle: String;
begin
Result := dlgObjInsp;
end;
procedure TOIOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TOIOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
OIBackgroundColorButton.ButtonColor:=
ObjectInspectorOptions.GridBackgroundColor;
@ -118,9 +112,9 @@ begin
end;
end;
procedure TOIOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TOIOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
ObjectInspectorOptions.GridBackgroundColor:=
OIBackgroundColorButton.ButtonColor;
@ -146,7 +140,6 @@ end;
initialization
{$I options_oi.lrs}
RegisterEnvironmentOptionsEditor(TOIOptionsFrame);
RegisterIDEOptionsEditor(GroupEnvironment, TOIOptionsFrame, TEnvironmentOptions, EnvOptionsOI);
end.

View File

@ -26,13 +26,13 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, StdCtrls,
EnvironmentOpts, LazarusIDEStrConsts, IDEOptionDefs, ObjectInspector;
EnvironmentOpts, LazarusIDEStrConsts, IDEOptionDefs, ObjectInspector, IDEOptionsIntf;
type
{ TWindowOptionsFrame }
TWindowOptionsFrame = class(TAbstractOptionsFrame)
TWindowOptionsFrame = class(TAbstractIDEOptionsEditor)
HideIDEOnRunCheckBox: TCheckBox;
MinimizeAllOnMinimizeMainCheckBox: TCheckBox;
WindowPositionsGroupBox: TGroupBox;
@ -43,22 +43,16 @@ type
WindowPositionsBox: TIDEWindowSetupLayoutComponent;
procedure SetWindowPositionsItem(Index: integer);
public
function Check: Boolean; override;
function GetTitle: String; override;
procedure Setup; override;
procedure ReadSettings(AOptions: TEnvironmentOptions); override;
procedure WriteSettings(AOptions: TEnvironmentOptions); override;
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
end;
implementation
{ TWindowOptionsFrame }
function TWindowOptionsFrame.Check: Boolean;
begin
Result := True;
end;
function TWindowOptionsFrame.GetTitle: String;
begin
Result := dlgWindow;
@ -97,9 +91,9 @@ begin
end;
end;
procedure TWindowOptionsFrame.ReadSettings(AOptions: TEnvironmentOptions);
procedure TWindowOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
FLayouts := IDEWindowLayoutList;
SetWindowPositionsItem(0);
@ -110,9 +104,9 @@ begin
end;
end;
procedure TWindowOptionsFrame.WriteSettings(AOptions: TEnvironmentOptions);
procedure TWindowOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
begin
with AOptions do
with AOptions as TEnvironmentOptions do
begin
WindowPositionsBox.Save;
// window minimizing
@ -149,8 +143,7 @@ begin
end;
initialization
{$I options_window.lrs}
RegisterEnvironmentOptionsEditor(TWindowOptionsFrame);
{$I options_window.lrs}
RegisterIDEOptionsEditor(GroupEnvironment, TWindowOptionsFrame, TEnvironmentOptions, EnvOptionsWindow);
end.

View File

@ -1,9 +1,9 @@
object EnvironmentOptionsDialog: TEnvironmentOptionsDialog
object IDEOptionsDialog: TIDEOptionsDialog
Left = 317
Height = 500
Top = 304
Width = 659
Caption = 'EnvironmentOptionsDialog'
Caption = 'IDEOptionsDialog'
ClientHeight = 500
ClientWidth = 659
ParentFont = False

15
ide/ideoptionsdlg.lrs Normal file
View File

@ -0,0 +1,15 @@
LazarusResources.Add('TIDEOptionsDialog','FORMDATA',[
'TPF0'#17'TIDEOptionsDialog'#16'IDEOptionsDialog'#4'Left'#3'='#1#6'Height'#3
+#244#1#3'Top'#3'0'#1#5'Width'#3#147#2#7'Caption'#6#16'IDEOptionsDialog'#12'C'
+'lientHeight'#3#244#1#11'ClientWidth'#3#147#2#10'ParentFont'#8#8'Position'#7
+#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.27'#0#12'TButtonPanel'#11'ButtonP'
+'anel'#4'Left'#2#6#6'Height'#2'('#3'Top'#3#204#1#5'Width'#3#135#2#5'Align'#7
+#8'alBottom'#8'AutoSize'#9#8'TabOrder'#2#0#11'ShowButtons'#11#4'pbOK'#8'pbCa'
+'ncel'#6'pbHelp'#0#0#0#9'TTreeView'#12'CategoryTree'#22'AnchorSideLeft.Contr'
+'ol'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#24'AnchorSideBottom.Con'
+'trol'#7#11'ButtonPanel'#4'Left'#2#6#6'Height'#3#192#1#3'Top'#2#6#5'Width'#3
+#206#0#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#18'BorderSpacing.Left'
+#2#6#17'BorderSpacing.Top'#2#6#20'BorderSpacing.Bottom'#2#6#20'Constraints.M'
+'inWidth'#3#206#0#17'DefaultItemHeight'#2#15#8'TabOrder'#2#1#8'OnChange'#7#18
+'CategoryTreeChange'#0#0#0
]);

View File

@ -24,7 +24,7 @@
This unit defines a dialog for the lazarus environment options.
}
unit EnvironmentOpts_Dlg;
unit IdeOptionsDlg;
{$mode objfpc}{$H+}
@ -32,12 +32,12 @@ interface
uses
Classes, SysUtils, Controls, Forms, LResources, ComCtrls, ButtonPanel,
EnvironmentOpts, LazarusIDEStrConsts, IDEWindowIntf;
EnvironmentOpts, LazarusIDEStrConsts, IDEWindowIntf, IDEOptionsIntf;
type
{ TEnvironmentOptionsDialog }
{ TIDEOptionsDialog }
TEnvironmentOptionsDialog = class(TForm)
TIDEOptionsDialog = class(TForm)
ButtonPanel: TButtonPanel;
CategoryTree: TTreeView;
@ -46,26 +46,24 @@ type
procedure OkButtonClick(Sender: TObject);
procedure CancelButtonClick(Sender: TObject);
private
FOnLoadEnvironmentSettings: TOnLoadEnvironmentSettings;
FOnSaveEnvironmentSettings: TOnSaveEnvironmentSettings;
FOnLoadOptions: TOnLoadIDEOptions;
FOnSaveOptions: TOnSaveIDEOptions;
PrevNode: TTreeNode;
FEditors: TList;
function CheckValues: boolean;
procedure LoadEnvironmentSettings(Sender: TObject; AOptions: TEnvironmentOptions);
procedure SaveEnvironmentSettings(Sender: TObject; AOptions: TEnvironmentOptions);
procedure CreateEditors(AEditor: TAbstractOptionsFrameClass);
procedure LoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
procedure SaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
procedure CreateEditors;
published
property OnSaveEnvironmentSettings: TOnSaveEnvironmentSettings
read FOnSaveEnvironmentSettings write FOnSaveEnvironmentSettings;
property OnLoadEnvironmentSettings: TOnLoadEnvironmentSettings
read FOnLoadEnvironmentSettings write FOnLoadEnvironmentSettings;
property OnLoadIDEOptions: TOnLoadIDEOptions read FOnLoadOptions write FOnLoadOptions;
property OnSaveIDEOptions: TOnSaveIDEOptions read FOnSaveOptions write FOnSaveOptions;
public
constructor Create(TheOwner: TComponent); override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure OpenEditor(AEditor: TAbstractOptionsFrameClass);
procedure ReadSettings(AnEnvironmentOptions: TEnvironmentOptions);
procedure WriteSettings(AnEnvironmentOptions: TEnvironmentOptions);
procedure OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
procedure ReadSettings(AOptions: TAbstractIDEOptions);
procedure WriteSettings(AOptions: TAbstractIDEOptions);
end;
implementation
@ -73,18 +71,19 @@ implementation
uses
IDEContextHelpEdit;
{ TEnvironmentOptionsDialog }
{ TIDEOptionsDialog }
constructor TEnvironmentOptionsDialog.Create(TheOwner: TComponent);
constructor TIDEOptionsDialog.Create(AOwner: TComponent);
begin
inherited Create(TheOwner);
inherited Create(AOwner);
PrevNode := nil;
IDEDialogLayoutList.ApplyLayout(Self, Width, Height);
Caption := lisMenuGeneralOptions;
FEditors := TList.Create;
EnumEnvironmentOptionsEditors(@CreateEditors);
CreateEditors;
ButtonPanel.OKButton.OnClick := @OKButtonClick;
ButtonPanel.CancelButton.OnClick := @CancelButtonClick;
ButtonPanel.HelpButton.OnClick := @HelpButtonClick;
@ -93,45 +92,45 @@ begin
CategoryTree.Selected := CategoryTree.Items.GetFirstNode;
end;
destructor TEnvironmentOptionsDialog.Destroy;
destructor TIDEOptionsDialog.Destroy;
begin
FEditors.Free;
inherited Destroy;
end;
procedure TEnvironmentOptionsDialog.HelpButtonClick(Sender: TObject);
procedure TIDEOptionsDialog.HelpButtonClick(Sender: TObject);
begin
ShowContextHelpForIDE(Self);
end;
procedure TEnvironmentOptionsDialog.CategoryTreeChange(Sender: TObject;
procedure TIDEOptionsDialog.CategoryTreeChange(Sender: TObject;
Node: TTreeNode);
var
AFrame: TAbstractOptionsFrame;
AEditor: TAbstractIDEOptionsEditor;
begin
if PrevNode <> nil then
TAbstractOptionsFrame(PrevNode.Data).Parent := nil;
TAbstractIDEOptionsEditor(PrevNode.Data).Parent := nil;
if Node <> nil then
begin
AFrame := TAbstractOptionsFrame(Node.Data);
AEditor := TAbstractIDEOptionsEditor(Node.Data);
AFrame.Parent := Self;
AFrame.Anchors := [akLeft, akTop, akRight, akBottom];
AFrame.AnchorSideLeft.Side := asrBottom;
AFrame.AnchorSideLeft.Control := CategoryTree;
AFrame.AnchorSideTop.Control := Self;
AFrame.AnchorSideRight.Side := asrBottom;
AFrame.AnchorSideRight.Control := Self;
AFrame.AnchorSideBottom.Side := asrTop;
AFrame.AnchorSideBottom.Control := ButtonPanel;
AFrame.BorderSpacing.Around := 6;
AFrame.Visible := True;
AEditor.Parent := Self;
AEditor.Anchors := [akLeft, akTop, akRight, akBottom];
AEditor.AnchorSideLeft.Side := asrBottom;
AEditor.AnchorSideLeft.Control := CategoryTree;
AEditor.AnchorSideTop.Control := Self;
AEditor.AnchorSideRight.Side := asrBottom;
AEditor.AnchorSideRight.Control := Self;
AEditor.AnchorSideBottom.Side := asrTop;
AEditor.AnchorSideBottom.Control := ButtonPanel;
AEditor.BorderSpacing.Around := 6;
AEditor.Visible := True;
end;
PrevNode := Node;
end;
procedure TEnvironmentOptionsDialog.OkButtonClick(Sender: TObject);
procedure TIDEOptionsDialog.OkButtonClick(Sender: TObject);
begin
if not CheckValues then
Exit;
@ -139,73 +138,75 @@ begin
ModalResult := mrOk;
end;
procedure TEnvironmentOptionsDialog.CancelButtonClick(Sender: TObject);
procedure TIDEOptionsDialog.CancelButtonClick(Sender: TObject);
begin
IDEDialogLayoutList.SaveLayout(Self);
ModalResult := mrCancel;
end;
procedure TEnvironmentOptionsDialog.ReadSettings(AnEnvironmentOptions: TEnvironmentOptions);
procedure TIDEOptionsDialog.ReadSettings(AOptions: TAbstractIDEOptions);
var
i: integer;
begin
for i := 0 to FEditors.Count - 1 do
TAbstractOptionsFrame(FEditors[i]).ReadSettings(AnEnvironmentOptions);
TAbstractIDEOptionsEditor(FEditors[i]).ReadSettings(AOptions);
end;
procedure TEnvironmentOptionsDialog.WriteSettings(AnEnvironmentOptions: TEnvironmentOptions);
procedure TIDEOptionsDialog.WriteSettings(AOptions: TAbstractIDEOptions);
var
i: integer;
begin
for i := 0 to FEditors.Count - 1 do
TAbstractOptionsFrame(FEditors[i]).WriteSettings(AnEnvironmentOptions);
TAbstractIDEOptionsEditor(FEditors[i]).WriteSettings(AOptions);
end;
function TEnvironmentOptionsDialog.CheckValues: boolean;
function TIDEOptionsDialog.CheckValues: boolean;
var
i: integer;
begin
Result := True;
for i := 0 to FEditors.Count - 1 do
begin
Result := TAbstractOptionsFrame(FEditors[i]).Check;
Result := TAbstractIDEOptionsEditor(FEditors[i]).Check;
if not Result then
break;
end;
end;
procedure TEnvironmentOptionsDialog.LoadEnvironmentSettings(Sender: TObject;
AOptions: TEnvironmentOptions);
procedure TIDEOptionsDialog.LoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
begin
if Assigned(OnLoadEnvironmentSettings) then
OnLoadEnvironmentSettings(Self, AOptions);
if Assigned(OnLoadIDEOptions) then
OnLoadIDEOptions(Self, AOptions);
ReadSettings(AOptions);
end;
procedure TEnvironmentOptionsDialog.SaveEnvironmentSettings(Sender: TObject;
AOptions: TEnvironmentOptions);
procedure TIDEOptionsDialog.SaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
begin
WriteSettings(AOptions);
if Assigned(OnSaveEnvironmentSettings) then
OnSaveEnvironmentSettings(Self, AOptions);
if Assigned(OnSaveIDEOptions) then
OnSaveIDEOptions(Self, AOptions);
end;
procedure TEnvironmentOptionsDialog.CreateEditors(AEditor: TAbstractOptionsFrameClass);
procedure TIDEOptionsDialog.CreateEditors;
var
Instance: TAbstractOptionsFrame;
Instance: TAbstractIDEOptionsEditor;
ANode: TTreeNode;
i: integer;
begin
Instance := AEditor.Create(Self);
Instance.OnLoadEnvironmentSettings := @LoadEnvironmentSettings;
Instance.OnSaveEnvironmentSettings := @SaveEnvironmentSettings;
Instance.Setup;
FEditors.Add(Instance);
for i := 0 to IDEEditors.Count - 1 do
begin
Instance := IDEEditors[i].Create(Self);
Instance.OnLoadIDEOptions := @LoadIDEOptions;
Instance.OnSaveIDEOptions := @SaveIDEOptions;
Instance.Setup;
FEditors.Add(Instance);
ANode := CategoryTree.Items.AddChild(nil, Instance.GetTitle);
ANode.Data := Instance;
ANode := CategoryTree.Items.AddChild(nil, Instance.GetTitle);
ANode.Data := Instance;
end;
end;
procedure TEnvironmentOptionsDialog.OpenEditor(AEditor: TAbstractOptionsFrameClass);
procedure TIDEOptionsDialog.OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
function Traverse(ANode: TTreeNode): TTreeNode;
begin
Result := nil;
@ -228,7 +229,7 @@ begin
end;
initialization
{$I environmentopts_dlg.lrs}
{$I ideoptionsdlg.lrs}
end.

View File

@ -115,7 +115,7 @@ uses
// rest of the ide
Splash, IDEDefs, LazarusIDEStrConsts, LazConf, MsgView, SearchResultView,
CodeTemplatesDlg, CodeBrowser,
PublishModule, EnvironmentOpts, EnvironmentOpts_Dlg, TransferMacros, KeyMapping,
PublishModule, EnvironmentOpts, TransferMacros, KeyMapping,
IDETranslations, IDEProcs, ExtToolDialog, ExtToolEditDlg, OutputFilter, JumpHistoryView,
BuildLazDialog, MiscOptions, InputHistory, UnitDependencies, ClipBoardHistory,
ProcessList, InitialSetupDlgs, NewDialog, MakeResStrDlg, ToDoList,
@ -126,6 +126,7 @@ uses
// main ide
MainBar, MainIntf, MainBase,
// options frames
IDEOptionsIntf, IDEOptionsDlg,
options_files, options_desktop, options_window, options_formed, options_oi,
options_backup, options_naming, options_fpdoc;
@ -335,11 +336,9 @@ type
const HelpKeyword: string): Integer;
// Environment options dialog events
procedure OnLoadEnvironmentSettings(Sender: TObject;
TheEnvironmentOptions: TEnvironmentOptions);
procedure OnSaveEnvironmentSettings(Sender: TObject;
TheEnvironmentOptions: TEnvironmentOptions);
procedure DoShowEnvGeneralOptions(AEditor: TAbstractOptionsFrameClass);
procedure OnLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
procedure OnSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
procedure DoShowEnvGeneralOptions(AEditor: TAbstractIDEOptionsEditorClass);
// SourceNotebook events
procedure OnSrcNoteBookActivated(Sender: TObject);
@ -3855,21 +3854,21 @@ begin
Result:=SourceNoteBook.FindUniquePageName(Result,IgnorePageIndex);
end;
procedure TMainIDE.OnLoadEnvironmentSettings(Sender: TObject;
TheEnvironmentOptions: TEnvironmentOptions);
procedure TMainIDE.OnLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
begin
LoadDesktopSettings(TheEnvironmentOptions);
if AOptions is TEnvironmentOptions then
LoadDesktopSettings(AOptions as TEnvironmentOptions);
end;
procedure TMainIDE.OnSaveEnvironmentSettings(Sender: TObject;
TheEnvironmentOptions: TEnvironmentOptions);
procedure TMainIDE.OnSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
begin
SaveDesktopSettings(TheEnvironmentOptions);
if AOptions is TEnvironmentOptions then
SaveDesktopSettings(AOptions as TEnvironmentOptions);
end;
procedure TMainIDE.DoShowEnvGeneralOptions(AEditor: TAbstractOptionsFrameClass);
procedure TMainIDE.DoShowEnvGeneralOptions(AEditor: TAbstractIDEOptionsEditorClass);
var
EnvironmentOptionsDialog: TEnvironmentOptionsDialog;
IDEOptionsDialog: TIDEOptionsDialog;
MacroValueChanged,
FPCSrcDirChanged, FPCCompilerChanged,
LazarusSrcDirChanged: boolean;
@ -3922,28 +3921,28 @@ var
end;
Begin
EnvironmentOptionsDialog:=TEnvironmentOptionsDialog.Create(nil);
IDEOptionsDialog:=TIDEOptionsDialog.Create(nil);
try
EnvironmentOptionsDialog.OpenEditor(AEditor);
IDEOptionsDialog.OpenEditor(AEditor);
// update EnvironmentOptions (save current window positions)
SaveDesktopSettings(EnvironmentOptions);
with EnvironmentOptionsDialog do
with IDEOptionsDialog do
begin
OnLoadEnvironmentSettings:=@Self.OnLoadEnvironmentSettings;
OnSaveEnvironmentSettings:=@Self.OnSaveEnvironmentSettings;
// load settings from EnvironmentOptions to EnvironmentOptionsDialog
OnLoadIDEOptions:=@Self.OnLoadIDEOptions;
OnSaveIDEOptions:=@Self.OnSaveIDEOptions;
// load settings from EnvironmentOptions to IDEOptionsDialog
ReadSettings(EnvironmentOptions);
end;
if EnvironmentOptionsDialog.ShowModal = mrOk then
if IDEOptionsDialog.ShowModal = mrOk then
begin
// invalidate cached substituted macros
IncreaseCompilerParseStamp;
// load settings from EnvironmentOptionsDialog to EnvironmentOptions
// load settings from IDEOptionsDialog to EnvironmentOptions
OldCompilerFilename:=EnvironmentOptions.CompilerFilename;
OldLanguage:=EnvironmentOptions.LanguageID;
EnvironmentOptionsDialog.WriteSettings(EnvironmentOptions);
IDEOptionsDialog.WriteSettings(EnvironmentOptions);
ShowCompileDialog:=EnvironmentOptions.ShowCompileDialog;
UpdateDefaultPascalFileExtensions;
@ -3982,7 +3981,7 @@ Begin
PkgBoss.LazarusSrcDirChanged;
end;
finally
EnvironmentOptionsDialog.Free;
IDEOptionsDialog.Free;
end;
end;

View File

@ -37,6 +37,7 @@ uses
IDEHelpIntf,
IDEImagesIntf,
IDEMsgIntf,
IDEOptionsIntf,
IDETextConverter,
IDEWindowIntf,
ImageListEditor,

132
ideintf/ideoptionsintf.pas Normal file
View File

@ -0,0 +1,132 @@
{
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
***************************************************************************
}
unit IDEOptionsIntf;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms;
type
TAbstractIDEOptions = class(TPersistent)
end;
TAbstractIDEOptionsClass = class of TAbstractIDEOptions;
TOnLoadIDEOptions = procedure(Sender: TObject; AOptions: TAbstractIDEOptions) of object;
TOnSaveIDEOptions = procedure(Sender: TObject; AOptions: TAbstractIDEOptions) of object;
{ TAbstractIDEOptionsEditor }
TAbstractIDEOptionsEditor = class(TFrame)
private
FOnLoadIDEOptions: TOnLoadIDEOptions;
FOnSaveIDEOptions: TOnSaveIDEOptions;
public
function Check: Boolean; virtual;
function GetTitle: String; virtual; abstract;
procedure Setup; virtual; abstract;
procedure ReadSettings(AOptions: TAbstractIDEOptions); virtual; abstract;
procedure WriteSettings(AOptions: TAbstractIDEOptions); virtual; abstract;
property OnLoadIDEOptions: TOnLoadIDEOptions read FOnLoadIDEOptions write FOnLoadIDEOptions;
property OnSaveIDEOptions: TOnSaveIDEOptions read FOnSaveIDEOptions write FOnSaveIDEOptions;
end;
TAbstractIDEOptionsEditorClass = class of TAbstractIDEOptionsEditor;
{ TIDEOptionsEditorList }
TIDEOptionsEditorList = class(TList)
private
function GetItem(AIndex: Integer): TAbstractIDEOptionsEditorClass;
procedure SetItem(AIndex: Integer; const AValue: TAbstractIDEOptionsEditorClass);
public
property Items[AIndex: Integer]: TAbstractIDEOptionsEditorClass read GetItem write SetItem; default;
end;
procedure RegisterIDEOptionsGroup(AGroupIndex: Integer; ATitle: String);
procedure RegisterIDEOptionsEditor(AGroupIndex: Integer; AEditor: TAbstractIDEOptionsEditorClass; AOptionsClass: TAbstractIDEOptionsClass; AIndex: Integer);
function IDEEditors: TIDEOptionsEditorList;
const
// options groups
GroupEnvironment = 100;
EnvOptionsFiles = 100;
EnvOptionsDesktop = 200;
EnvOptionsWindow = 300;
EnvOptionsFormEd = 400;
EnvOptionsOI = 500;
EnvOptionsBackup = 600;
EnvOptionsNaming = 700;
EnvOptionsFpDoc = 800;
implementation
var
FIDEEditors: TIDEOptionsEditorList;
function IDEEditors: TIDEOptionsEditorList;
begin
if FIDEEditors = nil then
FIDEEditors := TIDEOptionsEditorList.Create;
Result := FIDEEditors;
end;
procedure RegisterIDEOptionsGroup(AGroupIndex: Integer; ATitle: String);
begin
// TODO:
end;
procedure RegisterIDEOptionsEditor(AGroupIndex: Integer; AEditor: TAbstractIDEOptionsEditorClass; AOptionsClass: TAbstractIDEOptionsClass; AIndex: Integer);
begin
// TODO:
if IDEEditors.IndexOf(AEditor) = -1 then
IDEEditors.Add(AEditor);
end;
{ TAbstractIDEOptionsEditor }
function TAbstractIDEOptionsEditor.Check: Boolean;
begin
Result := True;
end;
{ TIDEOptionsEditorList }
function TIDEOptionsEditorList.GetItem(AIndex: Integer): TAbstractIDEOptionsEditorClass;
begin
Result := TAbstractIDEOptionsEditorClass(inherited Get(AIndex));
end;
procedure TIDEOptionsEditorList.SetItem(AIndex: Integer; const AValue: TAbstractIDEOptionsEditorClass);
begin
inherited Put(AIndex, AValue);
end;
initialization
FIDEEditors := nil;
finalization
FIDEEditors.Free;
FIDEEditors := nil;
end.