IDE: build modes: editing name and value

git-svn-id: trunk@18570 -
This commit is contained in:
mattias 2009-02-04 20:02:11 +00:00
parent f59b54561e
commit 200a245fa6
6 changed files with 121 additions and 62 deletions

View File

@ -29,6 +29,8 @@ object CompOptBuildModesFrame: TCompOptBuildModesFrame
PopupMenu = BuildModeTVPopupMenu
RightClickSelect = True
TabOrder = 0
OnEdited = BuildModesTreeViewEdited
OnEditing = BuildModesTreeViewEditing
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
end
end

View File

@ -10,9 +10,10 @@ LazarusResources.Add('TCompOptBuildModesFrame','FORMDATA',[
+'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
+'r'#2#0#8'OnEdited'#7#24'BuildModesTreeViewEdited'#9'OnEditing'#7#25'BuildMo'
+'desTreeViewEditing'#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'
+#21'tvoKeepCollapsedNodes'#19'tvoRightClickSelect'#14'tvoShowButtons'#12'tvo'
+'ShowLines'#11'tvoShowRoot'#11'tvoToolTips'#0#0#0#0#10'TPopupMenu'#20'BuildM'
+'odeTVPopupMenu'#7'OnPopup'#7#25'BuildModeTVPopupMenuPopup'#4'left'#2'c'#3't'
+'op'#2'M'#0#0#0
]);

View File

