Document wrapped parameters handling : generation of an easy access interface

that expose simpler parameters. 
see ws_helper -y commute

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@503 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2008-07-03 16:15:03 +00:00
parent 9dac41bef0
commit e6599ad9f8
18 changed files with 1014 additions and 440 deletions

View File

@ -1,20 +1,20 @@
object formImport: TformImport object formImport: TformImport
Left = 669 Left = 574
Height = 538 Height = 553
Top = 142 Top = 132
Width = 526 Width = 526
HorzScrollBar.Page = 525 HorzScrollBar.Page = 525
VertScrollBar.Page = 537 VertScrollBar.Page = 552
ActiveControl = Button1 ActiveControl = Button1
BorderStyle = bsSizeToolWin BorderStyle = bsSizeToolWin
Caption = 'WSDL Importer' Caption = 'WSDL Importer'
ClientHeight = 538 ClientHeight = 553
ClientWidth = 526 ClientWidth = 526
object Panel2: TPanel object Panel2: TPanel
Height = 490 Height = 505
Width = 526 Width = 526
Align = alClient Align = alClient
ClientHeight = 490 ClientHeight = 505
ClientWidth = 526 ClientWidth = 526
TabOrder = 1 TabOrder = 1
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
@ -46,12 +46,12 @@ object formImport: TformImport
Left = 9 Left = 9
Height = 23 Height = 23
Top = 31 Top = 31
Width = 400 Width = 380
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
TabOrder = 0 TabOrder = 0
end end
object Button2: TButton object Button2: TButton
Left = 427 Left = 407
Height = 25 Height = 25
Top = 31 Top = 31
Width = 40 Width = 40
@ -64,12 +64,12 @@ object formImport: TformImport
Left = 9 Left = 9
Height = 23 Height = 23
Top = 88 Top = 88
Width = 400 Width = 380
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
TabOrder = 2 TabOrder = 2
end end
object Button3: TButton object Button3: TButton
Left = 427 Left = 407
Height = 25 Height = 25
Top = 88 Top = 88
Width = 40 Width = 40
@ -89,16 +89,16 @@ object formImport: TformImport
end end
object GroupBox2: TGroupBox object GroupBox2: TGroupBox
Left = 8 Left = 8
Height = 162 Height = 161
Top = 320 Top = 336
Width = 506 Width = 506
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
Caption = ' Messages ' Caption = ' Messages '
ClientHeight = 144 ClientHeight = 143
ClientWidth = 502 ClientWidth = 502
TabOrder = 2 TabOrder = 2
object mmoLog: TMemo object mmoLog: TMemo
Height = 144 Height = 143
Width = 502 Width = 502
Align = alClient Align = alClient
ReadOnly = True ReadOnly = True
@ -108,12 +108,12 @@ object formImport: TformImport
end end
object GroupBox3: TGroupBox object GroupBox3: TGroupBox
Left = 8 Left = 8
Height = 120 Height = 136
Top = 184 Top = 184
Width = 506 Width = 506
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
Caption = ' Options ' Caption = ' Options '
ClientHeight = 102 ClientHeight = 118
ClientWidth = 502 ClientWidth = 502
TabOrder = 1 TabOrder = 1
object edtOptionIntf: TCheckBox object edtOptionIntf: TCheckBox
@ -162,11 +162,20 @@ object formImport: TformImport
OnClick = edtOptionIntfALLClick OnClick = edtOptionIntfALLClick
TabOrder = 1 TabOrder = 1
end end
object edtOptionWrappedParams: TCheckBox
Left = 9
Height = 19
Top = 96
Width = 290
Anchors = [akLeft, akBottom]
Caption = 'Generate easy access interface for wrapped parameters'
TabOrder = 5
end
end end
end end
object Panel1: TPanel object Panel1: TPanel
Height = 48 Height = 48
Top = 490 Top = 505
Width = 526 Width = 526
Align = alBottom Align = alBottom
ClientHeight = 48 ClientHeight = 48

View File

@ -1,65 +1,68 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus } { Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TformImport','FORMDATA',[ LazarusResources.Add('TformImport','FORMDATA',[
'TPF0'#11'TformImport'#10'formImport'#4'Left'#3#157#2#6'Height'#3#26#2#3'Top' 'TPF0'#11'TformImport'#10'formImport'#4'Left'#3'>'#2#6'Height'#3')'#2#3'Top'#3
+#3#142#0#5'Width'#3#14#2#18'HorzScrollBar.Page'#3#13#2#18'VertScrollBar.Page' +#132#0#5'Width'#3#14#2#18'HorzScrollBar.Page'#3#13#2#18'VertScrollBar.Page'#3
+#3#25#2#13'ActiveControl'#7#7'Button1'#11'BorderStyle'#7#13'bsSizeToolWin'#7 +'('#2#13'ActiveControl'#7#7'Button1'#11'BorderStyle'#7#13'bsSizeToolWin'#7'C'
+'Caption'#6#13'WSDL Importer'#12'ClientHeight'#3#26#2#11'ClientWidth'#3#14#2 +'aption'#6#13'WSDL Importer'#12'ClientHeight'#3')'#2#11'ClientWidth'#3#14#2#0
+#0#6'TPanel'#6'Panel2'#6'Height'#3#234#1#5'Width'#3#14#2#5'Align'#7#8'alClie' +#6'TPanel'#6'Panel2'#6'Height'#3#249#1#5'Width'#3#14#2#5'Align'#7#8'alClient'
+'nt'#12'ClientHeight'#3#234#1#11'ClientWidth'#3#14#2#8'TabOrder'#2#1#0#9'TGr' +#12'ClientHeight'#3#249#1#11'ClientWidth'#3#14#2#8'TabOrder'#2#1#0#9'TGroupB'
+'oupBox'#9'GroupBox1'#4'Left'#2#8#6'Height'#3#168#0#3'Top'#2#8#5'Width'#3#250 +'ox'#9'GroupBox1'#4'Left'#2#8#6'Height'#3#168#0#3'Top'#2#8#5'Width'#3#250#1#7
+#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'ClientHeight'#3#150#0#11 +'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#12'ClientHeight'#3#150#0#11'Cli'
+'ClientWidth'#3#246#1#8'TabOrder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'He' +'entWidth'#3#246#1#8'TabOrder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Heigh'
+'ight'#2#14#3'Top'#2#4#5'Width'#3#186#0#7'Caption'#6'&Web Services Descripti' +'t'#2#14#3'Top'#2#4#5'Width'#3#186#0#7'Caption'#6'&Web Services Description '
+'on File ( WSDL )'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#9#6'H' +'File ( WSDL )'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#9#6'Heig'
+'eight'#2#14#3'Top'#2'E'#5'Width'#2'Q'#7'Caption'#6#16'Output directory'#11 +'ht'#2#14#3'Top'#2'E'#5'Width'#2'Q'#7'Caption'#6#16'Output directory'#11'Par'
+'ParentColor'#8#0#0#5'TEdit'#12'edtInputFile'#4'Left'#2#9#6'Height'#2#23#3'T' +'entColor'#8#0#0#5'TEdit'#12'edtInputFile'#4'Left'#2#9#6'Height'#2#23#3'Top'
+'op'#2#31#5'Width'#3#144#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'T' +#2#31#5'Width'#3'|'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrd'
+'abOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#171#1#6'Height'#2#25#3'Top' +'er'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#151#1#6'Height'#2#25#3'Top'#2#31
+#2#31#5'Width'#2'('#6'Action'#7#11'actOpenFile'#7'Anchors'#11#5'akTop'#7'akR' +#5'Width'#2'('#6'Action'#7#11'actOpenFile'#7'Anchors'#11#5'akTop'#7'akRight'
+'ight'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#1#0#0#5'TEdit'#12'e' +#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#1#0#0#5'TEdit'#12'edtOutp'
+'dtOutputDir'#4'Left'#2#9#6'Height'#2#23#3'Top'#2'X'#5'Width'#3#144#1#7'Anch' +'utDir'#4'Left'#2#9#6'Height'#2#23#3'Top'#2'X'#5'Width'#3'|'#1#7'Anchors'#11
+'ors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#2#0#0#7'TButton'#7'Bu' +#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#2#0#0#7'TButton'#7'Button3'#4
+'tton3'#4'Left'#3#171#1#6'Height'#2#25#3'Top'#2'X'#5'Width'#2'('#6'Action'#7 +'Left'#3#151#1#6'Height'#2#25#3'Top'#2'X'#5'Width'#2'('#6'Action'#7#10'actOp'
+#10'actOpenDir'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBo' +'enDir'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4
+'rder'#2#4#8'TabOrder'#2#3#0#0#9'TCheckBox'#15'edtAddToProject'#4'Left'#2#9#6 +#8'TabOrder'#2#3#0#0#9'TCheckBox'#15'edtAddToProject'#4'Left'#2#9#6'Height'#2
+'Height'#2#19#3'Top'#3#128#0#5'Width'#3#182#0#7'Caption'#6'"Add the generate' +#19#3'Top'#3#128#0#5'Width'#3#182#0#7'Caption'#6'"Add the generated files to'
+'d files to project'#8'TabOrder'#2#4#0#0#0#9'TGroupBox'#9'GroupBox2'#4'Left' +' project'#8'TabOrder'#2#4#0#0#0#9'TGroupBox'#9'GroupBox2'#4'Left'#2#8#6'Hei'
+#2#8#6'Height'#3#162#0#3'Top'#3'@'#1#5'Width'#3#250#1#7'Anchors'#11#5'akTop' +'ght'#3#161#0#3'Top'#3'P'#1#5'Width'#3#250#1#7'Anchors'#11#5'akTop'#6'akLeft'
+#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6#12' Messages '#12'ClientH' +#7'akRight'#8'akBottom'#0#7'Caption'#6#12' Messages '#12'ClientHeight'#3
+'eight'#3#144#0#11'ClientWidth'#3#246#1#8'TabOrder'#2#2#0#5'TMemo'#6'mmoLog' +#143#0#11'ClientWidth'#3#246#1#8'TabOrder'#2#2#0#5'TMemo'#6'mmoLog'#6'Height'
+#6'Height'#3#144#0#5'Width'#3#246#1#5'Align'#7#8'alClient'#8'ReadOnly'#9#10 +#3#143#0#5'Width'#3#246#1#5'Align'#7#8'alClient'#8'ReadOnly'#9#10'ScrollBars'
+'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#0#0#0#0#9'TGroupBox'#9'GroupBox3'#4'L' +#7#6'ssBoth'#8'TabOrder'#2#0#0#0#0#9'TGroupBox'#9'GroupBox3'#4'Left'#2#8#6'H'
+'eft'#2#8#6'Height'#2'x'#3'Top'#3#184#0#5'Width'#3#250#1#7'Anchors'#11#5'akT' +'eight'#3#136#0#3'Top'#3#184#0#5'Width'#3#250#1#7'Anchors'#11#5'akTop'#6'akL'
+'op'#6'akLeft'#7'akRight'#0#7'Caption'#6#11' Options '#12'ClientHeight'#2 +'eft'#7'akRight'#0#7'Caption'#6#11' Options '#12'ClientHeight'#2'v'#11'Cli'
+'f'#11'ClientWidth'#3#246#1#8'TabOrder'#2#1#0#9'TCheckBox'#13'edtOptionIntf' +'entWidth'#3#246#1#8'TabOrder'#2#1#0#9'TCheckBox'#13'edtOptionIntf'#4'Left'#2
+#4'Left'#2#9#6'Height'#2#19#3'Top'#2#8#5'Width'#2'T'#7'Caption'#6#14'Interfa' +#9#6'Height'#2#19#3'Top'#2#8#5'Width'#2'T'#7'Caption'#6#14'Interface file'#7
+'ce file'#7'Checked'#9#7'OnClick'#7#18'edtOptionIntfClick'#5'State'#7#9'cbCh' +'Checked'#9#7'OnClick'#7#18'edtOptionIntfClick'#5'State'#7#9'cbChecked'#8'Ta'
+'ecked'#8'TabOrder'#2#0#0#0#9'TCheckBox'#14'edtOptionProxy'#4'Left'#2#9#6'He' +'bOrder'#2#0#0#0#9'TCheckBox'#14'edtOptionProxy'#4'Left'#2#9#6'Height'#2#19#3
+'ight'#2#19#3'Top'#2'8'#5'Width'#2'D'#7'Caption'#6#10'Proxy file'#7'Checked' +'Top'#2'8'#5'Width'#2'D'#7'Caption'#6#10'Proxy file'#7'Checked'#9#5'State'#7
+#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#2#0#0#9'TCheckBox'#15'edtOptionBind' +#9'cbChecked'#8'TabOrder'#2#2#0#0#9'TCheckBox'#15'edtOptionBinder'#4'Left'#3
+'er'#4'Left'#3'&'#1#6'Height'#2#19#3'Top'#2#8#5'Width'#2'o'#7'Caption'#6#19 +'&'#1#6'Height'#2#19#3'Top'#2#8#5'Width'#2'o'#7'Caption'#6#19'Service Binder'
+'Service Binder file'#8'TabOrder'#2#3#0#0#9'TCheckBox'#12'edtOptionImp'#4'Le' +' file'#8'TabOrder'#2#3#0#0#9'TCheckBox'#12'edtOptionImp'#4'Left'#3'&'#1#6'H'
+'ft'#3'&'#1#6'Height'#2#19#3'Top'#2'8'#5'Width'#3#158#0#7'Caption'#6#28'Impl' +'eight'#2#19#3'Top'#2'8'#5'Width'#3#158#0#7'Caption'#6#28'Implementation Ske'
+'ementation Skeleton file'#8'TabOrder'#2#4#0#0#9'TCheckBox'#16'edtOptionIntf' +'leton file'#8'TabOrder'#2#4#0#0#9'TCheckBox'#16'edtOptionIntfALL'#4'Left'#2
+'ALL'#4'Left'#2#30#6'Height'#2#19#3'Top'#2' '#5'Width'#2'^'#7'Caption'#6#15 +#30#6'Height'#2#19#3'Top'#2' '#5'Width'#2'^'#7'Caption'#6#15'Parse all types'
+'Parse all types'#7'OnClick'#7#21'edtOptionIntfALLClick'#8'TabOrder'#2#1#0#0 +#7'OnClick'#7#21'edtOptionIntfALLClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#22
+#0#0#6'TPanel'#6'Panel1'#6'Height'#2'0'#3'Top'#3#234#1#5'Width'#3#14#2#5'Ali' +'edtOptionWrappedParams'#4'Left'#2#9#6'Height'#2#19#3'Top'#2'`'#5'Width'#3'"'
+'gn'#7#8'alBottom'#12'ClientHeight'#2'0'#11'ClientWidth'#3#14#2#8'TabOrder'#2 +#1#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6'5Generate easy access '
+#0#0#7'TButton'#7'Button1'#4'Left'#3'_'#1#6'Height'#2#25#3'Top'#2#8#5'Width' +'interface for wrapped parameters'#8'TabOrder'#2#5#0#0#0#0#6'TPanel'#6'Panel'
+#2'K'#6'Action'#7#5'actOK'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpac' +'1'#6'Height'#2'0'#3'Top'#3#249#1#5'Width'#3#14#2#5'Align'#7#8'alBottom'#12
+'ing.InnerBorder'#2#4#7'Default'#9#8'TabOrder'#2#0#0#0#7'TButton'#7'Button4' +'ClientHeight'#2'0'#11'ClientWidth'#3#14#2#8'TabOrder'#2#0#0#7'TButton'#7'Bu'
+#4'Left'#3#183#1#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#7'Anchors'#11#5'akT' +'tton1'#4'Left'#3'_'#1#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#6'Action'#7#5
+'op'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Caption'#6 +'actOK'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4
+#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#1#0#0#0#11'TActionList'#2'AL'#4 +#7'Default'#9#8'TabOrder'#2#0#0#0#7'TButton'#7'Button4'#4'Left'#3#183#1#6'He'
+'left'#2'h'#3'top'#3'H'#1#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'Disabl' +'ight'#2#25#3'Top'#2#8#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#25
+'eIfNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOKUpdat' +'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Caption'#6#6'Cancel'#11'ModalR'
+'e'#0#0#7'TAction'#11'actOpenFile'#7'Caption'#6#3'...'#18'DisableIfNoHandler' +'esult'#2#2#8'TabOrder'#2#1#0#0#0#11'TActionList'#2'AL'#4'left'#2'h'#3'top'#3
+#9#9'OnExecute'#7#18'actOpenFileExecute'#0#0#7'TAction'#10'actOpenDir'#7'Cap' +'H'#1#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'DisableIfNoHandler'#9#9'On'
+'tion'#6#3'...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17'actOpenDirExecute' +'Execute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOKUpdate'#0#0#7'TAction'#11
+#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Fil' +'actOpenFile'#7'Caption'#6#3'...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18
+'ter'#6#28'WSDL Files ( *.wsdl )|*.wsdl'#11'FilterIndex'#2#0#7'Options'#11#15 +'actOpenFileExecute'#0#0#7'TAction'#10'actOpenDir'#7'Caption'#6#3'...'#18'Di'
+'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#16#1#3'top' +'sableIfNoHandler'#9#9'OnExecute'#7#17'actOpenDirExecute'#0#0#0#11'TOpenDial'
+#2' '#0#0#22'TSelectDirectoryDialog'#3'SDD'#5'Title'#6#21'Choisir un r'#233 +'og'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Filter'#6#28'WSDL Fil'
+'pertoire'#11'FilterIndex'#2#0#4'left'#3#224#0#3'top'#3#176#0#0#0#0 +'es ( *.wsdl )|*.wsdl'#11'FilterIndex'#2#0#7'Options'#11#15'ofFileMustExist'
+#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#16#1#3'top'#2' '#0#0#22'TSe'
+'lectDirectoryDialog'#3'SDD'#5'Title'#6#21'Choisir un r'#233'pertoire'#11'Fi'
+'lterIndex'#2#0#4'left'#3#224#0#3'top'#3#176#0#0#0#0
]); ]);

View File

@ -13,7 +13,8 @@ type
TGenOption = ( TGenOption = (
goInterface, goInterfaceALL, goInterface, goInterfaceALL,
goProxy, goImp, goBinder goProxy, goImp, goBinder,
goWrappedParameter
); );
TGenOptions = set of TGenOption; TGenOptions = set of TGenOption;
@ -38,6 +39,7 @@ type
edtOptionImp: TCheckBox; edtOptionImp: TCheckBox;
edtInputFile: TEdit; edtInputFile: TEdit;
edtOutputDir: TEdit; edtOutputDir: TEdit;
edtOptionWrappedParams : TCheckBox;
GroupBox1: TGroupBox; GroupBox1: TGroupBox;
GroupBox2: TGroupBox; GroupBox2: TGroupBox;
GroupBox3: TGroupBox; GroupBox3: TGroupBox;
@ -110,7 +112,8 @@ function GenerateSource(
AOptions : TSourceTypes; AOptions : TSourceTypes;
const AOutputType : TOutputType; const AOutputType : TOutputType;
const AOutPath : string; const AOutPath : string;
const ANotifier : TOnParserMessage const ANotifier : TOnParserMessage;
const AWrappedPrm : Boolean
) : ISourceManager; ) : ISourceManager;
procedure Notify(const AMsg : string); procedure Notify(const AMsg : string);
@ -125,7 +128,9 @@ var
g : TBaseGenerator; g : TBaseGenerator;
mg : TMetadataGenerator; mg : TMetadataGenerator;
rsrcStrm : TMemoryStream; rsrcStrm : TMemoryStream;
wrappedParams : Boolean;
begin begin
wrappedParams := AWrappedPrm;
Result := CreateSourceManager(); Result := CreateSourceManager();
rsrcStrm := nil; rsrcStrm := nil;
mtdaFS := nil; mtdaFS := nil;
@ -136,6 +141,8 @@ begin
if ( ( [goInterface,goInterfaceALL] * AOptions ) <> [] ) then begin if ( ( [goInterface,goInterfaceALL] * AOptions ) <> [] ) then begin
Notify('Interface file generation...'); Notify('Interface file generation...');
g := TInftGenerator.Create(ASymbolTable,Result); g := TInftGenerator.Create(ASymbolTable,Result);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
end; end;
@ -143,6 +150,8 @@ begin
if ( goProxy in AOptions ) then begin if ( goProxy in AOptions ) then begin
Notify('Proxy file generation...'); Notify('Proxy file generation...');
g := TProxyGenerator.Create(ASymbolTable,Result); g := TProxyGenerator.Create(ASymbolTable,Result);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
end; end;
@ -150,6 +159,8 @@ begin
if ( goBinder in AOptions ) then begin if ( goBinder in AOptions ) then begin
Notify('Binder file generation...'); Notify('Binder file generation...');
g := TBinderGenerator.Create(ASymbolTable,Result); g := TBinderGenerator.Create(ASymbolTable,Result);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
end; end;
@ -230,6 +241,8 @@ begin
Include(Result,goBinder); Include(Result,goBinder);
if edtOptionImp.Checked then if edtOptionImp.Checked then
Include(Result,goImp); Include(Result,goImp);
if edtOptionWrappedParams.Checked then
Include(Result,goWrappedParameter);
end; end;
procedure TformImport.actOpenDirExecute(Sender: TObject); procedure TformImport.actOpenDirExecute(Sender: TObject);
@ -245,7 +258,7 @@ procedure TformImport.actOKUpdate(Sender: TObject);
begin begin
TAction(Sender).Enabled := FileExists(edtInputFile.Text) and TAction(Sender).Enabled := FileExists(edtInputFile.Text) and
DirectoryExists(edtOutputDir.Text) and DirectoryExists(edtOutputDir.Text) and
( GetOptions() <> [] ); ( ( GetOptions() - [goWrappedParameter] ) <> [] );
end; end;
procedure TformImport.actOKExecute(Sender: TObject); procedure TformImport.actOKExecute(Sender: TObject);
@ -254,6 +267,8 @@ var
oldCursor : TCursor; oldCursor : TCursor;
srcMgnr : ISourceManager; srcMgnr : ISourceManager;
i : Integer; i : Integer;
genOptions : TGenOptions;
fileSet : TSourceTypes;
{$IFDEF WST_IDE} {$IFDEF WST_IDE}
j, c : Integer; j, c : Integer;
srcItm : ISourceStream; srcItm : ISourceStream;
@ -266,7 +281,9 @@ begin
try try
tree := ParseWsdlFile(edtInputFile.Text,@ShowStatusMessage); tree := ParseWsdlFile(edtInputFile.Text,@ShowStatusMessage);
try try
srcMgnr := GenerateSource(tree,GetOptions(),otFileSystem,IncludeTrailingPathDelimiter(edtOutputDir.Text),@ShowStatusMessage); genOptions := GetOptions();
fileSet := genOptions - [goWrappedParameter];
srcMgnr := GenerateSource(tree,fileSet,otFileSystem,IncludeTrailingPathDelimiter(edtOutputDir.Text),@ShowStatusMessage,(goWrappedParameter in genOptions) );
ShowStatusMessage(mtInfo,''); ShowStatusMessage(mtInfo,'');
{$IFDEF WST_IDE} {$IFDEF WST_IDE}
openFlags := []; openFlags := [];

View File

@ -79,6 +79,7 @@
<Other> <Other>
<CustomOptions Value="-dINDY_10 <CustomOptions Value="-dINDY_10
-dUseCThreads -dUseCThreads
-dWST_DBG
"/> "/>
<CompilerPath Value="$(CompPath)"/> <CompilerPath Value="$(CompPath)"/>
</Other> </Other>

View File

@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="urn:calc-sample"
xmlns:s="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:calc-sample"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="urn:calc-sample">
<s:element name="ComplexStruct">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="fieldA" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="fieldB" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="fieldOperation" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="ComplexResponseStruct">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="fieldA" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="fieldB" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="fieldResult" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddStruct">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="StructArg" type="tns:ComplexStruct" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddStructResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="res" type="tns:ComplexResponseStruct" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="Add">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="A" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="B" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="result" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="EmptyParamProc">
<s:complexType/>
</s:element>
<s:element name="EmptyParamProcResponse">
<s:complexType/>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="AddStructSoapIn">
<wsdl:part name="parameters" element="tns:AddStruct" />
</wsdl:message>
<wsdl:message name="AddStructSoapOut">
<wsdl:part name="parameters" element="tns:AddStructResponse" />
</wsdl:message>
<wsdl:message name="AddSoapIn">
<wsdl:part name="parameters" element="tns:Add" />
</wsdl:message>
<wsdl:message name="AddSoapOut">
<wsdl:part name="parameters" element="tns:AddResponse" />
</wsdl:message>
<wsdl:message name="EmptyParamProcSoapIn">
<wsdl:part name="parameters" element="tns:EmptyParamProc" />
</wsdl:message>
<wsdl:message name="EmptyParamProcSoapOut">
<wsdl:part name="parameters" element="tns:EmptyParamProcResponse" />
</wsdl:message>
<wsdl:portType name="ICalcServiceSoap">
<wsdl:operation name="AddStruct">
<wsdl:input message="tns:AddStructSoapIn" />
<wsdl:output message="tns:AddStructSoapOut" />
</wsdl:operation>
<wsdl:operation name="Add">
<wsdl:input message="tns:AddSoapIn" />
<wsdl:output message="tns:AddSoapOut" />
</wsdl:operation>
<wsdl:operation name="EmptyParamProc">
<wsdl:input message="tns:EmptyParamProcSoapIn" />
<wsdl:output message="tns:EmptyParamProcSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ICalcServiceSoap" type="tns:ICalcServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="AddStruct">
<soap:operation soapAction="urn:calc-sample/AddStruct" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="Add">
<soap:operation soapAction="urn:calc-sample/Add" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EmptyParamProc">
<soap:operation soapAction="urn:calc-sample/EmptyParamProc" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ICalcService">
<wsdl:port name="ICalcServiceSoap" binding="tns:ICalcServiceSoap">
<soap:address location="http://calc-sample.org/service" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

