mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 19:58:18 +02:00
IDE: build modes: popup items
git-svn-id: trunk@18562 -
This commit is contained in:
parent
343ae3b671
commit
2ae6c31c9d
@ -4032,6 +4032,8 @@ resourcestring
|
||||
+'compiler option';
|
||||
lisAction = 'Action:';
|
||||
lisValue = 'Value:';
|
||||
lisValues = 'Values';
|
||||
lisDefaultValue = 'Default value';
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -5,11 +5,10 @@ object CompOptBuildModesFrame: TCompOptBuildModesFrame
|
||||
Width = 492
|
||||
ClientHeight = 229
|
||||
ClientWidth = 488
|
||||
Ctl3D = False
|
||||
TabOrder = 0
|
||||
Visible = False
|
||||
DesignLeft = 339
|
||||
DesignTop = 472
|
||||
DesignLeft = 344
|
||||
DesignTop = 496
|
||||
object BuildModesGroupBox: TGroupBox
|
||||
Left = 0
|
||||
Height = 229
|
||||
@ -19,7 +18,6 @@ object CompOptBuildModesFrame: TCompOptBuildModesFrame
|
||||
Caption = 'BuildModesGroupBox'
|
||||
ClientHeight = 210
|
||||
ClientWidth = 484
|
||||
Ctl3D = False
|
||||
TabOrder = 0
|
||||
object BuildModesTreeView: TTreeView
|
||||
Left = 0
|
||||
@ -27,10 +25,11 @@ object CompOptBuildModesFrame: TCompOptBuildModesFrame
|
||||
Top = 0
|
||||
Width = 484
|
||||
Align = alClient
|
||||
Ctl3D = False
|
||||
DefaultItemHeight = 19
|
||||
PopupMenu = BuildModeTVPopupMenu
|
||||
RightClickSelect = True
|
||||
TabOrder = 0
|
||||
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
|
||||
end
|
||||
end
|
||||
object BuildModeTVPopupMenu: TPopupMenu
|
||||
|
@ -3,13 +3,16 @@
|
||||
LazarusResources.Add('TCompOptBuildModesFrame','FORMDATA',[
|
||||
'TPF0'#23'TCompOptBuildModesFrame'#22'CompOptBuildModesFrame'#4'Left'#2#0#6'H'
|
||||
+'eight'#3#233#0#3'Top'#2#0#5'Width'#3#236#1#12'ClientHeight'#3#229#0#11'Clie'
|
||||
+'ntWidth'#3#232#1#5'Ctl3D'#8#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#3'S'
|
||||
+#1#9'DesignTop'#3#216#1#0#9'TGroupBox'#18'BuildModesGroupBox'#4'Left'#2#0#6
|
||||
+'Height'#3#229#0#3'Top'#2#0#5'Width'#3#232#1#5'Align'#7#8'alClient'#7'Captio'
|
||||
+'n'#6#18'BuildModesGroupBox'#12'ClientHeight'#3#210#0#11'ClientWidth'#3#228#1
|
||||
+#5'Ctl3D'#8#8'TabOrder'#2#0#0#9'TTreeView'#18'BuildModesTreeView'#4'Left'#2#0
|
||||
+#6'Height'#3#210#0#3'Top'#2#0#5'Width'#3#228#1#5'Align'#7#8'alClient'#5'Ctl3'
|
||||
+'D'#8#17'DefaultItemHeight'#2#19#9'PopupMenu'#7#20'BuildModeTVPopupMenu'#8'T'
|
||||
+'abOrder'#2#0#0#0#0#10'TPopupMenu'#20'BuildModeTVPopupMenu'#7'OnPopup'#7#25
|
||||
+'BuildModeTVPopupMenuPopup'#4'left'#2'c'#3'top'#2'M'#0#0#0
|
||||
+'ntWidth'#3#232#1#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#3'X'#1#9'Desig'
|
||||
+'nTop'#3#240#1#0#9'TGroupBox'#18'BuildModesGroupBox'#4'Left'#2#0#6'Height'#3
|
||||
+#229#0#3'Top'#2#0#5'Width'#3#232#1#5'Align'#7#8'alClient'#7'Caption'#6#18'Bu'
|
||||
+'ildModesGroupBox'#12'ClientHeight'#3#210#0#11'ClientWidth'#3#228#1#8'TabOrd'
|
||||
+'er'#2#0#0#9'TTreeView'#18'BuildModesTreeView'#4'Left'#2#0#6'Height'#3#210#0
|
||||
+#3'Top'#2#0#5'Width'#3#228#1#5'Align'#7#8'alClient'#17'DefaultItemHeight'#2
|
||||
+#19#9'PopupMenu'#7#20'BuildModeTVPopupMenu'#16'RightClickSelect'#9#8'TabOrde'
|
||||
+'r'#2#0#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepC'
|
||||
+'ollapsedNodes'#19'tvoRightClickSelect'#14'tvoShowButtons'#12'tvoShowLines'
|
||||
+#11'tvoShowRoot'#11'tvoToolTips'#0#0#0#0#10'TPopupMenu'#20'BuildModeTVPopupM'
|
||||
+'enu'#7'OnPopup'#7#25'BuildModeTVPopupMenuPopup'#4'left'#2'c'#3'top'#2'M'#0#0
|
||||
+#0
|
||||
]);
|
||||
|
@ -30,6 +30,13 @@ uses
|
||||
Compiler_Conditionals_Options, LazarusIDEStrConsts, CompOptsModes;
|
||||
|
||||
type
|
||||
TCBMNodeType = (
|
||||
cbmntNone,
|
||||
cbmntBuildMode,
|
||||
cbmntValues,
|
||||
cbmntValue,
|
||||
cbmntDefaultValue
|
||||
);
|
||||
|
||||
{ TCompOptBuildModesFrame }
|
||||
|
||||
@ -48,6 +55,8 @@ type
|
||||
fDefValueImgID: LongInt;
|
||||
procedure SetBuildModes(const AValue: TIDEBuildModes);
|
||||
procedure RebuildTreeView;
|
||||
function GetSelectedNode(out BuildMode: TLazBuildMode;
|
||||
out NodeType: TCBMNodeType): TTreeNode;
|
||||
public
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -89,16 +98,36 @@ end;
|
||||
|
||||
procedure TCompOptBuildModesFrame.BuildModeTVPopupMenuPopup(Sender: TObject);
|
||||
var
|
||||
SelTVNode: TTreeNode;
|
||||
begin
|
||||
SelTVNode:=BuildModesTreeView.Selected;
|
||||
|
||||
if SelTVNode=nil then begin
|
||||
// no node selected
|
||||
|
||||
end else begin
|
||||
BuildMode: TLazBuildMode;
|
||||
NodeType: TCBMNodeType;
|
||||
|
||||
function Add(const aCaption: string; const OnClickEvent: TNotifyEvent): TMenuItem;
|
||||
begin
|
||||
Result:=TMenuItem.Create(Self);
|
||||
Result.Caption:=aCaption;
|
||||
Result.OnClick:=OnClickEvent;
|
||||
BuildModeTVPopupMenu.Items.Add(Result);
|
||||
end;
|
||||
|
||||
function AddSeparator: TMenuItem;
|
||||
begin
|
||||
Result:=TMenuItem.Create(Self);
|
||||
Result.Caption:='-';
|
||||
BuildModeTVPopupMenu.Items.Add(Result);
|
||||
end;
|
||||
|
||||
begin
|
||||
BuildModeTVPopupMenu.Items.Clear;
|
||||
GetSelectedNode(BuildMode,NodeType);
|
||||
|
||||
if NodeType in [cbmntBuildMode,cbmntValues,cbmntValue] then
|
||||
Add('New value',nil);
|
||||
if NodeType in [cbmntValue] then
|
||||
Add('Delete value ...',nil);
|
||||
AddSeparator;
|
||||
Add('New build mode',nil);
|
||||
if NodeType in [cbmntBuildMode] then
|
||||
Add('Delete build mode ...',nil);
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildModesFrame.SetBuildModes(const AValue: TIDEBuildModes);
|
||||
@ -133,7 +162,7 @@ begin
|
||||
// second level
|
||||
begin
|
||||
// parent node for values
|
||||
ValuesTVNode:=BuildModesTreeView.Items.AddChild(TVNode,'Values');
|
||||
ValuesTVNode:=BuildModesTreeView.Items.AddChild(TVNode, lisValues);
|
||||
ValuesTVNode.ImageIndex:=fValuesImgID;
|
||||
ValuesTVNode.StateIndex:=ValuesTVNode.ImageIndex;
|
||||
ValuesTVNode.SelectedIndex:=ValuesTVNode.ImageIndex;
|
||||
@ -146,7 +175,8 @@ begin
|
||||
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
|
||||
end;
|
||||
// a node for the default value
|
||||
DefValueTVNode:=BuildModesTreeView.Items.AddChild(TVNode,'Default value');
|
||||
DefValueTVNode:=BuildModesTreeView.Items.AddChild(TVNode,
|
||||
lisDefaultValue);
|
||||
DefValueTVNode.ImageIndex:=fDefValueImgID;
|
||||
DefValueTVNode.StateIndex:=DefValueTVNode.ImageIndex;
|
||||
DefValueTVNode.SelectedIndex:=DefValueTVNode.ImageIndex;
|
||||
@ -158,6 +188,41 @@ begin
|
||||
BuildModesTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
function TCompOptBuildModesFrame.GetSelectedNode(out
|
||||
BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode;
|
||||
|
||||
function GetNodeType(Node: TTreeNode): TCBMNodeType;
|
||||
var
|
||||
ParentType: TCBMNodeType;
|
||||
begin
|
||||
if Node=nil then
|
||||
Result:=cbmntNone
|
||||
else if TObject(Node.Data) is TLazBuildMode then begin
|
||||
BuildMode:=TLazBuildMode(Node.Data);
|
||||
Result:=cbmntBuildMode;
|
||||
end else begin
|
||||
ParentType:=GetNodeType(Node.Parent);
|
||||
case ParentType of
|
||||
cbmntBuildMode:
|
||||
if Node.Text=lisValues then
|
||||
Result:=cbmntValues
|
||||
else if Node.Text=lisDefaultValue then
|
||||
Result:=cbmntDefaultValue;
|
||||
cbmntValues:
|
||||
Result:=cbmntValue;
|
||||
cbmntDefaultValue:
|
||||
// ToDo
|
||||
;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
BuildMode:=nil;
|
||||
Result:=BuildModesTreeView.Selected;
|
||||
NodeType:=GetNodeType(Result);
|
||||
end;
|
||||
|
||||
constructor TCompOptBuildModesFrame.Create(TheOwner: TComponent);
|
||||
begin
|
||||
inherited Create(TheOwner);
|
||||
|
Loading…
Reference in New Issue
Block a user