@ -44,6 +44,10 @@ type
BuildModesGroupBox: TGroupBox;
BuildModesTreeView: TTreeView;
BuildModeTVPopupMenu: TPopupMenu;
procedure BuildModesTreeViewEdited(Sender: TObject; Node: TTreeNode;
var S: string);
procedure BuildModesTreeViewEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
procedure BuildModeTVPopupMenuPopup(Sender: TObject);
procedure DeleteBuildModeClick(Sender: TObject);
procedure NewBuildModeClick(Sender: TObject);
@ -59,6 +63,7 @@ type
procedure RebuildTreeView;
procedure TreeViewAddBuildMode(BuildMode: TLazBuildMode);
procedure TreeViewAddValue(ValuesTVNode: TTreeNode; aValue: string);
function GetNodeInfo(Node: TTreeNode; out BuildMode: TLazBuildMode): TCBMNodeType;
function GetSelectedNode(out BuildMode: TLazBuildMode;
out NodeType: TCBMNodeType): TTreeNode;
function GetBuildModeTVNode(BuildMode: TLazBuildMode): TTreeNode;
@ -187,6 +192,65 @@ begin
Add('Delete build mode ...',@DeleteBuildModeClick);
end;
procedure TCompOptBuildModesFrame.BuildModesTreeViewEditing(Sender: TObject;
Node: TTreeNode; var AllowEdit: Boolean);
var
BuildMode: TLazBuildMode;
NodeType: TCBMNodeType;
begin
NodeType:=GetNodeInfo(Node,BuildMode);
AllowEdit:=NodeType in [cbmntBuildMode,cbmntValue];
end;
procedure TCompOptBuildModesFrame.BuildModesTreeViewEdited(Sender: TObject;
Node: TTreeNode; var S: string);
var
BuildMode: TLazBuildMode;
NodeType: TCBMNodeType;
ConflictBuildMode: TIDEBuildMode;
Index: LongInt;
begin
NodeType:=GetNodeInfo(Node,BuildMode);
case NodeType of
cbmntBuildMode:
if S<>BuildMode.Identifier then begin
// rename build mode
if (S='') or (not IsValidIdent(S)) then begin
MessageDlg('Error',
'Invalid build mode "'+S+'". The build mode must be a pascal identifier.',
mtError,[mbCancel],0);
S:=BuildMode.Identifier;
exit;
end;
ConflictBuildMode:=BuildModes.ModeWithIdentifier(S);
if (ConflictBuildMode<>nil) and (ConflictBuildMode<>BuildMode) then
begin
MessageDlg('Error',
'There is already a build mode with the name "'+S+'".',
mtError,[mbCancel],0);
S:=BuildMode.Identifier;
exit;
end;
BuildMode.Identifier:=S;
end;
cbmntValue:
begin
Index:=Node.Index;
Index:=BuildMode.Values.IndexOf(S);
if (Index>=0) and (Index<>Node.Index) then begin
MessageDlg('Error',
'Duplicate found of value "'+S+'".',
mtError,[mbCancel],0);
S:=BuildMode.Values[Node.Index];
exit;
end;
BuildMode.Values[Node.Index]:=S;
end;
end;
end;
procedure TCompOptBuildModesFrame.SetBuildModes(const AValue: TIDEBuildModes);
begin
if FBuildModes=AValue then exit;
@ -255,25 +319,25 @@ begin
ValueTVNode.SelectedIndex:=ValueTVNode.ImageIndex;
end;
function TCompOptBuildModesFrame.GetSelectedNode(out
BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode;
function TCompOptBuildModesFrame.GetNodeInfo(Node: TTreeNode; out
BuildMode: TLazBuildMode): TCBMNodeType;
function GetNodeType(Node: TTreeNode): TCBMNodeType;
function GetNodeType(CurNode: TTreeNode): TCBMNodeType;
var
ParentType: TCBMNodeType;
begin
if Node=nil then
if CurNode=nil then
Result:=cbmntNone
else if TObject(Node.Data) is TLazBuildMode then begin
BuildMode:=TLazBuildMode(Node.Data);
else if TObject(CurNode.Data) is TLazBuildMode then begin
BuildMode:=TLazBuildMode(CurNode.Data);
Result:=cbmntBuildMode;
end else begin
ParentType:=GetNodeType(Node.Parent);
ParentType:=GetNodeType(CurNode.Parent);
case ParentType of
cbmntBuildMode:
if Node.Text=lisValues then
if CurNode.Text=lisValues then
Result:=cbmntValues
else if Node.Text=lisDefaultValue then
else if CurNode.Text=lisDefaultValue then
Result:=cbmntDefaultValue;
cbmntValues:
Result:=cbmntValue;
@ -286,8 +350,14 @@ function TCompOptBuildModesFrame.GetSelectedNode(out
begin
BuildMode:=nil;
Result:=GetNodeType(Node);
end;
function TCompOptBuildModesFrame.GetSelectedNode(out
BuildMode: TLazBuildMode; out NodeType: TCBMNodeType): TTreeNode;
begin
Result:=BuildModesTreeView.Selected;
NodeType:=GetNodeType(Result);
NodeType:=GetNodeInfo(Result,BuildMode);
end;
function TCompOptBuildModesFrame.GetBuildModeTVNode(BuildMode: TLazBuildMode

View File

@ -5,7 +5,6 @@ object CompOptsConditionalsFrame: TCompOptsConditionalsFrame
Width = 385
ClientHeight = 166
ClientWidth = 381
Ctl3D = False
TabOrder = 0
Visible = False
DesignLeft = 439
@ -17,12 +16,12 @@ object CompOptsConditionalsFrame: TCompOptsConditionalsFrame
Width = 381
Align = alClient
AutoExpand = True
Ctl3D = False
DefaultItemHeight = 19
PopupMenu = COCPopupMenu
ReadOnly = True
RowSelect = True
TabOrder = 0
OnEditing = COCTreeViewEditing
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoShowSeparators, tvoToolTips]
end
object COCPopupMenu: TPopupMenu
@ -31,56 +30,38 @@ object CompOptsConditionalsFrame: TCompOptsConditionalsFrame
top = 48
object InsertAboveMenuItem: TMenuItem
Caption = 'InsertAboveMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = InsertAboveMenuItemClick
end
object InsertBelowMenuItem: TMenuItem
Caption = 'InsertBelowMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = InsertBelowMenuItemClick
end
object InsertChildMenuItem: TMenuItem
Caption = 'InsertChildMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = InsertChildMenuItemClick
end
object DeleteMenuItem: TMenuItem
Caption = 'DeleteMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = DeleteMenuItemClick
end
object MoveUpMenuItem: TMenuItem
Caption = 'MoveUpMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = MoveUpMenuItemClick
end
object MoveDownMenuItem: TMenuItem
Caption = 'MoveDownMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = MoveDownMenuItemClick
end
object MoveLvlUpMenuItem: TMenuItem
Caption = 'MoveLvlUpMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = MoveLvlUpMenuItemClick
end
object MoveLvlDownMenuItem: TMenuItem
Caption = 'MoveLvlDownMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = MoveLvlDownMenuItemClick
end
object PropertiesMenuItem: TMenuItem
Caption = 'PropertiesMenuItem'
RightJustify = False
ShowAlwaysCheckable = False
OnClick = PropertiesMenuItemClick
end
end

View File

@ -1,32 +1,29 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TCompOptsConditionalsFrame','FORMDATA',[
'TPF0'#26'TCompOptsConditionalsFrame'#25'CompOptsConditionalsFrame'#4'Left'#2
+#0#6'Height'#3#170#0#3'Top'#2#0#5'Width'#3#129#1#12'ClientHeight'#3#166#0#11
+'ClientWidth'#3'}'#1#5'Ctl3D'#8#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#3
+#183#1#9'DesignTop'#3'a'#1#0#9'TTreeView'#11'COCTreeView'#4'Left'#2#0#6'Heig'
+'ht'#3#166#0#3'Top'#2#0#5'Width'#3'}'#1#5'Align'#7#8'alClient'#10'AutoExpand'
+#9#5'Ctl3D'#8#17'DefaultItemHeight'#2#19#9'PopupMenu'#7#12'COCPopupMenu'#8'R'
+'eadOnly'#9#9'RowSelect'#9#8'TabOrder'#2#0#7'Options'#11#13'tvoAutoExpand'#17
+'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedNodes'#11'tvoRea'
+'dOnly'#12'tvoRowSelect'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'
+#17'tvoShowSeparators'#11'tvoToolTips'#0#0#0#10'TPopupMenu'#12'COCPopupMenu'
+#7'OnPopup'#7#17'COCPopupMenuPopup'#4'left'#2'0'#3'top'#2'0'#0#9'TMenuItem'
+#19'InsertAboveMenuItem'#7'Caption'#6#19'InsertAboveMenuItem'#12'RightJustif'
+'y'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#24'InsertAboveMenuItemClick'#0#0
+#9'TMenuItem'#19'InsertBelowMenuItem'#7'Caption'#6#19'InsertBelowMenuItem'#12
+'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#24'InsertBelowMenuIt'
+'emClick'#0#0#9'TMenuItem'#19'InsertChildMenuItem'#7'Caption'#6#19'InsertChi'
+'ldMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#24'In'
+'sertChildMenuItemClick'#0#0#9'TMenuItem'#14'DeleteMenuItem'#7'Caption'#6#14
+'DeleteMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#19
+'ClientWidth'#3'}'#1#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#3#183#1#9'D'
+'esignTop'#3'a'#1#0#9'TTreeView'#11'COCTreeView'#4'Left'#2#0#6'Height'#3#166
+#0#3'Top'#2#0#5'Width'#3'}'#1#5'Align'#7#8'alClient'#10'AutoExpand'#9#17'Def'
+'aultItemHeight'#2#19#9'PopupMenu'#7#12'COCPopupMenu'#8'ReadOnly'#9#9'RowSel'
+'ect'#9#8'TabOrder'#2#0#9'OnEditing'#7#18'COCTreeViewEditing'#7'Options'#11
+#13'tvoAutoExpand'#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepColl'
+'apsedNodes'#11'tvoReadOnly'#12'tvoRowSelect'#14'tvoShowButtons'#12'tvoShowL'
+'ines'#11'tvoShowRoot'#17'tvoShowSeparators'#11'tvoToolTips'#0#0#0#10'TPopup'
+'Menu'#12'COCPopupMenu'#7'OnPopup'#7#17'COCPopupMenuPopup'#4'left'#2'0'#3'to'
+'p'#2'0'#0#9'TMenuItem'#19'InsertAboveMenuItem'#7'Caption'#6#19'InsertAboveM'
+'enuItem'#7'OnClick'#7#24'InsertAboveMenuItemClick'#0#0#9'TMenuItem'#19'Inse'
+'rtBelowMenuItem'#7'Caption'#6#19'InsertBelowMenuItem'#7'OnClick'#7#24'Inser'
+'tBelowMenuItemClick'#0#0#9'TMenuItem'#19'InsertChildMenuItem'#7'Caption'#6
+#19'InsertChildMenuItem'#7'OnClick'#7#24'InsertChildMenuItemClick'#0#0#9'TMe'
+'nuItem'#14'DeleteMenuItem'#7'Caption'#6#14'DeleteMenuItem'#7'OnClick'#7#19
+'DeleteMenuItemClick'#0#0#9'TMenuItem'#14'MoveUpMenuItem'#7'Caption'#6#14'Mo'
+'veUpMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7#19
+'MoveUpMenuItemClick'#0#0#9'TMenuItem'#16'MoveDownMenuItem'#7'Caption'#6#16
+'MoveDownMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnClick'#7
+#21'MoveDownMenuItemClick'#0#0#9'TMenuItem'#17'MoveLvlUpMenuItem'#7'Caption'
+#6#17'MoveLvlUpMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckable'#8#7'OnCl'
+'ick'#7#22'MoveLvlUpMenuItemClick'#0#0#9'TMenuItem'#19'MoveLvlDownMenuItem'#7
+'Caption'#6#19'MoveLvlDownMenuItem'#12'RightJustify'#8#19'ShowAlwaysCheckabl'
+'e'#8#7'OnClick'#7#24'MoveLvlDownMenuItemClick'#0#0#9'TMenuItem'#18'Properti'
+'esMenuItem'#7'Caption'#6#18'PropertiesMenuItem'#12'RightJustify'#8#19'ShowA'
+'lwaysCheckable'#8#7'OnClick'#7#23'PropertiesMenuItemClick'#0#0#0#0
+'veUpMenuItem'#7'OnClick'#7#19'MoveUpMenuItemClick'#0#0#9'TMenuItem'#16'Move'
+'DownMenuItem'#7'Caption'#6#16'MoveDownMenuItem'#7'OnClick'#7#21'MoveDownMen'
+'uItemClick'#0#0#9'TMenuItem'#17'MoveLvlUpMenuItem'#7'Caption'#6#17'MoveLvlU'
+'pMenuItem'#7'OnClick'#7#22'MoveLvlUpMenuItemClick'#0#0#9'TMenuItem'#19'Move'
+'LvlDownMenuItem'#7'Caption'#6#19'MoveLvlDownMenuItem'#7'OnClick'#7#24'MoveL'
+'vlDownMenuItemClick'#0#0#9'TMenuItem'#18'PropertiesMenuItem'#7'Caption'#6#18
+'PropertiesMenuItem'#7'OnClick'#7#23'PropertiesMenuItemClick'#0#0#0#0
]);

View File

@ -46,6 +46,8 @@ type
MoveDownMenuItem: TMenuItem;
MoveUpMenuItem: TMenuItem;
procedure COCPopupMenuPopup(Sender: TObject);
procedure COCTreeViewEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
procedure DeleteMenuItemClick(Sender: TObject);
procedure InsertAboveMenuItemClick(Sender: TObject);
procedure InsertBelowMenuItemClick(Sender: TObject);
@ -98,6 +100,12 @@ begin
MoveUpMenuItem.Enabled:=NormalNodeIsSelectd and (TVNode.GetPrevSibling<>nil);
end;
procedure TCompOptsConditionalsFrame.COCTreeViewEditing(Sender: TObject;
Node: TTreeNode; var AllowEdit: Boolean);
begin
end;
procedure TCompOptsConditionalsFrame.DeleteMenuItemClick(Sender: TObject);
var
COCNode: TCompOptCondNode;