View File

@ -25,10 +25,10 @@
</RunParams> </RunParams>
<RequiredPackages Count="2"> <RequiredPackages Count="2">
<Item1> <Item1>
<PackageName Value="SynEdit"/> <PackageName Value="LCL"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="LCL"/> <PackageName Value="SynEdit"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="24"> <Units Count="24">
@ -209,7 +209,8 @@
</CodeGeneration> </CodeGeneration>
<Linking> <Linking>
<Debugging> <Debugging>
<GenerateDebugInfo Value="True"/> <UseLineInfoUnit Value="False"/>
<StripSymbols Value="True"/>
</Debugging> </Debugging>
<LinkSmart Value="True"/> <LinkSmart Value="True"/>
<Options> <Options>

View File

@ -1,7 +1,7 @@
object frmSaveOptions: TfrmSaveOptions object frmSaveOptions: TfrmSaveOptions
Left = 404 Left = 158
Height = 322 Height = 322
Top = 208 Top = 379
Width = 402 Width = 402
HorzScrollBar.Page = 401 HorzScrollBar.Page = 401
VertScrollBar.Page = 321 VertScrollBar.Page = 321
@ -60,12 +60,12 @@ object frmSaveOptions: TfrmSaveOptions
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
Left = 16 Left = 16
Height = 137 Height = 105
Top = 80 Top = 80
Width = 369 Width = 369
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
Caption = ' File type ' Caption = ' File type '
ClientHeight = 119 ClientHeight = 87
ClientWidth = 365 ClientWidth = 365
TabOrder = 0 TabOrder = 0
object edtInterface: TCheckBox object edtInterface: TCheckBox
@ -79,14 +79,14 @@ object frmSaveOptions: TfrmSaveOptions
object edtProxy: TCheckBox object edtProxy: TCheckBox
Left = 14 Left = 14
Height = 19 Height = 19
Top = 73 Top = 38
Width = 52 Width = 52
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = 'Proxy' Caption = 'Proxy'
TabOrder = 1 TabOrder = 1
end end
object edtImplementation: TCheckBox object edtImplementation: TCheckBox
Left = 235 Left = 227
Height = 19 Height = 19
Top = 14 Top = 14
Width = 97 Width = 97
@ -95,9 +95,9 @@ object frmSaveOptions: TfrmSaveOptions
TabOrder = 2 TabOrder = 2
end end
object edtBinder: TCheckBox object edtBinder: TCheckBox
Left = 235 Left = 227
Height = 19 Height = 19
Top = 73 Top = 38
Width = 56 Width = 56
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
Caption = 'Binder' Caption = 'Binder'
@ -143,6 +143,15 @@ object frmSaveOptions: TfrmSaveOptions
OnClick = btnUnselectAllClick OnClick = btnUnselectAllClick
TabOrder = 4 TabOrder = 4
end end
object edtWrappedParams: TCheckBox
Left = 16
Height = 19
Top = 200
Width = 290
Anchors = [akLeft, akBottom]
Caption = 'Generate easy access interface for wrapped parameters'
TabOrder = 5
end
end end
object AL: TActionList object AL: TActionList
left = 144 left = 144

View File

@ -1,9 +1,9 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus } { Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfrmSaveOptions','FORMDATA',[ LazarusResources.Add('TfrmSaveOptions','FORMDATA',[
'TPF0'#15'TfrmSaveOptions'#14'frmSaveOptions'#4'Left'#3#148#1#6'Height'#3'B'#1 'TPF0'#15'TfrmSaveOptions'#14'frmSaveOptions'#4'Left'#3#158#0#6'Height'#3'B'#1
+#3'Top'#3#208#0#5'Width'#3#146#1#18'HorzScrollBar.Page'#3#145#1#18'VertScrol' +#3'Top'#3'{'#1#5'Width'#3#146#1#18'HorzScrollBar.Page'#3#145#1#18'VertScroll'
+'lBar.Page'#3'A'#1#13'ActiveControl'#7#12'edtInterface'#11'BorderStyle'#7#13 +'Bar.Page'#3'A'#1#13'ActiveControl'#7#12'edtInterface'#11'BorderStyle'#7#13
+'bsSizeToolWin'#7'Caption'#6#23'Export file options ...'#12'ClientHeight'#3 +'bsSizeToolWin'#7'Caption'#6#23'Export file options ...'#12'ClientHeight'#3
+'B'#1#11'ClientWidth'#3#146#1#8'Position'#7#16'poMainFormCenter'#0#6'TPanel' +'B'#1#11'ClientWidth'#3#146#1#8'Position'#7#16'poMainFormCenter'#0#6'TPanel'
+#6'Panel1'#6'Height'#2'2'#3'Top'#3#16#1#5'Width'#3#146#1#5'Align'#7#8'alBott' +#6'Panel1'#6'Height'#2'2'#3'Top'#3#16#1#5'Width'#3#146#1#5'Align'#7#8'alBott'
@ -17,31 +17,34 @@ LazarusResources.Add('TfrmSaveOptions','FORMDATA',[
+#16#1#5'Width'#3#146#1#5'Align'#7#8'alClient'#12'ClientHeight'#3#16#1#11'Cli' +#16#1#5'Width'#3#146#1#5'Align'#7#8'alClient'#12'ClientHeight'#3#16#1#11'Cli'
+'entWidth'#3#146#1#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Heig' +'entWidth'#3#146#1#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Heig'
+'ht'#2#14#3'Top'#2#16#5'Width'#2'Q'#7'Caption'#6#16'Output directory'#11'Par' +'ht'#2#14#3'Top'#2#16#5'Width'#2'Q'#7'Caption'#6#16'Output directory'#11'Par'
+'entColor'#8#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#16#6'Height'#3#137#0#3 +'entColor'#8#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#16#6'Height'#2'i'#3'Top'
+'Top'#2'P'#5'Width'#3'q'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akB' +#2'P'#5'Width'#3'q'#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'
+'ottom'#0#7'Caption'#6#13' File type '#12'ClientHeight'#2'w'#11'ClientWidt' +#0#7'Caption'#6#13' File type '#12'ClientHeight'#2'W'#11'ClientWidth'#3'm'
+'h'#3'm'#1#8'TabOrder'#2#0#0#9'TCheckBox'#12'edtInterface'#4'Left'#2#14#6'He' +#1#8'TabOrder'#2#0#0#9'TCheckBox'#12'edtInterface'#4'Left'#2#14#6'Height'#2
+'ight'#2#19#3'Top'#2#16#5'Width'#2'D'#7'Caption'#6#9'Interface'#8'TabOrder'#2 +#19#3'Top'#2#16#5'Width'#2'D'#7'Caption'#6#9'Interface'#8'TabOrder'#2#0#0#0#9
+#0#0#0#9'TCheckBox'#8'edtProxy'#4'Left'#2#14#6'Height'#2#19#3'Top'#2'I'#5'Wi' +'TCheckBox'#8'edtProxy'#4'Left'#2#14#6'Height'#2#19#3'Top'#2'&'#5'Width'#2'4'
+'dth'#2'4'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#5'Proxy'#8'Tab' +#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#5'Proxy'#8'TabOrder'#2#1
+'Order'#2#1#0#0#9'TCheckBox'#17'edtImplementation'#4'Left'#3#235#0#6'Height' +#0#0#9'TCheckBox'#17'edtImplementation'#4'Left'#3#227#0#6'Height'#2#19#3'Top'
+#2#19#3'Top'#2#14#5'Width'#2'a'#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Captio' +#2#14#5'Width'#2'a'#7'Anchors'#11#5'akTop'#7'akRight'#0#7'Caption'#6#14'Impl'
+'n'#6#14'Implementation'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9'edtBinder'#4'Lef' +'ementation'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9'edtBinder'#4'Left'#3#227#0#6
+'t'#3#235#0#6'Height'#2#19#3'Top'#2'I'#5'Width'#2'8'#7'Anchors'#11#7'akRight' +'Height'#2#19#3'Top'#2'&'#5'Width'#2'8'#7'Anchors'#11#7'akRight'#8'akBottom'
+#8'akBottom'#0#7'Caption'#6#6'Binder'#8'TabOrder'#2#3#0#0#0#5'TEdit'#12'edtO' +#0#7'Caption'#6#6'Binder'#8'TabOrder'#2#3#0#0#0#5'TEdit'#12'edtOutputDir'#4
+'utputDir'#4'Left'#2#16#6'Height'#2#23#3'Top'#2'&'#5'Width'#3'P'#1#7'Anchors' +'Left'#2#16#6'Height'#2#23#3'Top'#2'&'#5'Width'#3'P'#1#7'Anchors'#11#5'akTop'
+#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#1#0#0#7'TButton'#12'btnSel' +#6'akLeft'#7'akRight'#0#8'TabOrder'#2#1#0#0#7'TButton'#12'btnSelectDir'#4'Le'
+'ectDir'#4'Left'#3'j'#1#6'Height'#2#25#3'Top'#2'$'#5'Width'#2#25#7'Anchors' +'ft'#3'j'#1#6'Height'#2#25#3'Top'#2'$'#5'Width'#2#25#7'Anchors'#11#5'akTop'#7
+#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'.' +'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#3'...'#7'OnClick'
+'..'#7'OnClick'#7#17'btnSelectDirClick'#8'TabOrder'#2#2#0#0#7'TButton'#12'bt' +#7#17'btnSelectDirClick'#8'TabOrder'#2#2#0#0#7'TButton'#12'btnSelectAll'#4'L'
+'nSelectAll'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#233#0#5'Width'#2'd'#7'Anch' +'eft'#2#16#6'Height'#2#25#3'Top'#3#233#0#5'Width'#2'd'#7'Anchors'#11#6'akLef'
+'ors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#10'Select All'#7'OnClick'#7#17 +'t'#8'akBottom'#0#7'Caption'#6#10'Select All'#7'OnClick'#7#17'btnSelectAllCl'
+'btnSelectAllClick'#8'TabOrder'#2#3#0#0#7'TButton'#14'btnUnselectAll'#4'Left' +'ick'#8'TabOrder'#2#3#0#0#7'TButton'#14'btnUnselectAll'#4'Left'#3#0#1#6'Heig'
+#3#0#1#6'Height'#2#25#3'Top'#3#233#0#5'Width'#2'd'#7'Anchors'#11#7'akRight'#8 +'ht'#2#25#3'Top'#3#233#0#5'Width'#2'd'#7'Anchors'#11#7'akRight'#8'akBottom'#0
+'akBottom'#0#7'Caption'#6#12'Unselect All'#7'OnClick'#7#19'btnUnselectAllCli' +#7'Caption'#6#12'Unselect All'#7'OnClick'#7#19'btnUnselectAllClick'#8'TabOrd'
+'ck'#8'TabOrder'#2#4#0#0#0#11'TActionList'#2'AL'#4'left'#3#144#0#3'top'#3#128 +'er'#2#4#0#0#9'TCheckBox'#16'edtWrappedParams'#4'Left'#2#16#6'Height'#2#19#3
+#0#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'DisableIfNoHandler'#9#9'OnExe' +'Top'#3#200#0#5'Width'#3'"'#1#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Captio'
+'cute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOKUpdate'#0#0#0#22'TSelectDire' +'n'#6'5Generate easy access interface for wrapped parameters'#8'TabOrder'#2#5
+'ctoryDialog'#2'SD'#5'Title'#6#21'Choisir un r'#233'pertoire'#11'FilterIndex' +#0#0#0#11'TActionList'#2'AL'#4'left'#3#144#0#3'top'#3#128#0#0#7'TAction'#5'a'
+#2#0#4'left'#2'e'#3'top'#3#142#0#0#0#0 +'ctOK'#7'Caption'#6#2'OK'#18'DisableIfNoHandler'#9#9'OnExecute'#7#12'actOKEx'
+'ecute'#8'OnUpdate'#7#11'actOKUpdate'#0#0#0#22'TSelectDirectoryDialog'#2'SD'
+#5'Title'#6#21'Choisir un r'#233'pertoire'#11'FilterIndex'#2#0#4'left'#2'e'#3
+'top'#3#142#0#0#0#0
]); ]);

View File

@ -25,6 +25,7 @@ type
edtImplementation : TCheckBox; edtImplementation : TCheckBox;
edtBinder : TCheckBox; edtBinder : TCheckBox;
edtOutputDir : TEdit; edtOutputDir : TEdit;
edtWrappedParams : TCheckBox;
GroupBox1 : TGroupBox; GroupBox1 : TGroupBox;
Label1 : TLabel; Label1 : TLabel;
Panel1 : TPanel; Panel1 : TPanel;
@ -82,6 +83,7 @@ begin
edtImplementation.Checked := edtBinder.Checked; edtImplementation.Checked := edtBinder.Checked;
edtInterface.Checked := edtBinder.Checked; edtInterface.Checked := edtBinder.Checked;
edtProxy.Checked := edtBinder.Checked; edtProxy.Checked := edtBinder.Checked;
edtWrappedParams.Checked := edtBinder.Checked;
end; end;

View File

