Files
lazarus-ccr/components/flashfiler/sourcelaz/Verify/frmOptions.pas
2016-12-07 13:31:59 +00:00

199 lines
4.6 KiB
ObjectPascal

{*********************************************************}
{* FlashFiler: Options configuration *}
{*********************************************************}
(* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is TurboPower FlashFiler
*
* The Initial Developer of the Original Code is
* TurboPower Software
*
* Portions created by the Initial Developer are Copyright (C) 1996-2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** *)
{$I ffdefine.inc}
unit frmOptions;
interface
uses
{$IFDEF DCC6OrLater}
Variants,
{$ENDIF}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TffVerifyOptions = class
protected
FOutputVersion : Longint;
procedure Load;
public
constructor Create;
procedure Save;
property OutputVersion : Longint
read FOutputVersion write FOutputVersion;
end;
TfrmOptionsConfig = class(TForm)
pnlBottom: TPanel;
pbOK: TButton;
pbCancel: TButton;
pnlClient: TPanel;
lblVersion: TLabel;
efVersion: TEdit;
lblValidRange: TLabel;
procedure pbOKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure efVersionKeyPress(Sender: TObject; var Key: Char);
procedure efVersionChange(Sender: TObject);
private
{ Private declarations }
FOptions : TffVerifyOptions;
function GetOutputVersion : Longint;
procedure SetCtrlStates;
function ValidVersion : Boolean;
public
{ Public declarations }
property OutputVersion : Longint
read GetOutputVersion;
end;
var
frmOptionsConfig: TfrmOptionsConfig;
implementation
uses
ffllbase,
IniFiles;
{$R *.dfm}
const
cIniFile = 'FFVerify.ini';
cSect = 'Options';
cVersion = 'OutputVersion';
{===TffVerifyOptions=================================================}
constructor TffVerifyOptions.Create;
begin
inherited;
Load;
end;
{--------}
procedure TffVerifyOptions.Load;
begin
with TIniFile.Create(cIniFile) do
try
FOutputVersion := ReadInteger(cSect, cVersion, ffVersionNumber);
finally
Free;
end;
end;
{--------}
procedure TffVerifyOptions.Save;
begin
with TIniFile.Create(cIniFile) do
try
WriteInteger(cSect, cVersion, FOutputVersion);
finally
Free;
end;
end;
{====================================================================}
procedure TfrmOptionsConfig.pbOKClick(Sender: TObject);
begin
ModalResult := mrOK;
FOptions.OutputVersion := GetOutputVersion;
FOptions.Save;
FOptions.Free;
end;
procedure TfrmOptionsConfig.FormShow(Sender: TObject);
begin
{ Read the options from the INI file. }
FOptions := TffVerifyOptions.Create;
efVersion.Text := IntToStr(FOptions.OutputVersion);
lblValidRange.Caption := Format('Valid range: %d to %d',
[ffVersion2_10, ffVersionNumber]);
SetCtrlStates;
efVersion.SetFocus;
end;
function TfrmOptionsConfig.GetOutputVersion : Longint;
var
TmpStr,
VerStr : string;
TmpLen,
SrcInx,
TgtInx : Integer;
begin
{ Strip out all decimal points. }
TmpStr := efVersion.Text;
TmpLen := Length(TmpStr);
SetLength(VerStr, TmpLen);
TgtInx := 1;
for SrcInx := 1 to TmpLen do
if TmpStr[SrcInx] in ['0'..'9'] then begin
VerStr[TgtInx] := TmpStr[SrcInx];
inc(TgtInx);
end;
SetLength(VerStr, Pred(TgtInx));
Result := StrToInt(VerStr);
end;
function TfrmOptionsConfig.ValidVersion : Boolean;
var
Version : Longint;
begin
try
Version := GetOutputVersion;
{ The version # is valid if it an integer between 21000 and the current
FF version. }
Result := (Version >= ffVersion2_10) and (Version <= ffVersionNumber);
except
Result := False;
end;
end;
procedure TfrmOptionsConfig.efVersionKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [#8, '0'..'9', '.']) then begin
Beep;
Key := #0;
end;
end;
procedure TfrmOptionsConfig.SetCtrlStates;
begin
pbOK.Enabled := ValidVersion;
end;
procedure TfrmOptionsConfig.efVersionChange(Sender: TObject);
begin
SetCtrlStates;
end;
end.