WSDL Type library Editor :

- class editing bug fix
 - Header block are now persisted in wsdl as a documentation

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@210 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-07-08 21:43:09 +00:00
parent 549deb3e6d
commit 2418e96d91
15 changed files with 364 additions and 2725 deletions

View File

@ -500,7 +500,8 @@ begin
TPasAliasType(sym).DestType.InheritsFrom(TPasNativeSimpleType) TPasAliasType(sym).DestType.InheritsFrom(TPasNativeSimpleType)
) )
) )
) ) and
( not sym.InheritsFrom(TPasNativeSimpleContentClassType) )
then begin then begin
if ( ALs.IndexOfObject(sym) = -1 ) then begin if ( ALs.IndexOfObject(sym) = -1 ) then begin
ALs.AddObject(AContainer.GetExternalName(sym),sym); ALs.AddObject(AContainer.GetExternalName(sym),sym);
@ -541,7 +542,7 @@ begin
decList := mdl.InterfaceSection.Declarations; decList := mdl.InterfaceSection.Declarations;
for j := 0 to Pred(decList.Count) do begin for j := 0 to Pred(decList.Count) do begin
sym := TPasElement(decList[j]); sym := TPasElement(decList[j]);
if sym.InheritsFrom(TPasType) then begin if sym.InheritsFrom(TPasType) and ( not sym.InheritsFrom(TPasNativeSimpleContentClassType) ) then begin
if ( ALs.IndexOfObject(sym) = -1 ) then begin if ( ALs.IndexOfObject(sym) = -1 ) then begin
ALs.AddObject(AContainer.GetExternalName(sym),sym); ALs.AddObject(AContainer.GetExternalName(sym),sym);
end; end;

View File

@ -7,7 +7,7 @@
<MainUnit Value="0"/> <MainUnit Value="0"/>
<IconPath Value="./"/> <IconPath Value="./"/>
<TargetFileExt Value=".exe"/> <TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="1"/> <ActiveEditorIndexAtStart Value="2"/>
</General> </General>
<VersionInfo> <VersionInfo>
<ProjectVersion Value=""/> <ProjectVersion Value=""/>
@ -32,13 +32,13 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="69"> <Units Count="70">
<Unit0> <Unit0>
<Filename Value="typ_lib_edtr.lpr"/> <Filename Value="typ_lib_edtr.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<CursorPos X="24" Y="11"/> <CursorPos X="24" Y="11"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="180"/> <UsageCount Value="186"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="uwsttypelibraryedit.pas"/> <Filename Value="uwsttypelibraryedit.pas"/>
@ -47,10 +47,10 @@
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceFilename Value="uwsttypelibraryedit.lrs"/> <ResourceFilename Value="uwsttypelibraryedit.lrs"/>
<UnitName Value="uwsttypelibraryedit"/> <UnitName Value="uwsttypelibraryedit"/>
<CursorPos X="1" Y="15"/> <CursorPos X="24" Y="535"/>
<TopLine Value="1"/> <TopLine Value="531"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<UsageCount Value="180"/> <UsageCount Value="186"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
@ -63,23 +63,25 @@
<Unit3> <Unit3>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/> <Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<UnitName Value="wsdl2pas_imp"/> <UnitName Value="wsdl2pas_imp"/>
<CursorPos X="1" Y="1"/> <CursorPos X="8" Y="2027"/>
<TopLine Value="1"/> <TopLine Value="2017"/>
<UsageCount Value="73"/> <EditorIndex Value="7"/>
<UsageCount Value="77"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="65" Y="748" ID="2"/> <Item0 X="65" Y="750" ID="2"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
<Filename Value="wsdl_generator.pas"/> <Filename Value="wsdl_generator.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="wsdl_generator"/> <UnitName Value="wsdl_generator"/>
<CursorPos X="2" Y="16"/> <CursorPos X="45" Y="707"/>
<TopLine Value="3"/> <TopLine Value="684"/>
<EditorIndex Value="1"/> <EditorIndex Value="9"/>
<UsageCount Value="180"/> <UsageCount Value="186"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="49" Y="444" ID="1"/> <Item0 X="49" Y="446" ID="1"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit4> </Unit4>
@ -92,7 +94,7 @@
<UnitName Value="uabout"/> <UnitName Value="uabout"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="180"/> <UsageCount Value="186"/>
</Unit5> </Unit5>
<Unit6> <Unit6>
<Filename Value="ufenumedit.pas"/> <Filename Value="ufenumedit.pas"/>
@ -103,15 +105,17 @@
<UnitName Value="ufEnumedit"/> <UnitName Value="ufEnumedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="180"/> <UsageCount Value="186"/>
</Unit6> </Unit6>
<Unit7> <Unit7>
<Filename Value="view_helper.pas"/> <Filename Value="view_helper.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="view_helper"/> <UnitName Value="view_helper"/>
<CursorPos X="36" Y="14"/> <CursorPos X="31" Y="535"/>
<TopLine Value="22"/> <TopLine Value="532"/>
<UsageCount Value="180"/> <EditorIndex Value="6"/>
<UsageCount Value="186"/>
<Loaded Value="True"/>
</Unit7> </Unit7>
<Unit8> <Unit8>
<Filename Value="..\ws_helper\source_utils.pas"/> <Filename Value="..\ws_helper\source_utils.pas"/>
@ -119,15 +123,17 @@
<UnitName Value="source_utils"/> <UnitName Value="source_utils"/>
<CursorPos X="18" Y="20"/> <CursorPos X="18" Y="20"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="180"/> <UsageCount Value="186"/>
</Unit8> </Unit8>
<Unit9> <Unit9>
<Filename Value="edit_helper.pas"/> <Filename Value="edit_helper.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="edit_helper"/> <UnitName Value="edit_helper"/>
<CursorPos X="36" Y="68"/> <CursorPos X="68" Y="504"/>
<TopLine Value="49"/> <TopLine Value="483"/>
<UsageCount Value="180"/> <EditorIndex Value="1"/>
<UsageCount Value="186"/>
<Loaded Value="True"/>
</Unit9> </Unit9>
<Unit10> <Unit10>
<Filename Value="ufclassedit.pas"/> <Filename Value="ufclassedit.pas"/>
@ -136,9 +142,11 @@
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceFilename Value="ufclassedit.lrs"/> <ResourceFilename Value="ufclassedit.lrs"/>
<UnitName Value="ufclassedit"/> <UnitName Value="ufclassedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="52" Y="175"/>
<TopLine Value="1"/> <TopLine Value="154"/>
<UsageCount Value="180"/> <EditorIndex Value="2"/>
<UsageCount Value="186"/>
<Loaded Value="True"/>
</Unit10> </Unit10>
<Unit11> <Unit11>
<Filename Value="ufpropedit.pas"/> <Filename Value="ufpropedit.pas"/>
@ -146,9 +154,11 @@
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceFilename Value="ufpropedit.lrs"/> <ResourceFilename Value="ufpropedit.lrs"/>
<UnitName Value="ufpropedit"/> <UnitName Value="ufpropedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="32" Y="149"/>
<TopLine Value="1"/> <TopLine Value="140"/>
<UsageCount Value="180"/> <EditorIndex Value="3"/>
<UsageCount Value="186"/>
<Loaded Value="True"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
<Filename Value="..\..\..\..\lazarus23_213\lcl\comctrls.pp"/> <Filename Value="..\..\..\..\lazarus23_213\lcl\comctrls.pp"/>
@ -160,9 +170,11 @@
<Unit13> <Unit13>
<Filename Value="..\ws_helper\parserutils.pas"/> <Filename Value="..\ws_helper\parserutils.pas"/>
<UnitName Value="parserutils"/> <UnitName Value="parserutils"/>
<CursorPos X="1" Y="1"/> <CursorPos X="1" Y="93"/>
<TopLine Value="1"/> <TopLine Value="54"/>
<UsageCount Value="61"/> <EditorIndex Value="4"/>
<UsageCount Value="64"/>
<Loaded Value="True"/>
</Unit13> </Unit13>
<Unit14> <Unit14>
<Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\i386.inc"/> <Filename Value="..\..\..\..\lazarus23_213\fpc\2.1.3\source\rtl\i386\i386.inc"/>
@ -247,7 +259,7 @@
<UnitName Value="uinterfaceedit"/> <UnitName Value="uinterfaceedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="144"/> <UsageCount Value="150"/>
</Unit26> </Unit26>
<Unit27> <Unit27>
<Filename Value="uinterfaceedit.lfm"/> <Filename Value="uinterfaceedit.lfm"/>
@ -264,7 +276,7 @@
<UnitName Value="udm"/> <UnitName Value="udm"/>
<CursorPos X="15" Y="2"/> <CursorPos X="15" Y="2"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="139"/> <UsageCount Value="145"/>
</Unit28> </Unit28>
<Unit29> <Unit29>
<Filename Value="..\..\..\..\lazarus23_213\lcl\include\treeview.inc"/> <Filename Value="..\..\..\..\lazarus23_213\lcl\include\treeview.inc"/>
@ -276,17 +288,19 @@
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/> <Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="pascal_parser_intf"/> <UnitName Value="pascal_parser_intf"/>
<CursorPos X="1" Y="1"/> <CursorPos X="73" Y="148"/>
<TopLine Value="1"/> <TopLine Value="156"/>
<UsageCount Value="102"/> <EditorIndex Value="8"/>
<UsageCount Value="108"/>
<Loaded Value="True"/>
</Unit30> </Unit30>
<Unit31> <Unit31>
<Filename Value="..\ws_helper\pparser.pp"/> <Filename Value="..\ws_helper\pparser.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="PParser"/> <UnitName Value="PParser"/>
<CursorPos X="25" Y="22"/> <CursorPos X="4" Y="2133"/>
<TopLine Value="7"/> <TopLine Value="2127"/>
<UsageCount Value="102"/> <UsageCount Value="108"/>
</Unit31> </Unit31>
<Unit32> <Unit32>
<Filename Value="..\ws_helper\logger_intf.pas"/> <Filename Value="..\ws_helper\logger_intf.pas"/>
@ -299,9 +313,9 @@
<Filename Value="..\ws_helper\pastree.pp"/> <Filename Value="..\ws_helper\pastree.pp"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="PasTree"/> <UnitName Value="PasTree"/>
<CursorPos X="3" Y="75"/> <CursorPos X="33" Y="332"/>
<TopLine Value="1"/> <TopLine Value="315"/>
<UsageCount Value="102"/> <UsageCount Value="108"/>
</Unit33> </Unit33>
<Unit34> <Unit34>
<Filename Value="..\..\..\..\lazarus_23_215\lcl\include\treeview.inc"/> <Filename Value="..\..\..\..\lazarus_23_215\lcl\include\treeview.inc"/>
@ -331,9 +345,11 @@
<Unit38> <Unit38>
<Filename Value="..\ws_helper\generator.pas"/> <Filename Value="..\ws_helper\generator.pas"/>
<UnitName Value="generator"/> <UnitName Value="generator"/>
<CursorPos X="1" Y="1"/> <CursorPos X="2" Y="16"/>
<TopLine Value="10"/> <TopLine Value="1"/>
<UsageCount Value="24"/> <EditorIndex Value="5"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit38> </Unit38>
<Unit39> <Unit39>
<Filename Value="..\wst_rtti_filter\dom_cursors.pas"/> <Filename Value="..\wst_rtti_filter\dom_cursors.pas"/>
@ -359,9 +375,9 @@
<Unit42> <Unit42>
<Filename Value="..\ws_helper\pscanner.pp"/> <Filename Value="..\ws_helper\pscanner.pp"/>
<UnitName Value="PScanner"/> <UnitName Value="PScanner"/>
<CursorPos X="19" Y="505"/> <CursorPos X="1" Y="1"/>
<TopLine Value="491"/> <TopLine Value="322"/>
<UsageCount Value="8"/> <UsageCount Value="11"/>
</Unit42> </Unit42>
<Unit43> <Unit43>
<Filename Value="..\ws_helper\metadata_generator.pas"/> <Filename Value="..\ws_helper\metadata_generator.pas"/>
@ -422,7 +438,7 @@
<UnitName Value="uprocedit"/> <UnitName Value="uprocedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="58"/> <UsageCount Value="64"/>
</Unit50> </Unit50>
<Unit51> <Unit51>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\comctrls.pp"/> <Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\comctrls.pp"/>
@ -437,7 +453,7 @@
<UnitName Value="common_gui_utils"/> <UnitName Value="common_gui_utils"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="56"/> <UsageCount Value="62"/>
</Unit52> </Unit52>
<Unit53> <Unit53>
<Filename Value="..\..\..\..\..\DOCUME~1\ADMINI~1\LOCALS~1\Temp\DestBug.pas"/> <Filename Value="..\..\..\..\..\DOCUME~1\ADMINI~1\LOCALS~1\Temp\DestBug.pas"/>
@ -454,7 +470,7 @@
<UnitName Value="uargedit"/> <UnitName Value="uargedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="49"/> <UsageCount Value="55"/>
</Unit54> </Unit54>
<Unit55> <Unit55>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\interfaces\win32\win32wscontrols.pp"/> <Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\interfaces\win32\win32wscontrols.pp"/>
@ -478,7 +494,7 @@
<UnitName Value="umoduleedit"/> <UnitName Value="umoduleedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="41"/> <UsageCount Value="47"/>
</Unit57> </Unit57>
<Unit58> <Unit58>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\stdctrls.pp"/> <Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\stdctrls.pp"/>
@ -495,7 +511,7 @@
<UnitName Value="ubindingedit"/> <UnitName Value="ubindingedit"/>
<CursorPos X="2" Y="12"/> <CursorPos X="2" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="31"/> <UsageCount Value="37"/>
</Unit59> </Unit59>
<Unit60> <Unit60>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/> <Filename Value="..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
@ -536,7 +552,7 @@
<UnitName Value="ufrmsaveoption"/> <UnitName Value="ufrmsaveoption"/>
<CursorPos X="42" Y="64"/> <CursorPos X="42" Y="64"/>
<TopLine Value="42"/> <TopLine Value="42"/>
<UsageCount Value="27"/> <UsageCount Value="33"/>
</Unit65> </Unit65>
<Unit66> <Unit66>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\dialogs.pp"/> <Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\dialogs.pp"/>
@ -559,32 +575,134 @@
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="10"/> <UsageCount Value="10"/>
</Unit68> </Unit68>
<Unit69>
<Filename Value="..\..\..\..\..\lazarus_23_215XX\lcl\include\control.inc"/>
<CursorPos X="1" Y="2403"/>
<TopLine Value="2390"/>
<UsageCount Value="10"/>
</Unit69>
</Units> </Units>
<JumpHistory Count="6" HistoryIndex="5"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="uwsttypelibraryedit.pas"/> <Filename Value="wsdl_generator.pas"/>
<Caret Line="13" Column="3" TopLine="1"/> <Caret Line="654" Column="34" TopLine="650"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="uwsttypelibraryedit.pas"/> <Filename Value="wsdl_generator.pas"/>
<Caret Line="136" Column="52" TopLine="120"/> <Caret Line="694" Column="32" TopLine="675"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="uwsttypelibraryedit.pas"/> <Filename Value="wsdl_generator.pas"/>
<Caret Line="135" Column="16" TopLine="112"/> <Caret Line="149" Column="42" TopLine="136"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="uwsttypelibraryedit.pas"/> <Filename Value="wsdl_generator.pas"/>
<Caret Line="135" Column="16" TopLine="112"/> <Caret Line="695" Column="19" TopLine="677"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="uwsttypelibraryedit.pas"/> <Filename Value="wsdl_generator.pas"/>
<Caret Line="23" Column="18" TopLine="1"/> <Caret Line="289" Column="20" TopLine="274"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="wsdl_generator.pas"/> <Filename Value="wsdl_generator.pas"/>
<Caret Line="963" Column="5" TopLine="886"/> <Caret Line="693" Column="81" TopLine="651"/>
</Position6> </Position6>
<Position7>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position7>
<Position8>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="154" Column="30" TopLine="139"/>
</Position8>
<Position9>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="448" Column="23" TopLine="432"/>
</Position9>
<Position10>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="289" Column="10" TopLine="274"/>
</Position10>
<Position11>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="447" Column="40" TopLine="432"/>
</Position11>
<Position12>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position12>
<Position13>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="155" Column="33" TopLine="140"/>
</Position13>
<Position14>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2062" Column="14" TopLine="2033"/>
</Position14>
<Position15>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="73" Column="35" TopLine="65"/>
</Position15>
<Position16>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2336" Column="16" TopLine="2329"/>
</Position16>
<Position17>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="682" Column="3" TopLine="735"/>
</Position17>
<Position18>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position18>
<Position19>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2100" Column="3" TopLine="2012"/>
</Position19>
<Position20>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="186" Column="55" TopLine="164"/>
</Position20>
<Position21>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2044" Column="46" TopLine="2011"/>
</Position21>
<Position22>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position22>
<Position23>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="181" Column="45" TopLine="164"/>
</Position23>
<Position24>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="149" Column="44" TopLine="148"/>
</Position24>
<Position25>
<Filename Value="wsdl_generator.pas"/>
<Caret Line="155" Column="33" TopLine="133"/>
</Position25>
<Position26>
<Filename Value="..\ws_helper\wsdl2pas_imp.pas"/>
<Caret Line="2092" Column="80" TopLine="2062"/>
</Position26>
<Position27>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<Caret Line="269" Column="16" TopLine="234"/>
</Position27>
<Position28>
<Filename Value="edit_helper.pas"/>
<Caret Line="564" Column="16" TopLine="553"/>
</Position28>
<Position29>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<Caret Line="139" Column="35" TopLine="125"/>
</Position29>
<Position30>
<Filename Value="..\ws_helper\pascal_parser_intf.pas"/>
<Caret Line="145" Column="49" TopLine="130"/>
</Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>

