mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-28 04:13:51 +02:00
230 lines
9.0 KiB
ObjectPascal
230 lines
9.0 KiB
ObjectPascal
{
|
|
***************************************************************************
|
|
* *
|
|
* 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA. *
|
|
* *
|
|
***************************************************************************
|
|
}
|
|
unit codetools_classcompletion_options;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils,
|
|
// LCL
|
|
Forms, ExtCtrls, StdCtrls, Dialogs,
|
|
// CodeTools
|
|
SourceChanger,
|
|
// IdeIntf
|
|
IDEOptionsIntf, IDEOptEditorIntf,
|
|
// IDE
|
|
CodeToolsOptions, LazarusIDEStrConsts;
|
|
|
|
type
|
|
|
|
{ TCodetoolsClassCompletionOptionsFrame }
|
|
|
|
TCodetoolsClassCompletionOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
ClassPartInsertPolicyComboBox: TComboBox;
|
|
ClassPartInsertPolicyLabel: TLabel;
|
|
InsertPoliciesPanel: TPanel;
|
|
MethodDefaultSectionComboBox: TComboBox;
|
|
MethodDefaultSectionLabel: TLabel;
|
|
MethodInsertPolicyComboBox: TComboBox;
|
|
MethodInsertPolicyLabel: TLabel;
|
|
SetPropertyVariableIsPrefixCheckBox: TCheckBox;
|
|
SetPropertyVariableUseConstCheckBox: TCheckBox;
|
|
ClassHeaderCommentsCheckBox: TCheckBox;
|
|
ClassImplementationCommentsCheckBox: TCheckBox;
|
|
MixMethodsAndPropertiesCheckBox: TCheckBox;
|
|
PropPrefixesPanel: TPanel;
|
|
PrivateVariablePrefixEdit: TEdit;
|
|
PrivateVariablePrefixLabel: TLabel;
|
|
PropertyCompletionCheckBox: TCheckBox;
|
|
PropertyCompletionGroupBox: TGroupBox;
|
|
PropertyReadIdentPrefixEdit: TEdit;
|
|
PropertyReadIdentPrefixLabel: TLabel;
|
|
PropertyStoredIdentPostfixEdit: TEdit;
|
|
PropertyStoredIdentPostfixLabel: TLabel;
|
|
PropertyWriteIdentPrefixEdit: TEdit;
|
|
PropertyWriteIdentPrefixLabel: TLabel;
|
|
SetPropertyVariablenameEdit: TEdit;
|
|
SetPropertyVariablenameLabel: TLabel;
|
|
UpdateAllMethodSignaturesCheckBox: TCheckBox;
|
|
private
|
|
public
|
|
function GetTitle: String; override;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TCodetoolsClassCompletionOptionsFrame }
|
|
|
|
function TCodetoolsClassCompletionOptionsFrame.GetTitle: String;
|
|
begin
|
|
Result := lisClassCompletion;
|
|
end;
|
|
|
|
procedure TCodetoolsClassCompletionOptionsFrame.Setup(
|
|
ADialog: TAbstractOptionsEditorDialog);
|
|
var
|
|
s: String;
|
|
ics: TInsertClassSection;
|
|
begin
|
|
ClassPartInsertPolicyLabel.Caption:=dlgInsertClassParts;
|
|
ClassPartInsertPolicyLabel.Hint:=
|
|
lisNewMethodsAndMembersAreInsertedAlphabeticallyOrAdd;
|
|
ClassPartInsertPolicyComboBox.Hint:=ClassPartInsertPolicyLabel.Hint;
|
|
ClassPartInsertPolicyComboBox.Items.Text:=
|
|
dlgAlphabetically+LineEnding+
|
|
dlgCDTLast;
|
|
|
|
MethodInsertPolicyLabel.Caption:=dlgInsertMethods;
|
|
MethodInsertPolicyLabel.Hint:=
|
|
lisNewMethodImplementationsAreInsertedBetweenExisting;
|
|
MethodInsertPolicyComboBox.Hint:=MethodInsertPolicyLabel.Hint;
|
|
MethodInsertPolicyComboBox.Items.Text:=
|
|
dlgAlphabetically+LineEnding+
|
|
dlgCDTLast+LineEnding+
|
|
dlgCDTClassOrder;
|
|
|
|
MethodDefaultSectionLabel.Caption:=lisDefaultSectionOfMethods;
|
|
MethodDefaultSectionLabel.Hint:=
|
|
lisDefaultClassVisibilitySectionOfNewMethodsForExampl;
|
|
MethodDefaultSectionComboBox.Hint:=MethodDefaultSectionLabel.Hint;
|
|
s:='';
|
|
for ics in TInsertClassSection do
|
|
s:=s+InsertClassSectionNames[ics]+LineEnding;
|
|
MethodDefaultSectionComboBox.Items.Text:=s;
|
|
|
|
MixMethodsAndPropertiesCheckBox.Caption:=dlgMixMethodsAndProperties;
|
|
UpdateAllMethodSignaturesCheckBox.Caption:=lisCTOUpdateAllMethodSignatures;
|
|
ClassHeaderCommentsCheckBox.Caption:=lisHeaderCommentForClass;
|
|
ClassImplementationCommentsCheckBox.Caption:=lisImplementationCommentForClass;
|
|
|
|
PropertyCompletionGroupBox.Caption:=dlgPropertyCompletion;
|
|
PropertyCompletionCheckBox.Caption:=dlgCompleteProperties;
|
|
PropertyReadIdentPrefixLabel.Caption:=dlgCDTReadPrefix;
|
|
PropertyWriteIdentPrefixLabel.Caption:=dlgCDTWritePrefix;
|
|
PropertyStoredIdentPostfixLabel.Caption:=dlgCDTStoredPostfix;
|
|
PrivateVariablePrefixLabel.Caption:=dlgCDTVariablePrefix;
|
|
SetPropertyVariablenameLabel.Caption:=dlgSetPropertyVariable;
|
|
SetPropertyVariablenameLabel.Hint:=dlgSetPropertyVariableHint;
|
|
SetPropertyVariablenameEdit.Hint:=SetPropertyVariablenameLabel.Hint;
|
|
SetPropertyVariableIsPrefixCheckBox.Caption:=dlgSetPropertyVariableIsPrefix;
|
|
SetPropertyVariableIsPrefixCheckBox.Hint:=dlgSetPropertyVariableIsPrefixHint;
|
|
SetPropertyVariableUseConstCheckBox.Caption:=dlgSetPropertyVariableUseConst;
|
|
SetPropertyVariableUseConstCheckBox.Hint:=dlgSetPropertyVariableUseConstHint;
|
|
end;
|
|
|
|
procedure TCodetoolsClassCompletionOptionsFrame.ReadSettings(
|
|
AOptions: TAbstractIDEOptions);
|
|
begin
|
|
with AOptions as TCodetoolsOptions do
|
|
begin
|
|
case ClassPartInsertPolicy of
|
|
cpipAlphabetically:
|
|
ClassPartInsertPolicyComboBox.ItemIndex:=0;
|
|
else
|
|
// cpipLast
|
|
ClassPartInsertPolicyComboBox.ItemIndex:=1;
|
|
end;
|
|
|
|
MixMethodsAndPropertiesCheckBox.Checked := MixMethodsAndProperties;
|
|
UpdateAllMethodSignaturesCheckBox.Checked:=UpdateAllMethodSignatures;
|
|
ClassHeaderCommentsCheckBox.Checked := ClassHeaderComments;
|
|
ClassImplementationCommentsCheckBox.Checked := ClassImplementationComments;
|
|
case MethodInsertPolicy of
|
|
mipAlphabetically:
|
|
MethodInsertPolicyComboBox.ItemIndex:=0;
|
|
mipLast:
|
|
MethodInsertPolicyComboBox.ItemIndex:=1;
|
|
else
|
|
// mipClassOrder
|
|
MethodInsertPolicyComboBox.ItemIndex:=2;
|
|
end;
|
|
|
|
MethodDefaultSectionComboBox.ItemIndex:=ord(MethodDefaultSection);
|
|
|
|
PropertyCompletionCheckBox.Checked := CompleteProperties;
|
|
PropertyReadIdentPrefixEdit.Text := PropertyReadIdentPrefix;
|
|
PropertyWriteIdentPrefixEdit.Text := PropertyWriteIdentPrefix;
|
|
PropertyStoredIdentPostfixEdit.Text := PropertyStoredIdentPostfix;
|
|
PrivateVariablePrefixEdit.Text := PrivateVariablePrefix;
|
|
SetPropertyVariablenameEdit.Text := SetPropertyVariablename;
|
|
SetPropertyVariableIsPrefixCheckBox.Checked := SetPropertyVariableIsPrefix;
|
|
SetPropertyVariableUseConstCheckBox.Checked := SetPropertyVariableUseConst;
|
|
end;
|
|
end;
|
|
|
|
procedure TCodetoolsClassCompletionOptionsFrame.WriteSettings(
|
|
AOptions: TAbstractIDEOptions);
|
|
begin
|
|
with AOptions as TCodetoolsOptions do
|
|
begin
|
|
case ClassPartInsertPolicyComboBox.ItemIndex of
|
|
0: ClassPartInsertPolicy := cpipAlphabetically;
|
|
1: ClassPartInsertPolicy := cpipLast;
|
|
end;
|
|
|
|
MixMethodsAndProperties := MixMethodsAndPropertiesCheckBox.Checked;
|
|
UpdateAllMethodSignatures:=UpdateAllMethodSignaturesCheckBox.Checked;
|
|
ClassHeaderComments := ClassHeaderCommentsCheckBox.Checked;
|
|
ClassImplementationComments := ClassImplementationCommentsCheckBox.Checked;
|
|
|
|
case MethodInsertPolicyComboBox.ItemIndex of
|
|
0: MethodInsertPolicy := mipAlphabetically;
|
|
1: MethodInsertPolicy := mipLast;
|
|
2: MethodInsertPolicy := mipClassOrder;
|
|
end;
|
|
|
|
if MethodDefaultSectionComboBox.ItemIndex>=0 then
|
|
MethodDefaultSection:=TInsertClassSection(MethodDefaultSectionComboBox.ItemIndex);
|
|
|
|
CompleteProperties:=PropertyCompletionCheckBox.Checked;
|
|
PropertyReadIdentPrefix :=
|
|
ReadIdentifier(PropertyReadIdentPrefixEdit.Text,'Get');
|
|
PropertyWriteIdentPrefix :=
|
|
ReadIdentifier(PropertyWriteIdentPrefixEdit.Text,'Set');
|
|
PropertyStoredIdentPostfix :=
|
|
ReadIdentifier(PropertyStoredIdentPostfixEdit.Text,'IsStored');
|
|
PrivateVariablePrefix :=
|
|
ReadIdentifier(PrivateVariablePrefixEdit.Text,'F');
|
|
SetPropertyVariablename :=
|
|
ReadIdentifier(SetPropertyVariablenameEdit.Text,'AValue');
|
|
SetPropertyVariableIsPrefix := SetPropertyVariableIsPrefixCheckBox.Checked;
|
|
SetPropertyVariableUseConst := SetPropertyVariableUseConstCheckBox.Checked;
|
|
end;
|
|
end;
|
|
|
|
class function TCodetoolsClassCompletionOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := TCodeToolsOptions;
|
|
end;
|
|
|
|
initialization
|
|
RegisterIDEOptionsEditor(GroupCodetools, TCodetoolsClassCompletionOptionsFrame, CdtOptionsClassCompletion);
|
|
end.
|
|
|