mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 06:19:32 +02:00
IDE: conditional compiler options: editing
git-svn-id: trunk@17950 -
This commit is contained in:
parent
4598b5b3a6
commit
98dfb8d966
@ -27,52 +27,62 @@ object CompOptsConditionalsFrame: TCompOptsConditionalsFrame
|
|||||||
Options = [tvoAutoExpand, tvoAutoInsertMark, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowSeparators, tvoToolTips]
|
Options = [tvoAutoExpand, tvoAutoInsertMark, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowSeparators, tvoToolTips]
|
||||||
end
|
end
|
||||||
object COCPopupMenu: TPopupMenu
|
object COCPopupMenu: TPopupMenu
|
||||||
|
OnPopup = COCPopupMenuPopup
|
||||||
left = 48
|
left = 48
|
||||||
top = 48
|
top = 48
|
||||||
object InsertAboveMenuItem: TMenuItem
|
object InsertAboveMenuItem: TMenuItem
|
||||||
Caption = 'InsertAboveMenuItem'
|
Caption = 'InsertAboveMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = InsertAboveMenuItemClick
|
||||||
end
|
end
|
||||||
object InsertBelowMenuItem: TMenuItem
|
object InsertBelowMenuItem: TMenuItem
|
||||||
Caption = 'InsertBelowMenuItem'
|
Caption = 'InsertBelowMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = InsertBelowMenuItemClick
|
||||||
end
|
end
|
||||||
object InsertChildMenuItem: TMenuItem
|
object InsertChildMenuItem: TMenuItem
|
||||||
Caption = 'InsertChildMenuItem'
|
Caption = 'InsertChildMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = InsertChildMenuItemClick
|
||||||
end
|
end
|
||||||
object DeleteMenuItem: TMenuItem
|
object DeleteMenuItem: TMenuItem
|
||||||
Caption = 'DeleteMenuItem'
|
Caption = 'DeleteMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = DeleteMenuItemClick
|
||||||
end
|
end
|
||||||
object MoveUpMenuItem: TMenuItem
|
object MoveUpMenuItem: TMenuItem
|
||||||
Caption = 'MoveUpMenuItem'
|
Caption = 'MoveUpMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = MoveUpMenuItemClick
|
||||||
end
|
end
|
||||||
object MoveDownMenuItem: TMenuItem
|
object MoveDownMenuItem: TMenuItem
|
||||||
Caption = 'MoveDownMenuItem'
|
Caption = 'MoveDownMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = MoveDownMenuItemClick
|
||||||
end
|
end
|
||||||
object MoveLvlUpMenuItem: TMenuItem
|
object MoveLvlUpMenuItem: TMenuItem
|
||||||
Caption = 'MoveLvlUpMenuItem'
|
Caption = 'MoveLvlUpMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = MoveLvlUpMenuItemClick
|
||||||
end
|
end
|
||||||
object MoveLvlDownMenuItem: TMenuItem
|
object MoveLvlDownMenuItem: TMenuItem
|
||||||
Caption = 'MoveLvlDownMenuItem'
|
Caption = 'MoveLvlDownMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = MoveLvlDownMenuItemClick
|
||||||
end
|
end
|
||||||
object PropertiesMenuItem: TMenuItem
|
object PropertiesMenuItem: TMenuItem
|
||||||
Caption = 'PropertiesMenuItem'
|
Caption = 'PropertiesMenuItem'
|
||||||
RightJustify = False
|
RightJustify = False
|
||||||
ShowAlwaysCheckable = False
|
ShowAlwaysCheckable = False
|
||||||
|
OnClick = PropertiesMenuItemClick
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -11,19 +11,25 @@ LazarusResources.Add('TCompOptsConditionalsFrame','FORMDATA',[
|
|||||||
+'oAutoExpand'#17'tvoAutoInsertMark'#17'tvoAutoItemHeight'#16'tvoHideSelectio'
|
+'oAutoExpand'#17'tvoAutoInsertMark'#17'tvoAutoItemHeight'#16'tvoHideSelectio'
|
||||||
+'n'#21'tvoKeepCollapsedNodes'#11'tvoReadOnly'#12'tvoRowSelect'#14'tvoShowBut'
|
+'n'#21'tvoKeepCollapsedNodes'#11'tvoReadOnly'#12'tvoRowSelect'#14'tvoShowBut'
|
||||||
+'tons'#12'tvoShowLines'#17'tvoShowSeparators'#11'tvoToolTips'#0#0#0#10'TPopu'
|
+'tons'#12'tvoShowLines'#17'tvoShowSeparators'#11'tvoToolTips'#0#0#0#10'TPopu'
|
||||||
+'pMenu'#12'COCPopupMenu'#4'left'#2'0'#3'top'#2'0'#0#9'TMenuItem'#19'InsertAb'
|
+'pMenu'#12'COCPopupMenu'#7'OnPopup'#7#17'COCPopupMenuPopup'#4'left'#2'0'#3't'
|
||||||
+'oveMenuItem'#7'Caption'#6#19'InsertAboveMenuItem'#12'RightJustify'#8#19'Sho'
|
+'op'#2'0'#0#9'TMenuItem'#19'InsertAboveMenuItem'#7'Caption'#6#19'InsertAbove'
|
||||||
+'wAlwaysCheckable'#8#0#0#9'TMenuItem'#19'InsertBelowMenuItem'#7'Caption'#6#19
|
+'MenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#24'Inse'
|
||||||
+'InsertBelowMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#0#0#9'TMe'
|
+'rtAboveMenuItemClick'#0#0#9'TMenuItem'#19'InsertBelowMenuItem'#7'Caption'#6
|
||||||
+'nuItem'#19'InsertChildMenuItem'#7'Caption'#6#19'InsertChildMenuItem'#12'Rig'
|
+#19'InsertBelowMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnCl'
|
||||||
+'htJustify'#8#19'ShowAlwaysCheckable'#8#0#0#9'TMenuItem'#14'DeleteMenuItem'#7
|
+'ick'#7#24'InsertBelowMenuItemClick'#0#0#9'TMenuItem'#19'InsertChildMenuItem'
|
||||||
+'Caption'#6#14'DeleteMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#0
|
+#7'Caption'#6#19'InsertChildMenuItem'#12'RightJustify'#8#19'ShowAlwaysChecka'
|
||||||
+#0#9'TMenuItem'#14'MoveUpMenuItem'#7'Caption'#6#14'MoveUpMenuItem'#12'RightJ'
|
+'ble'#8#7'OnClick'#7#24'InsertChildMenuItemClick'#0#0#9'TMenuItem'#14'Delete'
|
||||||
+'ustify'#8#19'ShowAlwaysCheckable'#8#0#0#9'TMenuItem'#16'MoveDownMenuItem'#7
|
+'MenuItem'#7'Caption'#6#14'DeleteMenuItem'#12'RightJustify'#8#19'ShowAlwaysC'
|
||||||
+'Caption'#6#16'MoveDownMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8
|
+'heckable'#8#7'OnClick'#7#19'DeleteMenuItemClick'#0#0#9'TMenuItem'#14'MoveUp'
|
||||||
+#0#0#9'TMenuItem'#17'MoveLvlUpMenuItem'#7'Caption'#6#17'MoveLvlUpMenuItem'#12
|
+'MenuItem'#7'Caption'#6#14'MoveUpMenuItem'#12'RightJustify'#8#19'ShowAlwaysC'
|
||||||
+'RightJustify'#8#19'ShowAlwaysCheckable'#8#0#0#9'TMenuItem'#19'MoveLvlDownMe'
|
+'heckable'#8#7'OnClick'#7#19'MoveUpMenuItemClick'#0#0#9'TMenuItem'#16'MoveDo'
|
||||||
+'nuItem'#7'Caption'#6#19'MoveLvlDownMenuItem'#12'RightJustify'#8#19'ShowAlwa'
|
+'wnMenuItem'#7'Caption'#6#16'MoveDownMenuItem'#12'RightJustify'#8#19'ShowAlw'
|
||||||
+'ysCheckable'#8#0#0#9'TMenuItem'#18'PropertiesMenuItem'#7'Caption'#6#18'Prop'
|
+'aysCheckable'#8#7'OnClick'#7#21'MoveDownMenuItemClick'#0#0#9'TMenuItem'#17
|
||||||
+'ertiesMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#0#0#0#0
|
+'MoveLvlUpMenuItem'#7'Caption'#6#17'MoveLvlUpMenuItem'#12'RightJustify'#8#19
|
||||||
|
+'ShowAlwaysCheckable'#8#7'OnClick'#7#22'MoveLvlUpMenuItemClick'#0#0#9'TMenuI'
|
||||||
|
+'tem'#19'MoveLvlDownMenuItem'#7'Caption'#6#19'MoveLvlDownMenuItem'#12'RightJ'
|
||||||
|
+'ustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#24'MoveLvlDownMenuItemClic'
|
||||||
|
+'k'#0#0#9'TMenuItem'#18'PropertiesMenuItem'#7'Caption'#6#18'PropertiesMenuIt'
|
||||||
|
+'em'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#23'Properties'
|
||||||
|
+'MenuItemClick'#0#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -24,7 +24,7 @@ unit Options_Compiler_Conditionals;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, LResources, Forms, ComCtrls, Menus,
|
Classes, SysUtils, FileProcs, LResources, Forms, ComCtrls, Menus, Dialogs,
|
||||||
ProjectIntf, IDEImagesIntf,
|
ProjectIntf, IDEImagesIntf,
|
||||||
CompOptsModes;
|
CompOptsModes;
|
||||||
|
|
||||||
@ -44,13 +44,27 @@ type
|
|||||||
MoveLvlUpMenuItem: TMenuItem;
|
MoveLvlUpMenuItem: TMenuItem;
|
||||||
MoveDownMenuItem: TMenuItem;
|
MoveDownMenuItem: TMenuItem;
|
||||||
MoveUpMenuItem: TMenuItem;
|
MoveUpMenuItem: TMenuItem;
|
||||||
|
procedure COCPopupMenuPopup(Sender: TObject);
|
||||||
|
procedure DeleteMenuItemClick(Sender: TObject);
|
||||||
|
procedure InsertAboveMenuItemClick(Sender: TObject);
|
||||||
|
procedure InsertBelowMenuItemClick(Sender: TObject);
|
||||||
|
procedure InsertChildMenuItemClick(Sender: TObject);
|
||||||
|
procedure MoveDownMenuItemClick(Sender: TObject);
|
||||||
|
procedure MoveLvlDownMenuItemClick(Sender: TObject);
|
||||||
|
procedure MoveLvlUpMenuItemClick(Sender: TObject);
|
||||||
|
procedure MoveUpMenuItemClick(Sender: TObject);
|
||||||
|
procedure PropertiesMenuItemClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
FConditionals: TCompOptConditionals;
|
FConditionals: TCompOptConditionals;
|
||||||
FNodeTypeImageIDs: array[TCOCNodeType] of integer;
|
FNodeTypeImageIDs: array[TCOCNodeType] of integer;
|
||||||
procedure SetConditionals(const AValue: TCompOptConditionals);
|
procedure SetConditionals(const AValue: TCompOptConditionals);
|
||||||
procedure FillTreeView;
|
procedure FillTreeView;
|
||||||
|
procedure ConsistencyCheck;
|
||||||
function NodeToCaption(Node: TCompOptCondNode): string;
|
function NodeToCaption(Node: TCompOptCondNode): string;
|
||||||
function NodeToImageIndex(Node: TCompOptCondNode): integer;
|
function NodeToImageIndex(Node: TCompOptCondNode): integer;
|
||||||
|
function GetSelectedNode(out COCNode: TCompOptCondNode;
|
||||||
|
out TVNode: TTreeNode; RootAsDefault: boolean): boolean;
|
||||||
|
procedure CreateNewNode(AttachMode: TNodeAttachMode);
|
||||||
public
|
public
|
||||||
constructor Create(TheOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
property Conditionals: TCompOptConditionals read FConditionals write SetConditionals;
|
property Conditionals: TCompOptConditionals read FConditionals write SetConditionals;
|
||||||
@ -60,6 +74,118 @@ implementation
|
|||||||
|
|
||||||
{ TCompOptsConditionalsFrame }
|
{ TCompOptsConditionalsFrame }
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.COCPopupMenuPopup(Sender: TObject);
|
||||||
|
var
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
HasSelection: Boolean;
|
||||||
|
begin
|
||||||
|
GetSelectedNode(COCNode,TVNode);
|
||||||
|
HasSelection:=COCNode<>nil;
|
||||||
|
NormalNodeIsSelectd:=HasSelection and (COCNode<>Conditionals.Root);
|
||||||
|
InsertAboveMenuItem.Enabled:=NormalNodeIsSelectd;
|
||||||
|
InsertBelowMenuItem.Enabled:=NormalNodeIsSelectd;
|
||||||
|
InsertChildMenuItem.Enabled:=true;
|
||||||
|
DeleteMenuItem.Enabled:=NormalNodeIsSelectd;
|
||||||
|
PropertiesMenuItem.Enabled:=NormalNodeIsSelectd;
|
||||||
|
MoveLvlDownMenuItem.Enabled:=NormalNodeIsSelectd and (TVNode.GetPrevSibling<>nil);
|
||||||
|
MoveLvlUpMenuItem.Enabled:=NormalNodeIsSelectd and (COCNode.Parent.Parent<>nil);
|
||||||
|
MoveDownMenuItem.Enabled:=NormalNodeIsSelectd and (TVNode.GetNextSibling<>nil);
|
||||||
|
MoveUpMenuItem.Enabled:=NormalNodeIsSelectd and (TVNode.GetPrevSibling<>nil);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.DeleteMenuItemClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if not GetSelectedNode(COCNode,TVNode,false) then exit;
|
||||||
|
if Conditionals.Root=COCNode then exit;
|
||||||
|
if MessageDlg('Delete?',
|
||||||
|
'Delete the node "'+TVNode.Text+'"?',mtConfirmation,[mbYes,mbNo],0)<>mrYes
|
||||||
|
then
|
||||||
|
exit;
|
||||||
|
TVNode.Delete;
|
||||||
|
COCNode.Free;
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.InsertAboveMenuItemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
CreateNewNode(naInsert);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.InsertBelowMenuItemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
CreateNewNode(naInsertBehind);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.InsertChildMenuItemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
CreateNewNode(naAddChildFirst);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.MoveDownMenuItemClick(Sender: TObject);
|
||||||
|
// move selected node below sibling
|
||||||
|
var
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if not GetSelectedNode(COCNode,TVNode,false) then exit;
|
||||||
|
if TVNode.GetNextSibling=nil then exit;
|
||||||
|
TVNode.MoveTo(TVNode.GetNextSibling,naInsertBehind);
|
||||||
|
COCNode.Index:=COCNode.Index+1;
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.MoveLvlDownMenuItemClick(Sender: TObject);
|
||||||
|
// make selected node a child of previous sibling
|
||||||
|
var
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
Sibling: TCompOptCondNode;
|
||||||
|
begin
|
||||||
|
if not GetSelectedNode(COCNode,TVNode,false) then exit;
|
||||||
|
if Conditionals.Root=COCNode then exit;
|
||||||
|
if TVNode.GetPrevSibling=nil then exit;
|
||||||
|
TVNode.MoveTo(TVNode.GetPrevSibling,naAddChild);
|
||||||
|
Sibling:=COCNode.Parent.Childs[COCNode.Index-1];
|
||||||
|
COCNode.Move(Sibling,Sibling.Count);
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.MoveLvlUpMenuItemClick(Sender: TObject);
|
||||||
|
// make selected node a sibling of its parent (below parent)
|
||||||
|
var
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if not GetSelectedNode(COCNode,TVNode,false) then exit;
|
||||||
|
if COCNode.Parent=nil then exit;
|
||||||
|
if COCNode.Parent.Parent=nil then exit;
|
||||||
|
TVNode.MoveTo(TVNode.Parent,naInsertBehind);
|
||||||
|
COCNode.Move(COCNode.Parent.Parent,COCNode.Parent.Index+1);
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.MoveUpMenuItemClick(Sender: TObject);
|
||||||
|
// move selected node above sibling
|
||||||
|
var
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if not GetSelectedNode(COCNode,TVNode,false) then exit;
|
||||||
|
if TVNode.GetPrevSibling=nil then exit;
|
||||||
|
TVNode.MoveTo(TVNode.GetPrevSibling,naInsert);
|
||||||
|
COCNode.Index:=COCNode.Index-1;
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.PropertiesMenuItemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCompOptsConditionalsFrame.SetConditionals(
|
procedure TCompOptsConditionalsFrame.SetConditionals(
|
||||||
const AValue: TCompOptConditionals);
|
const AValue: TCompOptConditionals);
|
||||||
begin
|
begin
|
||||||
@ -76,7 +202,7 @@ procedure TCompOptsConditionalsFrame.FillTreeView;
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
if COCNode=nil then exit;
|
if COCNode=nil then exit;
|
||||||
TVNode:=COCTreeView.Items.AddChild(ParentTVNode,NodeToCaption(COCNode));
|
TVNode:=COCTreeView.Items.AddChildObject(ParentTVNode,NodeToCaption(COCNode),COCNode);
|
||||||
TVNode.ImageIndex:=FNodeTypeImageIDs[COCNode.NodeType];
|
TVNode.ImageIndex:=FNodeTypeImageIDs[COCNode.NodeType];
|
||||||
TVNode.StateIndex:=TVNode.ImageIndex;
|
TVNode.StateIndex:=TVNode.ImageIndex;
|
||||||
for i:=0 to COCNode.Count-1 do
|
for i:=0 to COCNode.Count-1 do
|
||||||
@ -90,6 +216,36 @@ begin
|
|||||||
Add(Conditionals.Root,nil);
|
Add(Conditionals.Root,nil);
|
||||||
end;
|
end;
|
||||||
COCTreeView.EndUpdate;
|
COCTreeView.EndUpdate;
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.ConsistencyCheck;
|
||||||
|
|
||||||
|
procedure CheckNode(COCNode: TCompOptCondNode; TVNode: TTreeNode);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
ChildTVNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if COCNode=nil then
|
||||||
|
RaiseCatchableException('');
|
||||||
|
if TVNode=nil then
|
||||||
|
RaiseCatchableException('');
|
||||||
|
if COCNode<>TCompOptCondNode(TVNode.Data) then
|
||||||
|
RaiseCatchableException('');
|
||||||
|
ChildTVNode:=TVNode.GetFirstChild;
|
||||||
|
for i:=0 to COCNode.Count-1 do begin
|
||||||
|
CheckNode(COCNode.Childs[i],ChildTVNode);
|
||||||
|
ChildTVNode:=ChildTVNode.GetNextSibling;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if Conditionals=nil then begin
|
||||||
|
if COCTreeView.Items.Count>0 then
|
||||||
|
RaiseCatchableException('');
|
||||||
|
end else begin
|
||||||
|
CheckNode(Conditionals.Root,COCTreeView.Items.GetFirstNode);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCompOptsConditionalsFrame.NodeToCaption(Node: TCompOptCondNode
|
function TCompOptsConditionalsFrame.NodeToCaption(Node: TCompOptCondNode
|
||||||
@ -124,6 +280,47 @@ begin
|
|||||||
Result:=ValidUTF8String(Result);
|
Result:=ValidUTF8String(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCompOptsConditionalsFrame.NodeToImageIndex(Node: TCompOptCondNode
|
||||||
|
): integer;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCompOptsConditionalsFrame.GetSelectedNode(out
|
||||||
|
COCNode: TCompOptCondNode; out TVNode: TTreeNode;
|
||||||
|
RootAsDefault: boolean): boolean;
|
||||||
|
begin
|
||||||
|
COCNode:=nil;
|
||||||
|
TVNode:=COCTreeView.Selected;
|
||||||
|
if TVNode=nil then begin
|
||||||
|
if RootAsDefault then begin
|
||||||
|
TVNode:=COCTreeView.Items.GetFirstNode;
|
||||||
|
COCNode:=TCompOptCondNode(TVNode.Data);
|
||||||
|
end;
|
||||||
|
end else begin
|
||||||
|
COCNode:=TCompOptCondNode(TVNode.Data);
|
||||||
|
end;
|
||||||
|
Result:=COCNode<>nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptsConditionalsFrame.CreateNewNode(AttachMode: TNodeAttachMode
|
||||||
|
);
|
||||||
|
var
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
COCNode: TCompOptCondNode;
|
||||||
|
s: String;
|
||||||
|
NewTVNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if not GetSelectedNode(COCNode,TVNode,true) then exit;
|
||||||
|
NewCOCNode:=TCompOptCondNode.Create(COCNode.Owner);
|
||||||
|
s:=NodeToCaption(COCNode);
|
||||||
|
NewTVNode:=COCTreeView.Items.AddObject(TVNode,s,COCNode);
|
||||||
|
NewTVNode.MoveTo(TVNode,naAddChildFirst);
|
||||||
|
NewTVNode.ImageIndex:=FNodeTypeImageIDs[NewCOCNode.NodeType];
|
||||||
|
NewTVNode.StateIndex:=NewTVNode.ImageIndex;
|
||||||
|
ConsistencyCheck;
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TCompOptsConditionalsFrame.Create(TheOwner: TComponent);
|
constructor TCompOptsConditionalsFrame.Create(TheOwner: TComponent);
|
||||||
var
|
var
|
||||||
nt: TCOCNodeType;
|
nt: TCOCNodeType;
|
||||||
|
@ -106,6 +106,8 @@ type
|
|||||||
FValueType: TCOCValueType;
|
FValueType: TCOCValueType;
|
||||||
function GetChilds(Index: integer): TCompOptCondNode;
|
function GetChilds(Index: integer): TCompOptCondNode;
|
||||||
function GetCount: integer;
|
function GetCount: integer;
|
||||||
|
function GetIndex: integer;
|
||||||
|
procedure SetIndex(const AValue: integer);
|
||||||
procedure SetNodeType(const AValue: TCOCNodeType);
|
procedure SetNodeType(const AValue: TCOCNodeType);
|
||||||
procedure SetValue(const AValue: string);
|
procedure SetValue(const AValue: string);
|
||||||
procedure SetValueType(const AValue: TCOCValueType);
|
procedure SetValueType(const AValue: TCOCValueType);
|
||||||
@ -117,6 +119,7 @@ type
|
|||||||
procedure AddLast(Child: TCompOptCondNode);
|
procedure AddLast(Child: TCompOptCondNode);
|
||||||
procedure Insert(Index: integer; Child: TCompOptCondNode);
|
procedure Insert(Index: integer; Child: TCompOptCondNode);
|
||||||
procedure Move(OldIndex, NewIndex: integer);
|
procedure Move(OldIndex, NewIndex: integer);
|
||||||
|
procedure Move(NewParent: TCompOptCondNode; NewIndex: integer);
|
||||||
procedure Delete(Index: integer);
|
procedure Delete(Index: integer);
|
||||||
procedure Assign(Source: TCompOptCondNode);
|
procedure Assign(Source: TCompOptCondNode);
|
||||||
property NodeType: TCOCNodeType read FNodeType write SetNodeType;
|
property NodeType: TCOCNodeType read FNodeType write SetNodeType;
|
||||||
@ -126,6 +129,7 @@ type
|
|||||||
property Parent: TCompOptCondNode read FParent;
|
property Parent: TCompOptCondNode read FParent;
|
||||||
property Count: integer read GetCount;
|
property Count: integer read GetCount;
|
||||||
property Childs[Index: integer]: TCompOptCondNode read GetChilds;
|
property Childs[Index: integer]: TCompOptCondNode read GetChilds;
|
||||||
|
property Index: integer read GetIndex write SetIndex;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TLazCompOptConditionals }
|
{ TLazCompOptConditionals }
|
||||||
@ -946,6 +950,23 @@ begin
|
|||||||
Result:=fChilds.Count;
|
Result:=fChilds.Count;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCompOptCondNode.GetIndex: integer;
|
||||||
|
begin
|
||||||
|
if Parent=nil then
|
||||||
|
Result:=-1
|
||||||
|
else
|
||||||
|
Result:=Parent.fChilds.IndexOf(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptCondNode.SetIndex(const AValue: integer);
|
||||||
|
var
|
||||||
|
OldIndex: LongInt;
|
||||||
|
begin
|
||||||
|
OldIndex:=GetIndex;
|
||||||
|
if OldIndex=AValue then exit;
|
||||||
|
Parent.Move(OldIndex,AValue);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCompOptCondNode.SetValue(const AValue: string);
|
procedure TCompOptCondNode.SetValue(const AValue: string);
|
||||||
begin
|
begin
|
||||||
if FValue=AValue then exit;
|
if FValue=AValue then exit;
|
||||||
@ -1018,6 +1039,22 @@ begin
|
|||||||
Changed;
|
Changed;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCompOptCondNode.Move(NewParent: TCompOptCondNode; NewIndex: integer
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
if (NewParent=Parent) and (NewIndex=Index) then exit;
|
||||||
|
if FParent<>nil then begin
|
||||||
|
FParent.fChilds.Remove(Self);
|
||||||
|
FParent.Changed;
|
||||||
|
end;
|
||||||
|
FParent:=NewParent;
|
||||||
|
if FParent<>nil then begin
|
||||||
|
if (NewIndex<0) or (NewIndex>FParent.Count) then
|
||||||
|
NewIndex:=FParent.Count;
|
||||||
|
FParent.fChilds.Insert(NewIndex,Self);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCompOptCondNode.Delete(Index: integer);
|
procedure TCompOptCondNode.Delete(Index: integer);
|
||||||
begin
|
begin
|
||||||
Childs[Index].Free;
|
Childs[Index].Free;
|
||||||
|
Loading…
Reference in New Issue
Block a user