View File

@ -1,3 +1,5 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfClassEdit','FORMDATA',[ LazarusResources.Add('TfClassEdit','FORMDATA',[
'TPF0'#11'TfClassEdit'#10'fClassEdit'#4'Left'#3#190#2#6'Height'#3'#'#2#3'Top' 'TPF0'#11'TfClassEdit'#10'fClassEdit'#4'Left'#3#190#2#6'Height'#3'#'#2#3'Top'
+#3#150#0#5'Width'#3#6#2#18'HorzScrollBar.Page'#3#5#2#18'VertScrollBar.Page'#3 +#3#150#0#5'Width'#3#6#2#18'HorzScrollBar.Page'#3#5#2#18'VertScrollBar.Page'#3

View File

@ -164,14 +164,15 @@ begin
sym := TPasElement(decList[j]); sym := TPasElement(decList[j]);
if sym.InheritsFrom(TPasType) and if sym.InheritsFrom(TPasType) and
( sym.InheritsFrom(TPasClassType) or ( sym.InheritsFrom(TPasClassType) or
sym.InheritsFrom(TPasNativeSimpleType) or sym.InheritsFrom(TPasNativeSimpleContentClassType) or
( sym.InheritsFrom(TPasAliasType) and ( sym.InheritsFrom(TPasAliasType) and
Assigned(TPasAliasType(sym).DestType) and Assigned(TPasAliasType(sym).DestType) and
( TPasAliasType(sym).DestType.InheritsFrom(TPasClassType) or ( TPasAliasType(sym).DestType.InheritsFrom(TPasClassType) or
TPasAliasType(sym).DestType.InheritsFrom(TPasNativeSimpleType) TPasAliasType(sym).DestType.InheritsFrom(TPasNativeSimpleType)
) )
) )
) ) and
( not sym.InheritsFrom(TPasNativeSimpleType) )
then begin then begin
if ( ALs.IndexOfObject(sym) = -1 ) then begin if ( ALs.IndexOfObject(sym) = -1 ) then begin
ALs.AddObject(AContainer.GetExternalName(sym),sym); ALs.AddObject(AContainer.GetExternalName(sym),sym);
@ -286,6 +287,7 @@ begin
if ( FOldAncestor <> nil ) then if ( FOldAncestor <> nil ) then
FOldAncestor.Release(); FOldAncestor.Release();
locObj.AncestorType := trueParent; locObj.AncestorType := trueParent;
locObj.AncestorType.AddRef();
end; end;
end; end;
@ -301,6 +303,7 @@ begin
FObject := AObject; FObject := AObject;
if ( UpdateType = etCreate ) and ( FObject = nil ) then begin if ( UpdateType = etCreate ) and ( FObject = nil ) then begin
FObject := TPasClassType(FSymbolTable.CreateElement(TPasClassType,'new_class',FSymbolTable.CurrentModule.InterfaceSection,visDefault,'',0)); FObject := TPasClassType(FSymbolTable.CreateElement(TPasClassType,'new_class',FSymbolTable.CurrentModule.InterfaceSection,visDefault,'',0));
FObject.ObjKind := okClass;
FSymbolTable.CurrentModule.InterfaceSection.Declarations.Add(FObject); FSymbolTable.CurrentModule.InterfaceSection.Declarations.Add(FObject);
FSymbolTable.CurrentModule.InterfaceSection.Types.Add(FObject); FSymbolTable.CurrentModule.InterfaceSection.Types.Add(FObject);
FSymbolTable.CurrentModule.InterfaceSection.Classes.Add(FObject); FSymbolTable.CurrentModule.InterfaceSection.Classes.Add(FObject);

