IDE: build modes: add new build modes

git-svn-id: trunk@18563 -
This commit is contained in:
mattias 2009-02-04 16:33:11 +00:00
parent 2ae6c31c9d
commit 9adb2fad96

View File

@ -46,7 +46,7 @@ type
BuildModeTVPopupMenu: TPopupMenu; BuildModeTVPopupMenu: TPopupMenu;
procedure BuildModeTVPopupMenuPopup(Sender: TObject); procedure BuildModeTVPopupMenuPopup(Sender: TObject);
procedure DeleteSpeedButtonClick(Sender: TObject); procedure DeleteSpeedButtonClick(Sender: TObject);
procedure NewSpeedButtonClick(Sender: TObject); procedure NewBuildModeClick(Sender: TObject);
private private
FBuildModes: TIDEBuildModes; FBuildModes: TIDEBuildModes;
fModeImgID: LongInt; fModeImgID: LongInt;
@ -55,6 +55,7 @@ type
fDefValueImgID: LongInt; fDefValueImgID: LongInt;
procedure SetBuildModes(const AValue: TIDEBuildModes); procedure SetBuildModes(const AValue: TIDEBuildModes);
procedure RebuildTreeView; procedure RebuildTreeView;
procedure TreeViewAddBuildMode(BuildMode: TLazBuildMode);
function GetSelectedNode(out BuildMode: TLazBuildMode; function GetSelectedNode(out BuildMode: TLazBuildMode;
out NodeType: TCBMNodeType): TTreeNode; out NodeType: TCBMNodeType): TTreeNode;
public public
@ -67,15 +68,16 @@ implementation
{ TCompOptBuildModesFrame } { TCompOptBuildModesFrame }
procedure TCompOptBuildModesFrame.NewSpeedButtonClick(Sender: TObject); procedure TCompOptBuildModesFrame.NewBuildModeClick(Sender: TObject);
{var var
NewIdentifier: String;} NewIdentifier: String;
NewBuildMode: TLazBuildMode;
begin begin
{ NewIdentifier:=GlobalBuildModeSet.GetUniqueModeName(BuildModes); NewIdentifier:=GlobalBuildModeSet.GetUniqueModeName(BuildModes);
BuildModes.Add(NewIdentifier); NewBuildMode:=BuildModes.Add(NewIdentifier);
ModesGrid.RowCount:=BuildModes.Count; BuildModesTreeView.BeginUpdate;
ModesGrid.Cells[0,BuildModes.Count-1]:=NewIdentifier; TreeViewAddBuildMode(NewBuildMode);
ModesGrid.Row:=BuildModes.Count-1;} BuildModesTreeView.EndUpdate;
end; end;
procedure TCompOptBuildModesFrame.DeleteSpeedButtonClick(Sender: TObject); procedure TCompOptBuildModesFrame.DeleteSpeedButtonClick(Sender: TObject);
@ -111,6 +113,8 @@ var
function AddSeparator: TMenuItem; function AddSeparator: TMenuItem;
begin begin
Result:=nil;
if BuildModeTVPopupMenu.Items.Count=0 then exit;
Result:=TMenuItem.Create(Self); Result:=TMenuItem.Create(Self);
Result.Caption:='-'; Result.Caption:='-';
BuildModeTVPopupMenu.Items.Add(Result); BuildModeTVPopupMenu.Items.Add(Result);
@ -125,7 +129,7 @@ begin
if NodeType in [cbmntValue] then if NodeType in [cbmntValue] then
Add('Delete value ...',nil); Add('Delete value ...',nil);
AddSeparator; AddSeparator;
Add('New build mode',nil); Add('New build mode',@NewBuildModeClick);
if NodeType in [cbmntBuildMode] then if NodeType in [cbmntBuildMode] then
Add('Delete build mode ...',nil); Add('Delete build mode ...',nil);
end; end;
@ -140,54 +144,58 @@ end;
procedure TCompOptBuildModesFrame.RebuildTreeView; procedure TCompOptBuildModesFrame.RebuildTreeView;
var var
i: Integer; i: Integer;
TVNode: TTreeNode;
BuildMode: TLazBuildMode;
j: Integer;
Values: TStrings;
ValueTVNode: TTreeNode;
ValuesTVNode: TTreeNode;
DefValueTVNode: TTreeNode;
begin begin
BuildModesTreeView.BeginUpdate; BuildModesTreeView.BeginUpdate;
BuildModesTreeView.Items.Clear; BuildModesTreeView.Items.Clear;
if BuildModes<>nil then begin if BuildModes<>nil then begin
// first level: build modes // first level: build modes
for i:=0 to BuildModes.Count-1 do begin for i:=0 to BuildModes.Count-1 do
BuildMode:=BuildModes.Items[i]; TreeViewAddBuildMode(BuildModes.Items[i]);
// create node for the build mode
TVNode:=BuildModesTreeView.Items.AddObject(nil,BuildMode.Identifier,BuildMode);
TVNode.ImageIndex:=fModeImgID;
TVNode.StateIndex:=TVNode.ImageIndex;
TVNode.SelectedIndex:=TVNode.ImageIndex;
// second level
begin
// parent node for values
ValuesTVNode:=BuildModesTreeView.Items.AddChild(TVNode, lisValues);
ValuesTVNode.ImageIndex:=fValuesImgID;
ValuesTVNode.StateIndex:=ValuesTVNode.ImageIndex;
ValuesTVNode.SelectedIndex:=ValuesTVNode.ImageIndex;
// a node for each value
Values:=BuildMode.Values;
for j:=0 to Values.Count-1 do begin
ValueTVNode:=BuildModesTreeView.Items.AddChild(ValuesTVNode,Values[j]);
ValueTVNode.ImageIndex:=fValueImgID;
ValueTVNode.StateIndex:=ValueTVNode.ImageIndex;
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
end;
// a node for the default value
DefValueTVNode:=BuildModesTreeView.Items.AddChild(TVNode,
lisDefaultValue);
DefValueTVNode.ImageIndex:=fDefValueImgID;
DefValueTVNode.StateIndex:=DefValueTVNode.ImageIndex;
DefValueTVNode.SelectedIndex:=DefValueTVNode.ImageIndex;
// ToDo: add default value nodes
end;
TVNode.Expand(true);
end;
end; end;
BuildModesTreeView.EndUpdate; BuildModesTreeView.EndUpdate;
end; end;
procedure TCompOptBuildModesFrame.TreeViewAddBuildMode(BuildMode: TLazBuildMode
);
var
TVNode: TTreeNode;
ValuesTVNode: TTreeNode;
Values: TStrings;
i: Integer;
DefValueTVNode: TTreeNode;
ValueTVNode: TTreeNode;
begin
// create node for the build mode
TVNode:=BuildModesTreeView.Items.AddObject(nil,BuildMode.Identifier,BuildMode);
TVNode.ImageIndex:=fModeImgID;
TVNode.StateIndex:=TVNode.ImageIndex;
TVNode.SelectedIndex:=TVNode.ImageIndex;
// second level
begin
// parent node for values
ValuesTVNode:=BuildModesTreeView.Items.AddChild(TVNode, lisValues);
ValuesTVNode.ImageIndex:=fValuesImgID;
ValuesTVNode.StateIndex:=ValuesTVNode.ImageIndex;
ValuesTVNode.SelectedIndex:=ValuesTVNode.ImageIndex;
// a node for each value
Values:=BuildMode.Values;
for i:=0 to Values.Count-1 do begin
ValueTVNode:=BuildModesTreeView.Items.AddChild(ValuesTVNode,Values[i]);
ValueTVNode.ImageIndex:=fValueImgID;
ValueTVNode.StateIndex:=ValueTVNode.ImageIndex;
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
end;
// a node for the default value
DefValueTVNode:=BuildModesTreeView.Items.AddChild(TVNode,
lisDefaultValue);
DefValueTVNode.ImageIndex:=fDefValueImgID;
DefValueTVNode.StateIndex:=DefValueTVNode.ImageIndex;
DefValueTVNode.SelectedIndex:=DefValueTVNode.ImageIndex;
// ToDo: add default value nodes
end;
TVNode.Expand(true);
end;
function TCompOptBuildModesFrame.GetSelectedNode(out function TCompOptBuildModesFrame.GetSelectedNode(out
BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode; BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode;