IDE: build modes: add mode value

git-svn-id: trunk@18565 -
This commit is contained in:
mattias 2009-02-04 16:48:58 +00:00
parent e1a8cc2434
commit a7dd474dc4

View File

@ -47,6 +47,7 @@ type
procedure BuildModeTVPopupMenuPopup(Sender: TObject); procedure BuildModeTVPopupMenuPopup(Sender: TObject);
procedure DeleteBuildModeClick(Sender: TObject); procedure DeleteBuildModeClick(Sender: TObject);
procedure NewBuildModeClick(Sender: TObject); procedure NewBuildModeClick(Sender: TObject);
procedure NewValueClick(Sender: TObject);
private private
FBuildModes: TIDEBuildModes; FBuildModes: TIDEBuildModes;
fModeImgID: LongInt; fModeImgID: LongInt;
@ -56,8 +57,11 @@ type
procedure SetBuildModes(const AValue: TIDEBuildModes); procedure SetBuildModes(const AValue: TIDEBuildModes);
procedure RebuildTreeView; procedure RebuildTreeView;
procedure TreeViewAddBuildMode(BuildMode: TLazBuildMode); procedure TreeViewAddBuildMode(BuildMode: TLazBuildMode);
procedure TreeViewAddValue(ValuesTVNode: TTreeNode; aValue: string);
function GetSelectedNode(out BuildMode: TLazBuildMode; function GetSelectedNode(out BuildMode: TLazBuildMode;
out NodeType: TCBMNodeType): TTreeNode; out NodeType: TCBMNodeType): TTreeNode;
function GetBuildModeTVNode(BuildMode: TLazBuildMode): TTreeNode;
function GetValuesTVNode(BuildMode: TLazBuildMode): TTreeNode;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -80,12 +84,36 @@ begin
BuildModesTreeView.EndUpdate; BuildModesTreeView.EndUpdate;
end; end;
procedure TCompOptBuildModesFrame.NewValueClick(Sender: TObject);
var
BuildMode: TLazBuildMode;
NodeType: TCBMNodeType;
i: Integer;
NewValueStr: String;
ValuesTVNode: TTreeNode;
begin
GetSelectedNode(BuildMode,NodeType);
if BuildMode=nil then exit;
i:=1;
repeat
NewValueStr:='Value'+IntToStr(i);
if BuildMode.Values.IndexOf(NewValueStr)<0 then break;
inc(i);
until false;
BuildMode.Values.Add(NewValueStr);
BuildModesTreeView.BeginUpdate;
ValuesTVNode:=GetValuesTVNode(BuildMode);
TreeViewAddValue(ValuesTVNode,NewValueStr);
ValuesTVNode.Expand(true);
BuildModesTreeView.EndUpdate;
end;
procedure TCompOptBuildModesFrame.DeleteBuildModeClick(Sender: TObject); procedure TCompOptBuildModesFrame.DeleteBuildModeClick(Sender: TObject);
var var
BuildMode: TIDEBuildMode; BuildMode: TIDEBuildMode;
SelTVNode: TTreeNode; SelTVNode: TTreeNode;
NodeType: TCBMNodeType; NodeType: TCBMNodeType;
i: LongInt; i: LongInt;
begin begin
SelTVNode:=GetSelectedNode(BuildMode,NodeType); SelTVNode:=GetSelectedNode(BuildMode,NodeType);
if BuildMode=nil then exit; if BuildMode=nil then exit;
@ -127,7 +155,7 @@ begin
GetSelectedNode(BuildMode,NodeType); GetSelectedNode(BuildMode,NodeType);
if NodeType in [cbmntBuildMode,cbmntValues,cbmntValue] then if NodeType in [cbmntBuildMode,cbmntValues,cbmntValue] then
Add('New value',nil); Add('New value',@NewValueClick);
if NodeType in [cbmntValue] then if NodeType in [cbmntValue] then
Add('Delete value ...',nil); Add('Delete value ...',nil);
AddSeparator; AddSeparator;
@ -165,7 +193,6 @@ var
Values: TStrings; Values: TStrings;
i: Integer; i: Integer;
DefValueTVNode: TTreeNode; DefValueTVNode: TTreeNode;
ValueTVNode: TTreeNode;
begin begin
// create node for the build mode // create node for the build mode
TVNode:=BuildModesTreeView.Items.AddObject(nil,BuildMode.Identifier,BuildMode); TVNode:=BuildModesTreeView.Items.AddObject(nil,BuildMode.Identifier,BuildMode);
@ -181,12 +208,8 @@ begin
ValuesTVNode.SelectedIndex:=ValuesTVNode.ImageIndex; ValuesTVNode.SelectedIndex:=ValuesTVNode.ImageIndex;
// a node for each value // a node for each value
Values:=BuildMode.Values; Values:=BuildMode.Values;
for i:=0 to Values.Count-1 do begin for i:=0 to Values.Count-1 do
ValueTVNode:=BuildModesTreeView.Items.AddChild(ValuesTVNode,Values[i]); TreeViewAddValue(ValuesTVNode,Values[i]);
ValueTVNode.ImageIndex:=fValueImgID;
ValueTVNode.StateIndex:=ValueTVNode.ImageIndex;
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
end;
// a node for the default value // a node for the default value
DefValueTVNode:=BuildModesTreeView.Items.AddChild(TVNode, DefValueTVNode:=BuildModesTreeView.Items.AddChild(TVNode,
lisDefaultValue); lisDefaultValue);
@ -198,6 +221,17 @@ begin
TVNode.Expand(true); TVNode.Expand(true);
end; end;
procedure TCompOptBuildModesFrame.TreeViewAddValue(ValuesTVNode: TTreeNode;
aValue: string);
var
ValueTVNode: TTreeNode;
begin
ValueTVNode:=BuildModesTreeView.Items.AddChild(ValuesTVNode,aValue);
ValueTVNode.ImageIndex:=fValueImgID;
ValueTVNode.StateIndex:=ValueTVNode.ImageIndex;
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
end;
function TCompOptBuildModesFrame.GetSelectedNode(out function TCompOptBuildModesFrame.GetSelectedNode(out
BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode; BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode;
@ -233,6 +267,26 @@ begin
NodeType:=GetNodeType(Result); NodeType:=GetNodeType(Result);
end; end;
function TCompOptBuildModesFrame.GetBuildModeTVNode(BuildMode: TLazBuildMode
): TTreeNode;
begin
Result:=BuildModesTreeView.Items.GetFirstNode;
while (Result<>nil) and (TObject(Result.Data)<>BuildMode) do
Result:=Result.GetNextSibling;
end;
function TCompOptBuildModesFrame.GetValuesTVNode(BuildMode: TLazBuildMode
): TTreeNode;
var
BuildModeTVNode: TTreeNode;
begin
BuildModeTVNode:=GetBuildModeTVNode(BuildMode);
if (BuildModeTVNode<>nil) then
Result:=BuildModeTVNode.GetFirstChild
else
Result:=nil;
end;
constructor TCompOptBuildModesFrame.Create(TheOwner: TComponent); constructor TCompOptBuildModesFrame.Create(TheOwner: TComponent);
begin begin
inherited Create(TheOwner); inherited Create(TheOwner);