View File

@ -1,20 +1,20 @@
object fPropEdit: TfPropEdit object fPropEdit: TfPropEdit
Left = 306 Left = 306
Height = 272 Height = 326
Top = 266 Top = 266
Width = 324 Width = 324
HorzScrollBar.Page = 323 HorzScrollBar.Page = 323
VertScrollBar.Page = 271 VertScrollBar.Page = 325
ActiveControl = Button1 ActiveControl = Button1
BorderIcons = [biSystemMenu] BorderIcons = [biSystemMenu]
BorderStyle = bsDialog BorderStyle = bsDialog
Caption = 'fPropEdit' Caption = 'fPropEdit'
ClientHeight = 272 ClientHeight = 326
ClientWidth = 324 ClientWidth = 324
Position = poDesktopCenter Position = poDesktopCenter
object Panel1: TPanel object Panel1: TPanel
Height = 50 Height = 50
Top = 222 Top = 276
Width = 324 Width = 324
Align = alBottom Align = alBottom
ClientHeight = 50 ClientHeight = 50
@ -45,7 +45,7 @@ object fPropEdit: TfPropEdit
end end
end end
object PageControl1: TPageControl object PageControl1: TPageControl
Height = 222 Height = 276
Width = 324 Width = 324
ActivePage = TabSheet1 ActivePage = TabSheet1
Align = alClient Align = alClient
@ -53,7 +53,7 @@ object fPropEdit: TfPropEdit
TabOrder = 1 TabOrder = 1
object TabSheet1: TTabSheet object TabSheet1: TTabSheet
Caption = 'Property' Caption = 'Property'
ClientHeight = 196 ClientHeight = 250
ClientWidth = 316 ClientWidth = 316
object Label1: TLabel object Label1: TLabel
Left = 20 Left = 20
@ -97,6 +97,15 @@ object fPropEdit: TfPropEdit
Caption = 'Attribute Property' Caption = 'Attribute Property'
TabOrder = 2 TabOrder = 2
end end
object edtOptional: TCheckBox
Left = 20
Height = 13
Top = 218
Width = 100
Caption = 'Optional property'
Font.Style = [fsItalic]
TabOrder = 3
end
end end
end end
object ActionList1: TActionList object ActionList1: TActionList

View File

@ -1,12 +1,12 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus } { Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfPropEdit','FORMDATA',[ LazarusResources.Add('TfPropEdit','FORMDATA',[
'TPF0'#10'TfPropEdit'#9'fPropEdit'#4'Left'#3'2'#1#6'Height'#3#16#1#3'Top'#3#10 'TPF0'#10'TfPropEdit'#9'fPropEdit'#4'Left'#3'2'#1#6'Height'#3'F'#1#3'Top'#3#10
+#1#5'Width'#3'D'#1#18'HorzScrollBar.Page'#3'C'#1#18'VertScrollBar.Page'#3#15 +#1#5'Width'#3'D'#1#18'HorzScrollBar.Page'#3'C'#1#18'VertScrollBar.Page'#3'E'
+#1#13'ActiveControl'#7#7'Button1'#11'BorderIcons'#11#12'biSystemMenu'#0#11'B' +#1#13'ActiveControl'#7#7'Button1'#11'BorderIcons'#11#12'biSystemMenu'#0#11'B'
+'orderStyle'#7#8'bsDialog'#7'Caption'#6#9'fPropEdit'#12'ClientHeight'#3#16#1 +'orderStyle'#7#8'bsDialog'#7'Caption'#6#9'fPropEdit'#12'ClientHeight'#3'F'#1
+#11'ClientWidth'#3'D'#1#8'Position'#7#15'poDesktopCenter'#0#6'TPanel'#6'Pane' +#11'ClientWidth'#3'D'#1#8'Position'#7#15'poDesktopCenter'#0#6'TPanel'#6'Pane'
+'l1'#6'Height'#2'2'#3'Top'#3#222#0#5'Width'#3'D'#1#5'Align'#7#8'alBottom'#12 +'l1'#6'Height'#2'2'#3'Top'#3#20#1#5'Width'#3'D'#1#5'Align'#7#8'alBottom'#12
+'ClientHeight'#2'2'#11'ClientWidth'#3'D'#1#8'TabOrder'#2#0#0#7'TButton'#7'Bu' +'ClientHeight'#2'2'#11'ClientWidth'#3'D'#1#8'TabOrder'#2#0#0#7'TButton'#7'Bu'
+'tton1'#4'Left'#3#236#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#7'Anchors' +'tton1'#4'Left'#3#236#0#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'Cancel'#9#7'Ca' +#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Ca'
@ -14,9 +14,9 @@ LazarusResources.Add('TfPropEdit','FORMDATA',[
+'ton2'#4'Left'#3#146#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#6'Action'#7#5 +'ton2'#4'Left'#3#146#0#6'Height'#2#25#3'Top'#2#10#5'Width'#2'K'#6'Action'#7#5
+'actOK'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4 +'actOK'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacing.InnerBorder'#2#4
+#7'Default'#9#8'TabOrder'#2#1#0#0#0#12'TPageControl'#12'PageControl1'#6'Heig' +#7'Default'#9#8'TabOrder'#2#1#0#0#0#12'TPageControl'#12'PageControl1'#6'Heig'
+'ht'#3#222#0#5'Width'#3'D'#1#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alCl' +'ht'#3#20#1#5'Width'#3'D'#1#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alCli'
+'ient'#8'TabIndex'#2#0#8'TabOrder'#2#1#0#9'TTabSheet'#9'TabSheet1'#7'Caption' +'ent'#8'TabIndex'#2#0#8'TabOrder'#2#1#0#9'TTabSheet'#9'TabSheet1'#7'Caption'
+#6#8'Property'#12'ClientHeight'#3#196#0#11'ClientWidth'#3'<'#1#0#6'TLabel'#6 +#6#8'Property'#12'ClientHeight'#3#250#0#11'ClientWidth'#3'<'#1#0#6'TLabel'#6
+'Label1'#4'Left'#2#20#6'Height'#2#14#3'Top'#2#24#5'Width'#2#28#7'Caption'#6#4 +'Label1'#4'Left'#2#20#6'Height'#2#14#3'Top'#2#24#5'Width'#2#28#7'Caption'#6#4
+'Name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#20#6'Height'#2#14 +'Name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#20#6'Height'#2#14
+#3'Top'#2'b'#5'Width'#2#25#7'Caption'#6#4'Type'#11'ParentColor'#8#0#0#5'TEdi' +#3'Top'#2'b'#5'Width'#2#25#7'Caption'#6#4'Type'#11'ParentColor'#8#0#0#5'TEdi'
@ -26,7 +26,10 @@ LazarusResources.Add('TfPropEdit','FORMDATA',[
+'actSearchAscending'#0#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'cs' +'actSearchAscending'#0#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'cs'
+'DropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#12'edtAttribute'#4'Left'#2#20 +'DropDownList'#8'TabOrder'#2#1#0#0#9'TCheckBox'#12'edtAttribute'#4'Left'#2#20
+#6'Height'#2#13#3'Top'#3#170#0#5'Width'#2'e'#7'Caption'#6#18'Attribute Prope' +#6'Height'#2#13#3'Top'#3#170#0#5'Width'#2'e'#7'Caption'#6#18'Attribute Prope'
+'rty'#8'TabOrder'#2#2#0#0#0#0#11'TActionList'#11'ActionList1'#4'left'#2'h'#3 +'rty'#8'TabOrder'#2#2#0#0#9'TCheckBox'#11'edtOptional'#4'Left'#2#20#6'Height'
+'top'#2'h'#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'DisableIfNoHandler'#9 +#2#13#3'Top'#3#218#0#5'Width'#2'd'#7'Caption'#6#17'Optional property'#10'Fon'
+#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOKUpdate'#0#0#0#0 +'t.Style'#11#8'fsItalic'#0#8'TabOrder'#2#3#0#0#0#0#11'TActionList'#11'Action'
+'List1'#4'left'#2'h'#3'top'#2'h'#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18
+'DisableIfNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actO'
+'KUpdate'#0#0#0#0
]); ]);

View File

@ -32,6 +32,7 @@ type
Button1: TButton; Button1: TButton;
Button2: TButton; Button2: TButton;
Button4: TButton; Button4: TButton;
edtOptional : TCheckBox;
edtAttribute: TCheckBox; edtAttribute: TCheckBox;
edtType: TComboBox; edtType: TComboBox;
edtName: TEdit; edtName: TEdit;
@ -130,6 +131,7 @@ begin
edtName.Text := FSymbolTable.GetExternalName(FObject); edtName.Text := FSymbolTable.GetExternalName(FObject);
edtType.ItemIndex := edtType.Items.IndexOfObject(FObject.VarType); edtType.ItemIndex := edtType.Items.IndexOfObject(FObject.VarType);
edtAttribute.Checked := FSymbolTable.IsAttributeProperty(FObject); edtAttribute.Checked := FSymbolTable.IsAttributeProperty(FObject);
edtOptional.Checked := AnsiSameText('Has',Copy(FObject.StoredAccessorName,1,3)) ;
end else begin end else begin
Self.Caption := 'New'; Self.Caption := 'New';
end; end;
@ -151,6 +153,7 @@ begin
FObject := locObj; FObject := locObj;
locObj.VarType := propType; locObj.VarType := propType;
locObj.VarType.AddRef(); locObj.VarType.AddRef();
ClassObject.Members.Add(FObject);
end else begin end else begin
locObj := FObject; locObj := FObject;
if ( propType <> locObj.VarType ) then begin if ( propType <> locObj.VarType ) then begin
@ -161,6 +164,12 @@ begin
end; end;
locObj.Name := typIntName; locObj.Name := typIntName;
end; end;
if edtOptional.Checked then
locObj.StoredAccessorName := 'Has' + locObj.Name
else
locObj.StoredAccessorName := 'True';
locObj.ReadAccessorName := 'F' + locObj.Name;
locObj.WriteAccessorName := 'F' + locObj.Name;
FSymbolTable.RegisterExternalAlias(locObj,typExtName); FSymbolTable.RegisterExternalAlias(locObj,typExtName);
//if ( edtAttribute.Checked <> FSymbolTable.IsAttributeProperty(locObj) ) then //if ( edtAttribute.Checked <> FSymbolTable.IsAttributeProperty(locObj) ) then
FSymbolTable.SetPropertyAsAttribute(locObj,edtAttribute.Checked); FSymbolTable.SetPropertyAsAttribute(locObj,edtAttribute.Checked);

File diff suppressed because it is too large Load Diff

View File

@ -1,303 +0,0 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfMain','FORMDATA',[
'TPF0'#6'TfMain'#5'fMain'#4'Left'#2'r'#6'Height'#3#132#2#3'Top'#3#209#0#5'Wid'
+'th'#3'A'#3#18'HorzScrollBar.Page'#3'@'#3#18'VertScrollBar.Page'#3'o'#2#13'A'
+'ctiveControl'#7#9'trvSchema'#7'Caption'#6'+[Web Services Toolkit ] Type Lib'
+'rary Editor'#12'ClientHeight'#3'p'#2#11'ClientWidth'#3'A'#3#4'Menu'#7#9'Mai'
+'nMenu1'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesktopCenter'#0#10'TSta'
+'tusBar'#2'SB'#6'Height'#2#23#3'Top'#3'Y'#2#5'Width'#3'A'#3#6'Panels'#14#1#5
+'Width'#3#200#0#0#1#5'Width'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#6'Pane'
+'l1'#6'Height'#3'Y'#2#5'Width'#3':'#1#5'Align'#7#6'alLeft'#12'ClientHeight'#3
+'Y'#2#11'ClientWidth'#3':'#1#8'TabOrder'#2#0#0#9'TTreeView'#9'trvSchema'#4'L'
+'eft'#2#1#6'Height'#3'W'#2#3'Top'#2#1#5'Width'#3'8'#1#5'Align'#7#8'alClient'
+#17'DefaultItemHeight'#2#15#9'PopupMenu'#7#10'PopupMenu1'#8'TabOrder'#2#0#0#0
+#0#6'TPanel'#6'Panel2'#4'Left'#3'B'#1#6'Height'#3'Y'#2#5'Width'#3#255#1#5'Al'
+'ign'#7#8'alClient'#12'ClientHeight'#3'Y'#2#11'ClientWidth'#3#255#1#8'TabOrd'
+'er'#2#1#0#12'TPageControl'#2'PC'#4'Left'#2#1#6'Height'#3'W'#2#3'Top'#2#1#5
+'Width'#3#253#1#10'ActivePage'#7#11'tsInterface'#5'Align'#7#8'alClient'#8'Ta'
+'bIndex'#2#0#8'TabOrder'#2#0#0#9'TTabSheet'#11'tsInterface'#7'Caption'#6#10
+'&Interface'#12'ClientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#12
+'srcInterface'#6'Height'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'F'
+'ont.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'#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowC'
+'odeFolding'#9#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasS'
+'yn1'#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'#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'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'#12'C'
+'lientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#8'srcProxy'#6'Hei'
+'ght'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'A'
+'NSI_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'#24'BookMarkOpt'
+'ions.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'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'#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'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'ShortCut'#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'Comman'
+'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'@'
+#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
+#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
+'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'ShortC'
+'ut'#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'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'Comman'
+'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C'
+'ommand'#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'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'ShortCu'
+'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh'
+'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#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'Comma'
+'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
+#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnC'
+'hange'#13#0#0#0#9'TTabSheet'#5'tsImp'#7'Caption'#6#24'Im&plementation Skele'
+'ton'#12'ClientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#6'srcImp'
+#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.N'
+'ame'#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'#24'BookMa'
+'rkOptions.OnChange'#13#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'
+#9#22'Gutter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFolding'
+'Width'#2#14#11'Highlighter'#7#10'SynPasSyn1'#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'#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'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'ShortCut'#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'Comman'
+'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'@'
+#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
+#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
+'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'ShortC'
+'ut'#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'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'Comman'
+'d'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5@'#0#1#7'C'
+'ommand'#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'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'ShortCu'
+'t'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'Sh'
+'ortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#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'Comma'
+'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
+#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnC'
+'hange'#13#0#0#0#9'TTabSheet'#8'tsBinder'#7'Caption'#6#7'&Binder'#12'ClientH'
+'eight'#3'='#2#11'ClientWidth'#3#245#1#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_CHA'
+'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'
+'pMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions'
+'.OnChange'#13#15'Gutter.AutoSize'#9#17'Gutter.DigitCount'#2#5#22'Gutter.Sho'
+'wLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutt'
+'er.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#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'#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#22'Select'
+'edColor.OnChange'#13#0#0#0#9'TTabSheet'#5'tsLog'#7'Caption'#6#4'&Log'#12'Cl'
+'ientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#5'TMemo'#6'mmoLog'#6'Height'#3
+'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#13'Lines.Strings'#1#6#0#0#10'S'
+'crollBars'#7#6'ssBoth'#8'TabOrder'#2#0#0#0#0#0#0#9'TSplitter'#9'Splitter1'#4
+'Left'#3':'#1#6'Height'#3'Y'#2#5'Width'#2#8#5'Color'#7#7'clBlack'#11'ParentC'
+'olor'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuI'
+'tem'#9'MenuItem1'#7'Caption'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Ac'
+'tion'#7#10'actNewFile'#7'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9
+'MenuItem2'#7'Caption'#6#1'-'#7'OnClick'#7#18'actOpenFileExecute'#0#0#9'TMen'
+'uItem'#9'MenuItem5'#6'Action'#7#11'actOpenFile'#7'OnClick'#7#18'actOpenFile'
+'Execute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#9'actExport'#7'OnClick'#7
+#16'actExportExecute'#0#0#9'TMenuItem'#9'MenuItem7'#6'Action'#7#9'actSaveAs'
+#7'OnClick'#7#16'actSaveAsExecute'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'
+#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#7'actExit'#7'OnClick'#7#14
+'actExitExecute'#0#0#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#5'&View'#0#9
+'TMenuItem'#10'MenuItem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'ac'
+'tRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem29'#7'Caption'#6#1'-'#0#0#9
+'TMenuItem'#10'MenuItem30'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'act'
+'FullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15'actFullCo'
+'llapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9'TMenuItem'#10'MenuI'
+'tem10'#7'Caption'#6#8'&Edition'#0#9'TMenuItem'#10'MenuItem11'#6'Action'#7#13
+'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'Me'
+'nuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCrea'
+'teExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'Action'#7#13'actIntfCreate'#7
+'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem12'#7'Capti'
+'on'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem13'#6'Action'#7#15'actUpdateObject'#7
+'Caption'#6#13'Update Object'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#0#9
+'TMenuItem'#9'MenuItem6'#6'Action'#7#8'actAbout'#7'Caption'#6#6'&About'#7'On'
+'Click'#7#15'actAboutExecute'#0#0#0#11'TActionList'#2'AL'#4'left'#3'X'#1#3't'
+'op'#2'8'#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#18'DisableI'
+'fNoHandler'#9#9'OnExecute'#7#18'actOpenFileExecute'#0#0#7'TAction'#7'actExi'
+'t'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actExitE'
+'xecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save generated files ..'
+'.'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExportExecute'#8'OnUpdate'
+#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'About'#18'D'
+'isableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TAction'#9'ac'
+'tSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfNoHandler'#9#9'OnExecute'
+#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#13
,'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#18'DisableIfNoHandler'#9
+#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAction'#15'actUpdateObject'#7
+'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actUpdateOb'
+'jectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actR'
+'efreshView'#7'Caption'#6#14'&Refresh Views'#18'DisableIfNoHandler'#9#9'OnEx'
+'ecute'#7#21'actRefreshViewExecute'#0#0#7'TAction'#10'actNewFile'#7'Caption'
+#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17'actNewFileExecute'
+#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6#20'Create Compound Type'
+#18'DisableIfNoHandler'#9#9'OnExecute'#7#24'actCompoundCreateExecute'#0#0#7
+'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create Interface'#18'DisableIfNo'
+'Handler'#9#9'OnExecute'#7#20'actIntfCreateExecute'#0#0#7'TAction'#13'actFul'
+'lExpand'#7'Caption'#6#11'Full expand'#18'DisableIfNoHandler'#9#9'OnExecute'
+#7#20'actFullExpandExecute'#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6
+#13'Full Collapse'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actFullCollaps'
+'eExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fichier exist'
+'ant'#6'Filter'#6#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0#10'Initi'
+'alDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist'#14'ofE'
+'nableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynPasS'
+'yn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'#18
+'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Foreground'#7#8'clMaroon'
+#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAttri.Foreground'#7#7'clGr'
+'een'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'NestedComments'#9#4'left'#3
+#183#1#3'top'#2'h'#0#0#22'TSelectDirectoryDialog'#3'SDD'#5'Title'#6#16'Selec'
+'t Directory'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEna'
+'bleSizing'#12'ofViewDetail'#0#4'left'#3#176#1#3'top'#3#152#0#0#0#11'TSaveDi'
+'alog'#2'SD'#5'Title'#6#27'Enregistrer le fichier sous'#10'DefaultExt'#6#5'.'
+'WSDL'#6'Filter'#6#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0#7'Optio'
+'ns'#11#15'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3
+#242#1#3'top'#3#174#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#128#1#3'to'
+'p'#3#8#1#0#9'TMenuItem'#10'MenuItem28'#6'Action'#7#13'actFullExpand'#7'OnCl'
+'ick'#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7
+#15'actFullCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'TMenuItem'
+#10'MenuItem26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'#7
+#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10
+'MenuItem21'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCr'
+'eateExecute'#0#0#9'TMenuItem'#10'MenuItem24'#6'Action'#7#13'actIntfCreate'#7
+'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem22'#7'Capti'
+'on'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpdateObject'#7
+'OnClick'#7#22'actUpdateObjectExecute'#0#0#0#10'TPopupMenu'#10'PopupMenu2'#4
+'left'#3#16#2#3'top'#3#235#0#0#9'TMenuItem'#10'MenuItem18'#6'Action'#7#14'ac'
+'tRefreshView'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'Me'
+'nuItem19'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem20'#6'Action'#7#9'a'
+'ctExport'#7'OnClick'#7#16'actExportExecute'#0#0#0#0
]);

View File

@ -1,552 +0,0 @@
unit umain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls,
ExtCtrls, Menus, ActnList,
pastree, pascal_parser_intf, logger_intf,
SynHighlighterPas, SynEdit, StdCtrls;
type
{ TfMain }
TfMain = class(TForm)
actExit: TAction;
actExport: TAction;
actAbout: TAction;
actEnumCreate: TAction;
actCompoundCreate: TAction;
actIntfCreate: TAction;
actFullExpand: TAction;
actFullCollapse: TAction;
actNewFile: TAction;
actRefreshView: TAction;
actUpdateObject: TAction;
actSaveAs: TAction;
actOpenFile: TAction;
AL: TActionList;
MainMenu1: TMainMenu;
MenuItem10: TMenuItem;
MenuItem11: TMenuItem;
MenuItem12: TMenuItem;
MenuItem13: TMenuItem;
MenuItem14: TMenuItem;
MenuItem15: TMenuItem;
MenuItem16: TMenuItem;
MenuItem17: TMenuItem;
MenuItem18: TMenuItem;
MenuItem19: TMenuItem;
MenuItem20: TMenuItem;
MenuItem21: TMenuItem;
MenuItem22: TMenuItem;
MenuItem23: TMenuItem;
MenuItem24: TMenuItem;
MenuItem25: TMenuItem;
MenuItem26: TMenuItem;
MenuItem27: TMenuItem;
MenuItem28: TMenuItem;
MenuItem29: TMenuItem;
MenuItem30: TMenuItem;
MenuItem31: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
mmoLog: TMemo;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
OD: TOpenDialog;
PC: TPageControl;
Panel1: TPanel;
Panel2: TPanel;
PopupMenu1: TPopupMenu;
PopupMenu2: TPopupMenu;
SD: TSaveDialog;
SDD: TSelectDirectoryDialog;
Splitter1: TSplitter;
srcInterface: TSynEdit;
SB: TStatusBar;
srcImp: TSynEdit;
srcBinder: TSynEdit;
srcProxy: TSynEdit;
SynPasSyn1: TSynPasSyn;
tsLog: TTabSheet;
tsImp: TTabSheet;
tsBinder: TTabSheet;
tsInterface: TTabSheet;
tsProxy: TTabSheet;
trvSchema: TTreeView;
procedure actAboutExecute(Sender: TObject);
procedure actCompoundCreateExecute(Sender: TObject);
procedure actEnumCreateExecute(Sender: TObject);
procedure actExitExecute(Sender: TObject);
procedure actExportExecute(Sender: TObject);
procedure actExportUpdate(Sender: TObject);
procedure actFullCollapseExecute(Sender: TObject);
procedure actFullExpandExecute(Sender: TObject);
procedure actIntfCreateExecute(Sender: TObject);
procedure actNewFileExecute(Sender: TObject);
procedure actOpenFileExecute(Sender: TObject);
procedure actRefreshViewExecute(Sender: TObject);
procedure actSaveAsExecute(Sender: TObject);
procedure actUpdateObjectExecute(Sender: TObject);
procedure actUpdateObjectUpdate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
FSymbolTable : TwstPasTreeContainer;
FStatusMessageTag : PtrInt;
private
function GetTypeNode() : TTreeNode;
function GetInterfaceNode() : TTreeNode;
private
procedure ShowStatusMessage(const AMsgType : TMessageType;const AMsg : string);
procedure RenderSymbols();
procedure RenderSources();
public
constructor Create(AOwner : TComponent);override;
destructor Destroy();override;
end;
var
fMain: TfMain;
implementation
uses view_helper, DOM, XMLRead, XMLWrite, HeapTrc,
wsdl2pas_imp, source_utils, command_line_parser, generator, metadata_generator,
binary_streamer, wst_resources_utils, wsdl_generator,
uabout, edit_helper, udm;
const
DEF_FILE_NAME = 'library1';
sWST_META = 'wst_meta';
type
TSourceType = cloInterface .. cloBinder;
TSourceTypes = set of TSourceType;
function ParseWsdlFile(
const AFileName : string;
const ANotifier : TOnParserMessage
):TwstPasTreeContainer;
var
locDoc : TXMLDocument;
prsr : TWsdlParser;
symName : string;
begin
Result := nil;
if FileExists(AFileName) then begin
symName := ChangeFileExt(ExtractFileName(AFileName),'');
if ( symName[Length(symName)] = '.' ) then begin
Delete(symName,Length(symName),1);
end;
prsr := nil;
ReadXMLFile(locDoc,AFileName);
try
Result := TwstPasTreeContainer.Create();
try
prsr := TWsdlParser.Create(locDoc,Result);
prsr.OnMessage := ANotifier;
prsr.Parse(pmAllTypes,symName);
except
FreeAndNil(Result);
raise;
end;
finally
FreeAndNil(prsr);
FreeAndNil(locDoc);
end;
end;
end;
type TOutputType = ( otMemory, otFileSystem );
function GenerateSource(
ASymbolTable : TwstPasTreeContainer;
AOptions : TSourceTypes;
const AOutputType : TOutputType;
const AOutPath : string;
const ANotifier : TOnParserMessage
) : ISourceManager;
procedure Notify(const AMsg : string);
begin
if Assigned(ANotifier) then begin
ANotifier(mtInfo, AMsg);
end;
end;
var
mtdaFS: TMemoryStream;
g : TBaseGenerator;
mg : TMetadataGenerator;
rsrcStrm : TMemoryStream;
begin
Result := CreateSourceManager();
rsrcStrm := nil;
mtdaFS := nil;
mg := nil;
g := Nil;
try
if ( cloInterface in AOptions ) then begin
Notify('Interface file generation...');
g := TInftGenerator.Create(ASymbolTable,Result);
g.Execute();
FreeAndNil(g);
end;
if ( cloProxy in AOptions ) then begin
Notify('Proxy file generation...');
g := TProxyGenerator.Create(ASymbolTable,Result);
g.Execute();
FreeAndNil(g);
end;
if ( cloBinder in AOptions ) then begin
Notify('Binder file generation...');
g := TBinderGenerator.Create(ASymbolTable,Result);
g.Execute();
FreeAndNil(g);
end;
if ( cloImp in AOptions ) then begin
Notify('Implementation file generation...');
g := TImplementationGenerator.Create(ASymbolTable,Result);
g.Execute();
FreeAndNil(g);
end;
if ( AOutputType = otFileSystem ) and ( [cloBinder,cloProxy]*AOptions <> [] ) then begin
Notify('Metadata file generation...');
mtdaFS := TMemoryStream.Create();
mg := TMetadataGenerator.Create(ASymbolTable,CreateBinaryWriter(mtdaFS));
mg.Execute();
mtdaFS.SaveToFile(AOutPath + Format('%s.%s',[ASymbolTable.CurrentModule.Name,sWST_META]));
rsrcStrm := TMemoryStream.Create();
mtdaFS.Position := 0;
BinToWstRessource(UpperCase(ASymbolTable.CurrentModule.Name),mtdaFS,rsrcStrm);
rsrcStrm.SaveToFile(AOutPath + Format('%s.%s',[ASymbolTable.CurrentModule.Name,sWST_EXTENSION]));
end;
if ( AOutputType = otFileSystem ) then begin
Result.SaveToFile(AOutPath);
end;
finally
rsrcStrm.Free();
mg.Free();;
mtdaFS.Free();;
g.Free();
end;
end;
procedure GenerateWSDL_ToStream(ASymbol : TwstPasTreeContainer; ADest : TStream);
var
doc : TXMLDocument;
begin
doc := TXMLDocument.Create();
try
GenerateWSDL(ASymbol,doc);
WriteXML(doc,ADest);
finally
FreeAndNil(doc);
end;
end;
function CreateSymbolTable(const AName : string):TwstPasTreeContainer ;
begin
Result := TwstPasTreeContainer.Create();
try
CreateWstInterfaceSymbolTable(Result);
Result.CreateElement(TPasModule,AName,Result.Package,visDefault,'',0);
Result.CurrentModule.InterfaceSection := TPasSection(Result.CreateElement(TPasSection,'',Result.CurrentModule,visDefault,'',0));
except
FreeAndNil(Result);
raise;
end;
end;
{ TfMain }
procedure TfMain.actOpenFileExecute(Sender: TObject);
var
tmpTable : TwstPasTreeContainer;
curLok : IInterface;
begin
if OD.Execute() then begin
mmoLog.Clear();
PC.ActivePage := tsLog;
curLok := SetCursorHourGlass();
tmpTable := ParseWsdlFile(OD.FileName,@ShowStatusMessage);
if Assigned(tmpTable) then begin
trvSchema.Items.Clear();
FreeAndNil(FSymbolTable);
FSymbolTable := tmpTable;
RenderSymbols();
PC.ActivePage := tsInterface;
end;
end;
curLok := nil;
end;
procedure TfMain.actRefreshViewExecute(Sender: TObject);
begin
RenderSymbols();
end;
procedure TfMain.actSaveAsExecute(Sender: TObject);
var
mstrm : TMemoryStream;
begin
if SD.Execute() then begin
mstrm := TMemoryStream.Create();
try
GenerateWSDL_ToStream(FSymbolTable,mstrm);
mstrm.SaveToFile(SD.FileName);
finally
FreeAndNil(mstrm);
end;
end;
end;
procedure TfMain.actUpdateObjectExecute(Sender: TObject);
var
o : TPasElement;
nd, nd_1 : TTreeNode;
begin
nd := trvSchema.Selected;
if Assigned(nd) and Assigned(nd.Data) then begin
o := TPasElement(nd.Data);
if HasEditor(o) then begin
UpdateObject(o,FSymbolTable);
nd_1 := nd;
trvSchema.BeginUpdate();
try
nd := FindPainter(o).Paint(FSymbolTable,o,GetTypeNode());
nd.MoveTo(nd_1,naInsertBehind);
FreeAndNil(nd_1);
finally
trvSchema.EndUpdate();
end;
end;
end;
end;
procedure TfMain.actUpdateObjectUpdate(Sender: TObject);
begin
TAction(Sender).Enabled :=
Assigned(trvSchema.Selected) and
Assigned(trvSchema.Selected.Data) and
HasEditor(TPasElement(trvSchema.Selected.Data));
end;
procedure TfMain.FormShow(Sender: TObject);
begin
RenderSymbols();
end;
function TfMain.GetTypeNode(): TTreeNode;
begin
Result := trvSchema.TopItem.GetFirstChild().Items[1];
end;
function TfMain.GetInterfaceNode(): TTreeNode;
begin
Result := trvSchema.TopItem.GetFirstChild().Items[2];
end;
procedure TfMain.ShowStatusMessage(const AMsgType : TMessageType;const AMsg: string);
begin
mmoLog.Lines.Add(Format('%s : %s',[MessageTypeNames[AMsgType],AMsg]));
SB.Panels[1].Text := AMsg;
Inc(FStatusMessageTag);
if ( (FStatusMessageTag) > 23 ) then begin
FStatusMessageTag := 0;
Application.ProcessMessages();
end;
end;
procedure TfMain.actExitExecute(Sender: TObject);
begin
Close();
end;
procedure TfMain.actAboutExecute(Sender: TObject);
var
fa : TfAbout;
begin
fa := TfAbout.Create(Self);
try
fa.ShowModal();
finally
fa.Release();
end;
end;
procedure TfMain.actCompoundCreateExecute(Sender: TObject);
var
e : TPasClassType;
begin
e := CreateCompoundObject(FSymbolTable);
if Assigned(e) then begin
FindPainter(e).Paint(FSymbolTable,e,GetTypeNode());
end;
end;
procedure TfMain.actEnumCreateExecute(Sender: TObject);
var
e : TPasEnumType;
begin
e := CreateEnum(FSymbolTable);
if Assigned(e) then begin
FindPainter(e).Paint(FSymbolTable,e,GetTypeNode());
end;
end;
procedure TfMain.actExportExecute(Sender: TObject);
var
curLok : IInterface;
begin
if SDD.Execute() then begin
curLok := SetCursorHourGlass();
GenerateSource(
FSymbolTable,
[cloInterface,cloProxy,cloImp,cloBinder],
otFileSystem,
IncludeTrailingBackslash(SDD.FileName),
nil
);
curLok := nil;
end;
end;
procedure TfMain.actExportUpdate(Sender: TObject);
begin
TAction(Sender).Enabled := Assigned(FSymbolTable) and ( FSymbolTable.CurrentModule.InterfaceSection.Declarations.Count > 0 );
end;
procedure TfMain.actFullCollapseExecute(Sender: TObject);
begin
trvSchema.FullCollapse();
end;
procedure TfMain.actFullExpandExecute(Sender: TObject);
begin
trvSchema.FullExpand();
end;
procedure TfMain.actIntfCreateExecute(Sender: TObject);
var
e : TPasClassType;
begin
e := CreateInterface(FSymbolTable);
if Assigned(e) then begin
FindPainter(e).Paint(FSymbolTable,e,GetInterfaceNode());
end;
end;
procedure TfMain.actNewFileExecute(Sender: TObject);
var
res : Integer;
begin
res := MessageDlg(Application.Title,'Save the current file before ?',mtConfirmation,mbYesNoCancel,0,mbYes);
if ( res = mrCancel ) then begin
Exit;
end;
if ( res = mrYes ) then begin
actSaveAs.Execute();
end;
FreeAndNil(FSymbolTable);
FSymbolTable := CreateSymbolTable(ExtractFileName(DEF_FILE_NAME));
RenderSymbols();
end;
procedure TfMain.RenderSymbols();
var
objPtr : ISymbolPainter;
nd : TTreeNode;
begin
trvSchema.BeginUpdate();
try
trvSchema.Items.Clear();
srcInterface.ClearAll();
nd := trvSchema.Items.AddFirst(nil,'Type Library Editor');
nd.ImageIndex := -1;
nd.StateIndex := -1;
nd.SelectedIndex := -1;
if Assigned(FSymbolTable) then begin
objPtr := FindPainter(FSymbolTable.Package);
if Assigned(objPtr) then begin
objPtr.Paint(FSymbolTable,FSymbolTable.Package,trvSchema.TopItem);
end;
RenderSources();
end;
trvSchema.Items[0].Expand(False);
trvSchema.Items[0].Items[0].Expand(False);
finally
trvSchema.EndUpdate();
end;
ShowStatusMessage(mtInfo,'');
end;
procedure TfMain.RenderSources();
procedure LoadText(const AList : TStrings; ASrc : ISourceStream);
var
srcItemSV : ISavableSourceStream;
begin
if Supports(ASrc,ISavableSourceStream,srcItemSV) then begin
srcItemSV.GetStream().Position := 0;
AList.LoadFromStream(srcItemSV.GetStream());
end;
end;
var
srcMngr : ISourceManager;
begin
if Assigned(FSymbolTable) then begin
if ( FSymbolTable.CurrentModule.InterfaceSection.Declarations.Count > 0 ) then begin
srcMngr := GenerateSource(FSymbolTable,[cloInterface,cloProxy,cloBinder,cloImp],otMemory,'',@ShowStatusMessage);
if Assigned(srcMngr) and ( srcMngr.GetCount() > 0 ) then begin
LoadText(srcInterface.Lines,srcMngr.GetItem(0));
LoadText(srcProxy.Lines,srcMngr.GetItem(1));
LoadText(srcBinder.Lines,srcMngr.GetItem(2));
LoadText(srcImp.Lines,srcMngr.GetItem(3));
end;
end else begin
srcInterface.ClearAll();
srcProxy.ClearAll();
srcBinder.ClearAll();
srcImp.ClearAll();
end;
end;
ShowStatusMessage(mtInfo,'');
end;
constructor TfMain.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FSymbolTable := CreateSymbolTable(ExtractFileName(DEF_FILE_NAME));
trvSchema.Images := DM.IM;
end;
destructor TfMain.Destroy();
begin
trvSchema.Items.Clear();
FreeAndNil(FSymbolTable);
inherited Destroy();
end;
initialization
SetHeapTraceOutput('heap_trace.txt');
{$I umain.lrs}
end.