@ -1,7 +1,7 @@
object fInterfaceEdit: TfInterfaceEdit object fInterfaceEdit: TfInterfaceEdit
Left = 340 Left = 361
Height = 564 Height = 564
Top = 122 Top = 373
Width = 531 Width = 531
HorzScrollBar.Page = 530 HorzScrollBar.Page = 530
VertScrollBar.Page = 563 VertScrollBar.Page = 563

View File

@ -1,14 +1,14 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus } { Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfInterfaceEdit','FORMDATA',[ LazarusResources.Add('TfInterfaceEdit','FORMDATA',[
'TPF0'#15'TfInterfaceEdit'#14'fInterfaceEdit'#4'Left'#3'T'#1#6'Height'#3'4'#2 'TPF0'#15'TfInterfaceEdit'#14'fInterfaceEdit'#4'Left'#3'i'#1#6'Height'#3'4'#2
+#3'Top'#2'z'#5'Width'#3#19#2#18'HorzScrollBar.Page'#3#18#2#18'VertScrollBar.' +#3'Top'#3'u'#1#5'Width'#3#19#2#18'HorzScrollBar.Page'#3#18#2#18'VertScrollBa'
+'Page'#3'3'#2#13'ActiveControl'#7#7'Button1'#11'BorderStyle'#7#13'bsSizeTool' +'r.Page'#3'3'#2#13'ActiveControl'#7#7'Button1'#11'BorderStyle'#7#13'bsSizeTo'
+'Win'#7'Caption'#6#14'fInterfaceEdit'#12'ClientHeight'#3'4'#2#11'ClientWidth' +'olWin'#7'Caption'#6#14'fInterfaceEdit'#12'ClientHeight'#3'4'#2#11'ClientWid'
+#3#19#2#8'OnCreate'#7#10'FormCreate'#8'Position'#7#15'poDesktopCenter'#0#6'T' +'th'#3#19#2#8'OnCreate'#7#10'FormCreate'#8'Position'#7#15'poDesktopCenter'#0
+'Panel'#6'Panel1'#6'Height'#2'2'#3'Top'#3#2#2#5'Width'#3#19#2#5'Align'#7#8'a' +#6'TPanel'#6'Panel1'#6'Height'#2'2'#3'Top'#3#2#2#5'Width'#3#19#2#5'Align'#7#8
+'lBottom'#12'ClientHeight'#2'2'#11'ClientWidth'#3#19#2#8'TabOrder'#2#0#0#7'T' +'alBottom'#12'ClientHeight'#2'2'#11'ClientWidth'#3#19#2#8'TabOrder'#2#0#0#7
+'Button'#7'Button1'#4'Left'#3#180#1#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K' +'TButton'#7'Button1'#4'Left'#3#180#1#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Can' +#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Can'
+'cel'#9#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#0#0#0#7'TBu' +'cel'#9#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#0#0#0#7'TBu'
+'tton'#7'Button2'#4'Left'#3'Z'#1#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#6 +'tton'#7'Button2'#4'Left'#3'Z'#1#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#6

View File

@ -78,9 +78,11 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2 PopupMenu = PopupMenu2
TabOrder = 0 TabOrder = 0
BookMarkOptions.Xoffset = 81 BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.DigitCount = 5 Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14 Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1 Highlighter = SynPasSyn1
Keystrokes = < Keystrokes = <
@ -405,6 +407,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642 ShortCut = 24642
end> end>
ReadOnly = True ReadOnly = True
SelectedColor.OnChange = nil
end end
end end
object tsWSDL: TTabSheet object tsWSDL: TTabSheet
@ -422,7 +425,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2 PopupMenu = PopupMenu2
TabOrder = 0 TabOrder = 0
BookMarkOptions.Xoffset = 54 BookMarkOptions.Xoffset = 54
BookMarkOptions.OnChange = nil
Gutter.ShowLineNumbers = True Gutter.ShowLineNumbers = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14 Gutter.CodeFoldingWidth = 14
Highlighter = SynXMLSyn1 Highlighter = SynXMLSyn1
Keystrokes = < Keystrokes = <
@ -747,6 +752,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642 ShortCut = 24642
end> end>
ReadOnly = True ReadOnly = True
SelectedColor.OnChange = nil
end end
end end
object tsProxy: TTabSheet object tsProxy: TTabSheet
@ -764,11 +770,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2 PopupMenu = PopupMenu2
TabOrder = 0 TabOrder = 0
BookMarkOptions.Xoffset = 81 BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.DigitCount = 5 Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14 Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1 Highlighter = SynPasSyn1
Keystrokes = < Keystrokes = <
@ -1093,7 +1097,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642 ShortCut = 24642
end> end>
ReadOnly = True ReadOnly = True
SelectedColor.OnChange = nil
end end
end end
object tsImp: TTabSheet object tsImp: TTabSheet
@ -1111,11 +1114,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2 PopupMenu = PopupMenu2
TabOrder = 0 TabOrder = 0
BookMarkOptions.Xoffset = 81 BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.DigitCount = 5 Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14 Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1 Highlighter = SynPasSyn1
Keystrokes = < Keystrokes = <
@ -1440,7 +1441,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642 ShortCut = 24642
end> end>
ReadOnly = True ReadOnly = True
SelectedColor.OnChange = nil
end end
end end
object tsBinder: TTabSheet object tsBinder: TTabSheet
@ -1458,12 +1458,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
PopupMenu = PopupMenu2 PopupMenu = PopupMenu2
TabOrder = 0 TabOrder = 0
BookMarkOptions.Xoffset = 81 BookMarkOptions.Xoffset = 81
BookMarkOptions.OnChange = nil
Gutter.AutoSize = True Gutter.AutoSize = True
Gutter.DigitCount = 5 Gutter.DigitCount = 5
Gutter.ShowLineNumbers = True Gutter.ShowLineNumbers = True
Gutter.ShowCodeFolding = True Gutter.ShowCodeFolding = True
Gutter.OnChange = nil
Gutter.CodeFoldingWidth = 14 Gutter.CodeFoldingWidth = 14
Highlighter = SynPasSyn1 Highlighter = SynPasSyn1
Keystrokes = < Keystrokes = <
@ -1788,7 +1786,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
ShortCut = 24642 ShortCut = 24642
end> end>
ReadOnly = True ReadOnly = True
SelectedColor.OnChange = nil
end end
end end
object tsLog: TTabSheet object tsLog: TTabSheet

View File

@ -22,114 +22,66 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHA' +'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHA'
+'RSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Co' +'RSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Co'
+'urier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'Popu' +'urier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'Popu'
+'pMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.DigitCou' +'pMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions'
+'nt'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gutter' +'.OnChange'#13#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gut'
+'.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1 +'ter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2
+#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7 +#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'Sh'
+'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7 +'ortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8
+'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1 +'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'S'
+#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7 +'hortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8
+'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7 +'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'S'
+'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7 +'hortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'S'
+'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7 +'hortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8
+'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7 +'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10
+'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7 +#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8
+'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'C' +'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8
+'ommand'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7 +'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8
+'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'C' +'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8
+'ommand'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7 +'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8
+'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'C' +'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8
+'ommand'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7 +'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8
+'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0 +'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7'Command'#3#223#0
+#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2 +#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0#1#7'Command'#3
+'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCu' +'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman'
+'t'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'S' +'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co'
+'hortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command' +'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'
+#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7 +#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'Short'
+'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@' +'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3
+#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3 +#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm'
+'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'Short' +'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7
+'Cut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8 +'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'ShortCut'#3'T@'
+'ShortCut'#3'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251 +#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8'ShortCut'#3
+#1#8'ShortCut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command' +'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251#1#8'ShortC'
+#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Comm' +'ut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8
+'and'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7 +'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Command'#3'-'
+'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0 +#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3
+#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5' +'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0#1#7'Comman'
+'@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut' +'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C'
+#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'Short' +'ommand'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'#3'7@'#0#1
+'Cut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8 +#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'
+'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b' +#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8'ShortCut'#3
+#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3 +'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'#1#8'ShortCu'
+'d'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Comman' +'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh'
+'d'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'C' +'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1
+'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0 +#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3
+#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3 +'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma'
,'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut' ,'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7
+#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T' +'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1
+'TabSheet'#6'tsWSDL'#7'Caption'#6#5'&WSDL'#0#8'TSynEdit'#7'srcWSDL'#6'Height' +#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnC'
+#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_C' +'hange'#13#0#0#0#9'TTabSheet'#6'tsWSDL'#7'Caption'#6#5'&WSDL'#0#8'TSynEdit'#7
+'HARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#233#9'Font.Name'#6#7 +'srcWSDL'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.C'
+'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'Po' +'harSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#233
+'pupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'6'#22'Gutter.ShowLi' +#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'P'
+'neNumbers'#9#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynXMLSy' +'opupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'6'
+'n1'#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g' +#24'BookMarkOptions.OnChange'#13#22'Gutter.ShowLineNumbers'#9#15'Gutter.OnCh'
+#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2 +'ange'#13#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynXMLSyn1'
+#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3 +#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'S'
+#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2 +'hortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8
+'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2 +'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0
+'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2 +#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8
+'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2 +'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8
+'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2 +'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8
+'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2 +'ShortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8
+'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'
+#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'
+#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8
+'ShortCut'#3'$ '#0#1#7'Command'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8
+'ShortCut'#3'$`'#0#1#7'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'S'
+'hortCut'#3'# '#0#1#7'Command'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8
+'ShortCut'#3'#`'#0#1#7'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201
+#0#8'ShortCut'#3'-@'#0#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3
+#246#1#8'ShortCut'#2'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Comman'
+'d'#3#245#1#8'ShortCut'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7
+'Command'#3#248#1#8'ShortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8
+#128#0#0#0#1#7'Command'#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1
+#8'ShortCut'#2#13#0#1#7'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3
+#201#0#8'ShortCut'#3'C@'#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Comma'
+'nd'#3#253#1#8'ShortCut'#3'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7
+'Command'#3#247#1#8'ShortCut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0
+#1#7'Command'#3'\'#2#8'ShortCut'#3'V@'#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'#3#250#1#8'ShortC'
+'ut'#3'Y`'#0#1#7'Command'#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'S'
+'hortCut'#3'Z`'#0#1#7'Command'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1
+#8'ShortCut'#3'1@'#0#1#7'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3
+'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Comman'
+'d'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'C'
+'ommand'#3'4'#1#8'ShortCut'#3'7@'#0#1#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'_'#1#8'ShortCut'#3'0`'
+#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3
+'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCu'
+'t'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'Sh'
+'ortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1
+#8'ShortCut'#3'8`'#0#1#7'Command'#3'h'#1#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`'#0#1#7'Comm'
+'and'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7
+'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'
+#0#0#8'ReadOnly'#9#0#0#0#9'TTabSheet'#7'tsProxy'#7'Caption'#6#6'&Proxy'#0#8
+'TSynEdit'#8'srcProxy'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClie'
+'nt'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font'
+'.Height'#2#236#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'Par'
+'entColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOption'
+'s.Xoffset'#2'Q'#24'BookMarkOptions.OnChange'#13#17'Gutter.DigitCount'#2#5#22
+'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#15'Gutter.OnChange'
+#13#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Key'
+'strokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCu'
+'t'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'Shor'
+'tCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'S'
+'hortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'Sh'
+'ortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'Sh'
+'ortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'Sh'
,'ortCut'#3''' '#0#1#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8
+'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8 +'ShortCut'#3'''`'#0#1#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8
+'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8 +'ShortCut'#3'" '#0#1#7'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8
+'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'S' +'ShortCut'#3'"`'#0#1#7'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'S'
@ -165,26 +117,25 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Comm' +#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Comm'
+'and'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7 +'and'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7
+'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`' +'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'
+#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange'#13#0#0#0#9'TTabSheet'#5'tsImp' +#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange'#13#0#0#0#9'TTabSheet'#7'tsProx'
+#7'Caption'#6#24'Im&plementation Skeleton'#0#8'TSynEdit'#6'srcImp'#6'Height' +'y'#7'Caption'#6#6'&Proxy'#0#8'TSynEdit'#8'srcProxy'#6'Height'#3'='#2#5'Widt'
+#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_C' +'h'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Fo'
+'HARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7 +'nt.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10'F'
+'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'Po' +'ont.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'T'
+'pupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptio' +'abOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.DigitCount'#2#5#22
+'ns.OnChange'#13#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'G' +'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gutter.CodeFoldin'
+'utter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth' +'gWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'
+#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8 +#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3
+'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0 +#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2
+#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8 +'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'
+'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1 +#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2
+#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8 ,#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2
+'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8 +#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6
+'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7'Command'#2#6#8 +#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2
+'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1#7'Command'#2#10 +#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2
+#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7'Command'#2#14#8 +#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2
+'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7'Command'#2#9#8 +#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13
+'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'Command'#2#13#8 +#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8
+'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7'Command'#2#7#8
+'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8 +'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'Command'#2#15#8
+'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8 +'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7'Command'#2#8#8
+'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8 +'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'Command'#2#16#8
@ -193,7 +144,7 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman' +'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2'.'#0#1#7'Comman'
+'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co' +'d'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Co'
+'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@' +'mmand'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'ShortCut'#3#8'@'
,#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'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#3'Z'#2#8'Short'
+'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3 +'Cut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7'Command'#3
+#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm' +#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'#0#1#7'Comm'
+'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7 +'and'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3'M@'#0#1#7
@ -215,16 +166,64 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma' +'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0#1#7'Comma'
+'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7 +'nd'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7
+'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#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#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnC' +#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'TTabSheet'#5
+'hange'#13#0#0#0#9'TTabSheet'#8'tsBinder'#7'Caption'#6#7'&Binder'#0#8'TSynEd' +'tsImp'#7'Caption'#6#24'Im&plementation Skeleton'#0#8'TSynEdit'#6'srcImp'#6
+'it'#9'srcBinder'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12 +'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12
+'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height' +'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'
+#2#236#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor' +#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10
+#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset' +'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.Digi'
+#2'Q'#24'BookMarkOptions.OnChange'#13#15'Gutter.AutoSize'#9#17'Gutter.DigitC' +'tCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gu'
+'ount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#15'Gutt' +'tter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'
+'er.OnChange'#13#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPa' +#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0
+'sSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2 +#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0
+#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'
+#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2'e'#8'ShortCut'#3'% '#0
+#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1
+#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1
+#7'Command'#2#6#8'ShortCut'#3'''@'#0#1#7'Command'#2'j'#8'ShortCut'#3'''`'#0#1
+#7'Command'#2#10#8'ShortCut'#2'"'#0#1#7'Command'#2'n'#8'ShortCut'#3'" '#0#1#7
+'Command'#2#14#8'ShortCut'#3'"@'#0#1#7'Command'#2'r'#8'ShortCut'#3'"`'#0#1#7
+'Command'#2#9#8'ShortCut'#2'!'#0#1#7'Command'#2'm'#8'ShortCut'#3'! '#0#1#7'C'
+'ommand'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7
+'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'C'
+'ommand'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7
+'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'C'
+'ommand'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7
+'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0
+#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2
+'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCu'
+'t'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'S'
,'hortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command'
+#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7
+'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@'
+#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3
+'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'Short'
+'Cut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8
+'ShortCut'#3'V@'#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'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command'
+#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Comm'
+'and'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7
+'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0
+#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5'
+'@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut'
+#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'Short'
+'Cut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8
+'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b'
+#1#8'ShortCut'#3'3`'#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'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Comman'
+'d'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'C'
+'ommand'#3'h'#1#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`'#0#1#7'Command'#3#233#0#8'ShortCut'#3
+'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'
+#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T'
+'TabSheet'#8'tsBinder'#7'Caption'#6#7'&Binder'#0#8'TSynEdit'#9'srcBinder'#6
+'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12
+'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'
+#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10
+'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#15'Gutter.Auto'
+'Size'#9#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.Sh'
+'owCodeFolding'#9#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynP'
+'asSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2
+'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command' +'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'
+#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3 +#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3
+#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2 +#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'Command'#2
@ -257,8 +256,8 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Comman' +'0'#1#8'ShortCut'#3'3@'#0#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Comman'
+'d'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'C' +'d'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'C'
+'ommand'#3'4'#1#8'ShortCut'#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1 +'ommand'#3'4'#1#8'ShortCut'#3'7@'#0#1#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'_'#1#8'ShortCut'#3'0`' +#7'Command'#3'6'#1#8'ShortCut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'
+#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3 ,#0#1#7'Command'#3'`'#1#8'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3
+'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCu' +'2`'#0#1#7'Command'#3'b'#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCu'
+'t'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'Sh' +'t'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'Sh'
+'ortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1 +'ortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1
@ -266,126 +265,125 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
+#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Comm' +#231#0#8'ShortCut'#3'N`'#0#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Comm'
+'and'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7 +'and'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7
+'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`' +'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'
+#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange'#13#0#0#0#9'TTabSheet'#5'tsLog' +#0#0#8'ReadOnly'#9#0#0#0#9'TTabSheet'#5'tsLog'#7'Caption'#6#4'&Log'#0#5'TMem'
+#7'Caption'#6#4'&Log'#0#5'TMemo'#6'mmoLog'#6'Height'#3'='#2#5'Width'#3#245#1 +'o'#6'mmoLog'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#13'Li'
+#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#0#0#10'ScrollBars'#7#6'ssBoth' +'nes.Strings'#1#6#0#0#10'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#0#0#0#0#0#0#9
+#8'TabOrder'#2#0#0#0#0#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3':'#1#6'Height' +'TSplitter'#9'Splitter1'#4'Left'#3':'#1#6'Height'#3'Y'#2#5'Width'#2#8#5'Colo'
+#3'Y'#2#5'Width'#2#8#5'Color'#7#7'clBlack'#11'ParentColor'#8#0#0#9'TMainMenu' +'r'#7#7'clBlack'#11'ParentColor'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#3'`'
+#9'MainMenu1'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuItem'#9'MenuItem1'#7'Capti' +#1#3'top'#2'p'#0#9'TMenuItem'#9'MenuItem1'#7'Caption'#6#6'&Files'#0#9'TMenuI'
+'on'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Action'#7#10'actNewFile'#7 +'tem'#10'MenuItem16'#6'Action'#7#10'actNewFile'#7'OnClick'#7#17'actNewFileEx'
+'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6 +'ecute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'M'
+#1'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'actOpenFile'#7'OnClick'#7 +'enuItem5'#6'Action'#7#11'actOpenFile'#7'OnClick'#7#18'actOpenFileExecute'#0
+#18'actOpenFileExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#9'actExpor' +#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#9'actExport'#7'OnClick'#7#16'actExp'
+'t'#7'OnClick'#7#16'actExportExecute'#0#0#9'TMenuItem'#9'MenuItem7'#6'Action' +'ortExecute'#0#0#9'TMenuItem'#9'MenuItem7'#6'Action'#7#7'actSave'#7'OnClick'
+#7#7'actSave'#7'OnClick'#7#14'actSaveExecute'#0#0#9'TMenuItem'#10'MenuItem32' +#7#14'actSaveExecute'#0#0#9'TMenuItem'#10'MenuItem32'#6'Action'#7#9'actSaveA'
+#6'Action'#7#9'actSaveAs'#7'OnClick'#7#16'actSaveAsExecute'#0#0#9'TMenuItem' +'s'#7'OnClick'#7#16'actSaveAsExecute'#0#0#9'TMenuItem'#10'MenuItem17'#7'Capt'
+#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#7 +'ion'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#7'actExit'#7'OnClick'
+'actExit'#7'OnClick'#7#14'actExitExecute'#0#0#0#9'TMenuItem'#10'MenuItem14'#7 +#7#14'actExitExecute'#0#0#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#5'&View'
+'Caption'#6#5'&View'#0#9'TMenuItem'#10'MenuItem15'#6'Action'#7#14'actRefresh' +#0#9'TMenuItem'#10'MenuItem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21
+'View'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem50' +'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem50'#6'Action'#7#9'actSea'
+#6'Action'#7#9'actSearch'#7'OnClick'#7#16'actSearchExecute'#0#0#9'TMenuItem' +'rch'#7'OnClick'#7#16'actSearchExecute'#0#0#9'TMenuItem'#10'MenuItem29'#7'Ca'
+#10'MenuItem29'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem30'#6'Action'#7 +'ption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem30'#6'Action'#7#13'actFullExpand'
+#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10 +#7'OnClick'#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Act'
+'MenuItem31'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7#22'actFullCollapse' +'ion'#7#15'actFullCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9
+'Execute'#0#0#0#9'TMenuItem'#10'MenuItem10'#7'Caption'#6#8'&Edition'#0#9'TMe' +'TMenuItem'#10'MenuItem10'#7'Caption'#6#8'&Edition'#0#9'TMenuItem'#10'MenuIt'
+'nuItem'#10'MenuItem11'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnu' +'em11'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0
+'mCreateExecute'#0#0#9'TMenuItem'#10'MenuItem23'#6'Action'#7#17'actCompoundC' +#0#9'TMenuItem'#10'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7
+'reate'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuIt' +#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem48'#6'Action'#7#15
+'em48'#6'Action'#7#15'actRecordCreate'#7'OnClick'#7#22'actRecordCreateExecut' +'actRecordCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10
+'e'#0#0#9'TMenuItem'#10'MenuItem25'#6'Action'#7#13'actIntfCreate'#7'OnClick' +'MenuItem25'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExec'
+#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem35'#6'Action'#7#14'a' +'ute'#0#0#9'TMenuItem'#10'MenuItem35'#6'Action'#7#14'actArrayCreate'#7'OnCli'
+'ctArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'M' +'ck'#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem36'#6'Action'#7
+'enuItem36'#6'Action'#7#18'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasC' +#18'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMe'
+'reateExecute'#0#0#9'TMenuItem'#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenu' +'nuItem'#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem13'#6
+'Item'#10'MenuItem13'#6'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update' +'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22
+' Object'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuIt' +'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'actDe'
+'em34'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TM' +'lete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6'A'
+'enuItem'#9'MenuItem6'#6'Action'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnCl' +'ction'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecute'
+'ick'#7#15'actAboutExecute'#0#0#0#11'TActionList'#2'AL'#4'left'#3'X'#1#3'top' +#0#0#0#11'TActionList'#2'AL'#4'left'#3'X'#1#3'top'#2'8'#0#7'TAction'#11'actO'
+#2'8'#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#18'DisableIfNoH' +'penFile'#7'Caption'#6#9'Open File'#18'DisableIfNoHandler'#9#9'OnExecute'#7
+'andler'#9#9'OnExecute'#7#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0#7'TAc' +#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0#7'TAction'#7'actExit'#7'Captio'
+'tion'#7'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExecute' +'n'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actExitExecute'#8'S'
+#7#14'actExitExecute'#8'ShortCut'#3's@'#0#0#7'TAction'#9'actExport'#7'Captio' +'hortCut'#3's@'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save generated f'
+'n'#6#24'Save generated files ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16 +'iles ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExportExecute'#8'On'
+'actExportExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbo' +'Update'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'Abo'
+'ut'#7'Caption'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAbo' +'ut'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TActi'
+'utExecute'#0#0#7'TAction'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18'Disa' +'on'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfNoHandler'#9#9'On'
+'bleIfNoHandler'#9#9'OnExecute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actE' +'Execute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAc'
+'xportUpdate'#0#0#7'TAction'#13'actEnumCreate'#7'Caption'#6#18'Create Enumer' +'tion'#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#18'DisableIfNoH'
+'ation'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#20'actEnumCreat' +'andler'#9#7'Enabled'#8#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TActio'
+'eExecute'#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'Disa' +'n'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#7'En'
+'bleIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#22'actUpdateObjectExecute'#8 +'abled'#8#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpda'
+'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'C' +'teObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh '
+'aption'#6#14'&Refresh Views'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExec' +'Views'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#21'actRefreshVi'
+'ute'#7#21'actRefreshViewExecute'#8'ShortCut'#2't'#0#0#7'TAction'#10'actNewF' +'ewExecute'#8'ShortCut'#2't'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'Ne'
+'ile'#7'Caption'#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17'ac' +'w File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17'actNewFileExecute'#8'Sho'
+'tNewFileExecute'#8'ShortCut'#3'N@'#0#0#7'TAction'#17'actCompoundCreate'#7'C' +'rtCut'#3'N@'#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6#17'Create Cl'
+'aption'#6#17'Create Class Type'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnE' +'ass Type'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#24'actCompou'
,'xecute'#7#24'actCompoundCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7'C' +'ndCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create In'
+'aption'#6#16'Create Interface'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnEx' ,'terface'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#20'actIntfCre'
+'ecute'#7#20'actIntfCreateExecute'#0#0#7'TAction'#13'actFullExpand'#7'Captio' +'ateExecute'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11'Full expand'#18
+'n'#6#11'Full expand'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#20 +'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#20'actFullExpandExecute'#0
+'actFullExpandExecute'#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Fu' +#0#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#18'DisableI'
+'ll Collapse'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#22'actFul' +'fNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7
+'lCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4'Save'#18'Disable' +'TAction'#7'actSave'#7'Caption'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecu'
+'IfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#8'ShortCut'#3'S@'#0#0#7'TA' +'te'#7#14'actSaveExecute'#8'ShortCut'#3'S@'#0#0#7'TAction'#9'actDelete'#7'Ca'
+'ction'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#7'Enabl' +'ption'#6#6'Delete'#18'DisableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#16
+'ed'#8#9'OnExecute'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectU' +'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14
+'pdate'#0#0#7'TAction'#14'actArrayCreate'#7'Caption'#6#12'Create Array'#18'D' +'actArrayCreate'#7'Caption'#6#12'Create Array'#18'DisableIfNoHandler'#9#7'En'
+'isableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#21'actArrayCreateExecute'#0 +'abled'#8#9'OnExecute'#7#21'actArrayCreateExecute'#0#0#7'TAction'#18'actType'
+#0#7'TAction'#18'actTypeALiasCreate'#7'Caption'#6#17'Create Type ALias'#18'D' +'ALiasCreate'#7'Caption'#6#17'Create Type ALias'#18'DisableIfNoHandler'#9#7
+'isableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#25'actTypeALiasCreateExecu' +'Enabled'#8#9'OnExecute'#7#25'actTypeALiasCreateExecute'#0#0#7'TAction'#15'a'
+'te'#0#0#7'TAction'#15'actRecordCreate'#7'Caption'#6#13'Create Record'#18'Di' +'ctRecordCreate'#7'Caption'#6#13'Create Record'#18'DisableIfNoHandler'#9#7'E'
+'sableIfNoHandler'#9#7'Enabled'#8#9'OnExecute'#7#22'actRecordCreateExecute'#0 +'nabled'#8#9'OnExecute'#7#22'actRecordCreateExecute'#0#0#7'TAction'#9'actSea'
+#0#7'TAction'#9'actSearch'#7'Caption'#6#6'Search'#18'DisableIfNoHandler'#9#9 +'rch'#7'Caption'#6#6'Search'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actS'
+'OnExecute'#7#16'actSearchExecute'#8'OnUpdate'#7#15'actSearchUpdate'#8'Short' +'earchExecute'#8'OnUpdate'#7#15'actSearchUpdate'#8'ShortCut'#3'F@'#0#0#0#11
+'Cut'#3'F@'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier exis' +'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier existant'#6'Filter'#6'3W'
+'tant'#6'Filter'#6'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.pas'#11 +'DSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.pas'#11'FilterIndex'#2#0#10
+'FilterIndex'#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15 +'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist'#14
+'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'to' +'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynP'
+'p'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Fore' +'asSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'
+'ground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Fo' +#18'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Foreground'#7#8'clMaro'
+'reground'#7#8'clMaroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAt' +'on'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAttri.Foreground'#7#7
+'tri.Foreground'#7#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'Nes' +'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'NestedComments'#9#4'lef'
+'tedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'#5'Titl' +'t'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'#5'Title'#6#27'Enregistrer '
+'e'#6#27'Enregistrer le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6 +'le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6#25'WDSL files(*.WSDL'
+#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMu' +')|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnable'
+'stExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'#3#176 +'Sizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMenu'
+#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#152#0#0#9'TMen' +#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuItem28'
+'uItem'#10'MenuItem28'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFull' +#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0#0#9'T'
+'ExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollap' +'MenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7#22'ac'
+'se'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuItem39' +'tFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuItem39'#6'Action'#7#14'actRef'
+#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9 +'reshView'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuIt'
+'TMenuItem'#10'MenuItem26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6 +'em26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actEnu'
+'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMe' +'mCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem'
+'nuItem'#10'MenuItem21'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'ac' +'21'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateExec'
+'tCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem46'#6'Action'#7#15'actR' +'ute'#0#0#9'TMenuItem'#10'MenuItem46'#6'Action'#7#15'actRecordCreate'#7'OnCl'
+'ecordCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'Me' +'ick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem24'#6'Action'
+'nuItem24'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecut' +#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'
+'e'#0#0#9'TMenuItem'#10'MenuItem37'#6'Action'#7#14'actArrayCreate'#7'OnClick' +#10'MenuItem37'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreat'
+#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem38'#6'Action'#7#18 +'eExecute'#0#0#9'TMenuItem'#10'MenuItem38'#6'Action'#7#18'actTypeALiasCreate'
+'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuI' +#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'MenuItem22'#7
+'tem'#10'MenuItem22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#6'Actio' +'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpdateObjec'
+'n'#7#15'actUpdateObject'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMen' +'t'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem33'#6
+'uItem'#10'MenuItem33'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExe' +'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#10'TPopupMen'
+'cute'#0#0#0#10'TPopupMenu'#10'PopupMenu2'#4'left'#3#16#2#3'top'#3#235#0#0#9 +'u'#10'PopupMenu2'#4'left'#3#16#2#3'top'#3#235#0#0#9'TMenuItem'#10'MenuItem1'
+'TMenuItem'#10'MenuItem18'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'ac' +'8'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExecute'#0#0
+'tRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem49'#6'Action'#7#9'actSearc' +#9'TMenuItem'#10'MenuItem49'#6'Action'#7#9'actSearch'#7'OnClick'#7#16'actSea'
+'h'#7'OnClick'#7#16'actSearchExecute'#0#0#9'TMenuItem'#10'MenuItem19'#7'Capt' +'rchExecute'#0#0#9'TMenuItem'#10'MenuItem19'#7'Caption'#6#1'-'#0#0#9'TMenuIt'
+'ion'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem20'#6'Action'#7#9'actExport'#7'OnCl' +'em'#10'MenuItem20'#6'Action'#7#9'actExport'#7'OnClick'#7#16'actExportExecut'
+'ick'#7#16'actExportExecute'#0#0#9'TMenuItem'#10'MenuItem40'#7'Caption'#6#1 +'e'#0#0#9'TMenuItem'#10'MenuItem40'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'Me'
+'-'#0#0#9'TMenuItem'#10'MenuItem41'#6'Action'#7#14'actArrayCreate'#7'OnClick' +'nuItem41'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExec'
+#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem45'#6'Action'#7#17 +'ute'#0#0#9'TMenuItem'#10'MenuItem45'#6'Action'#7#17'actCompoundCreate'#7'On'
+'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenuIte' +'Click'#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem47'#6'Act'
+'m'#10'MenuItem47'#6'Action'#7#15'actRecordCreate'#7'OnClick'#7#22'actRecord' +'ion'#7#15'actRecordCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TM'
+'CreateExecute'#0#0#9'TMenuItem'#10'MenuItem44'#6'Action'#7#13'actEnumCreate' +'enuItem'#10'MenuItem44'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEn'
+#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem43'#6'Act' +'umCreateExecute'#0#0#9'TMenuItem'#10'MenuItem43'#6'Action'#7#13'actIntfCrea'
+'ion'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuI' +'te'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem42'#6
+'tem'#10'MenuItem42'#6'Action'#7#18'actTypeALiasCreate'#7'OnClick'#7#25'actT' +'Action'#7#18'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'
+'ypeALiasCreateExecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter' +#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter'#6#30'Documents WSDL ('
+#6#30'Documents WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttri.Foregroun' +'*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttri.Foreground'#7#6'clNavy'#30'Att'
+'d'#7#6'clNavy'#30'AttributeValueAttri.Foreground'#7#8'clPurple'#16'WantBrac' +'ributeValueAttri.Foreground'#7#8'clPurple'#16'WantBracesParsed'#8#4'left'#3
,'esParsed'#8#4'left'#3#210#1#3'top'#3#252#0#0#0#11'TFindDialog'#2'FD'#6'OnSh' +#210#1#3'top'#3#252#0#0#0#11'TFindDialog'#2'FD'#6'OnShow'#7#6'FDShow'#5'Titl'
+'ow'#7#6'FDShow'#5'Title'#6#6'Search'#6'OnFind'#7#6'FDFind'#4'left'#3'@'#2#3 ,'e'#6#6'Search'#6'OnFind'#7#6'FDFind'#4'left'#3'@'#2#3'top'#3#143#0#0#0#0
+'top'#3#143#0#0#0#0
]); ]);

View File

@ -716,6 +716,8 @@ begin
Include(saveOpts,cloImp); Include(saveOpts,cloImp);
if f.edtProxy.Checked then if f.edtProxy.Checked then
Include(saveOpts,cloProxy); Include(saveOpts,cloProxy);
if f.edtWrappedParams.Checked then
Include(saveOpts,cloHandleWrappedParameters);
curLok := SetCursorHourGlass(); curLok := SetCursorHourGlass();
GenerateSource( GenerateSource(

View File

@ -28,7 +28,7 @@ Type
TComandLineOption = ( TComandLineOption = (
cloInterface, cloProxy, cloImp, cloBinder, cloWsdl, cloXsd, cloInterface, cloProxy, cloImp, cloBinder, cloWsdl, cloXsd,
cloOutPutDirRelative, cloOutPutDirAbsolute cloOutPutDirRelative, cloOutPutDirAbsolute, cloHandleWrappedParameters
); );
TComandLineOptions = set of TComandLineOption; TComandLineOptions = set of TComandLineOption;
@ -53,7 +53,7 @@ begin
AAppOptions := []; AAppOptions := [];
c := #0; c := #0;
repeat repeat
c := GetOpt('u:pibo:a:wx'); c := GetOpt('u:pibo:a:wxy');
case c of case c of
'u' : 'u' :
begin begin
@ -75,6 +75,7 @@ begin
End; End;
'w' : Include(AAppOptions,cloWsdl); 'w' : Include(AAppOptions,cloWsdl);
'x' : Include(AAppOptions,cloXsd); 'x' : Include(AAppOptions,cloXsd);
'y' : Include(AAppOptions,cloHandleWrappedParameters);
end; end;
until ( c = EndOfOptions ); until ( c = EndOfOptions );
Result := OptInd; Result := OptInd;

View File

@ -32,9 +32,13 @@ const
type type
TGeneratorOption = ( goDocumentWrappedParameter );
TGeneratorOptions = set of TGeneratorOption;
{ TBaseGenerator } { TBaseGenerator }
TBaseGenerator = class TBaseGenerator = class
FOptions : TGeneratorOptions;
Private Private
FSrcMngr : ISourceManager; FSrcMngr : ISourceManager;
FCurrentStream : ISourceStream; FCurrentStream : ISourceStream;
@ -61,6 +65,7 @@ type
procedure Execute();virtual;abstract; procedure Execute();virtual;abstract;
property SymbolTable : TwstPasTreeContainer Read FSymbolTable; property SymbolTable : TwstPasTreeContainer Read FSymbolTable;
property SrcMngr : ISourceManager Read FSrcMngr; property SrcMngr : ISourceManager Read FSrcMngr;
property Options : TGeneratorOptions read FOptions write FOptions;
End; End;
{ TProxyGenerator } { TProxyGenerator }
@ -77,8 +82,8 @@ type
procedure GenerateUnitImplementationHeader(); procedure GenerateUnitImplementationHeader();
procedure GenerateUnitImplementationFooter(); procedure GenerateUnitImplementationFooter();
procedure GenerateProxyIntf(AIntf : TPasClassType); procedure GenerateProxyIntf(AIntf, AEasyIntf : TPasClassType; ABinding : TwstBinding);
procedure GenerateProxyImp(AIntf : TPasClassType); procedure GenerateProxyImp(AIntf, AEasyIntf : TPasClassType; ABinding : TwstBinding);
function GetDestUnitName():string; function GetDestUnitName():string;
Public Public
@ -185,9 +190,121 @@ Const sPROXY_BASE_CLASS = 'TBaseProxy';
sNAME_SPACE = 'sNAME_SPACE'; sNAME_SPACE = 'sNAME_SPACE';
sUNIT_NAME = 'sUNIT_NAME'; sUNIT_NAME = 'sUNIT_NAME';
sRECORD_RTTI_DEFINE = 'WST_RECORD_RTTI'; sRECORD_RTTI_DEFINE = 'WST_RECORD_RTTI';
sEASY_ACCESS_INTERFACE_PREFIX = 'Easy';
sPRM_NAME = 'strPrmName'; sPRM_NAME = 'strPrmName';
sLOC_SERIALIZER = 'locSerializer'; sLOC_SERIALIZER = 'locSerializer';
sINPUT_PARAM = 'inputParam';
sOUTPUT_PARAM = 'outputParam';
sTEMP_OBJ = 'tmpObj';
function DeduceEasyInterfaceForDocStyle(
const ARawInt : TPasClassType;
const AContainer : TwstPasTreeContainer
): TPasClassType;
procedure HandleProc(const AIntf : TPasClassType; const AMethod : TPasProcedure);
var
locMethod : TPasProcedure;
locProcType : TPasProcedureType;
locElt : TPasElement;
locRawInParam, locRawOutParam : TPasClassType;
k, q : PtrInt;
locProp, locResProp : TPasProperty;
locArg : TPasArgument;
locIsFunction : Boolean;
begin
if ( AMethod.ProcType.Args.Count < 1 ) then
raise Exception.CreateFmt('Invalid "Document style" method, one parameter expected : %s.%s.',[AIntf.Name,AMethod.Name]);
locElt := TPasArgument(AMethod.ProcType.Args[0]).ArgType;
if locElt.InheritsFrom(TPasUnresolvedTypeRef) then
locElt := AContainer.FindElement(locElt.Name);
if ( locElt = nil ) then
raise Exception.CreateFmt('Invalid "Document style" method, class type parameter expected, nil founded : %s.%s.',[AIntf.Name,AMethod.Name]);
if ( not locElt.InheritsFrom(TPasClassType) ) then
raise Exception.CreateFmt('Invalid "Document style" method, class type parameter expected : %s.%s => %s',[AIntf.Name,AMethod.Name,locElt.ElementTypeName]);
locRawInParam := TPasClassType(locElt);
locIsFunction := False;
if AMethod.InheritsFrom(TPasFunction) then begin
locElt := TPasFunctionType(AMethod.ProcType).ResultEl.ResultType;
if locElt.InheritsFrom(TPasUnresolvedTypeRef) then
locElt := AContainer.FindElement(locElt.Name);
if ( locElt = nil ) or ( not locElt.InheritsFrom(TPasClassType) ) then
raise Exception.CreateFmt('Invalid "Document style" method, class type result expected : %s.%s.',[AIntf.Name,AMethod.Name]);
locRawOutParam := TPasClassType(locElt);
q := locRawOutParam.Members.Count;
if ( q > 0 ) then begin
for k := 0 to ( q - 1 ) do begin
if TPasElement(locRawOutParam.Members[k]).InheritsFrom(TPasProperty) then begin
locProp := TPasProperty(locRawOutParam.Members[k]);
if ( locProp.Visibility = visPublished ) then begin
locResProp := locProp;
locIsFunction := True;
Break;
end;
end;
end;
end;
end;
if locIsFunction then begin
locMethod := TPasFunction(AContainer.CreateElement(TPasFunction,AMethod.Name,AIntf,'',0));
locMethod.ProcType := TPasFunctionType(AContainer.CreateElement(TPasFunctionType,AMethod.ProcType.Name,locMethod,'',0));
end else begin
locMethod := TPasProcedure(AContainer.CreateElement(TPasProcedure,AMethod.Name,AIntf,'',0));
locMethod.ProcType := TPasProcedureType(AContainer.CreateElement(TPasProcedureType,AMethod.ProcType.Name,locMethod,'',0));
end;
AIntf.Members.Add(locMethod);
q := locRawInParam.Members.Count;
locProcType := locMethod.ProcType;
if ( q > 0 ) then begin
for k := 0 to ( q - 1 ) do begin
locElt := TPasElement(locRawInParam.Members[k]);
if locElt.InheritsFrom(TPasProperty) then begin
locProp := TPasProperty(locElt);
if ( locProp.Visibility = visPublished ) then begin
locArg := TPasArgument(AContainer.CreateElement(TPasArgument,locProp.Name,locProcType,'',0));
locArg.ArgType := locProp.VarType;
locArg.ArgType.AddRef();
locArg.Access := argConst;
locProcType.Args.Add(locArg);
end;
end;
end;
end;
if locIsFunction then begin
TPasFunctionType(locProcType).ResultEl := TPasResultElement(AContainer.CreateElement(TPasResultElement,'Result',locProcType,'',0));
TPasFunctionType(locProcType).ResultEl.ResultType := locResProp.VarType; locResProp.VarType.AddRef();
end;
end;
var
locRes : TPasClassType;
i, c : PtrInt;
g : TGuid;
e : TPasElement;
begin
if ( ARawInt.ObjKind <> okInterface ) then
raise Exception.CreateFmt('Interface expected : "%s".',[ARawInt.Name]);
locRes := TPasClassType(AContainer.CreateElement(TPasClassType,Format('%s%s',[ARawInt.Name,sEASY_ACCESS_INTERFACE_PREFIX]),nil,'',0));
try
locRes.ObjKind := okInterface;
if ( CreateGUID(g) = 0 ) then
locRes.InterfaceGUID := GUIDToString(g);
c := ARawInt.Members.Count;
if ( c > 0 ) then begin
for i := 0 to ( c - 1 ) do begin
e := TPasElement(ARawInt.Members[i]);
if e.InheritsFrom(TPasProcedure) then
HandleProc(locRes,TPasProcedure(e));
end;
end;
except
FreeAndNil(locRes);
raise;
end;
Result := locRes;
end;
{ TProxyGenerator } { TProxyGenerator }
@ -258,17 +375,37 @@ Var
intf : TPasClassType; intf : TPasClassType;
elt : TPasElement; elt : TPasElement;
ls : TList; ls : TList;
binding : TwstBinding;
intfEasy : TPasClassType;
HandleEasyIntf : Boolean;
begin begin
HandleEasyIntf := ( goDocumentWrappedParameter in Self.Options );
GenerateUnitHeader(); GenerateUnitHeader();
GenerateUnitImplementationHeader(); GenerateUnitImplementationHeader();
ls := SymbolTable.CurrentModule.InterfaceSection.Declarations; ls := SymbolTable.CurrentModule.InterfaceSection.Declarations;
c := Pred(ls.Count); c := Pred(ls.Count);
if HandleEasyIntf then begin
for i := 0 to c do begin for i := 0 to c do begin
elt := TPasElement(ls[i]); elt := TPasElement(ls[i]);
if ( elt is TPasClassType ) and ( TPasClassType(elt).ObjKind = okInterface ) then begin if ( elt is TPasClassType ) and ( TPasClassType(elt).ObjKind = okInterface ) then begin
intf := elt as TPasClassType; intf := elt as TPasClassType;
GenerateProxyIntf(intf); binding := SymbolTable.FindBinding(intf);
GenerateProxyImp(intf); intfEasy := nil;
if ( binding.BindingStyle = bsDocument ) then begin
intfEasy := DeduceEasyInterfaceForDocStyle(intf,SymbolTable);
end;
GenerateProxyIntf(intf,intfEasy,binding);
GenerateProxyImp(intf,intfEasy,binding);
end;
end;
end else begin
for i := 0 to c do begin
elt := TPasElement(ls[i]);
if ( elt is TPasClassType ) and ( TPasClassType(elt).ObjKind = okInterface ) then begin
intf := elt as TPasClassType;
GenerateProxyIntf(intf,nil,binding);
GenerateProxyImp(intf,nil,binding);
end;
end; end;
end; end;
GenerateUnitImplementationFooter(); GenerateUnitImplementationFooter();
@ -282,17 +419,29 @@ begin
Result := Format('%s_proxy',[SymbolTable.CurrentModule.Name]); Result := Format('%s_proxy',[SymbolTable.CurrentModule.Name]);
end; end;
procedure TProxyGenerator.GenerateProxyIntf(AIntf: TPasClassType); procedure TProxyGenerator.GenerateProxyIntf(AIntf, AEasyIntf : TPasClassType; ABinding : TwstBinding);
var
HandleEasyIntf : boolean;
procedure WriteDec(); procedure WriteDec();
begin begin
Indent(); Indent();
WriteLn('%s=class(%s,%s)',[GenerateClassName(AIntf),sPROXY_BASE_CLASS,AIntf.Name]); Write('%s=class(%s,%s',[GenerateClassName(AIntf),sPROXY_BASE_CLASS,AIntf.Name]);
if HandleEasyIntf then
Write(',%s',[AEasyIntf.Name]);
WriteLn(')');
FDecProcStream.IncIndent(); FDecProcStream.IncIndent();
try try
FDecProcStream.NewLine(); FDecProcStream.NewLine();
FDecProcStream.Indent(); FDecProcStream.Indent();
FDecProcStream.WriteLn('Function wst_CreateInstance_%s(const AFormat : string = %s; const ATransport : string = %s):%s;',[AIntf.Name,QuotedStr('SOAP:'),QuotedStr('HTTP:'),AIntf.Name]); FDecProcStream.WriteLn('Function wst_CreateInstance_%s(const AFormat : string = %s; const ATransport : string = %s):%s;',[AIntf.Name,QuotedStr('SOAP:'),QuotedStr('HTTP:'),AIntf.Name]);
if HandleEasyIntf then begin
FDecProcStream.Indent();
FDecProcStream.WriteLn(
'Function wst_CreateInstance_%s%s(const AFormat : string = %s; const ATransport : string = %s):%s%s;',
[AIntf.Name,sEASY_ACCESS_INTERFACE_PREFIX,QuotedStr('SOAP:'),QuotedStr('HTTP:'),AIntf.Name,sEASY_ACCESS_INTERFACE_PREFIX]
);
end;
finally finally
FDecProcStream.DecIndent(); FDecProcStream.DecIndent();
end; end;
@ -333,7 +482,10 @@ procedure TProxyGenerator.GenerateProxyIntf(AIntf: TPasClassType);
if AMthd.InheritsFrom(TPasFunction) then begin if AMthd.InheritsFrom(TPasFunction) then begin
Write(':%s',[TPasFunctionType(AMthd.ProcType).ResultEl.ResultType.Name]); Write(':%s',[TPasFunctionType(AMthd.ProcType).ResultEl.ResultType.Name]);
end; end;
WriteLn(';'); Write(';');
if HandleEasyIntf then
Write('overload;');
WriteLn('');
End; End;
procedure WriteMethods(); procedure WriteMethods();
@ -344,7 +496,6 @@ procedure TProxyGenerator.GenerateProxyIntf(AIntf: TPasClassType);
begin begin
if ( GetElementCount(AIntf.Members,TPasProcedure) = 0 ) then if ( GetElementCount(AIntf.Members,TPasProcedure) = 0 ) then
Exit; Exit;
//IncIndent();
Indent(); Indent();
WriteLn('Protected'); WriteLn('Protected');
IncIndent(); IncIndent();
@ -356,11 +507,21 @@ procedure TProxyGenerator.GenerateProxyIntf(AIntf: TPasClassType);
WriteMethod(TPasProcedure(elt)); WriteMethod(TPasProcedure(elt));
end; end;
end; end;
if HandleEasyIntf then begin
Indent(); WriteLn('// Easy acces methods');
mthds := AEasyIntf.Members;
for k := 0 to Pred(mthds.Count) do begin
elt := TPasElement(mthds[k]);
if elt.InheritsFrom(TPasProcedure) then begin
WriteMethod(TPasProcedure(elt));
end;
end;
end;
DecIndent(); DecIndent();
//DecIndent();
end; end;
begin begin
HandleEasyIntf := ( goDocumentWrappedParameter in Self.Options ) and ( AEasyIntf <> nil );
SetCurrentStream(FDecStream); SetCurrentStream(FDecStream);
NewLine(); NewLine();
IncIndent(); IncIndent();
@ -370,9 +531,10 @@ begin
DecIndent(); DecIndent();
end; end;
procedure TProxyGenerator.GenerateProxyImp(AIntf: TPasClassType); procedure TProxyGenerator.GenerateProxyImp(AIntf, AEasyIntf : TPasClassType; ABinding : TwstBinding);
Var Var
strClassName : String; strClassName : String;
HandleEasyIntf : Boolean;
procedure WriteDec(); procedure WriteDec();
begin begin
@ -380,7 +542,6 @@ Var
WriteLn('Function wst_CreateInstance_%s(const AFormat : string; const ATransport : string):%s;',[AIntf.Name,AIntf.Name]); WriteLn('Function wst_CreateInstance_%s(const AFormat : string; const ATransport : string):%s;',[AIntf.Name,AIntf.Name]);
WriteLn('Begin'); WriteLn('Begin');
IncIndent(); IncIndent();
try
Indent(); Indent();
WriteLn( WriteLn(
'Result := %s.Create(%s,AFormat+%s,ATransport + %s);', 'Result := %s.Create(%s,AFormat+%s,ATransport + %s);',
@ -389,11 +550,27 @@ Var
QuotedStr('address=') + Format(' + GetServiceDefaultAddress(TypeInfo(%s))',[AIntf.Name]) QuotedStr('address=') + Format(' + GetServiceDefaultAddress(TypeInfo(%s))',[AIntf.Name])
] ]
); );
finally
DecIndent(); DecIndent();
end;
WriteLn('End;'); WriteLn('End;');
NewLine(); NewLine();
if HandleEasyIntf then begin
WriteLn(
'Function wst_CreateInstance_%s%s(const AFormat : string; const ATransport : string):%s%s;',
[AIntf.Name,sEASY_ACCESS_INTERFACE_PREFIX,AIntf.Name,sEASY_ACCESS_INTERFACE_PREFIX]
);
WriteLn('Begin');
IncIndent();
Indent();
WriteLn(
'Result := wst_CreateInstance_%s(AFormat,ATransport) as %s%s;',
[AIntf.Name,AIntf.Name,sEASY_ACCESS_INTERFACE_PREFIX]
);
DecIndent();
WriteLn('End;');
NewLine();
end;
if ( GetElementCount(AIntf.Members,TPasProcedure) > 0 ) then if ( GetElementCount(AIntf.Members,TPasProcedure) > 0 ) then
WriteLn('{ %s implementation }',[strClassName]); WriteLn('{ %s implementation }',[strClassName]);
end; end;
@ -435,6 +612,177 @@ Var
WriteLn(';'); WriteLn(';');
End; End;
procedure WriteEasyMethodImp(AMthd : TPasProcedure);
var
prms : TList;
origineRes : TPasResultElement;
origineResProp : TPasProperty;
function HasObjectsArgs() : Boolean;
var
k : PtrInt;
prm : TPasArgument;
elt : TPasElement;
begin
Result := False;
for k := 0 to ( prms.Count - 1 ) do begin
prm := TPasArgument(prms[k]);
elt := prm.ArgType;
if elt.InheritsFrom(TPasUnresolvedTypeRef) then
elt := SymbolTable.FindElement(SymbolTable.GetExternalName(elt));
if elt.InheritsFrom(TPasUnresolvedTypeRef) or SymbolTable.IsOfType(TPasType(elt),TPasClassType) then begin
Result := True;
Break;
end;
end;
end;
procedure AssignArguments();
var
k : PtrInt;
prm : TPasArgument;
elt : TPasElement;
begin
for k := 0 to ( prms.Count - 1 ) do begin
prm := TPasArgument(prms[k]);
elt := prm.ArgType;
if elt.InheritsFrom(TPasUnresolvedTypeRef) then
elt := SymbolTable.FindElement(SymbolTable.GetExternalName(elt));
if elt.InheritsFrom(TPasUnresolvedTypeRef) then begin
Indent(); WriteLn('if ( PTypeInfo(TypeInfo(%s))^.Kind = tkClass ) then begin',[elt.Name]);
IncIndent();
Indent(); WriteLn('%s := TObject(%s.%s);',[sTEMP_OBJ,sINPUT_PARAM,prm.Name]);
Indent(); WriteLn('%s.Free();',[sTEMP_OBJ]);
Indent(); WriteLn('TObject(%s.%s) := nil;',[sINPUT_PARAM,prm.Name]);
DecIndent();
Indent(); WriteLn('end;');
end else begin
if SymbolTable.IsOfType(TPasType(elt),TPasClassType) then begin
Indent(); WriteLn('%s := %s.%s;',[sTEMP_OBJ,sINPUT_PARAM,prm.Name]);
Indent(); WriteLn('%s.Free();',[sTEMP_OBJ]);
end;
end;
Indent(); WriteLn('%s.%s := %s;',[sINPUT_PARAM,prm.Name,prm.Name]);
end;
end;
procedure ClearArguments();
var
k : PtrInt;
prm : TPasArgument;
elt : TPasElement;
begin
for k := 0 to ( prms.Count - 1 ) do begin
prm := TPasArgument(prms[k]);
elt := prm.ArgType;
if elt.InheritsFrom(TPasUnresolvedTypeRef) then
elt := SymbolTable.FindElement(SymbolTable.GetExternalName(elt));
if elt.InheritsFrom(TPasUnresolvedTypeRef) then begin
Indent(); WriteLn('if ( PTypeInfo(TypeInfo(%s))^.Kind = tkClass ) then',[elt.Name]);
IncIndent();
Indent(); WriteLn('TObject(%s.%s) := nil;',[sINPUT_PARAM,prm.Name]);
DecIndent();
end else begin
if SymbolTable.IsOfType(TPasType(elt),TPasClassType) then begin
Indent(); WriteLn('%s.%s := nil;',[sINPUT_PARAM,prm.Name]);
end;
end;
end;
if AMthd.ProcType.InheritsFrom(TPasFunctionType) then begin
elt := origineResProp.VarType;
if elt.InheritsFrom(TPasUnresolvedTypeRef) then
elt := SymbolTable.FindElement(SymbolTable.GetExternalName(elt));
if elt.InheritsFrom(TPasUnresolvedTypeRef) then begin
Indent(); WriteLn('if ( PTypeInfo(TypeInfo(%s))^.Kind = tkClass ) then',[elt.Name]);
IncIndent();
Indent(); WriteLn('TObject(%s.%s) := nil;',[sOUTPUT_PARAM,origineResProp.Name]);
DecIndent();
end else begin
if SymbolTable.IsOfType(TPasType(elt),TPasClassType) then begin
Indent(); WriteLn('%s.%s := nil;',[sOUTPUT_PARAM,origineResProp.Name]);
end;
end;
end;
end;
var
origineMthd : TPasProcedure;
origineIsFunc : Boolean;
origineArgIN : TPasArgument;
prmCnt,k : Integer;
prm : TPasArgument;
resPrm : TPasResultElement;
elt : TPasElement;
objArgs : Boolean;
localIsFunc : boolean;
begin
origineMthd := FindMember(AIntf,AMthd.Name) as TPasProcedure;
Assert ( origineMthd <> nil );
origineArgIN := TPasArgument(origineMthd.ProcType.Args[0]);
origineIsFunc := origineMthd.InheritsFrom(TPasFunction);
origineResProp := nil;
localIsFunc := AMthd.InheritsFrom(TPasFunction);
if origineIsFunc then begin
origineRes := TPasFunctionType(origineMthd.ProcType).ResultEl;
for k := 0 to ( TPasClassType(origineRes.ResultType).Members.Count - 1 ) do begin
elt := TPasElement(TPasClassType(origineRes.ResultType).Members[k]);
if elt.InheritsFrom(TPasProperty) and ( TPasProperty(elt).Visibility = visPublished ) then begin
origineResProp := TPasProperty(elt);
Break;
end;
end;
Assert( localIsFunc or ( origineResProp = nil ) );
end else begin
origineRes := nil;
end;
prms := AMthd.ProcType.Args;
objArgs := HasObjectsArgs();
IncIndent();
WriteLn('var');
Indent(); WriteLn('%s : TObject;',[sTEMP_OBJ]);
Indent(); WriteLn('%s : %s;',[sINPUT_PARAM,origineArgIN.ArgType.Name]);
if origineIsFunc then begin
Indent(); WriteLn('%s : %s;',[sOUTPUT_PARAM,origineRes.ResultType.Name]);
end;
WriteLn('begin');
Indent(); WriteLn('%s := nil;',[sOUTPUT_PARAM]);
Indent(); WriteLn('%s := %s.Create();',[sINPUT_PARAM,origineArgIN.ArgType.Name]);
Indent(); WriteLn('try');
IncIndent();
prmCnt := prms.Count;
if ( prmCnt > 0 ) then
AssignArguments();
if objArgs then begin
Indent(); WriteLn('try');
IncIndent();
end;
if origineIsFunc then begin
Indent(); WriteLn('%s := %s(%s);',[sOUTPUT_PARAM,origineMthd.Name,sINPUT_PARAM]);
if localIsFunc then begin
Indent(); WriteLn('Result := %s.%s;',[sOUTPUT_PARAM,origineResProp.Name]);
end;
end else begin
Indent(); WriteLn('%s(%s);',[origineMthd.Name,sINPUT_PARAM]);
end;
if objArgs then begin
DecIndent();
Indent(); WriteLn('finally');
IncIndent();
ClearArguments();
DecIndent();
Indent(); WriteLn('end;');
end;
DecIndent();
Indent(); WriteLn('finally');
IncIndent();
Indent(); WriteLn('FreeAndNil(%s);',[sINPUT_PARAM]);
Indent(); WriteLn('FreeAndNil(%s);',[sOUTPUT_PARAM]);
DecIndent();
Indent(); WriteLn('end;');
DecIndent();
WriteLn('end;');
end;
procedure WriteMethodImp(AMthd : TPasProcedure); procedure WriteMethodImp(AMthd : TPasProcedure);
Var Var
prmCnt,k : Integer; prmCnt,k : Integer;
@ -560,9 +908,23 @@ Var
WriteLn(''); WriteLn('');
end; end;
end; end;
if HandleEasyIntf then begin
mthds := AEasyIntf.Members;
if ( mthds.Count > 0 ) then begin
for k := 0 to Pred(mthds.Count) do begin
elt := TPasElement(mthds[k]);
if elt.InheritsFrom(TPasProcedure) then begin
WriteMethodDec(TPasProcedure(elt));
WriteEasyMethodImp(TPasProcedure(elt));
WriteLn('');
end;
end;
end;
end;
end; end;
begin begin
HandleEasyIntf := ( goDocumentWrappedParameter in Self.Options ) and ( AEasyIntf <> nil );
SetCurrentStream(FImpStream); SetCurrentStream(FImpStream);
IncIndent(); IncIndent();
While ( DecIndent() > 0 ) Do While ( DecIndent() > 0 ) Do
@ -2377,6 +2739,7 @@ var
classAncestor : TPasElement; classAncestor : TPasElement;
tmpList : TList; tmpList : TList;
intfCount : PtrInt; intfCount : PtrInt;
locBinding : TwstBinding;
begin begin
intfCount := 0; intfCount := 0;
objLst := nil; objLst := nil;
@ -2491,6 +2854,23 @@ begin
end; end;
end; end;
if ( goDocumentWrappedParameter in Self.Options ) then begin
c := FSymbolTable.BindingCount;
if ( c > 0 ) then begin
for i := 0 to ( c - 1 ) do begin
locBinding := FSymbolTable.Binding[i];
if ( locBinding.BindingStyle = bsDocument ) then begin
clssTyp := DeduceEasyInterfaceForDocStyle(locBinding.Intf,FSymbolTable);
try
GenerateIntf(clssTyp);
finally
clssTyp.Release();
end;
end;
end;
end;
end;
if ( intfCount > 0 ) then begin if ( intfCount > 0 ) then begin
SetCurrentStream(FDecStream); SetCurrentStream(FDecStream);
NewLine(); NewLine();

