lazarus/lcl/include/replacedialog.inc

166 lines
5.5 KiB
PHP

{%MainUnit ../dialogs.pp}
{******************************************************************************
TFindDialog
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
* for details about the copyright. *
* *
* This program 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. *
* *
*****************************************************************************
}
type
{ TReplaceDialogForm }
TReplaceDialogForm = class(TForm)
PromptOnReplaceCheckBox: TCheckBox;
EntireScopeCheckBox: TCheckBox;
FindMoreButton: TButton;
ReplaceButton: TButton;
ReplaceAllButton: TButton;
CancelButton: TButton;
HelpButton: TButton;
WholeWordsOnlyCheckBox: TCheckBox;
CaseSensitiveCheckBox: TCheckBox;
EditFind: TEdit;
EditReplace: TEdit;
TextLabel: TLabel;
ReplaceLabel: TLabel;
DirectionRadioGroup: TRadioGroup;
private
public
{ public declarations }
end;
{ TReplaceDialog }
procedure TReplaceDialog.ReplaceClick(Sender: TObject);
begin
GetFormValues;
//Delphi does it this way
FOptions := FOptions + [frReplace] - [frReplaceAll, frFindNext];
Replace;
end;
procedure TReplaceDialog.ReplaceAllClick(Sender: TObject);
begin
GetFormValues;
//Delphi does it this way
FOptions := FOptions + [frReplaceAll] - [frFindNext, frReplace];
Replace;
end;
function TReplaceDialog.CreateForm: TForm;
begin
// do not use Self as Owner, otherwise as desgntime this will not work
Result := TReplaceDialogForm.Create(nil);
with TReplaceDialogForm(Result) do
begin
FindMoreButton.Caption := rsFindMore;
ReplaceButton.Caption := rsReplace;
ReplaceAllButton.Caption := rsReplaceAll;
CancelButton.Caption := rsMbCancel;
HelpButton.Caption := ifsVK_HELP;
WholeWordsOnlyCheckBox.Caption := rsWholeWordsOnly;
CaseSensitiveCheckBox.Caption := rsCaseSensitive;
EntireScopeCheckBox.Caption := rsEntireScope;
PromptOnReplaceCheckBox.Caption := rsPromptOnReplace;
TextLabel.Caption := rsText;
ReplaceLabel.Caption := rsReplace;
DirectionRadioGroup.Caption := rsDirection;
DirectionRadioGroup.Items[0] := rsForward;
DirectionRadioGroup.Items[1] := rsBackward;
//Setting up button eventhandlers
FindMoreButton.OnClick := @FindClick;
ReplaceButton.OnClick := @ReplaceClick;
ReplaceAllButton.OnClick := @ReplaceAllClick;
CancelButton.OnClick := @CancelClick;
HelpButton.OnClick := @HelpClick;
PopupMode := pmAuto;
end;
end;
procedure TReplaceDialog.SetFormValues;
var
dlg: TReplaceDialogForm;
begin
dlg:=TReplaceDialogForm(FFindForm);
dlg.EditFind.Text:=FFindText;
Dlg.EditFind.SelectAll;
Dlg.ActiveControl:=Dlg.EditFind;
dlg.EditReplace.Text:=FReplaceText;
dlg.WholeWordsOnlyCheckBox.Checked:=frWholeWord in Options;
Dlg.EntireScopeCheckBox.Checked:=frEntireScope in Options;
dlg.CaseSensitiveCheckBox.Checked:=frMatchCase in Options;
dlg.PromptOnReplaceCheckBox.Checked := frPromptOnReplace in Options;
Dlg.DirectionRadioGroup.ItemIndex:=ord(not(frDown in Options));
dlg.WholeWordsOnlyCheckBox.Enabled:=not (frDisableWholeWord in Options);
dlg.CaseSensitiveCheckBox.Enabled:=not (frDisableMatchCase in Options);
dlg.DirectionRadioGroup.Enabled:=not (frDisableUpDown in Options);
dlg.WholeWordsOnlyCheckBox.Visible:=not (frHideWholeWord in Options);
dlg.CaseSensitiveCheckBox.Visible:=not (frHideMatchCase in Options);
dlg.DirectionRadioGroup.Visible:=not (frHideUpDown in Options);
dlg.HelpButton.Visible:=(frShowHelp in Options);
Dlg.EntireScopeCheckBox.Visible := not (frHideEntireScope in Options);
dlg.PromptOnReplaceCheckBox.Visible := not (frHidePromptOnReplace in Options);
end;
procedure TReplaceDialog.GetFormValues;
var
Dlg: TReplaceDialogForm;
begin
Dlg:=TReplaceDialogForm(FFindForm);
if Dlg.DirectionRadioGroup.ItemIndex = 0 then
FOptions:=FOptions + [frDown]
else
FOptions:=FOptions - [frDown];
if Dlg.WholeWordsOnlyCheckBox.Checked then
FOptions:=FOptions + [frWholeWord]
else
FOptions:=FOptions - [frWholeWord];
if Dlg.CaseSensitiveCheckBox.Checked then
FOptions:=FOptions + [frMatchCase]
else
FOptions:=FOptions - [frMatchCase];
if Dlg.EntireScopeCheckBox.Checked then
FOptions:=FOptions + [frEntireScope]
else
FOptions:=FOptions - [frEntireScope];
if Dlg.PromptOnReplaceCheckBox.Checked then
FOptions := FOptions + [frPromptOnReplace]
else
FOptions := FOptions - [frPromptOnReplace];
FFindText := Dlg.EditFind.Text;
FReplaceText := Dlg.EditReplace.Text;
end;
constructor TReplaceDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Options:=Options + [frReplace, frReplaceAll, frHidePromptOnreplace];
end;
function TReplaceDialog.DefaultTitle: string;
begin
Result := rsReplace;
end;