View File

@ -1,7 +1,7 @@
object fWstTypeLibraryEdit: TfWstTypeLibraryEdit object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
Left = 142 Left = 217
Height = 644 Height = 644
Top = 192 Top = 507
Width = 833 Width = 833
HorzScrollBar.Page = 832 HorzScrollBar.Page = 832
VertScrollBar.Page = 623 VertScrollBar.Page = 623
@ -1985,7 +1985,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit
end end
object OD: TOpenDialog object OD: TOpenDialog
Title = 'Ouvrir un fichier existant' Title = 'Ouvrir un fichier existant'
Filter = 'WDSL files(*.WSDL)|*.WSDL' Filter = 'WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.pas'
FilterIndex = 0 FilterIndex = 0
InitialDir = '.\' InitialDir = '.\'
Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail] Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail]

View File

@ -1,8 +1,8 @@
{ Ceci est un fichier ressource g�n�r� automatiquement par Lazarus } { Ceci est un fichier ressource g�n�r� automatiquement par Lazarus }
LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3#142#0#6'Hei' 'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3#217#0#6'Hei'
+'ght'#3#132#2#3'Top'#3#192#0#5'Width'#3'A'#3#18'HorzScrollBar.Page'#3'@'#3#18 +'ght'#3#132#2#3'Top'#3#251#1#5'Width'#3'A'#3#18'HorzScrollBar.Page'#3'@'#3#18
+'VertScrollBar.Page'#3'o'#2#13'ActiveControl'#7#9'trvSchema'#7'Caption'#6'+[' +'VertScrollBar.Page'#3'o'#2#13'ActiveControl'#7#9'trvSchema'#7'Caption'#6'+['
+'Web Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'p'#2#11'Clie' +'Web Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'p'#2#11'Clie'
+'ntWidth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#6'OnShow'#7 +'ntWidth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#6'OnShow'#7
@ -324,33 +324,33 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[
,'DisableIfNoHandler'#9#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TActi' ,'DisableIfNoHandler'#9#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TActi'
+'on'#7'actSave'#7'Caption'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7 +'on'#7'actSave'#7'Caption'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7
+#14'actSaveExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fich' +#14'actSaveExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un fich'
+'ier existant'#6'Filter'#6#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0 +'ier existant'#6'Filter'#6'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pas)|*.'
+#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist' +'pas'#11'FilterIndex'#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMust'
+#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TS' +'Exist'#15'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3
+'ynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlu' +#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'Comment'
+'e'#18'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Foreground'#7#8'clM' +'Attri.Foreground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#22'Stri'
+'aroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAttri.Foreground'#7 +'ngAttri.Foreground'#7#8'clMaroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'D'
+#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'NestedComments'#9#4'l' +'irectiveAttri.Foreground'#7#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'
+'eft'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'#5'Title'#6#27'Enregistre' +#0#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'
+'r le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6#25'WDSL files(*.WS' +#5'Title'#6#27'Enregistrer le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filt'
+'DL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnab' +'er'#6#25'WDSL files(*.WSDL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'of'
+'leSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMe' +'PathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'
+'nu'#10'PopupMenu1'#4'left'#3#128#1#3'top'#3#8#1#0#9'TMenuItem'#10'MenuItem2' +#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#128#1#3'top'#3#8#1#0#9
+'8'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0#0#9 +'TMenuItem'#10'MenuItem28'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'act'
+'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7#22'a' +'FullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCo'
+'ctFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuItem26'#7'Caption'#6#1'-'#0#0 +'llapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuIte'
+#9'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'act' +'m26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actEnum'
+'EnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem21'#6'Action'#7#17'actCompou' +'Create'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem2'
+'ndCreate'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'Men' +'1'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateExecu'
+'uItem24'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute' +'te'#0#0#9'TMenuItem'#10'MenuItem24'#6'Action'#7#13'actIntfCreate'#7'OnClick'
+#0#0#9'TMenuItem'#10'MenuItem22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuIt' +#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem22'#7'Caption'#6#1'-'
+'em9'#6'Action'#7#15'actUpdateObject'#7'OnClick'#7#22'actUpdateObjectExecute' +#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpdateObject'#7'OnClick'#7
+#0#0#0#10'TPopupMenu'#10'PopupMenu2'#4'left'#3#16#2#3'top'#3#235#0#0#9'TMenu' +#22'actUpdateObjectExecute'#0#0#0#10'TPopupMenu'#10'PopupMenu2'#4'left'#3#16
+'Item'#10'MenuItem18'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefr' +#2#3'top'#3#235#0#0#9'TMenuItem'#10'MenuItem18'#6'Action'#7#14'actRefreshVie'
+'eshViewExecute'#0#0#9'TMenuItem'#10'MenuItem19'#7'Caption'#6#1'-'#0#0#9'TMe' +'w'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem19'#7
+'nuItem'#10'MenuItem20'#6'Action'#7#9'actExport'#7'OnClick'#7#16'actExportEx' +'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem20'#6'Action'#7#9'actExport'#7
+'ecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter'#6#30'Documents' +'OnClick'#7#16'actExportExecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'Defa'
+' WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttri.Foreground'#7#6'clNavy' +'ultFilter'#6#30'Documents WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementAttr'
+#30'AttributeValueAttri.Foreground'#7#8'clPurple'#16'WantBracesParsed'#8#4'l' +'i.Foreground'#7#6'clNavy'#30'AttributeValueAttri.Foreground'#7#8'clPurple'
+'eft'#3#210#1#3'top'#3#252#0#0#0#0 +#16'WantBracesParsed'#8#4'left'#3#210#1#3'top'#3#252#0#0#0#0
]); ]);

