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,20 +144,27 @@ 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]);
end;
BuildModesTreeView.EndUpdate;
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 // create node for the build mode
TVNode:=BuildModesTreeView.Items.AddObject(nil,BuildMode.Identifier,BuildMode); TVNode:=BuildModesTreeView.Items.AddObject(nil,BuildMode.Identifier,BuildMode);
TVNode.ImageIndex:=fModeImgID; TVNode.ImageIndex:=fModeImgID;
@ -168,8 +179,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 j:=0 to Values.Count-1 do begin for i:=0 to Values.Count-1 do begin
ValueTVNode:=BuildModesTreeView.Items.AddChild(ValuesTVNode,Values[j]); ValueTVNode:=BuildModesTreeView.Items.AddChild(ValuesTVNode,Values[i]);
ValueTVNode.ImageIndex:=fValueImgID; ValueTVNode.ImageIndex:=fValueImgID;
ValueTVNode.StateIndex:=ValueTVNode.ImageIndex; ValueTVNode.StateIndex:=ValueTVNode.ImageIndex;
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex; ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
@ -183,9 +194,6 @@ begin
// ToDo: add default value nodes // ToDo: add default value nodes
end; end;
TVNode.Expand(true); TVNode.Expand(true);
end;
end;
BuildModesTreeView.EndUpdate;
end; end;
function TCompOptBuildModesFrame.GetSelectedNode(out function TCompOptBuildModesFrame.GetSelectedNode(out