mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-02 10:03:39 +02:00
132 lines
3.1 KiB
ObjectPascal
132 lines
3.1 KiB
ObjectPascal
{
|
|
|
|
*****************************************************************************
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
|
|
Authors: Alexander Klenin
|
|
|
|
}
|
|
|
|
unit TAToolEditors;
|
|
|
|
{$MODE ObjFPC}{$H+}
|
|
|
|
interface
|
|
|
|
procedure Register;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Classes, ComponentEditors, Forms, PropEdits, SysUtils,
|
|
TAChartStrConsts, TATools, TASubcomponentsEditor;
|
|
|
|
type
|
|
{ TToolsComponentEditor }
|
|
|
|
TToolsComponentEditor = class(TSubComponentListEditor)
|
|
protected
|
|
function MakeEditorForm: TForm; override;
|
|
public
|
|
function GetVerb(Index: Integer): string; override;
|
|
end;
|
|
|
|
{ TToolsPropertyEditor }
|
|
|
|
TToolsPropertyEditor = class(TComponentListPropertyEditor)
|
|
protected
|
|
function GetChildrenCount: Integer; override;
|
|
function MakeEditorForm: TForm; override;
|
|
end;
|
|
|
|
{ TToolsEditorForm }
|
|
|
|
TToolsEditorForm = class(TComponentListEditorForm)
|
|
protected
|
|
procedure AddSubcomponent(AParent, AChild: TComponent); override;
|
|
procedure BuildCaption; override;
|
|
function ChildClass: TComponentClass; override;
|
|
procedure EnumerateSubcomponentClasses; override;
|
|
function GetChildrenList: TFPList; override;
|
|
function MakeSubcomponent(
|
|
AOwner: TComponent; ATag: Integer): TComponent; override;
|
|
end;
|
|
|
|
procedure Register;
|
|
begin
|
|
RegisterPropertyEditor(
|
|
TypeInfo(TChartTools), TChartToolset, 'Tools', TToolsPropertyEditor);
|
|
RegisterComponentEditor(TChartToolset, TToolsComponentEditor);
|
|
RegisterPropertyEditor(
|
|
TypeInfo(Boolean), TZoomDragTool, 'Proportional', THiddenPropertyEditor);
|
|
end;
|
|
|
|
{ TToolsComponentEditor }
|
|
|
|
function TToolsComponentEditor.GetVerb(Index: Integer): string;
|
|
begin
|
|
if Index = 0 then
|
|
Result := tasToolsEditorTitle
|
|
else
|
|
Result := '';
|
|
end;
|
|
|
|
function TToolsComponentEditor.MakeEditorForm: TForm;
|
|
begin
|
|
Result := TToolsEditorForm.Create(Application, GetComponent, Self, nil);
|
|
end;
|
|
|
|
{ TToolsPropertyEditor }
|
|
|
|
function TToolsPropertyEditor.GetChildrenCount: Integer;
|
|
begin
|
|
Result := (GetObjectValue as TChartTools).Count;
|
|
end;
|
|
|
|
function TToolsPropertyEditor.MakeEditorForm: TForm;
|
|
begin
|
|
with TToolsEditorForm do
|
|
Result := Create(Application, GetComponent(0) as TComponent, nil, Self);
|
|
end;
|
|
|
|
{ TToolsEditorForm }
|
|
|
|
procedure TToolsEditorForm.AddSubcomponent(AParent, AChild: TComponent);
|
|
begin
|
|
(AChild as TChartTool).Toolset := (AParent as TChartToolset);
|
|
end;
|
|
|
|
procedure TToolsEditorForm.BuildCaption;
|
|
begin
|
|
Caption := tasToolsEditorTitle + ' - ' + Parent.Name;
|
|
end;
|
|
|
|
function TToolsEditorForm.ChildClass: TComponentClass;
|
|
begin
|
|
Result := TChartTool;
|
|
end;
|
|
|
|
procedure TToolsEditorForm.EnumerateSubcomponentClasses;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
for i := 0 to ToolsClassRegistry.Count - 1 do
|
|
AddSubcomponentClass(ToolsClassRegistry.GetCaption(i), i);
|
|
end;
|
|
|
|
function TToolsEditorForm.GetChildrenList: TFPList;
|
|
begin
|
|
Result := (Parent as TChartToolset).Tools;
|
|
end;
|
|
|
|
function TToolsEditorForm.MakeSubcomponent(
|
|
AOwner: TComponent; ATag: Integer): TComponent;
|
|
begin
|
|
Result := TChartToolClass(ToolsClassRegistry.GetClass(ATag)).Create(AOwner);
|
|
end;
|
|
|
|
end.
|
|
|