View File

@ -12,7 +12,7 @@
} }
unit uwsttypelibraryedit; unit uwsttypelibraryedit;
{$DEFINE WST_IDE} //{$DEFINE WST_IDE}
{$mode objfpc}{$H+} {$mode objfpc}{$H+}
interface interface
@ -146,7 +146,7 @@ implementation
uses view_helper, DOM, XMLRead, XMLWrite, //HeapTrc, uses view_helper, DOM, XMLRead, XMLWrite, //HeapTrc,
wsdl2pas_imp, source_utils, command_line_parser, generator, metadata_generator, wsdl2pas_imp, source_utils, command_line_parser, generator, metadata_generator,
binary_streamer, wst_resources_utils, wsdl_generator, binary_streamer, wst_resources_utils, wsdl_generator,
uabout, edit_helper, udm, ufrmsaveoption uabout, edit_helper, udm, ufrmsaveoption, pparser
{$IFDEF WST_IDE},LazIDEIntf,IDEMsgIntf{$ENDIF}; {$IFDEF WST_IDE},LazIDEIntf,IDEMsgIntf{$ENDIF};
@ -174,6 +174,50 @@ type
TSourceType = cloInterface .. cloBinder; TSourceType = cloInterface .. cloBinder;
TSourceTypes = set of TSourceType; TSourceTypes = set of TSourceType;
function ParsePascalFile(
const AFileName : string;
const ANotifier : TOnParserMessage
) : TwstPasTreeContainer;overload;
const
s_ostype =
{$IFDEF WINDOWS}
'WINDOWS'
{$ELSE}
{$IFDEF LINUX}
'LINUX'
{$ELSE}
''
{$ENDIF}
{$ENDIF};
procedure DoNotify(const AMsgType : TMessageType; const AMsg : string);
begin
if ( ANotifier <> nil ) then
ANotifier(AMsgType,AMsg);
end;
var
symName : string;
begin
symName := ChangeFileExt(ExtractFileName(AFileName),'');
if ( symName[Length(symName)] = '.' ) then begin
Delete(symName,Length(symName),1);
end;
Result := TwstPasTreeContainer.Create();
try
DoNotify(mtInfo,Format('Parsing file %s ...',[AFileName]));
CreateWstInterfaceSymbolTable(Result);
ParseSource(Result,AFileName,s_ostype,'');
DoNotify(mtInfo,Format('File parsed %s .',[AFileName]));
except
on e : Exception do begin
FreeAndNil(Result);
DoNotify(mtError,e.Message);
raise;
end;
end;
end;
function ParseWsdlFile( function ParseWsdlFile(
const AFileName : string; const AFileName : string;
AContent : TStream; AContent : TStream;
@ -448,12 +492,12 @@ end;
function TfWstTypeLibraryEdit.GetTypeNode(): TTreeNode; function TfWstTypeLibraryEdit.GetTypeNode(): TTreeNode;
begin begin
Result := trvSchema.TopItem.GetFirstChild().Items[1]; Result := trvSchema.TopItem.GetFirstChild().Items[0];
end; end;
function TfWstTypeLibraryEdit.GetInterfaceNode(): TTreeNode; function TfWstTypeLibraryEdit.GetInterfaceNode(): TTreeNode;
begin begin
Result := trvSchema.TopItem.GetFirstChild().Items[2]; Result := trvSchema.TopItem.GetFirstChild().Items[1];
end; end;
procedure TfWstTypeLibraryEdit.ShowStatusMessage(const AMsgType : TMessageType;const AMsg: string); procedure TfWstTypeLibraryEdit.ShowStatusMessage(const AMsgType : TMessageType;const AMsg: string);
@ -672,12 +716,17 @@ begin
mmoLog.Clear(); mmoLog.Clear();
PC.ActivePage := tsLog; PC.ActivePage := tsLog;
curLok := SetCursorHourGlass(); curLok := SetCursorHourGlass();
if AnsiSameText('.pas',ExtractFileExt(AFileName)) then begin
tmpTable := ParsePascalFile(AFileName,@ShowStatusMessage);
end else begin
if ( AContent = nil ) then if ( AContent = nil ) then
tmpTable := ParseWsdlFile(AFileName,@ShowStatusMessage) tmpTable := ParseWsdlFile(AFileName,@ShowStatusMessage)
else else
tmpTable := ParseWsdlFile(AFileName,AContent,@ShowStatusMessage); tmpTable := ParseWsdlFile(AFileName,AContent,@ShowStatusMessage);
end;
if Assigned(tmpTable) then begin if Assigned(tmpTable) then begin
FCurrentFileName := AFileName; if AnsiSameText('.pas',ExtractFileExt(AFileName)) then
FCurrentFileName := ChangeFileExt(AFileName,'.wsdl');
trvSchema.Items.Clear(); trvSchema.Items.Clear();
FreeAndNil(FSymbolTable); FreeAndNil(FSymbolTable);
FSymbolTable := tmpTable; FSymbolTable := tmpTable;

View File

@ -539,7 +539,7 @@ end;
class function TClassTypeDefinitionPainter.CanHandle(AObj : TObject): Boolean; class function TClassTypeDefinitionPainter.CanHandle(AObj : TObject): Boolean;
begin begin
Result := ( inherited CanHandle(AObj) ) and Result := ( inherited CanHandle(AObj) ) and
( AObj.InheritsFrom(TPasClassType) and ( TPasClassType(AObj).ObjKind = okClass ) )and ( AObj.InheritsFrom(TPasClassType) and ( TPasClassType(AObj).ObjKind = okClass ) ) and
( not AObj.InheritsFrom(TPasNativeClassType) ); ( not AObj.InheritsFrom(TPasNativeClassType) );
end; end;
@ -704,7 +704,7 @@ initialization
FPainterRegistryInst.RegisterHandler(TTypeAliasDefinitionPainter); FPainterRegistryInst.RegisterHandler(TTypeAliasDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TEnumTypeDefinitionPainter); FPainterRegistryInst.RegisterHandler(TEnumTypeDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TClassTypeDefinitionPainter); FPainterRegistryInst.RegisterHandler(TClassTypeDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TAbstractConstantDefinitionPainter); //FPainterRegistryInst.RegisterHandler(TAbstractConstantDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TInterfaceDefinitionPainter); FPainterRegistryInst.RegisterHandler(TInterfaceDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TMethodDefinitionPainter); FPainterRegistryInst.RegisterHandler(TMethodDefinitionPainter);
FPainterRegistryInst.RegisterHandler(TPasNativeSimpleTypePainter); FPainterRegistryInst.RegisterHandler(TPasNativeSimpleTypePainter);

View File

@ -40,7 +40,7 @@ type
IWsdlTypeHandlerRegistry = Interface IWsdlTypeHandlerRegistry = Interface
['{C5666646-3426-4696-93EE-AFA8EE7CAE53}'] ['{C5666646-3426-4696-93EE-AFA8EE7CAE53}']
function Find( function Find(
ASymbol : TPTreeElement; ASymbol : TPasElement;
out AHandler : IWsdlTypeHandler out AHandler : IWsdlTypeHandler
) : Boolean; ) : Boolean;
procedure Register(AFactory : TBaseTypeHandlerClass); procedure Register(AFactory : TBaseTypeHandlerClass);
@ -53,7 +53,7 @@ type
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
);virtual;abstract; );virtual;abstract;
class function CanHandle(ASymbol : TClass) : Boolean;virtual;abstract; class function CanHandle(ASymbol : TObject) : Boolean;virtual;abstract;
end; end;
{ TTypeDefinition_TypeHandler } { TTypeDefinition_TypeHandler }
@ -65,7 +65,7 @@ type
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
);override; );override;
class function CanHandle(ASymbol : TClass) : Boolean;override; class function CanHandle(ASymbol : TObject) : Boolean;override;
end; end;
{ TTypeAliasDefinition_TypeHandler } { TTypeAliasDefinition_TypeHandler }
@ -77,7 +77,7 @@ type
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
);override; );override;
class function CanHandle(ASymbol : TClass) : Boolean;override; class function CanHandle(ASymbol : TObject) : Boolean;override;
end; end;
{ TEnumTypeHandler } { TEnumTypeHandler }
@ -89,7 +89,7 @@ type
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
);override; );override;
class function CanHandle(ASymbol : TClass) : Boolean;override; class function CanHandle(ASymbol : TObject) : Boolean;override;
end; end;
{ TClassTypeDefinition_TypeHandler } { TClassTypeDefinition_TypeHandler }
@ -101,7 +101,7 @@ type
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
);override; );override;
class function CanHandle(ASymbol : TClass) : Boolean;override; class function CanHandle(ASymbol : TObject) : Boolean;override;
end; end;
{ TBaseArrayRemotable_TypeHandler } { TBaseArrayRemotable_TypeHandler }
@ -113,7 +113,7 @@ type
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
);override; );override;
class function CanHandle(ASymbol : TClass) : Boolean;override; class function CanHandle(ASymbol : TObject) : Boolean;override;
end; end;
procedure GenerateWSDL(ASymbolTable : TwstPasTreeContainer; ADoc : TDOMDocument); procedure GenerateWSDL(ASymbolTable : TwstPasTreeContainer; ADoc : TDOMDocument);
@ -146,11 +146,13 @@ const
sBINDING = 'binding'; sBINDING = 'binding';
sBODY = 'body'; sBODY = 'body';
sCOMPLEX_TYPE = 'complexType'; sCOMPLEX_TYPE = 'complexType';
sCUSTOM_ATTRIBUTE = 'customAttributes';
sDOCUMENT = 'document'; sDOCUMENT = 'document';
sELEMENT = 'element'; sELEMENT = 'element';
sENUMERATION = 'enumeration'; sENUMERATION = 'enumeration';
sEXTENSION = 'extension'; sEXTENSION = 'extension';
sGUID = 'GUID'; sGUID = 'GUID';
sHEADER_Block = 'headerBlock';
sITEM = 'item'; sITEM = 'item';
sLOCATION = 'location'; sLOCATION = 'location';
sMIN_OCCURS = 'minOccurs'; sMIN_OCCURS = 'minOccurs';
@ -222,10 +224,10 @@ type
private private
FList : TClassList; FList : TClassList;
private private
function FindIndexOfHandler(ASymbol : TPTreeElement) : Integer; function FindIndexOfHandler(ASymbol : TPasElement) : Integer;
protected protected
function Find( function Find(
ASymbol : TPTreeElement; ASymbol : TPasElement;
out AHandler : IWsdlTypeHandler out AHandler : IWsdlTypeHandler
) : Boolean; ) : Boolean;
procedure Register(AFactory : TBaseTypeHandlerClass); procedure Register(AFactory : TBaseTypeHandlerClass);
@ -236,7 +238,7 @@ type
{ TWsdlTypeHandlerRegistry } { TWsdlTypeHandlerRegistry }
function TWsdlTypeHandlerRegistry.FindIndexOfHandler(ASymbol: TPTreeElement): Integer; function TWsdlTypeHandlerRegistry.FindIndexOfHandler(ASymbol: TPasElement): Integer;
Var Var
i, c : Integer; i, c : Integer;
begin begin
@ -251,7 +253,7 @@ begin
end; end;
function TWsdlTypeHandlerRegistry.Find( function TWsdlTypeHandlerRegistry.Find(
ASymbol : TPTreeElement; ASymbol : TPasElement;
out AHandler : IWsdlTypeHandler out AHandler : IWsdlTypeHandler
) : Boolean; ) : Boolean;
var var
@ -564,7 +566,7 @@ procedure GenerateWSDL(ASymbolTable : TwstPasTreeContainer; ADoc : TDOMDocument)
( not tri.InheritsFrom(TPasNativeClassType) ) and ( not tri.InheritsFrom(TPasNativeClassType) ) and
( not tri.InheritsFrom(TPasNativeSimpleType) ) ( not tri.InheritsFrom(TPasNativeSimpleType) )
then begin then begin
if gr.Find(TPTreeElement(tri.ClassType),g) then if gr.Find(tri,g) then
g.Generate(ASymbolTable, tri,ADoc); g.Generate(ASymbolTable, tri,ADoc);
end; end;
end; end;
@ -649,11 +651,21 @@ procedure TClassTypeDefinition_TypeHandler.Generate(
const ASymbol : TPasElement; const ASymbol : TPasElement;
AWsdlDocument : TDOMDocument AWsdlDocument : TDOMDocument
); );
var
cplxNode, docNode : TDOMElement;
procedure CreateDocNode();
begin
if ( docNode = nil ) then begin
docNode := CreateElement(sDOCUMENT,cplxNode,AWsdlDocument);
end;
end;
var var
typItm : TPasClassType; typItm : TPasClassType;
propTypItm : TPasType; propTypItm : TPasType;
s, prop_ns_shortName : string; s, prop_ns_shortName : string;
defTypesNode, defSchemaNode, cplxNode, sqcNode, propNode, derivationNode : TDOMElement; defTypesNode, defSchemaNode, sqcNode, propNode, derivationNode : TDOMElement;
i : Integer; i : Integer;
p : TPasProperty; p : TPasProperty;
typeCategory : TTypeCategory; typeCategory : TTypeCategory;
@ -661,6 +673,7 @@ var
trueParent : TPasType; trueParent : TPasType;
begin begin
inherited; inherited;
docNode := nil;
typItm := ASymbol as TPasClassType; typItm := ASymbol as TPasClassType;
if Assigned(typItm) then begin if Assigned(typItm) then begin
GetNameSpaceShortName(AContainer.GetExternalName(AContainer.CurrentModule) ,AWsdlDocument); GetNameSpaceShortName(AContainer.GetExternalName(AContainer.CurrentModule) ,AWsdlDocument);
@ -677,6 +690,12 @@ begin
hasSequence := True; hasSequence := True;
if Assigned(typItm.AncestorType) then begin if Assigned(typItm.AncestorType) then begin
trueParent := typItm.AncestorType; trueParent := typItm.AncestorType;
if trueParent.InheritsFrom(TPasNativeClassType) and AnsiSameText('THeaderBlock',trueParent.Name) then begin
CreateDocNode();
CreateElement(sCUSTOM_ATTRIBUTE,docNode,AWsdlDocument).SetAttribute(sHEADER_Block,'true');
end;
if trueParent.InheritsFrom(TPasAliasType) then begin if trueParent.InheritsFrom(TPasAliasType) then begin
trueParent := GetUltimeType(trueParent); trueParent := GetUltimeType(trueParent);
end; end;
@ -755,7 +774,7 @@ begin
end; end;
end; end;
class function TClassTypeDefinition_TypeHandler.CanHandle(ASymbol: TClass): Boolean; class function TClassTypeDefinition_TypeHandler.CanHandle(ASymbol: TObject): Boolean;
begin begin
Result := inherited CanHandle(ASymbol) and Result := inherited CanHandle(ASymbol) and
( ASymbol.InheritsFrom(TPasClassType) and ( TPasClassType(ASymbol).ObjKind = okClass )); ( ASymbol.InheritsFrom(TPasClassType) and ( TPasClassType(ASymbol).ObjKind = okClass ));
@ -808,7 +827,7 @@ begin
end; end;
end; end;
class function TEnumTypeHandler.CanHandle(ASymbol: TClass): Boolean; class function TEnumTypeHandler.CanHandle(ASymbol: TObject): Boolean;
begin begin
Result := inherited CanHandle(ASymbol) and ASymbol.InheritsFrom(TPasEnumType); Result := inherited CanHandle(ASymbol) and ASymbol.InheritsFrom(TPasEnumType);
end; end;
@ -879,7 +898,7 @@ begin
end; end;
end; end;
class function TBaseArrayRemotable_TypeHandler.CanHandle(ASymbol: TClass): Boolean; class function TBaseArrayRemotable_TypeHandler.CanHandle(ASymbol: TObject): Boolean;
begin begin
Result := inherited CanHandle(ASymbol) and ASymbol.InheritsFrom(TPasArrayType); Result := inherited CanHandle(ASymbol) and ASymbol.InheritsFrom(TPasArrayType);
end; end;
@ -895,7 +914,7 @@ begin
Assert(ASymbol.InheritsFrom(TPasType)); Assert(ASymbol.InheritsFrom(TPasType));
end; end;
class function TTypeDefinition_TypeHandler.CanHandle(ASymbol: TClass): Boolean; class function TTypeDefinition_TypeHandler.CanHandle(ASymbol: TObject): Boolean;
begin begin
Result := Assigned(ASymbol) and ASymbol.InheritsFrom(TPasType); Result := Assigned(ASymbol) and ASymbol.InheritsFrom(TPasType);
end; end;
@ -948,7 +967,7 @@ begin
end; end;
end; end;
class function TTypeAliasDefinition_TypeHandler.CanHandle(ASymbol: TClass): Boolean; class function TTypeAliasDefinition_TypeHandler.CanHandle(ASymbol: TObject): Boolean;
begin begin
Result := Assigned(ASymbol) and ASymbol.InheritsFrom(TPasAliasType); Result := Assigned(ASymbol) and ASymbol.InheritsFrom(TPasAliasType);
end; end;