View File

@ -22,7 +22,7 @@
<RunParams> <RunParams>
<local> <local>
<FormatVersion Value="1"/> <FormatVersion Value="1"/>
<CommandLineParams Value="-uA -i -p -b -x -a&quot;C:\Programmes\lazarus\wst\trunk\tests\files&quot; &quot;C:\Programmes\lazarus\wst\trunk\type_lib_edtr\files\DataSource.xsd&quot;"/> <CommandLineParams Value="-uA -p C:\Programmes\D7\etatcivil\partages\wst\tests\test_suite\files\document_literal_wrapped_binding_style.wsdl -aE:\tmp\docstyle"/>
<LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/> <LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
</local> </local>
</RunParams> </RunParams>
@ -148,10 +148,8 @@
</CodeGeneration> </CodeGeneration>
<Linking> <Linking>
<Debugging> <Debugging>
<UseLineInfoUnit Value="False"/> <GenerateDebugInfo Value="True"/>
<StripSymbols Value="True"/>
</Debugging> </Debugging>
<LinkSmart Value="True"/>
</Linking> </Linking>
<Other> <Other>
<CustomOptions Value="-Xi <CustomOptions Value="-Xi

View File

@ -9,8 +9,9 @@ resourcestring
' -o PATH Relative output directory' + sNEW_LINE + ' -o PATH Relative output directory' + sNEW_LINE +
' -a PATH Absolute output directory' + sNEW_LINE + ' -a PATH Absolute output directory' + sNEW_LINE +
' -w Generate WSDL file; Can be used to get wsdl from pascal' + sNEW_LINE + ' -w Generate WSDL file; Can be used to get wsdl from pascal' + sNEW_LINE +
' -x Generate XSD file; Can be used to get xsd from pascal' + sNEW_LINE; ' -x Generate XSD file; Can be used to get xsd from pascal' + sNEW_LINE +
sCOPYRIGHT = 'ws_helper, Web Service Toolkit 0.5 Copyright (c) 2006, 2007 by Inoussa OUEDRAOGO'; ' -y Generate easy access interface for wrapped parameters' + sNEW_LINE;
sCOPYRIGHT = 'ws_helper, Web Service Toolkit 0.5 Copyright (c) 2006, 2008 by Inoussa OUEDRAOGO';
const const
sWST_META = 'wst_meta'; sWST_META = 'wst_meta';
@ -170,8 +171,10 @@ var
mg : TMetadataGenerator; mg : TMetadataGenerator;
rsrcStrm : TMemoryStream; rsrcStrm : TMemoryStream;
strStream : TStringStream; strStream : TStringStream;
wrappedParams : Boolean;
begin begin
Result := False; Result := False;
wrappedParams := ( cloHandleWrappedParameters in AppOptions );
strStream := nil; strStream := nil;
rsrcStrm := nil; rsrcStrm := nil;
mtdaFS := nil; mtdaFS := nil;
@ -182,6 +185,8 @@ var
if ( cloInterface in AppOptions ) then begin if ( cloInterface in AppOptions ) then begin
WriteLn('Interface file generation...'); WriteLn('Interface file generation...');
g := TInftGenerator.Create(symtable,srcMngr); g := TInftGenerator.Create(symtable,srcMngr);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
end; end;
@ -189,6 +194,8 @@ var
If ( cloProxy in AppOptions ) Then Begin If ( cloProxy in AppOptions ) Then Begin
WriteLn('Proxy file generation...'); WriteLn('Proxy file generation...');
g := TProxyGenerator.Create(symtable,srcMngr); g := TProxyGenerator.Create(symtable,srcMngr);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
End; End;
@ -196,6 +203,8 @@ var
If ( cloBinder in AppOptions ) Then Begin If ( cloBinder in AppOptions ) Then Begin
WriteLn('Binder file generation...'); WriteLn('Binder file generation...');
g := TBinderGenerator.Create(symtable,srcMngr); g := TBinderGenerator.Create(symtable,srcMngr);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
End; End;
@ -203,6 +212,8 @@ var
If ( cloImp in AppOptions ) Then Begin If ( cloImp in AppOptions ) Then Begin
WriteLn('Implementation file generation...'); WriteLn('Implementation file generation...');
g := TImplementationGenerator.Create(symtable,srcMngr); g := TImplementationGenerator.Create(symtable,srcMngr);
if wrappedParams then
g.Options := g.Options + [goDocumentWrappedParameter];
g.Execute(); g.Execute();
FreeAndNil(g); FreeAndNil(g);
End; End;