248 lines
5.2 KiB
ObjectPascal
248 lines
5.2 KiB
ObjectPascal
|
{: Encapsulates the ProjectSwitcher settings.
|
||
|
|
||
|
Last changed: $Date$
|
||
|
Revision: $Rev$
|
||
|
Author: $Author$
|
||
|
}
|
||
|
unit ProjSwSettings;
|
||
|
|
||
|
interface
|
||
|
uses
|
||
|
Classes,
|
||
|
Registry,
|
||
|
|
||
|
BaseSwSettings;
|
||
|
|
||
|
|
||
|
type
|
||
|
TProjSwDialogSettings = class(TBaseSwSettings)
|
||
|
private
|
||
|
FHeight: Integer;
|
||
|
FMRUList: TStrings;
|
||
|
FWidth: Integer;
|
||
|
protected
|
||
|
procedure Load(const ARegistry: TRegistry); override;
|
||
|
procedure Save(const ARegistry: TRegistry); override;
|
||
|
public
|
||
|
constructor Create;
|
||
|
destructor Destroy; override;
|
||
|
public
|
||
|
property Height: Integer read FHeight write FHeight;
|
||
|
property MRUList: TStrings read FMRUList write FMRUList;
|
||
|
property Width: Integer read FWidth write FWidth;
|
||
|
end;
|
||
|
|
||
|
|
||
|
TProjSwFilterSettings = class(TBaseSwSettings)
|
||
|
private
|
||
|
FAllowEmptyResult: Boolean;
|
||
|
FWildchars: Boolean;
|
||
|
protected
|
||
|
procedure Load(const ARegistry: TRegistry); override;
|
||
|
procedure Save(const ARegistry: TRegistry); override;
|
||
|
public
|
||
|
property AllowEmptyResult: Boolean read FAllowEmptyResult write FAllowEmptyResult;
|
||
|
property Wildchars: Boolean read FWildchars write FWildchars;
|
||
|
end;
|
||
|
|
||
|
|
||
|
TProjSwSettings = class(TObject)
|
||
|
private
|
||
|
FDialog: TProjSwDialogSettings;
|
||
|
FFilter: TProjSwFilterSettings;
|
||
|
|
||
|
FRegistryKey: String;
|
||
|
protected
|
||
|
procedure Load;
|
||
|
public
|
||
|
constructor Create;
|
||
|
destructor Destroy; override;
|
||
|
|
||
|
procedure ResetDefaults;
|
||
|
procedure Save;
|
||
|
|
||
|
property Dialog: TProjSwDialogSettings read FDialog write FDialog;
|
||
|
property Filter: TProjSwFilterSettings read FFilter write FFilter;
|
||
|
end;
|
||
|
|
||
|
function Settings: TProjSwSettings;
|
||
|
|
||
|
|
||
|
implementation
|
||
|
uses
|
||
|
SysUtils,
|
||
|
ToolsAPI,
|
||
|
Windows;
|
||
|
|
||
|
|
||
|
var
|
||
|
GSettings: TProjSwSettings;
|
||
|
|
||
|
|
||
|
function Settings: TProjSwSettings;
|
||
|
begin
|
||
|
if not Assigned(GSettings) then
|
||
|
GSettings := TProjSwSettings.Create;
|
||
|
|
||
|
Result := GSettings;
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TProjSwDialogSettings }
|
||
|
constructor TProjSwDialogSettings.Create;
|
||
|
begin
|
||
|
inherited Create;
|
||
|
|
||
|
FMRUList := TStringList.Create;
|
||
|
TStringList(FMRUList).CaseSensitive := False
|
||
|
end;
|
||
|
|
||
|
|
||
|
destructor TProjSwDialogSettings.Destroy;
|
||
|
begin
|
||
|
FreeAndNil(FMRUList);
|
||
|
|
||
|
inherited;
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TProjSwDialogSettings.Load(const ARegistry: TRegistry);
|
||
|
var
|
||
|
sMRU: String;
|
||
|
|
||
|
begin
|
||
|
ReadIntegerDef(ARegistry, FWidth, 'Width');
|
||
|
ReadIntegerDef(ARegistry, FHeight, 'Height');
|
||
|
|
||
|
if ARegistry.ValueExists(GetKeyName('MRU')) then
|
||
|
begin
|
||
|
SetLength(sMRU, ARegistry.GetDataSize(GetKeyName('MRU')));
|
||
|
if Length(sMRU) > 0 then
|
||
|
begin
|
||
|
ARegistry.ReadBinaryData(GetKeyName('MRU'), PChar(sMRU)^, Length(sMRU));
|
||
|
FMRUList.Text := Trim(sMRU);
|
||
|
end;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TProjSwDialogSettings.Save(const ARegistry: TRegistry);
|
||
|
var
|
||
|
sMRU: String;
|
||
|
|
||
|
begin
|
||
|
WriteInteger(ARegistry, FWidth, 'Width');
|
||
|
WriteInteger(ARegistry, FHeight, 'Height');
|
||
|
|
||
|
if FMRUList.Count > 0 then
|
||
|
begin
|
||
|
sMRU := FMRUList.Text;
|
||
|
ARegistry.WriteBinaryData(GetKeyName('MRU'), PChar(sMRU)^, Length(sMRU));
|
||
|
end else
|
||
|
ARegistry.DeleteValue(GetKeyName('MRU'));
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TProjSwFilterSettings }
|
||
|
procedure TProjSwFilterSettings.Load(const ARegistry: TRegistry);
|
||
|
begin
|
||
|
ReadBoolDef(ARegistry, FAllowEmptyResult, 'AllowEmptyResult');
|
||
|
ReadBoolDef(ARegistry, FWildchars, 'Wildchars');
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TProjSwFilterSettings.Save(const ARegistry: TRegistry);
|
||
|
begin
|
||
|
WriteBool(ARegistry, FAllowEmptyResult, 'AllowEmptyResult');
|
||
|
WriteBool(ARegistry, FWildchars, 'Wildchars');
|
||
|
end;
|
||
|
|
||
|
|
||
|
{ TProjSwSettings }
|
||
|
constructor TProjSwSettings.Create;
|
||
|
begin
|
||
|
inherited;
|
||
|
|
||
|
FRegistryKey := (BorlandIDEServices as IOTAServices).GetBaseRegistryKey +
|
||
|
'\ComponentSwitcher';
|
||
|
|
||
|
FDialog := TProjSwDialogSettings.Create;
|
||
|
FFilter := TProjSwFilterSettings.Create;
|
||
|
|
||
|
ResetDefaults;
|
||
|
Load;
|
||
|
end;
|
||
|
|
||
|
|
||
|
destructor TProjSwSettings.Destroy;
|
||
|
begin
|
||
|
FreeAndNil(FFilter);
|
||
|
FreeAndNil(FDialog);
|
||
|
|
||
|
inherited;
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TProjSwSettings.Load;
|
||
|
var
|
||
|
ideRegistry: TRegistry;
|
||
|
|
||
|
begin
|
||
|
ideRegistry := TRegistry.Create;
|
||
|
with ideRegistry do
|
||
|
try
|
||
|
RootKey := HKEY_CURRENT_USER;
|
||
|
|
||
|
if OpenKey(FRegistryKey, False) then
|
||
|
begin
|
||
|
FDialog.Load(ideRegistry);
|
||
|
FFilter.Load(ideRegistry);
|
||
|
|
||
|
CloseKey;
|
||
|
end;
|
||
|
finally
|
||
|
Free;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TProjSwSettings.ResetDefaults;
|
||
|
begin
|
||
|
Filter.AllowEmptyResult := True;
|
||
|
Filter.Wildchars := True;
|
||
|
|
||
|
Dialog.Width := 350;
|
||
|
Dialog.Height := 530;
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure TProjSwSettings.Save;
|
||
|
var
|
||
|
ideRegistry: TRegistry;
|
||
|
|
||
|
begin
|
||
|
ideRegistry := TRegistry.Create;
|
||
|
with ideRegistry do
|
||
|
try
|
||
|
RootKey := HKEY_CURRENT_USER;
|
||
|
|
||
|
if OpenKey(FRegistryKey, True) then
|
||
|
begin
|
||
|
FDialog.Save(ideRegistry);
|
||
|
FFilter.Save(ideRegistry);
|
||
|
|
||
|
CloseKey;
|
||
|
end;
|
||
|
finally
|
||
|
Free;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
|
||
|
initialization
|
||
|
finalization
|
||
|
FreeAndNil(GSettings);
|
||
|
|
||
|
end.
|
||
|
|