added to codetools defines preview a TreeView for the defines

git-svn-id: trunk@9160 -
This commit is contained in:
mattias 2006-04-22 14:09:14 +00:00
parent f5abc1d817
commit d613b09c25
6 changed files with 256 additions and 192 deletions

View File

@ -1,5 +1,3 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TStreamAsXMLForm','FORMDATA',[ LazarusResources.Add('TStreamAsXMLForm','FORMDATA',[
'TPF0'#16'TStreamAsXMLForm'#15'StreamAsXMLForm'#13'ActiveControl'#7#7'Button1' 'TPF0'#16'TStreamAsXMLForm'#15'StreamAsXMLForm'#13'ActiveControl'#7#7'Button1'
+#7'Caption'#6#15'StreamAsXMLForm'#12'ClientHeight'#3#178#1#11'ClientWidth'#3 +#7'Caption'#6#15'StreamAsXMLForm'#12'ClientHeight'#3#178#1#11'ClientWidth'#3

View File

@ -227,10 +227,6 @@ type
FTransferMacros: TTransferMacroList; FTransferMacros: TTransferMacroList;
procedure CreateComponents; procedure CreateComponents;
function CreateSeperator : TMenuItem; function CreateSeperator : TMenuItem;
procedure RebuildDefineTreeView;
procedure AddDefineNodes(ANode: TDefineTemplate; AParent: TTreeNode;
WithChilds,WithNextSiblings: boolean);
procedure SetNodeImages(ANode: TTreeNode; WithSubNodes: boolean);
procedure SetTransferMacros(const AValue: TTransferMacroList); procedure SetTransferMacros(const AValue: TTransferMacroList);
procedure ValueAsPathToValueAsText; procedure ValueAsPathToValueAsText;
procedure SaveSelectedValues; procedure SaveSelectedValues;
@ -557,7 +553,15 @@ end;
procedure TCodeToolsDefinesEditor.OpenPreviewMenuItemClick(Sender: TObject); procedure TCodeToolsDefinesEditor.OpenPreviewMenuItemClick(Sender: TObject);
begin begin
ShowCodeToolsDefinesValuesDialog(DefineTree,''); // apply changed tree
CodeToolBoss.DefineTree.AssignNonAutoCreated(DefineTree);
try
// show preview
ShowCodeToolsDefinesValuesDialog(DefineTree,'');
finally
// restore old tree
CodeToolsOpts.AssignGlobalDefineTemplatesToTree(CodeToolBoss.DefineTree);
end;
end; end;
procedure TCodeToolsDefinesEditor.InsertFPCProjectDefinesTemplateMenuItemClick( procedure TCodeToolsDefinesEditor.InsertFPCProjectDefinesTemplateMenuItemClick(
@ -1113,69 +1117,6 @@ begin
Result.Caption := '-'; Result.Caption := '-';
end; end;
procedure TCodeToolsDefinesEditor.RebuildDefineTreeView;
begin
DefineTreeView.Items.BeginUpdate;
DefineTreeView.Items.Clear;
AddDefineNodes(FDefineTree.RootTemplate,nil,true,true);
DefineTreeView.Items.EndUpdate;
end;
procedure TCodeToolsDefinesEditor.AddDefineNodes(
ANode: TDefineTemplate; AParent: TTreeNode;
WithChilds, WithNextSiblings: boolean);
var NewTreeNode: TTreeNode;
begin
if ANode=nil then exit;
//writeln(' AAA ',StringOfChar(' ',ANode.Level*2),' ',ANode.Name,' ',WithChilds,',',WithNextSiblings);
DefineTreeView.Items.BeginUpdate;
NewTreeNode:=DefineTreeView.Items.AddChildObject(AParent,ANode.Name,ANode);
SetNodeImages(NewTreeNode,false);
if WithChilds and (ANode.FirstChild<>nil) then begin
AddDefineNodes(ANode.FirstChild,NewTreeNode,true,true);
end;
if WithNextSiblings and (ANode.Next<>nil) then begin
AddDefineNodes(ANode.Next,AParent,WithChilds,true);
end;
DefineTreeView.Items.EndUpdate;
end;
procedure TCodeToolsDefinesEditor.SetNodeImages(ANode: TTreeNode;
WithSubNodes: boolean);
var ADefineTemplate: TDefineTemplate;
begin
ADefineTemplate:=TDefineTemplate(ANode.Data);
case ADefineTemplate.Action of
da_Define: ANode.ImageIndex:=0;
da_DefineRecurse: ANode.ImageIndex:=1;
da_Undefine: ANode.ImageIndex:=2;
da_UndefineRecurse: ANode.ImageIndex:=3;
da_UndefineAll: ANode.ImageIndex:=4;
da_Block: ANode.ImageIndex:=5;
da_Directory: ANode.ImageIndex:=6;
da_If: ANode.ImageIndex:=7;
da_IfDef: ANode.ImageIndex:=8;
da_IfNDef: ANode.ImageIndex:=9;
da_ElseIf: ANode.ImageIndex:=10;
da_Else: ANode.ImageIndex:=11;
else
ANode.ImageIndex:=-1;
end;
ANode.SelectedIndex:=ANode.ImageIndex;
if ADefineTemplate.IsAutoGenerated then begin
ANode.StateIndex:=13;
end else begin
ANode.StateIndex:=12;
end;
if WithSubNodes then begin
ANode:=ANode.GetFirstChild;
while ANode<>nil do begin
SetNodeImages(ANode,true);
ANode:=ANode.GetNextSibling;
end;
end;
end;
procedure TCodeToolsDefinesEditor.SetTransferMacros( procedure TCodeToolsDefinesEditor.SetTransferMacros(
const AValue: TTransferMacroList); const AValue: TTransferMacroList);
begin begin
@ -1522,7 +1463,7 @@ begin
FLastSelectedNode:=nil; FLastSelectedNode:=nil;
FBoss:=ACodeToolBoss; FBoss:=ACodeToolBoss;
FDefineTree.Assign(ACodeToolBoss.DefineTree); FDefineTree.Assign(ACodeToolBoss.DefineTree);
RebuildDefineTreeView; RebuildDefineTreeView(DefineTreeView,DefineTree.RootTemplate);
ShowSelectedValues; ShowSelectedValues;
end; end;

View File

@ -1,32 +1,32 @@
object CodeToolsDefinesDialog: TCodeToolsDefinesDialog object CodeToolsDefinesDialog: TCodeToolsDefinesDialog
Caption = 'CodeToolsDefinesDialog' Caption = 'CodeToolsDefinesDialog'
ClientHeight = 451 ClientHeight = 450
ClientWidth = 463 ClientWidth = 485
OnClose = CodeToolsDefinesDialogCLOSE OnClose = CodeToolsDefinesDialogCLOSE
OnCreate = CodeToolsDefinesDialogCREATE OnCreate = CodeToolsDefinesDialogCREATE
HorzScrollBar.Page = 464 PixelsPerInch = 112
VertScrollBar.Page = 452 HorzScrollBar.Page = 484
VertScrollBar.Page = 449
Left = 423 Left = 423
Height = 451 Height = 450
Top = 228 Top = 228
Width = 463 Width = 485
object DirectoryGroupbox: TGroupBox object DirectoryGroupbox: TGroupBox
Align = altop Align = alTop
Caption = 'DirectoryGroupbox' Caption = 'DirectoryGroupbox'
ClientHeight = 31 ClientHeight = 31
ClientWidth = 459 ClientWidth = 481
ParentColor = True
ParentCtl3D = False ParentCtl3D = False
TabOrder = 0 TabOrder = 0
OnResize = DirectoryGroupboxRESIZE OnResize = DirectoryGroupboxRESIZE
Height = 48 Height = 48
Width = 463 Width = 485
object DirectoryCombobox: TComboBox object DirectoryCombobox: TComboBox
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
MaxLength = 0 MaxLength = 0
OnChange = DirectoryComboboxCHANGE OnChange = DirectoryComboboxCHANGE
ParentCtl3D = False ParentCtl3D = False
TabOrder = 0 TabOrder = 0
TabStop = True
Text = 'DirectoryCombobox' Text = 'DirectoryCombobox'
Left = 6 Left = 6
Height = 25 Height = 25
@ -34,10 +34,10 @@ object CodeToolsDefinesDialog: TCodeToolsDefinesDialog
Width = 360 Width = 360
end end
object DirectoryBrowseButton: TButton object DirectoryBrowseButton: TButton
BorderSpacing.InnerBorder = 2
Caption = '...' Caption = '...'
TabStop = True
TabOrder = 1
OnClick = DirectoryBrowseButtonCLICK OnClick = DirectoryBrowseButtonCLICK
TabOrder = 1
Left = 375 Left = 375
Height = 26 Height = 26
Top = 1 Top = 1
@ -45,38 +45,39 @@ object CodeToolsDefinesDialog: TCodeToolsDefinesDialog
end end
end end
object ValuesListview: TListView object ValuesListview: TListView
Align = alclient Align = alClient
Columns = <> Columns = <>
ViewStyle = vsreport TabOrder = 1
ViewStyle = vsReport
OnSelectItem = ValuesListviewSELECTITEM OnSelectItem = ValuesListviewSELECTITEM
Height = 272 Height = 271
Top = 48 Top = 48
Width = 463 Width = 280
end end
object ValueGroupbox: TGroupBox object ValueGroupbox: TGroupBox
Align = albottom Align = alBottom
Anchors = [akleft, akbottom] Anchors = [akLeft, akBottom]
Caption = 'Value' Caption = 'Value'
ClientHeight = 85 ClientHeight = 85
ClientWidth = 459 ClientWidth = 481
ParentColor = True
ParentCtl3D = False ParentCtl3D = False
TabOrder = 2 TabOrder = 2
Height = 102 Height = 102
Top = 320 Top = 319
Width = 463 Width = 485
object ValueSynedit: TSynEdit object ValueSynedit: TSynEdit
Align = alclient Align = alBottom
Font.Height = -15 Font.Height = -15
Font.Name = 'courier' Font.Name = 'courier'
Height = 85 Height = 85
Name = 'ValueSynedit' Name = 'ValueSynedit'
ParentColor = False
ParentCtl3D = False ParentCtl3D = False
TabOrder = 0 TabOrder = 0
Width = 459 Width = 481
BookMarkOptions.OnChange = nil BookMarkOptions.Xoffset = -18
Gutter.Visible = False Gutter.Visible = False
Gutter.OnChange = nil Gutter.CodeFoldingWidth = 14
Keystrokes = < Keystrokes = <
item item
Command = 3 Command = 3
@ -401,23 +402,42 @@ object CodeToolsDefinesDialog: TCodeToolsDefinesDialog
Lines.Strings = ( Lines.Strings = (
'ValueSynedit' 'ValueSynedit'
) )
Options = [eoautoindent, eobrackethighlight, eoshowctrlmouselinks, eodragdropediting, eoscrollpasteol, eoshowscrollhint, eosmarttabs, eotabstospaces, eotrimtrailingspaces] Options = [eoAutoIndent, eoDragDropEditing, eoScrollPastEol, eoShowScrollHint, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoBracketHighlight, eoShowCtrlMouseLinks]
ReadOnly = True ReadOnly = True
SelectedColor.OnChange = nil Cursor = crIBeam
Cursor = 65532
Height = 85 Height = 85
Width = 459 Width = 481
end end
end end
object CloseButton: TButton object CloseButton: TButton
Anchors = [akleft, akbottom] Align = alBottom
Align = albottom Anchors = [akLeft, akBottom]
ModalResult = 2 BorderSpacing.InnerBorder = 2
Caption = 'CloseButton' Caption = 'CloseButton'
TabStop = True ModalResult = 2
TabOrder = 3 TabOrder = 3
Height = 29 Height = 29
Top = 422 Top = 421
Width = 463 Width = 485
end
object MainSplitter: TSplitter
Align = alRight
Height = 271
Width = 4
ResizeAnchor = akRight
Cursor = crHSplit
Left = 280
Height = 271
Top = 48
Width = 4
end
object ParsedTemplatesTreeView: TTreeView
Align = alRight
DefaultItemHeight = 14
TabOrder = 4
Left = 285
Height = 271
Top = 48
Width = 200
end end
end end

View File

@ -2,77 +2,83 @@
LazarusResources.Add('TCodeToolsDefinesDialog','FORMDATA',[ LazarusResources.Add('TCodeToolsDefinesDialog','FORMDATA',[
'TPF0'#23'TCodeToolsDefinesDialog'#22'CodeToolsDefinesDialog'#7'Caption'#6#22 'TPF0'#23'TCodeToolsDefinesDialog'#22'CodeToolsDefinesDialog'#7'Caption'#6#22
+'CodeToolsDefinesDialog'#12'ClientHeight'#3#195#1#11'ClientWidth'#3#207#1#7 +'CodeToolsDefinesDialog'#12'ClientHeight'#3#194#1#11'ClientWidth'#3#229#1#7
+'OnClose'#7#27'CodeToolsDefinesDialogCLOSE'#8'OnCreate'#7#28'CodeToolsDefine' +'OnClose'#7#27'CodeToolsDefinesDialogCLOSE'#8'OnCreate'#7#28'CodeToolsDefine'
+'sDialogCREATE'#18'HorzScrollBar.Page'#3#208#1#18'VertScrollBar.Page'#3#196#1 +'sDialogCREATE'#13'PixelsPerInch'#2'p'#18'HorzScrollBar.Page'#3#228#1#18'Ver'
+#4'Left'#3#167#1#6'Height'#3#195#1#3'Top'#3#228#0#5'Width'#3#207#1#0#9'TGrou' +'tScrollBar.Page'#3#193#1#4'Left'#3#167#1#6'Height'#3#194#1#3'Top'#3#228#0#5
+'pBox'#17'DirectoryGroupbox'#5'Align'#7#5'altop'#7'Caption'#6#17'DirectoryGr' +'Width'#3#229#1#0#9'TGroupBox'#17'DirectoryGroupbox'#5'Align'#7#5'alTop'#7'C'
+'oupbox'#12'ClientHeight'#2#31#11'ClientWidth'#3#203#1#11'ParentColor'#9#11 +'aption'#6#17'DirectoryGroupbox'#12'ClientHeight'#2#31#11'ClientWidth'#3#225
+'ParentCtl3D'#8#8'TabOrder'#2#0#8'OnResize'#7#23'DirectoryGroupboxRESIZE'#6 +#1#11'ParentCtl3D'#8#8'TabOrder'#2#0#8'OnResize'#7#23'DirectoryGroupboxRESIZ'
+'Height'#2'0'#5'Width'#3#207#1#0#9'TComboBox'#17'DirectoryCombobox'#9'MaxLen' +'E'#6'Height'#2'0'#5'Width'#3#229#1#0#9'TComboBox'#17'DirectoryCombobox'#16
+'gth'#2#0#8'OnChange'#7#23'DirectoryComboboxCHANGE'#11'ParentCtl3D'#8#8'TabO' +'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9
+'rder'#2#0#7'TabStop'#9#4'Text'#6#17'DirectoryCombobox'#4'Left'#2#6#6'Height' +'MaxLength'#2#0#8'OnChange'#7#23'DirectoryComboboxCHANGE'#11'ParentCtl3D'#8#8
+#2#25#3'Top'#2#1#5'Width'#3'h'#1#0#0#7'TButton'#21'DirectoryBrowseButton'#7 +'TabOrder'#2#0#4'Text'#6#17'DirectoryCombobox'#4'Left'#2#6#6'Height'#2#25#3
+'Caption'#6#3'...'#7'TabStop'#9#8'TabOrder'#2#1#7'OnClick'#7#26'DirectoryBro' +'Top'#2#1#5'Width'#3'h'#1#0#0#7'TButton'#21'DirectoryBrowseButton'#25'Border'
+'wseButtonCLICK'#4'Left'#3'w'#1#6'Height'#2#26#3'Top'#2#1#5'Width'#2#31#0#0#0 +'Spacing.InnerBorder'#2#2#7'Caption'#6#3'...'#7'OnClick'#7#26'DirectoryBrows'
+#9'TListView'#14'ValuesListview'#5'Align'#7#8'alclient'#7'Columns'#14#0#9'Vi' +'eButtonCLICK'#8'TabOrder'#2#1#4'Left'#3'w'#1#6'Height'#2#26#3'Top'#2#1#5'Wi'
+'ewStyle'#7#8'vsreport'#12'OnSelectItem'#7#24'ValuesListviewSELECTITEM'#6'He' +'dth'#2#31#0#0#0#9'TListView'#14'ValuesListview'#5'Align'#7#8'alClient'#7'Co'
+'ight'#3#16#1#3'Top'#2'0'#5'Width'#3#207#1#0#0#9'TGroupBox'#13'ValueGroupbox' +'lumns'#14#0#8'TabOrder'#2#1#9'ViewStyle'#7#8'vsReport'#12'OnSelectItem'#7#24
+#5'Align'#7#8'albottom'#7'Anchors'#11#6'akleft'#8'akbottom'#0#7'Caption'#6#5 +'ValuesListviewSELECTITEM'#6'Height'#3#15#1#3'Top'#2'0'#5'Width'#3#24#1#0#0#9
+'Value'#12'ClientHeight'#2'U'#11'ClientWidth'#3#203#1#11'ParentColor'#9#11'P' +'TGroupBox'#13'ValueGroupbox'#5'Align'#7#8'alBottom'#7'Anchors'#11#6'akLeft'
+'arentCtl3D'#8#8'TabOrder'#2#2#6'Height'#2'f'#3'Top'#3'@'#1#5'Width'#3#207#1 +#8'akBottom'#0#7'Caption'#6#5'Value'#12'ClientHeight'#2'U'#11'ClientWidth'#3
+#0#8'TSynEdit'#12'ValueSynedit'#5'Align'#7#8'alclient'#11'Font.Height'#2#241 +#225#1#11'ParentCtl3D'#8#8'TabOrder'#2#2#6'Height'#2'f'#3'Top'#3'?'#1#5'Widt'
+#9'Font.Name'#6#7'courier'#6'Height'#2'U'#4'Name'#6#12'ValueSynedit'#11'Pare' +'h'#3#229#1#0#8'TSynEdit'#12'ValueSynedit'#5'Align'#7#8'alBottom'#11'Font.He'
+'ntCtl3D'#8#8'TabOrder'#2#0#5'Width'#3#203#1#24'BookMarkOptions.OnChange'#13 +'ight'#2#241#9'Font.Name'#6#7'courier'#6'Height'#2'U'#4'Name'#6#12'ValueSyne'
+#14'Gutter.Visible'#8#15'Gutter.OnChange'#13#10'Keystrokes'#14#1#7'Command'#2 +'dit'#11'ParentColor'#8#11'ParentCtl3D'#8#8'TabOrder'#2#0#5'Width'#3#225#1#23
+#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3 +'BookMarkOptions.Xoffset'#2#238#14'Gutter.Visible'#8#23'Gutter.CodeFoldingWi'
+#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2 +'dth'#2#14#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'
+'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command' +#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Comma'
+#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2 +'nd'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Comman'
+#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2 +'d'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Comm'
+#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6 +'and'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Comm'
+#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2 +'and'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Comm'
+#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2 +'and'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Co'
+#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2 +'mmand'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'C'
+#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13 +'ommand'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3'"@'#0#1#7
+#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8 +'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2'!'#0#1#7'C'
+'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8 +'ommand'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8'ShortCut'#3'!@'#0#1#7
+'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8 +'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8'ShortCut'#2'$'#0#1#7'C'
+'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8 +'ommand'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8'ShortCut'#3'$@'#0#1#7
+'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0 +'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8'ShortCut'#2'#'#0#1#7'C'
+#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3 +'ommand'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8'ShortCut'#3'#@'#0#1#7
+'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman' +'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0#8'ShortCut'#2'-'#0#1
+'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co' +#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'- '
+'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@' +#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3
+#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'Short' +'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Command'#3#245#1#8'ShortCu'
+'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3 +'t'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8
+#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm' +'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'C'
+'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7 +'ommand'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3#199#0#8'ShortCut'#3'A@'#0
+'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@' +#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Command'#3'b'#2#8'ShortCut'#3
+#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3 +'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7'Command'#3#254#1#8'Short'
+'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortC' +'Cut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'#0#1#7'Command'#3'c'#2#8
+'ut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8 +'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'V@'#0#1#7'Command'#3'['
+'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-' +#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortCut'#3'Y@'#0#1#7'Command'
+#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3 +#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Com'
+'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Comman' +'mand'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'#1#8'ShortCut'#3'0@'#0#1#7
+'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C' +'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3'/'#1#8'ShortCut'#3'2@'#0
+'ommand'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1 +#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1#8'ShortCut'#3'4'
+#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@' +'@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3'3'#1#8'ShortCut'
+#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3 +#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1#7'Command'#3'5'#1#8'Short'
+'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCu' +'Cut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'#0#1#7'Command'#3'_'#1#8
+'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh' +'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1#7'Command'#3'a'
+'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1 +#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'#0#1#7'Command'#3
+#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3 +'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Comman'
+'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma' +'d'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'C'
+'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7 +'ommand'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3'h'#1#8'ShortCut'#3'9`'#0#1
,'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1 ,#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C'
+#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#13'Lines.Strings'#1#6#12'ValueSyne' +'`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCu'
+'dit'#0#7'Options'#11#12'eoautoindent'#18'eobrackethighlight'#20'eoshowctrlm' +'t'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'Sh'
+'ouselinks'#17'eodragdropediting'#15'eoscrollpasteol'#16'eoshowscrollhint'#11 +'ortCut'#3'B`'#0#0#13'Lines.Strings'#1#6#12'ValueSynedit'#0#7'Options'#11#12
+'eosmarttabs'#14'eotabstospaces'#20'eotrimtrailingspaces'#0#8'ReadOnly'#9#22 +'eoAutoIndent'#17'eoDragDropEditing'#15'eoScrollPastEol'#16'eoShowScrollHint'
+'SelectedColor.OnChange'#13#6'Cursor'#4#252#255#0#0#6'Height'#2'U'#5'Width'#3 +#11'eoSmartTabs'#14'eoTabsToSpaces'#20'eoTrimTrailingSpaces'#18'eoBracketHig'
+#203#1#0#0#0#7'TButton'#11'CloseButton'#7'Anchors'#11#6'akleft'#8'akbottom'#0 +'hlight'#20'eoShowCtrlMouseLinks'#0#8'ReadOnly'#9#6'Cursor'#7#7'crIBeam'#6'H'
+#5'Align'#7#8'albottom'#11'ModalResult'#2#2#7'Caption'#6#11'CloseButton'#7'T' +'eight'#2'U'#5'Width'#3#225#1#0#0#0#7'TButton'#11'CloseButton'#5'Align'#7#8
+'abStop'#9#8'TabOrder'#2#3#6'Height'#2#29#3'Top'#3#166#1#5'Width'#3#207#1#0#0 +'alBottom'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorde'
+#0 +'r'#2#2#7'Caption'#6#11'CloseButton'#11'ModalResult'#2#2#8'TabOrder'#2#3#6'H'
+'eight'#2#29#3'Top'#3#165#1#5'Width'#3#229#1#0#0#9'TSplitter'#12'MainSplitte'
+'r'#5'Align'#7#7'alRight'#6'Height'#3#15#1#5'Width'#2#4#12'ResizeAnchor'#7#7
+'akRight'#6'Cursor'#7#8'crHSplit'#4'Left'#3#24#1#6'Height'#3#15#1#3'Top'#2'0'
+#5'Width'#2#4#0#0#9'TTreeView'#23'ParsedTemplatesTreeView'#5'Align'#7#7'alRi'
+'ght'#17'DefaultItemHeight'#2#14#8'TabOrder'#2#4#4'Left'#3#29#1#6'Height'#3
+#15#1#3'Top'#2'0'#5'Width'#3#200#0#0#0#0
]); ]);

View File

@ -5,19 +5,25 @@ unit CodeToolsDefPreview;
interface interface
uses uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Classes, SysUtils, Math, LResources, Forms, Controls, Graphics, Dialogs,
Buttons, ComCtrls, SynEdit, DefineTemplates, ExprEval, LazarusIDEStrConsts, StdCtrls, Buttons, ComCtrls, ExtCtrls, FileUtil,
FileUtil, InputHistory; SynEdit, DefineTemplates, ExprEval,
LazarusIDEStrConsts, InputHistory, IDEWindowIntf, CodeToolsOptions;
type type
{ TCodeToolsDefinesDialog }
TCodeToolsDefinesDialog = class(TForm) TCodeToolsDefinesDialog = class(TForm)
CloseButton: TBUTTON; CloseButton: TButton;
DirectoryBrowseButton: TBUTTON; DirectoryBrowseButton: TButton;
DirectoryCombobox: TCOMBOBOX; DirectoryCombobox: TComboBox;
DirectoryGroupbox: TGROUPBOX; DirectoryGroupbox: TGroupBox;
ValueSynedit: TSYNEDIT; MainSplitter: TSplitter;
ValueGroupbox: TGROUPBOX; ParsedTemplatesTreeView: TTreeView;
ValuesListview: TLISTVIEW; ValueSynedit: TSynEdit;
ValueGroupbox: TGroupBox;
ValuesListview: TListView;
procedure CodeToolsDefinesDialogCLOSE(Sender: TObject; procedure CodeToolsDefinesDialogCLOSE(Sender: TObject;
var CloseAction: TCloseAction); var CloseAction: TCloseAction);
procedure CodeToolsDefinesDialogCREATE(Sender: TObject); procedure CodeToolsDefinesDialogCREATE(Sender: TObject);
@ -32,6 +38,7 @@ type
procedure UpdateValues; procedure UpdateValues;
procedure UpdateValue; procedure UpdateValue;
procedure ClearValues; procedure ClearValues;
procedure FillTemplateTree;
procedure SetComboBox(AComboBox: TComboBox; const NewText: string); procedure SetComboBox(AComboBox: TComboBox; const NewText: string);
public public
property DefineTree: TDefineTree read FDefineTree write SetDefineTree; property DefineTree: TDefineTree read FDefineTree write SetDefineTree;
@ -40,6 +47,13 @@ type
function ShowCodeToolsDefinesValuesDialog(ADefineTree: TDefineTree; function ShowCodeToolsDefinesValuesDialog(ADefineTree: TDefineTree;
const InitialDirectory: string): TModalresult; const InitialDirectory: string): TModalresult;
procedure RebuildDefineTreeView(ATreeView: TTreeView;
RootTemplate: TDefineTemplate);
procedure AddDefineNodes(ATreeView: TTreeView; ANode: TDefineTemplate;
AParent: TTreeNode; WithChilds,WithNextSiblings: boolean);
procedure SetNodeImages(ANode: TTreeNode; WithSubNodes: boolean);
implementation implementation
@ -48,7 +62,6 @@ function ShowCodeToolsDefinesValuesDialog(ADefineTree: TDefineTree;
var var
CodeToolsDefinesDialog: TCodeToolsDefinesDialog; CodeToolsDefinesDialog: TCodeToolsDefinesDialog;
begin begin
//writeln('ShowCodeToolsDefinesValuesDialog ',InitialDirectory);
CodeToolsDefinesDialog:=TCodeToolsDefinesDialog.Create(nil); CodeToolsDefinesDialog:=TCodeToolsDefinesDialog.Create(nil);
if InitialDirectory<>'' then if InitialDirectory<>'' then
CodeToolsDefinesDialog.SetComboBox(CodeToolsDefinesDialog.DirectoryCombobox, CodeToolsDefinesDialog.SetComboBox(CodeToolsDefinesDialog.DirectoryCombobox,
@ -58,6 +71,69 @@ begin
CodeToolsDefinesDialog.Free; CodeToolsDefinesDialog.Free;
end; end;
procedure RebuildDefineTreeView(ATreeView: TTreeView;
RootTemplate: TDefineTemplate);
begin
ATreeView.Items.BeginUpdate;
ATreeView.Items.Clear;
AddDefineNodes(ATreeView,RootTemplate,nil,true,true);
ATreeView.Items.EndUpdate;
end;
procedure AddDefineNodes(
ATreeView: TTreeView; ANode: TDefineTemplate; AParent: TTreeNode;
WithChilds, WithNextSiblings: boolean);
var NewTreeNode: TTreeNode;
begin
if ANode=nil then exit;
ATreeView.Items.BeginUpdate;
NewTreeNode:=ATreeView.Items.AddChildObject(AParent,ANode.Name,ANode);
SetNodeImages(NewTreeNode,false);
if WithChilds and (ANode.FirstChild<>nil) then begin
AddDefineNodes(ATreeView,ANode.FirstChild,NewTreeNode,true,true);
end;
if WithNextSiblings and (ANode.Next<>nil) then begin
AddDefineNodes(ATreeView,ANode.Next,AParent,WithChilds,true);
end;
ATreeView.Items.EndUpdate;
end;
procedure SetNodeImages(ANode: TTreeNode;
WithSubNodes: boolean);
var ADefineTemplate: TDefineTemplate;
begin
ADefineTemplate:=TDefineTemplate(ANode.Data);
case ADefineTemplate.Action of
da_Define: ANode.ImageIndex:=0;
da_DefineRecurse: ANode.ImageIndex:=1;
da_Undefine: ANode.ImageIndex:=2;
da_UndefineRecurse: ANode.ImageIndex:=3;
da_UndefineAll: ANode.ImageIndex:=4;
da_Block: ANode.ImageIndex:=5;
da_Directory: ANode.ImageIndex:=6;
da_If: ANode.ImageIndex:=7;
da_IfDef: ANode.ImageIndex:=8;
da_IfNDef: ANode.ImageIndex:=9;
da_ElseIf: ANode.ImageIndex:=10;
da_Else: ANode.ImageIndex:=11;
else
ANode.ImageIndex:=-1;
end;
ANode.SelectedIndex:=ANode.ImageIndex;
if ADefineTemplate.IsAutoGenerated then begin
ANode.StateIndex:=13;
end else begin
ANode.StateIndex:=12;
end;
if WithSubNodes then begin
ANode:=ANode.GetFirstChild;
while ANode<>nil do begin
SetNodeImages(ANode,true);
ANode:=ANode.GetNextSibling;
end;
end;
end;
{ TCodeToolsDefinesDialog } { TCodeToolsDefinesDialog }
procedure TCodeToolsDefinesDialog.DirectoryGroupboxRESIZE(Sender: TObject); procedure TCodeToolsDefinesDialog.DirectoryGroupboxRESIZE(Sender: TObject);
@ -82,6 +158,7 @@ begin
if FDefineTree=AValue then exit; if FDefineTree=AValue then exit;
FDefineTree:=AValue; FDefineTree:=AValue;
UpdateValues; UpdateValues;
FillTemplateTree;
end; end;
procedure TCodeToolsDefinesDialog.UpdateValues; procedure TCodeToolsDefinesDialog.UpdateValues;
@ -147,6 +224,11 @@ begin
ValuesListview.Items.Clear; ValuesListview.Items.Clear;
end; end;
procedure TCodeToolsDefinesDialog.FillTemplateTree;
begin
RebuildDefineTreeView(ParsedTemplatesTreeView,DefineTree.RootTemplate);
end;
procedure TCodeToolsDefinesDialog.SetComboBox(AComboBox: TComboBox; procedure TCodeToolsDefinesDialog.SetComboBox(AComboBox: TComboBox;
const NewText: string); const NewText: string);
var var
@ -165,6 +247,8 @@ procedure TCodeToolsDefinesDialog.CodeToolsDefinesDialogCREATE(Sender: TObject);
var var
ListColumn: TListColumn; ListColumn: TListColumn;
begin begin
IDEDialogLayoutList.ApplyLayout(Self,485,450);
Caption:=lisCTDefCodeToolsDirectoryValues; Caption:=lisCTDefCodeToolsDirectoryValues;
ListColumn:=ValuesListview.Columns.Add; ListColumn:=ValuesListview.Columns.Add;
@ -182,6 +266,9 @@ begin
DirectoryCombobox.ItemIndex:=0 DirectoryCombobox.ItemIndex:=0
else else
DirectoryCombobox.Text:=''; DirectoryCombobox.Text:='';
MainSplitter.SetSplitterPosition(
Max(20,Min(ClientWidth-100,CodeToolsOpts.DefinesPreviewMainSplitterPos)));
end; end;
procedure TCodeToolsDefinesDialog.CodeToolsDefinesDialogCLOSE(Sender: TObject; procedure TCodeToolsDefinesDialog.CodeToolsDefinesDialogCLOSE(Sender: TObject;
@ -189,6 +276,8 @@ procedure TCodeToolsDefinesDialog.CodeToolsDefinesDialogCLOSE(Sender: TObject;
begin begin
InputHistories.HistoryLists.GetList(hlCodeToolsDirectories,true).Assign( InputHistories.HistoryLists.GetList(hlCodeToolsDirectories,true).Assign(
DirectoryCombobox.Items); DirectoryCombobox.Items);
CodeToolsOpts.DefinesPreviewMainSplitterPos:=MainSplitter.Left;
CodeToolsOpts.Save;
end; end;
procedure TCodeToolsDefinesDialog.DirectoryBrowseButtonCLICK(Sender: TObject); procedure TCodeToolsDefinesDialog.DirectoryBrowseButtonCLICK(Sender: TObject);

View File

@ -59,6 +59,7 @@ type
// Define Templates // Define Templates
FGlobalDefineTemplates: TDefineTemplate; FGlobalDefineTemplates: TDefineTemplate;
FDefinesEditMainSplitterTop: integer; FDefinesEditMainSplitterTop: integer;
FDefinesPreviewMainSplitterPos: integer;
// CodeCreation // CodeCreation
FAddInheritedCodeToOverrideMethod: boolean; FAddInheritedCodeToOverrideMethod: boolean;
@ -110,7 +111,9 @@ type
property GlobalDefineTemplates: TDefineTemplate read FGlobalDefineTemplates; property GlobalDefineTemplates: TDefineTemplate read FGlobalDefineTemplates;
property DefinesEditMainSplitterTop: integer read FDefinesEditMainSplitterTop property DefinesEditMainSplitterTop: integer read FDefinesEditMainSplitterTop
write FDefinesEditMainSplitterTop; write FDefinesEditMainSplitterTop;
property DefinesPreviewMainSplitterPos: integer
read FDefinesPreviewMainSplitterPos write FDefinesPreviewMainSplitterPos;
// CodeCreation // CodeCreation
property CompleteProperties: boolean property CompleteProperties: boolean
read FCompleteProperties write FCompleteProperties; read FCompleteProperties write FCompleteProperties;
@ -416,6 +419,8 @@ begin
LoadGlobalDefineTemplates; LoadGlobalDefineTemplates;
FDefinesEditMainSplitterTop:=XMLConfig.GetValue( FDefinesEditMainSplitterTop:=XMLConfig.GetValue(
'CodeToolsOptions/DefinesEditMainSplitter/Top',100); 'CodeToolsOptions/DefinesEditMainSplitter/Top',100);
FDefinesPreviewMainSplitterPos:=XMLConfig.GetValue(
'CodeToolsOptions/DefinesPreviewMainSplitter/Position',100);
// CodeCreation // CodeCreation
FAddInheritedCodeToOverrideMethod:=XMLConfig.GetValue( FAddInheritedCodeToOverrideMethod:=XMLConfig.GetValue(
@ -504,6 +509,8 @@ begin
SaveGlobalDefineTemplates; SaveGlobalDefineTemplates;
XMLConfig.SetDeleteValue('CodeToolsOptions/DefinesEditMainSplitter/Top', XMLConfig.SetDeleteValue('CodeToolsOptions/DefinesEditMainSplitter/Top',
FDefinesEditMainSplitterTop,100); FDefinesEditMainSplitterTop,100);
XMLConfig.SetDeleteValue('CodeToolsOptions/DefinesPreviewMainSplitter/Position',
FDefinesPreviewMainSplitterPos,280);
// CodeCreation // CodeCreation
XMLConfig.SetDeleteValue( XMLConfig.SetDeleteValue(
@ -599,6 +606,7 @@ begin
if FGlobalDefineTemplates<>nil then if FGlobalDefineTemplates<>nil then
FGlobalDefineTemplates.SetDefineOwner(Self,true); FGlobalDefineTemplates.SetDefineOwner(Self,true);
FDefinesEditMainSplitterTop:=CodeToolsOpts.DefinesEditMainSplitterTop; FDefinesEditMainSplitterTop:=CodeToolsOpts.DefinesEditMainSplitterTop;
FDefinesPreviewMainSplitterPos:=CodeToolsOpts.DefinesPreviewMainSplitterPos;
// CodeCreation // CodeCreation
FLineLength:=CodeToolsOpts.FLineLength; FLineLength:=CodeToolsOpts.FLineLength;
@ -636,6 +644,7 @@ begin
// define templates // define templates
ClearGlobalDefineTemplates; ClearGlobalDefineTemplates;
FDefinesEditMainSplitterTop:=100; FDefinesEditMainSplitterTop:=100;
FDefinesPreviewMainSplitterPos:=280;
// CodeCreation // CodeCreation
FAddInheritedCodeToOverrideMethod:=true; FAddInheritedCodeToOverrideMethod:=true;
@ -684,6 +693,7 @@ begin
and (FGlobalDefineTemplates.IsEqual( and (FGlobalDefineTemplates.IsEqual(
CodeToolsOpts.FGlobalDefineTemplates,true,true)) CodeToolsOpts.FGlobalDefineTemplates,true,true))
and (FDefinesEditMainSplitterTop=CodeToolsOpts.fDefinesEditMainSplitterTop) and (FDefinesEditMainSplitterTop=CodeToolsOpts.fDefinesEditMainSplitterTop)
and (FDefinesPreviewMainSplitterPos=CodeToolsOpts.FDefinesPreviewMainSplitterPos)
// CodeCreation // CodeCreation
and (FLineLength=CodeToolsOpts.FLineLength) and (FLineLength=CodeToolsOpts.FLineLength)