From a0ef2a66bf63ee87e3d5e9696ace8d2dabc8d762 Mon Sep 17 00:00:00 2001 From: inoussa Date: Sat, 3 May 2014 15:27:53 +0000 Subject: [PATCH] XSD schema import support : GUI handling, store relative fie name git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2993 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- wst/trunk/type_lib_edtr/edit_helper.pas | 128 +++- .../type_lib_edtr/uwsttypelibraryedit.lfm | 57 +- .../type_lib_edtr/uwsttypelibraryedit.lrs | 608 +++++++++--------- .../type_lib_edtr/uwsttypelibraryedit.pas | 113 +++- wst/trunk/ws_helper/locators.pas | 22 +- wst/trunk/ws_helper/wsdl_generator.pas | 19 +- wst/trunk/ws_helper/xsd_generator.pas | 21 +- wst/trunk/ws_helper/xsd_parser.pas | 15 +- 8 files changed, 634 insertions(+), 349 deletions(-) diff --git a/wst/trunk/type_lib_edtr/edit_helper.pas b/wst/trunk/type_lib_edtr/edit_helper.pas index 026eba329..1f77b314d 100644 --- a/wst/trunk/type_lib_edtr/edit_helper.pas +++ b/wst/trunk/type_lib_edtr/edit_helper.pas @@ -22,6 +22,9 @@ uses type + EWstEditException = class(Exception) + end; + TEditType = ( etCreate, etUpdate, etDelete, etClone ); { TObjectUpdater } @@ -82,6 +85,11 @@ type ASymbol : TwstPasTreeContainer ); +resourcestring + s_CantDeleteMainModule = 'Can not delete the main module : "%s".'; + s_CantDeleteStillReferencedObject = 'Can not delete a still referenced Object : "%s".'; + s_NoHandlerFound = 'No handler found.'; + implementation uses Contnrs, Forms, ufEnumedit, ufclassedit, uinterfaceedit, uprocedit, @@ -143,7 +151,7 @@ var h : TObjectUpdaterClass; begin if not UpdaterRegistryInst.FindHandler(AObject,etUpdate,h) then begin - raise Exception.Create('No handler found.'); + raise EWstEditException.Create('No handler found.'); end; Result := h.UpdateObject(AObject,ASymbolTable); end; @@ -156,7 +164,7 @@ var h : TObjectUpdaterClass; begin if not UpdaterRegistryInst.FindHandler(AObject,etDelete,h) then begin - raise Exception.Create('No handler found.'); + raise EWstEditException.Create('No handler found.'); end; h.DeleteObject(AObject,ASymbolTable); end; @@ -263,6 +271,10 @@ type var AObject : TPasElement; ASymbolTable : TwstPasTreeContainer ):Boolean;override; + class procedure DeleteObject( + AObject : TPasElement; + ASymbolTable : TwstPasTreeContainer + );override; end; { TBindingUpdater } @@ -380,7 +392,8 @@ end; class function TModuleUpdater.CanHandle(AObject : TObject; const AEditAction : TEditType): Boolean; begin - Result := ( inherited CanHandle(AObject,AEditAction) ) and AObject.InheritsFrom(TPasModule); + Result := (AObject <> nil) and (AEditAction <> etClone) and + AObject.InheritsFrom(TPasModule); end; class function TModuleUpdater.UpdateObject( @@ -400,6 +413,95 @@ begin f.Release(); end; end; + +function IsDependentOn(AType : TPasType; AUnit : TPasModule) : Boolean; +var + locElement : TPasElement; + locList : TList2; + i : Integer; + locVar : TPasVariable; +begin + Result := False; + if (AType = nil) then + exit; + if AType.InheritsFrom(TPasEnumType) then + exit; + if (AType.Parent = AUnit.InterfaceSection) then + exit(True); + if AType.InheritsFrom(TPasAliasType) then begin + locElement := TPasAliasType(AType).DestType; + if (locElement <> nil) and IsDependentOn(TPasType(locElement),AUnit) then + exit(True); + end; + + if AType.InheritsFrom(TPasClassType) then begin + locElement := TPasClassType(AType).AncestorType; + if (locElement <> nil) and IsDependentOn(TPasType(locElement),AUnit) then + exit(True); + locList := TPasClassType(AType).Members; + for i := 0 to locList.Count-1 do begin + locElement := TPasElement(locList[i]); + if locElement.InheritsFrom(TPasVariable) then begin + locVar := TPasVariable(locElement); + if (locVar.VarType <> nil) and IsDependentOn(locVar.VarType,AUnit) then + exit(True); + end; + end; + locList := TPasClassType(AType).ClassVars; + for i := 0 to locList.Count-1 do begin + locElement := TPasElement(locList[i]); + if locElement.InheritsFrom(TPasVariable) then begin + locVar := TPasVariable(locElement); + if (locVar.VarType <> nil) and IsDependentOn(locVar.VarType,AUnit) then + exit(True); + end; + end; + end; + if AType.InheritsFrom(TPasRecordType) then begin + locList := TPasClassType(AType).Members; + for i := 0 to locList.Count-1 do begin + locElement := TPasElement(locList[i]); + if locElement.InheritsFrom(TPasVariable) then begin + locVar := TPasVariable(locElement); + if (locVar.VarType <> nil) and IsDependentOn(locVar.VarType,AUnit) then + exit(True); + end; + end; + end; +end; + +class procedure TModuleUpdater.DeleteObject( + AObject : TPasElement; + ASymbolTable : TwstPasTreeContainer +); +var + locModule : TPasModule; + i : Integer; + locTypes : TList2; +begin + locModule := AObject as TPasModule; + if (locModule = ASymbolTable.CurrentModule) then + raise EWstEditException.CreateFmt(s_CantDeleteMainModule,[locModule.Name]); + if (ASymbolTable.CurrentModule = nil) then + exit; + locTypes := ASymbolTable.CurrentModule.InterfaceSection.Types; + for i := 0 to locTypes.Count-1 do begin + if IsDependentOn(TPasType(locTypes[i]),locModule) then + raise EWstEditException.CreateFmt(s_CantDeleteStillReferencedObject,[locModule.Name]); + end; + if (locModule.RefCount > 0) and + (ASymbolTable.CurrentModule.InterfaceSection.UsesList.IndexOf(locModule) >= 0) + then begin + ASymbolTable.CurrentModule.InterfaceSection.UsesList.Extract(locModule); + locModule.Release(); + if (locModule.RefCount = 0) and + (ASymbolTable.Package.Modules.IndexOf(locModule) >= 0) + then begin + ASymbolTable.Package.Modules.Extract(locModule); + locModule.Release(); + end; + end; +end; { TArgumentUpdater } @@ -757,7 +859,9 @@ class function TObjectUpdater.CanHandle( const AEditAction : TEditType ) : Boolean; begin - Result := Assigned(AObject) and ( AEditAction <> etClone ); + Result := + (Assigned(AObject) and (AEditAction <> etClone)) and + (not(AObject.InheritsFrom(TPasModule)) or (AEditAction = etUpdate)); end; class procedure TObjectUpdater.DeleteObject ( @@ -767,13 +871,15 @@ class procedure TObjectUpdater.DeleteObject ( var sct : TPasSection; begin - if ( AObject <> nil ) then begin - sct := ASymbolTable.CurrentModule.InterfaceSection; - sct.Declarations.Extract(AObject); - sct.Types.Extract(AObject); - sct.Classes.Extract(AObject); - AObject.Release(); - end; + if (AObject = nil) then + exit; + if (AObject.RefCount > 1) then + raise EWstEditException.CreateFmt(s_CantDeleteStillReferencedObject,[AObject.Name]); + sct := ASymbolTable.CurrentModule.InterfaceSection; + sct.Declarations.Extract(AObject); + sct.Types.Extract(AObject); + sct.Classes.Extract(AObject); + AObject.Release(); end; procedure InternalFillList( diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm index 572e87ea7..b2c44751c 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm @@ -1,7 +1,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit - Left = 321 + Left = 287 Height = 644 - Top = 186 + Top = 261 Width = 833 AllowDropFiles = True Caption = '[Web Services Toolkit ] Type Library Editor' @@ -3447,66 +3447,66 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Style = tbsDivider end object ToolButton4: TToolButton - Left = 98 + Left = 126 Top = 2 Action = actEnumCreate end object ToolButton5: TToolButton - Left = 121 + Left = 149 Top = 2 Action = actCompoundCreate end object ToolButton6: TToolButton - Left = 144 + Left = 172 Top = 2 Action = actRecordCreate end object ToolButton7: TToolButton - Left = 167 + Left = 195 Top = 2 Action = actArrayCreate end object ToolButton8: TToolButton - Left = 190 + Left = 218 Top = 2 Action = actTypeALiasCreate end object ToolButton10: TToolButton - Left = 218 + Left = 246 Top = 2 Action = actClone end object ToolButton11: TToolButton - Left = 213 + Left = 241 Top = 2 Width = 5 Caption = 'ToolButton11' Style = tbsDivider end object ToolButton9: TToolButton - Left = 241 + Left = 269 Top = 2 Action = actUpdateObject end object ToolButton12: TToolButton - Left = 264 + Left = 292 Top = 2 Action = actDelete end object ToolButton13: TToolButton - Left = 310 + Left = 338 Top = 2 Width = 5 Caption = 'ToolButton13' Style = tbsDivider end object ToolButton14: TToolButton - Left = 315 + Left = 343 Top = 2 Action = actIntfCreate end object ToolButton15: TToolButton - Left = 287 + Left = 315 Top = 2 Action = actRefreshView end @@ -3520,6 +3520,18 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Top = 2 Action = actNewFile end + object ToolButton18: TToolButton + Left = 98 + Top = 2 + Action = actAddXsdImport + end + object ToolButton19: TToolButton + Left = 121 + Top = 2 + Width = 5 + Caption = 'ToolButton19' + Style = tbsDivider + end end object MainMenu1: TMainMenu Images = DM.IM @@ -3554,6 +3566,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Action = actSaveXSD OnClick = actSaveXSDExecute end + object MenuItem56: TMenuItem + Action = actAddXsdImport + end object MenuItem17: TMenuItem Caption = '-' end @@ -3768,6 +3783,12 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit OnExecute = actCloneExecute OnUpdate = actCloneUpdate end + object actAddXsdImport: TAction + Caption = 'Add Schema Import' + ImageIndex = 2 + OnExecute = actAddXsdImportExecute + OnUpdate = actAddXsdImportUpdate + end end object OD: TOpenDialog Filter = 'wsdl files(*.wsdl)|*.wsdl|Pascal file (*.pas)|*.pas|XSD files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL' @@ -4742,4 +4763,12 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit left = 576 top = 143 end + object odOpenXSD: TOpenDialog + Filter = 'XSD files ( *.xsd )|*.xsd' + FilterIndex = 0 + InitialDir = '.\' + Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail] + left = 416 + top = 164 + end end diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs index ca24074fa..faa59066a 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs @@ -1,8 +1,8 @@ { This is an automatically generated lazarus resource file } LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ - 'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3'A'#1#6'Heig' - +'ht'#3#132#2#3'Top'#3#186#0#5'Width'#3'A'#3#14'AllowDropFiles'#9#7'Caption'#6 + 'TPF0'#20'TfWstTypeLibraryEdit'#19'fWstTypeLibraryEdit'#4'Left'#3#31#1#6'Heig' + +'ht'#3#132#2#3'Top'#3#5#1#5'Width'#3'A'#3#14'AllowDropFiles'#9#7'Caption'#6 +'+[Web Services Toolkit ] Type Library Editor'#12'ClientHeight'#3'q'#2#11'Cl' +'ientWidth'#3'A'#3#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormClose'#11'OnDro' +'pFiles'#7#13'FormDropFiles'#6'OnShow'#7#8'FormShow'#8'Position'#7#15'poDesk' @@ -780,299 +780,305 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +'ton'#11'ToolButton2'#4'Left'#2'F'#3'Top'#2#2#6'Action'#7#9'actExport'#0#0#11 +'TToolButton'#11'ToolButton3'#4'Left'#2']'#3'Top'#2#2#5'Width'#2#5#7'Caption' +#6#11'ToolButton3'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#11'ToolButt' - +'on4'#4'Left'#2'b'#3'Top'#2#2#6'Action'#7#13'actEnumCreate'#0#0#11'TToolButt' - +'on'#11'ToolButton5'#4'Left'#2'y'#3'Top'#2#2#6'Action'#7#17'actCompoundCreat' - +'e'#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#3#144#0#3'Top'#2#2#6'Action' - +#7#15'actRecordCreate'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#3#167#0#3 - +'Top'#2#2#6'Action'#7#14'actArrayCreate'#0#0#11'TToolButton'#11'ToolButton8' - +#4'Left'#3#190#0#3'Top'#2#2#6'Action'#7#18'actTypeALiasCreate'#0#0#11'TToolB' - +'utton'#12'ToolButton10'#4'Left'#3#218#0#3'Top'#2#2#6'Action'#7#8'actClone'#0 - +#0#11'TToolButton'#12'ToolButton11'#4'Left'#3#213#0#3'Top'#2#2#5'Width'#2#5#7 - +'Caption'#6#12'ToolButton11'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#11 - +'ToolButton9'#4'Left'#3#241#0#3'Top'#2#2#6'Action'#7#15'actUpdateObject'#0#0 - +#11'TToolButton'#12'ToolButton12'#4'Left'#3#8#1#3'Top'#2#2#6'Action'#7#9'act' - +'Delete'#0#0#11'TToolButton'#12'ToolButton13'#4'Left'#3'6'#1#3'Top'#2#2#5'Wi' - +'dth'#2#5#7'Caption'#6#12'ToolButton13'#5'Style'#7#10'tbsDivider'#0#0#11'TTo' - +'olButton'#12'ToolButton14'#4'Left'#3';'#1#3'Top'#2#2#6'Action'#7#13'actIntf' - +'Create'#0#0#11'TToolButton'#12'ToolButton15'#4'Left'#3#31#1#3'Top'#2#2#6'Ac' - +'tion'#7#14'actRefreshView'#0#0#11'TToolButton'#12'ToolButton16'#4'Left'#2#24 - +#3'Top'#2#2#6'Action'#7#11'actOpenFile'#0#0#11'TToolButton'#12'ToolButton17' - +#4'Left'#2#1#3'Top'#2#2#6'Action'#7#10'actNewFile'#0#0#0#9'TMainMenu'#9'Main' - +'Menu1'#6'Images'#7#5'DM.IM'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuItem'#9'Men' - +'uItem1'#7'Caption'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Action'#7#10 - +'actNewFile'#7'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9'MenuItem2' - +#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'actOpenFile' - +#7'OnClick'#7#18'actOpenFileExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action' - +#7#9'actExport'#7'OnClick'#7#16'actExportExecute'#0#0#9'TMenuItem'#9'MenuIte' - +'m7'#6'Action'#7#7'actSave'#7'OnClick'#7#14'actSaveExecute'#0#0#9'TMenuItem' - +#10'MenuItem32'#6'Action'#7#9'actSaveAs'#7'OnClick'#7#16'actSaveAsExecute'#0 - +#0#9'TMenuItem'#10'MenuItem53'#6'Action'#7#10'actSaveXSD'#7'OnClick'#7#17'ac' - +'tSaveXSDExecute'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TM' - +'enuItem'#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'M' - +'enuItem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExe' - +'cute'#0#0#9'TMenuItem'#10'MenuItem50'#6'Action'#7#13'actEditSearch'#7'OnCli' - +'ck'#7#20'actEditSearchExecute'#0#0#9'TMenuItem'#10'MenuItem29'#7'Caption'#6 - +#1'-'#0#0#9'TMenuItem'#10'MenuItem30'#6'Action'#7#13'actFullExpand'#7'OnClic' - +'k'#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15 - +'actFullCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9'TMenuItem' - +#10'MenuItem10'#7'Caption'#6#8'&Edition'#0#9'TMenuItem'#10'MenuItem11'#6'Act' - +'ion'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuI' - +'tem'#10'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCo' - +'mpoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem48'#6'Action'#7#15'actReco' - +'rdCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuI' - +'tem25'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0 - +#0#9'TMenuItem'#10'MenuItem35'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21 - +'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem36'#6'Action'#7#18'actTy' - +'peALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem' - +#10'MenuItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem55'#6'Action'#7 - +#8'actClone'#7'OnClick'#7#15'actCloneExecute'#0#0#9'TMenuItem'#10'MenuItem13' - +#6'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7 - +#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'ac' - +'tDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6 - +'Action'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecut' - +'e'#0#0#0#11'TActionList'#2'AL'#6'Images'#7#5'DM.IM'#4'left'#3'X'#1#3'top'#2 - +'8'#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#10'ImageIndex'#2 - ,#12#9'OnExecute'#7#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0#7'TAction'#7 - +'actExit'#7'Caption'#6#4'Exit'#10'ImageIndex'#2#15#9'OnExecute'#7#14'actExit' - +'Execute'#8'ShortCut'#3's@'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save' - +' generated files ...'#10'ImageIndex'#2#16#9'OnExecute'#7#16'actExportExecut' - +'e'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6 - +#5'About'#10'ImageIndex'#2#17#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TActi' - +'on'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#10'ImageIndex'#2#14#9'OnExecu' - +'te'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction' - +#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#10'ImageIndex'#2#6#9 - +'OnExecute'#7#20'actEnumCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate' - +#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#7'Enabled'#8#10'I' - +'mageIndex'#2#20#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21 - +'actUpdateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&R' - +'efresh Views'#10'ImageIndex'#2#13#9'OnExecute'#7#21'actRefreshViewExecute'#8 - +'ShortCut'#2't'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'New File'#10'Im' - +'ageIndex'#2#18#9'OnExecute'#7#17'actNewFileExecute'#8'ShortCut'#3'N@'#0#0#7 - +'TAction'#17'actCompoundCreate'#7'Caption'#6#17'Create Class Type'#10'ImageI' - +'ndex'#2#4#9'OnExecute'#7#24'actCompoundCreateExecute'#8'OnUpdate'#7#19'actE' - +'numCreateUpdate'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create In' - +'terface'#10'ImageIndex'#2#5#9'OnExecute'#7#20'actIntfCreateExecute'#8'OnUpd' - +'ate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6 - +#11'Full expand'#10'ImageIndex'#2#24#9'OnExecute'#7#20'actFullExpandExecute' - +#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#10'ImageI' - +'ndex'#2#23#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSa' - +'ve'#7'Caption'#6#4'Save'#10'ImageIndex'#2#11#9'OnExecute'#7#14'actSaveExecu' - +'te'#8'ShortCut'#3'S@'#0#0#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#7 - +'Enabled'#8#10'ImageIndex'#2#21#9'OnExecute'#7#16'actDeleteExecute'#8'OnUpda' - +'te'#7#15'actDeleteUpdate'#0#0#7'TAction'#14'actArrayCreate'#7'Caption'#6#12 - +'Create Array'#10'ImageIndex'#2#25#9'OnExecute'#7#21'actArrayCreateExecute'#8 - +'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#18'actTypeALiasCreate'#7 - +'Caption'#6#17'Create Type ALias'#10'ImageIndex'#2#28#9'OnExecute'#7#25'actT' - +'ypeALiasCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction' - +#15'actRecordCreate'#7'Caption'#6#13'Create Record'#10'ImageIndex'#2#26#9'On' - +'Execute'#7#22'actRecordCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate' - +#0#0#7'TAction'#13'actEditSearch'#7'Caption'#6#6'Search'#10'ImageIndex'#2#19 - +#9'OnExecute'#7#20'actEditSearchExecute'#8'OnUpdate'#7#19'actEditSearchUpdat' - +'e'#8'ShortCut'#3'F@'#0#0#7'TAction'#13'actTreeSearch'#7'Caption'#6#6'Search' - +#10'ImageIndex'#2#19#9'OnExecute'#7#20'actTreeSearchExecute'#8'OnUpdate'#7#19 - +'actTreeSearchUpdate'#0#0#7'TAction'#10'actSaveXSD'#7'Caption'#6#20'Save as ' - +'XSD file ...'#10'ImageIndex'#2#11#9'OnExecute'#7#17'actSaveXSDExecute'#0#0#7 + +'on4'#4'Left'#2'~'#3'Top'#2#2#6'Action'#7#13'actEnumCreate'#0#0#11'TToolButt' + +'on'#11'ToolButton5'#4'Left'#3#149#0#3'Top'#2#2#6'Action'#7#17'actCompoundCr' + +'eate'#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#3#172#0#3'Top'#2#2#6'Acti' + +'on'#7#15'actRecordCreate'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#3#195 + +#0#3'Top'#2#2#6'Action'#7#14'actArrayCreate'#0#0#11'TToolButton'#11'ToolButt' + +'on8'#4'Left'#3#218#0#3'Top'#2#2#6'Action'#7#18'actTypeALiasCreate'#0#0#11'T' + +'ToolButton'#12'ToolButton10'#4'Left'#3#246#0#3'Top'#2#2#6'Action'#7#8'actCl' + +'one'#0#0#11'TToolButton'#12'ToolButton11'#4'Left'#3#241#0#3'Top'#2#2#5'Widt' + +'h'#2#5#7'Caption'#6#12'ToolButton11'#5'Style'#7#10'tbsDivider'#0#0#11'TTool' + +'Button'#11'ToolButton9'#4'Left'#3#13#1#3'Top'#2#2#6'Action'#7#15'actUpdateO' + +'bject'#0#0#11'TToolButton'#12'ToolButton12'#4'Left'#3'$'#1#3'Top'#2#2#6'Act' + +'ion'#7#9'actDelete'#0#0#11'TToolButton'#12'ToolButton13'#4'Left'#3'R'#1#3'T' + +'op'#2#2#5'Width'#2#5#7'Caption'#6#12'ToolButton13'#5'Style'#7#10'tbsDivider' + +#0#0#11'TToolButton'#12'ToolButton14'#4'Left'#3'W'#1#3'Top'#2#2#6'Action'#7 + +#13'actIntfCreate'#0#0#11'TToolButton'#12'ToolButton15'#4'Left'#3';'#1#3'Top' + +#2#2#6'Action'#7#14'actRefreshView'#0#0#11'TToolButton'#12'ToolButton16'#4'L' + +'eft'#2#24#3'Top'#2#2#6'Action'#7#11'actOpenFile'#0#0#11'TToolButton'#12'Too' + +'lButton17'#4'Left'#2#1#3'Top'#2#2#6'Action'#7#10'actNewFile'#0#0#11'TToolBu' + +'tton'#12'ToolButton18'#4'Left'#2'b'#3'Top'#2#2#6'Action'#7#15'actAddXsdImpo' + +'rt'#0#0#11'TToolButton'#12'ToolButton19'#4'Left'#2'y'#3'Top'#2#2#5'Width'#2 + +#5#7'Caption'#6#12'ToolButton19'#5'Style'#7#10'tbsDivider'#0#0#0#9'TMainMenu' + +#9'MainMenu1'#6'Images'#7#5'DM.IM'#4'left'#3'`'#1#3'top'#2'p'#0#9'TMenuItem' + +#9'MenuItem1'#7'Caption'#6#6'&Files'#0#9'TMenuItem'#10'MenuItem16'#6'Action' + +#7#10'actNewFile'#7'OnClick'#7#17'actNewFileExecute'#0#0#9'TMenuItem'#9'Menu' + +'Item2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'actOp' + +'enFile'#7'OnClick'#7#18'actOpenFileExecute'#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#7'actSave'#7'OnClick'#7#14'actSaveExecute'#0#0#9'TMe' + +'nuItem'#10'MenuItem32'#6'Action'#7#9'actSaveAs'#7'OnClick'#7#16'actSaveAsEx' + +'ecute'#0#0#9'TMenuItem'#10'MenuItem53'#6'Action'#7#10'actSaveXSD'#7'OnClick' + +#7#17'actSaveXSDExecute'#0#0#9'TMenuItem'#10'MenuItem56'#6'Action'#7#15'actA' + +'ddXsdImport'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TMenuI' + +'tem'#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'MenuI' + +'tem15'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewExecute' + +#0#0#9'TMenuItem'#10'MenuItem50'#6'Action'#7#13'actEditSearch'#7'OnClick'#7 + +#20'actEditSearchExecute'#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 + +'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem31'#6'Action'#7#15'actFul' + +'lCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#0#9'TMenuItem'#10'Me' + +'nuItem10'#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 + +'MenuItem23'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCr' + +'eateExecute'#0#0#9'TMenuItem'#10'MenuItem48'#6'Action'#7#15'actRecordCreate' + +#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'A' + +'ction'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMen' + +'uItem'#10'MenuItem35'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArr' + +'ayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem36'#6'Action'#7#18'actTypeALia' + +'sCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'Men' + +'uItem12'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem55'#6'Action'#7#8'ac' + +'tClone'#7'OnClick'#7#15'actCloneExecute'#0#0#9'TMenuItem'#10'MenuItem13'#6 + +'Action'#7#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22 + +'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'actDe' + ,'lete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#9'TMenuItem'#9'MenuItem6'#6'A' + +'ction'#7#8'actAbout'#7'Caption'#6#6'&About'#7'OnClick'#7#15'actAboutExecute' + +#0#0#0#11'TActionList'#2'AL'#6'Images'#7#5'DM.IM'#4'left'#3'X'#1#3'top'#2'8' + +#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#10'ImageIndex'#2#12#9 + +'OnExecute'#7#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0#7'TAction'#7'actE' + +'xit'#7'Caption'#6#4'Exit'#10'ImageIndex'#2#15#9'OnExecute'#7#14'actExitExec' + +'ute'#8'ShortCut'#3's@'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save gen' + +'erated files ...'#10'ImageIndex'#2#16#9'OnExecute'#7#16'actExportExecute'#8 + +'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'A' + +'bout'#10'ImageIndex'#2#17#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TAction' + +#9'actSaveAs'#7'Caption'#6#11'Save As ...'#10'ImageIndex'#2#14#9'OnExecute'#7 + +#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#13'ac' + +'tEnumCreate'#7'Caption'#6#18'Create Enumeration'#10'ImageIndex'#2#6#9'OnExe' + +'cute'#7#20'actEnumCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7 + +'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#7'Enabled'#8#10'ImageIn' + +'dex'#2#20#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpd' + +'ateObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh' + +' Views'#10'ImageIndex'#2#13#9'OnExecute'#7#21'actRefreshViewExecute'#8'Shor' + +'tCut'#2't'#0#0#7'TAction'#10'actNewFile'#7'Caption'#6#8'New File'#10'ImageI' + +'ndex'#2#18#9'OnExecute'#7#17'actNewFileExecute'#8'ShortCut'#3'N@'#0#0#7'TAc' + +'tion'#17'actCompoundCreate'#7'Caption'#6#17'Create Class Type'#10'ImageInde' + +'x'#2#4#9'OnExecute'#7#24'actCompoundCreateExecute'#8'OnUpdate'#7#19'actEnum' + +'CreateUpdate'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create Inter' + +'face'#10'ImageIndex'#2#5#9'OnExecute'#7#20'actIntfCreateExecute'#8'OnUpdate' + +#7#19'actEnumCreateUpdate'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11 + +'Full expand'#10'ImageIndex'#2#24#9'OnExecute'#7#20'actFullExpandExecute'#0#0 + +#7'TAction'#15'actFullCollapse'#7'Caption'#6#13'Full Collapse'#10'ImageIndex' + +#2#23#9'OnExecute'#7#22'actFullCollapseExecute'#0#0#7'TAction'#7'actSave'#7 + +'Caption'#6#4'Save'#10'ImageIndex'#2#11#9'OnExecute'#7#14'actSaveExecute'#8 + +'ShortCut'#3'S@'#0#0#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#7'Enable' + +'d'#8#10'ImageIndex'#2#21#9'OnExecute'#7#16'actDeleteExecute'#8'OnUpdate'#7 + +#15'actDeleteUpdate'#0#0#7'TAction'#14'actArrayCreate'#7'Caption'#6#12'Creat' + +'e Array'#10'ImageIndex'#2#25#9'OnExecute'#7#21'actArrayCreateExecute'#8'OnU' + +'pdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#18'actTypeALiasCreate'#7'Ca' + +'ption'#6#17'Create Type ALias'#10'ImageIndex'#2#28#9'OnExecute'#7#25'actTyp' + +'eALiasCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0#7'TAction'#15 + +'actRecordCreate'#7'Caption'#6#13'Create Record'#10'ImageIndex'#2#26#9'OnExe' + +'cute'#7#22'actRecordCreateExecute'#8'OnUpdate'#7#19'actEnumCreateUpdate'#0#0 + +#7'TAction'#13'actEditSearch'#7'Caption'#6#6'Search'#10'ImageIndex'#2#19#9'O' + +'nExecute'#7#20'actEditSearchExecute'#8'OnUpdate'#7#19'actEditSearchUpdate'#8 + +'ShortCut'#3'F@'#0#0#7'TAction'#13'actTreeSearch'#7'Caption'#6#6'Search'#10 + +'ImageIndex'#2#19#9'OnExecute'#7#20'actTreeSearchExecute'#8'OnUpdate'#7#19'a' + +'ctTreeSearchUpdate'#0#0#7'TAction'#10'actSaveXSD'#7'Caption'#6#20'Save as X' + +'SD file ...'#10'ImageIndex'#2#11#9'OnExecute'#7#17'actSaveXSDExecute'#0#0#7 +'TAction'#8'actClone'#7'Caption'#6#5'Clone'#10'ImageIndex'#2#27#9'OnExecute' - +#7#15'actCloneExecute'#8'OnUpdate'#7#14'actCloneUpdate'#0#0#0#11'TOpenDialog' - +#2'OD'#6'Filter'#6'gwsdl files(*.wsdl)|*.wsdl|Pascal file (*.pas)|*.pas|XSD ' - +'files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL'#10'InitialDir'#6#2'.\'#7'O' - +'ptions'#11#15'ofPathMustExist'#15'ofFileMustExist'#14'ofEnableSizing'#12'of' - +'ViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1' - +#7'Enabled'#8#19'AsmAttri.FrameEdges'#7#9'sfeAround'#23'CommentAttri.Foregro' - +'und'#7#6'clBlue'#23'CommentAttri.FrameEdges'#7#9'sfeAround'#18'CommentAttri' - +'.Style'#11#6'fsBold'#0#28'IDEDirectiveAttri.FrameEdges'#7#9'sfeAround'#26'I' - +'dentifierAttri.FrameEdges'#7#9'sfeAround'#19'KeyAttri.FrameEdges'#7#9'sfeAr' - +'ound'#22'NumberAttri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7 - +#9'sfeAround'#22'StringAttri.Foreground'#7#8'clMaroon'#22'StringAttri.FrameE' - +'dges'#7#9'sfeAround'#22'SymbolAttri.FrameEdges'#7#9'sfeAround'#17'SymbolAtt' - +'ri.Style'#11#6'fsBold'#0#25'CaseLabelAttri.FrameEdges'#7#9'sfeAround'#25'Di' - +'rectiveAttri.Foreground'#7#7'clGreen'#25'DirectiveAttri.FrameEdges'#7#9'sfe' - +'Around'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12'CompilerMode'#7#9'pcmDel' - +'phi'#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2 - +'SD'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6'Owsdl files (*.wsdl)|*.wsdl|XSD f' - +'iles ( *.xsd )|*.xsd|WDSL files (*.WDSL)|*.WDSL'#11'FilterIndex'#2#0#7'Opti' - +'ons'#11#15'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3 - +#242#1#3'top'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#6'Images'#7#5'DM.IM' - +#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuItem28'#6'Action'#7#13 - +'actFullExpand'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0 - +#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0 - ,#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#7#15'actCloneExecute'#8'OnUpdate'#7#14'actCloneUpdate'#0#0#7'TAction'#15'ac' + +'tAddXsdImport'#7'Caption'#6#17'Add Schema Import'#10'ImageIndex'#2#2#9'OnEx' + +'ecute'#7#22'actAddXsdImportExecute'#8'OnUpdate'#7#21'actAddXsdImportUpdate' + +#0#0#0#11'TOpenDialog'#2'OD'#6'Filter'#6'gwsdl files(*.wsdl)|*.wsdl|Pascal f' + +'ile (*.pas)|*.pas|XSD files ( *.xsd )|*.xsd|WDSL files(*.WSDL)|*.WSDL'#10'I' + +'nitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustExist'#14 + +'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#153#1#3'top'#2'X'#0#0#10'TSynP' + +'asSyn'#10'SynPasSyn1'#7'Enabled'#8#19'AsmAttri.FrameEdges'#7#9'sfeAround'#23 + +'CommentAttri.Foreground'#7#6'clBlue'#23'CommentAttri.FrameEdges'#7#9'sfeAro' + +'und'#18'CommentAttri.Style'#11#6'fsBold'#0#28'IDEDirectiveAttri.FrameEdges' + +#7#9'sfeAround'#26'IdentifierAttri.FrameEdges'#7#9'sfeAround'#19'KeyAttri.Fr' + +'ameEdges'#7#9'sfeAround'#22'NumberAttri.FrameEdges'#7#9'sfeAround'#21'Space' + +'Attri.FrameEdges'#7#9'sfeAround'#22'StringAttri.Foreground'#7#8'clMaroon'#22 + +'StringAttri.FrameEdges'#7#9'sfeAround'#22'SymbolAttri.FrameEdges'#7#9'sfeAr' + +'ound'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'CaseLabelAttri.FrameEdges'#7#9 + +'sfeAround'#25'DirectiveAttri.Foreground'#7#7'clGreen'#25'DirectiveAttri.Fra' + +'meEdges'#7#9'sfeAround'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12'Compiler' + +'Mode'#7#9'pcmDelphi'#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11 + +'TSaveDialog'#2'SD'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6'Owsdl files (*.wsd' + ,'l)|*.wsdl|XSD files ( *.xsd )|*.xsd|WDSL files (*.WDSL)|*.WDSL'#11'FilterIn' + +'dex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDeta' + +'il'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#6'Im' + +'ages'#7#5'DM.IM'#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuItem2' + +'8'#6'Action'#7#13'actFullExpand'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4 + +#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd' + +#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#0#0#255#255#0#0#255#255#0#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#255#255#0#0#255 +#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255 - +#0#0#255#255#0#0#255#255#0#0#255#255#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#153'['#30#196#150'X'#26#201#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255 + +#134#134#136#255#159'c'''#207#175'xA'#255#173'u='#255#151'Y'#27#209#134#134 + +#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#171'r:'#6 + +#168'n5'#217#181#128'K'#255#204#163'z'#255#204#163'z'#255#174'v?'#255#151'Y' + +#27#219#149'W'#25#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<' + +#247#193#146'c'#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152 + +'Z'#29#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134 + +#136#255#181#128'K'#255#208#169#131#255#207#168#129#255#162'f+'#255#134#134 + +#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#177'zD'#255#210#172#135#255#209#171#133#255#166'l2'#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#183#131'O'#255#211#174#138#255#211#174#138#255#171'r:' + +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255 + +#134#134#136#255#134#134#136#255#190#147'i'#255#210#181#151#255#209#179#148 + +#255#182#135'W'#255#134#134#136#255#134#134#136#255#134#134#136#255#134#134 + +#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255 + +#211#182#153#255#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#196#157'u'#255#213#185#158 + +#255#212#184#156#255#189#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134 + +#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#197#158'w'#255 + +#197#158'w'#255#194#154'q'#255#193#152'n'#255#134#134#136#255#134#134#136#255 + +#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7 + +#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'act' + +'FullCollapse'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0 + +#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134 + +#134#136#255#134#134#136#255#197#158'w'#255#197#158'w'#255#194#154'q'#255#193 + +#152'n'#255#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#196#157'u'#255#213#185#158#255#212#184 + +#156#255#189#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255#211#182 + +#153#255#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255 + +#134#134#136#255#134#134#136#255#134#134#136#255#190#147'i'#255#210#181#151 + +#255#209#179#148#255#182#135'W'#255#134#134#136#255#134#134#136#255#134#134 + +#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#183#131'O'#255 + +#211#174#138#255#211#174#138#255#171'r:'#255#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#177'zD'#255 + +#210#172#135#255#209#171#133#255#166'l2'#255#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#181 + +#128'K'#255#208#169#131#255#207#168#129#255#162'f+'#255#134#134#136#255#134 + +#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'#247 + +#193#146'c'#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152'Z' + +#29#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#171'r:'#6#168'n5'#217#181#128'K' + +#255#204#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'#27#219#149'W'#25#6#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#159'c' + +''''#207#175'xA'#255#173'u='#255#151'Y'#27#209#134#134#136#255#134#134#136 + +#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#153'['#30#196#150'X'#26#201#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136 - +#255#159'c'''#207#175'xA'#255#173'u='#255#151'Y'#27#209#134#134#136#255#134 - +#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#171'r:'#6#168'n5'#217 - +#181#128'K'#255#204#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'#27#219#149 - +'W'#25#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'#247#193#146 - +'c'#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152'Z'#29#187 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255 - +#181#128'K'#255#208#169#131#255#207#168#129#255#162'f+'#255#134#134#136#255 - +#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#177'zD'#255#210#172#135#255#209#171#133#255#166'l2'#255#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#183#131'O'#255#211#174#138#255#211#174#138#255#171'r:'#255#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255 - +#134#134#136#255#190#147'i'#255#210#181#151#255#209#179#148#255#182#135'W' - +#255#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255#211#182#153#255 - +#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#196#157'u'#255#213#185#158#255#212#184#156 - +#255#189#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134 - +#134#136#255#134#134#136#255#134#134#136#255#197#158'w'#255#197#158'w'#255 - +#194#154'q'#255#193#152'n'#255#134#134#136#255#134#134#136#255#134#134#136 - +#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#20'actFullExpa' - +'ndExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse' - +#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16 - +#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#134#134#136#255#134#134#136#255#134#134#136#255 - +#134#134#136#255#197#158'w'#255#197#158'w'#255#194#154'q'#255#193#152'n'#255 - +#134#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#255#255#255 + +#255#255#255#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0 + +#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0 + +#255#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#196#157'u'#255#213#185#158#255#212#184#156#255#189 - +#146'g'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#194#154'q'#255#212#184#156#255#211#182#153#255 - +#186#141'a'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134#134#136#255#134#134 - +#136#255#134#134#136#255#134#134#136#255#190#147'i'#255#210#181#151#255#209 - +#179#148#255#182#135'W'#255#134#134#136#255#134#134#136#255#134#134#136#255 - +#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#183#131'O'#255#211#174 - +#138#255#211#174#138#255#171'r:'#255#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#177'zD'#255#210#172#135 - +#255#209#171#133#255#166'l2'#255#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134 - +#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#181#128'K'#255 - +#208#169#131#255#207#168#129#255#162'f+'#255#134#134#136#255#134#134#136#255 - +#134#134#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#175'xA'#184#172't<'#247#193#146'c' - +#255#206#166'~'#255#205#164'|'#255#177'zD'#255#154'] '#247#152'Z'#29#187#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#171'r:'#6#168'n5'#217#181#128'K'#255#204 - +#163'z'#255#204#163'z'#255#174'v?'#255#151'Y'#27#219#149'W'#25#6#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#134 - +#134#136#255#134#134#136#255#134#134#136#255#134#134#136#255#159'c'''#207#175 - +'xA'#255#173'u='#255#151'Y'#27#209#134#134#136#255#134#134#136#255#134#134 - +#136#255#134#134#136#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#153'['#30#196#150'X'#26#201#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255 - +#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actFullCollapseExecute'#0 + +#0#9'TMenuItem'#10'MenuItem39'#6'Action'#7#14'actRefreshView'#11'Bitmap.Data' + +#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0 + +#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#164 + +'e4'#162#164'e4'#1#255#255#255#0#255#255#255#0#164'e4'#5#164'e4S'#167'j:'#190 + +#166'i8'#233#164'f5'#250#167'j:'#228#167'k;'#170#164'e4$'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#164'e4'#255#165'g6'#147#255#255#255#0 + +#164'e4T'#166'g7'#238#181#128'U'#243#206#166#132#255#216#182#151#255#219#185 + +#153#255#211#172#138#255#194#148'm'#252#166'h8'#246#164'f5['#255#255#255#0 + +#255#255#255#0#255#255#255#0#165'g7'#254#183#132'['#247#165'g6'#212#177'zN' + +#244#227#202#180#255#236#218#201#255#231#209#188#255#227#201#176#255#222#190 + +#160#255#210#171#136#255#206#165#130#255#211#174#142#255#166'h8'#245#164'e4*' + +#255#255#255#0#255#255#255#0#166'h8'#253#241#228#216#255#212#178#149#254#244 + +#233#224#255#243#232#221#255#237#220#204#255#210#173#143#254#176'xL'#245#165 + +'f5'#251#166'i9'#255#166'i9'#254#169'm='#255#176'xL'#255#167'j:'#168#255#255 + +#255#0#255#255#255#0#165'g7'#253#246#238#230#255#245#236#227#255#245#237#228 + +#255#230#210#193#255#176'yM'#245#166'i8'#202#164'e46'#255#255#255#0#164'e4j' + +#169'k<'#237#182'|O'#255#167'j:'#254#165'h7'#250#255#255#255#0#255#255#255#0 + +#164'f5'#252#246#238#230#255#235#215#196#255#234#217#201#255#164'e4'#254#164 + +'e4j'#255#255#255#0#255#255#255#0#255#255#255#0#164'e4'#11#165'f5'#233#201 + +#149'l'#141#183#127'S'#194#164'e4'#255#164'e4'#5#255#255#255#0#164'e4'#252 + +#245#237#229#255#246#237#229#255#245#236#228#255#215#183#156#253#166'h7'#224 + ,#164'e4'#16#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#213#164 + +'~'#26#205#153'r9'#164'e4'#252#164'e4'#12#255#255#255#0#164'e4'#249#164'e4' + +#254#164'e4'#254#164'e4'#253#164'e4'#252#164'e4'#251#164'e4'#185#164'e4'#29 + +#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#28#255#255 + +#255#0#255#255#255#0#164'e4'#13#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#164'e4'#160#164'e4'#255#173'tG'#248 + +#175'wL'#247#175'wL'#247#175'xL'#247#164'e4'#255#164'e4'#8#255#255#255#0#164 + +'e4'#252#179'yL~'#207#157'v+'#187#131'W'#19#164'e4'#2#255#255#255#0#255#255 + +#255#0#164'e4'#4#166'h8'#196#208#172#143#250#246#238#231#255#242#230#219#255 + +#246#238#230#255#166'j:'#251#164'e4'#9#255#255#255#0#164'e5'#254#167'j:'#251 + +#199#145'h'#157#165'g7'#230#164'e4#'#255#255#255#0#255#255#255#0#255#255#255 + +#0#164'e4`'#164'f5'#255#233#215#199#255#235#216#198#255#245#236#227#255#166 + +'j:'#250#164'e4'#10#255#255#255#0#166'h8'#243#171'pA'#255#169'l<'#254#167'j:' + +#245#164'e4u'#164'e4'#25#164'e4E'#166'i8'#205#185#136'a'#245#235#219#205#255 + +#245#235#226#255#246#238#230#255#246#238#230#255#167'j:'#250#164'e4'#11#255 + +#255#255#0#167'i9'#155#192#144'i'#253#197#152'r'#255#168'k<'#255#164'f5'#255 + +#167'j:'#252#183#133']'#243#217#187#161#254#241#228#216#255#242#230#219#255 + +#243#232#221#255#206#167#136#253#234#216#200#255#167'j:'#249#164'e4'#13#255 + +#255#255#0#164'e4)'#166'i9'#245#211#173#140#255#220#189#157#255#221#190#161 + +#255#229#203#180#255#233#211#191#255#238#221#204#255#240#226#213#255#231#210 + +#191#255#175'wK'#245#165'g6'#192#171'qC'#247#164'f5'#252#164'e4'#14#255#255 + +#255#0#255#255#255#0#164'e5P'#166'h8'#246#192#144'h'#250#211#176#143#255#223 + +#194#168#255#222#193#168#255#212#177#147#255#185#135'_'#244#165'g7'#240#164 + +'e4X'#255#255#255#0#164'f5f'#164'e4'#255#164'e4'#15#255#255#255#0#255#255#255 + +#0#255#255#255#0#164'e4'#29#167'i:'#159#167'j:'#222#165'g6'#246#167'i9'#229 + +#167'j:'#188#164'e4S'#164'e4'#5#255#255#255#0#255#255#255#0#255#255#255#0#164 + +'e4y'#164'e4'#16#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10 + +'MenuItem26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem51'#6'Action'#7#13 + +'actTreeSearch'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0 + +#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'T' - +'MenuItem'#10'MenuItem39'#6'Action'#7#14'actRefreshView'#11'Bitmap.Data'#10 - +':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0 - +' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#164'e4' - +#162#164'e4'#1#255#255#255#0#255#255#255#0#164'e4'#5#164'e4S'#167'j:'#190#166 - +'i8'#233#164'f5'#250#167'j:'#228#167'k;'#170#164'e4$'#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#164'e4'#255#165'g6'#147#255#255#255#0#164 - +'e4T'#166'g7'#238#181#128'U'#243#206#166#132#255#216#182#151#255#219#185#153 - +#255#211#172#138#255#194#148'm'#252#166'h8'#246#164'f5['#255#255#255#0#255 - +#255#255#0#255#255#255#0#165'g7'#254#183#132'['#247#165'g6'#212#177'zN'#244 - +#227#202#180#255#236#218#201#255#231#209#188#255#227#201#176#255#222#190#160 - +#255#210#171#136#255#206#165#130#255#211#174#142#255#166'h8'#245#164'e4*'#255 - +#255#255#0#255#255#255#0#166'h8'#253#241#228#216#255#212#178#149#254#244#233 - +#224#255#243#232#221#255#237#220#204#255#210#173#143#254#176'xL'#245#165'f5' - +#251#166'i9'#255#166'i9'#254#169'm='#255#176'xL'#255#167'j:'#168#255#255#255 - +#0#255#255#255#0#165'g7'#253#246#238#230#255#245#236#227#255#245#237#228#255 - +#230#210#193#255#176'yM'#245#166'i8'#202#164'e46'#255#255#255#0#164'e4j'#169 - +'k<'#237#182'|O'#255#167'j:'#254#165'h7'#250#255#255#255#0#255#255#255#0#164 - +'f5'#252#246#238#230#255#235#215#196#255#234#217#201#255#164'e4'#254#164'e4j' - +#255#255#255#0#255#255#255#0#255#255#255#0#164'e4'#11#165'f5'#233#201#149'l' - +#141#183#127'S'#194#164'e4'#255#164'e4'#5#255#255#255#0#164'e4'#252#245#237 - +#229#255#246#237#229#255#245#236#228#255#215#183#156#253#166'h7'#224#164'e4' - +#16#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#213#164'~'#26#205 - +#153'r9'#164'e4'#252#164'e4'#12#255#255#255#0#164'e4'#249#164'e4'#254#164'e4' - +#254#164'e4'#253#164'e4'#252#164'e4'#251#164'e4'#185#164'e4'#29#164'e4'#24 - +#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#24#164'e4'#28#255#255#255#0#255#255 - +#255#0#164'e4'#13#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#164'e4'#160#164'e4'#255#173'tG'#248#175'wL'#247#175 - ,'wL'#247#175'xL'#247#164'e4'#255#164'e4'#8#255#255#255#0#164'e4'#252#179'yL~' - +#207#157'v+'#187#131'W'#19#164'e4'#2#255#255#255#0#255#255#255#0#164'e4'#4 - +#166'h8'#196#208#172#143#250#246#238#231#255#242#230#219#255#246#238#230#255 - +#166'j:'#251#164'e4'#9#255#255#255#0#164'e5'#254#167'j:'#251#199#145'h'#157 - +#165'g7'#230#164'e4#'#255#255#255#0#255#255#255#0#255#255#255#0#164'e4`'#164 - +'f5'#255#233#215#199#255#235#216#198#255#245#236#227#255#166'j:'#250#164'e4' - +#10#255#255#255#0#166'h8'#243#171'pA'#255#169'l<'#254#167'j:'#245#164'e4u' - +#164'e4'#25#164'e4E'#166'i8'#205#185#136'a'#245#235#219#205#255#245#235#226 - +#255#246#238#230#255#246#238#230#255#167'j:'#250#164'e4'#11#255#255#255#0#167 - +'i9'#155#192#144'i'#253#197#152'r'#255#168'k<'#255#164'f5'#255#167'j:'#252 - +#183#133']'#243#217#187#161#254#241#228#216#255#242#230#219#255#243#232#221 - +#255#206#167#136#253#234#216#200#255#167'j:'#249#164'e4'#13#255#255#255#0#164 - +'e4)'#166'i9'#245#211#173#140#255#220#189#157#255#221#190#161#255#229#203#180 - +#255#233#211#191#255#238#221#204#255#240#226#213#255#231#210#191#255#175'wK' - +#245#165'g6'#192#171'qC'#247#164'f5'#252#164'e4'#14#255#255#255#0#255#255#255 - +#0#164'e5P'#166'h8'#246#192#144'h'#250#211#176#143#255#223#194#168#255#222 - +#193#168#255#212#177#147#255#185#135'_'#244#165'g7'#240#164'e4X'#255#255#255 - +#0#164'f5f'#164'e4'#255#164'e4'#15#255#255#255#0#255#255#255#0#255#255#255#0 - +#164'e4'#29#167'i:'#159#167'j:'#222#165'g6'#246#167'i9'#229#167'j:'#188#164 - +'e4S'#164'e4'#5#255#255#255#0#255#255#255#0#255#255#255#0#164'e4y'#164'e4'#16 - +#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'MenuItem26'#7'Ca' - +'ption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem51'#6'Action'#7#13'actTreeSearch' - +#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16 - +#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0'>94'#255'940'#255'3/+'#255',)%'#255'''$!'#255' '#29#27#255#23 - +#22#20#26#17#15#14#219#11#10#9#255#7#7#6#255#4#4#3#255#0#0#0#255#0#0#0#255 - +#255#255#255#0#255#255#255#0#255#255#255#0'FA;'#255#133'zp'#255#195#184#174 - +#255'|rh'#255#127'uk'#255'62-'#255#30#28#25#15'(%"'#212#149#137'}'#255#186 - +#174#162#255'|rh'#255#127'uk'#255#1#1#1#255#255#255#255#0#255#255#255#0#255 - +#255#255#0'MGA'#255#131'xo'#255#204#195#186#255'xoe'#255'{qg'#255'/+('#249 - +'''$!'#1#29#27#24#238#149#137'}'#255#194#184#173#255'xoe'#255'|rh'#255#6#5#5 - +#255#255#255#255#0#255#255#255#0#255#255#255#0'SLF'#252#131'xo'#255#204#195 - +#186#255'ypf'#255'qh_'#255'73.'#213#255#255#255#0'%" '#213#133'zp'#255#194 - +#184#173#255'xoe'#255'{qg'#255#10#9#8#252#255#255#255#0#255#255#255#0#255#255 - +#255#0'ZRL'#195#159#146#134#255#204#195#186#255#192#180#170#255#166#152#139 - +#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192#180 - +#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5'\UN' - +#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25#181 - +#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255#255 - +#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255'wm' - +'d'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0#0 - +#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255 + +#255#255#255#0#255#255#255#0'>94'#255'940'#255'3/+'#255',)%'#255'''$!'#255' ' + +#29#27#255#23#22#20#26#17#15#14#219#11#10#9#255#7#7#6#255#4#4#3#255#0#0#0#255 + +#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0'FA;'#255#133'zp'#255#195 + +#184#174#255'|rh'#255#127'uk'#255'62-'#255#30#28#25#15'(%"'#212#149#137'}' + +#255#186#174#162#255'|rh'#255#127'uk'#255#1#1#1#255#255#255#255#0#255#255#255 + +#0#255#255#255#0'MGA'#255#131'xo'#255#204#195#186#255'xoe'#255'{qg'#255'/+(' + +#249'''$!'#1#29#27#24#238#149#137'}'#255#194#184#173#255'xoe'#255'|rh'#255#6 + +#5#5#255#255#255#255#0#255#255#255#0#255#255#255#0'SLF'#252#131'xo'#255#204 + +#195#186#255'ypf'#255'qh_'#255'73.'#213#255#255#255#0'%" '#213#133'zp'#255 + +#194#184#173#255'xoe'#255'{qg'#255#10#9#8#252#255#255#255#0#255#255#255#0#255 + +#255#255#0'ZRL'#195#159#146#134#255#204#195#186#255#192#180#170#255#166#152 + +#139#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192 + +#180#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5 + +'\UN'#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25 + +#181#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255 + +#255#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255 + +'wmd'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0 + +#0#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255 +#130'wm'#255#130'wm'#255#170#145'{'#255#186#167#148#255#183#164#142#250#176 +#151#129#255#159#141'}'#255#131'm['#255'qcW'#255#149#137'}'#255#4#4#3#224#0#0 +#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134 @@ -1083,13 +1089,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#17#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#142#131'x'#226#195#184#174#255'e]U'#255#255#255#255#0'|rh'#255#168#155#142 +#255#156#143#131#228#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#156 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#156 +#143#131#226#188#176#164#255#157#145#133#255#255#255#255#0#174#160#147#255 +#157#145#133#255'e]U'#218#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#7'OnClick'#7#20'actTreeSearchExecute'#0#0#9'TMenuItem' @@ -1147,13 +1153,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#24#22')'#255'@?h'#255'***'#255#1#2#6#255#1#3#20#255#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#26#25'*'#255#136'w'#194#255'XS'#128#255'ppp'#255#127#128#127#255'\cd'#255'-' +'1@'#255#0#0#16#255#0#0#6#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#30#30'4'#255#131'|'#200#255#136#128#204#255'TRx'#255'OQN'#255'gif'#255#141 +#142#141#255#166#166#166#255#150#150#162#255'ZZ'#134#255#14#14'0'#255#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0'""6'#255#135'~'#202#255#133'|'#210#255'~~'#203#255 - ,'jg'#165#255'41J'#255'99?'#255'ggg'#255#130#130#130#255#159#159#159#255#162 + +'jg'#165#255'41J'#255'99?'#255'ggg'#255#130#130#130#255#159#159#159#255#162 +#162#162#255#8#8#8#255#0#0#0#0#0#0#0#0#0#0#0#0'(&F'#255#132#132#206#255#133 +#134#206#255#142#140#207#255#127'v'#200#255'IB'#165#255'40'#154#255'95'#149 +#255',)s'#255'AAj'#255'ZWh'#255'hhj'#255#0#0#0#0#0#0#0#0#0#0#0#0'-*G'#255#135 @@ -1211,13 +1217,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#150#245#255'fj'#235#255'oq'#236#255'nr'#236#255'Z\'#229#255'\a'#231#255'_b' +#233#255'QX'#226#255'mu'#187'0'#255#255#255#0'~'#159#128#10's'#149'u;l'#143 +'o[n'#168'w'#255'LR'#224#255#162#162#244#255'jl'#236#255'ac'#234#255#151#147 - +#247#255#151#147#247#255'dh'#233#255'ef'#234#255'\a'#231#255'OW'#226#255'mu' + ,#247#255#151#147#247#255'dh'#233#255'ef'#234#255'\a'#231#255'OW'#226#255'mu' +#187'0'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +'TZ'#219#254'||'#242#255#151#147#247#255'dh'#233#255'RX'#227#255'RX'#227#255 +'dh'#233#255#151#147#247#255'||'#242#255'MV'#217#254'mu'#187'&'#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'sx'#206#200'no'#236 +#255'fh'#235#255'_b'#233#255'xx'#240#255'tt'#240#255'_b'#233#255'ik'#235#255 - ,'oq'#236#255'rw'#204#200#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +'oq'#236#255'rw'#204#200#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#128#136#202#10't|'#193';mt'#189'[ac'#227 +#255'QW'#226#255'QW'#226#255'_b'#227#255'lt'#188'^t{'#193';'#128#136#202#10 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -1275,13 +1281,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#255#218#219#219#255#210#210#210#255#201#201#200#255#192#192#192#255#183 - +#184#183#255#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223 + ,#184#183#255#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#0#223#223#223#255#218#218#218#255#214#214#214#255#210#210#210#255#206 +#206#206#255#203#203#203#255#202#202#202#255#165#165#165#255#223#223#223#0 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223 +#223#223#0#223#223#223#0#223#223#223#255#220#220#220#255#216#216#216#255#213 - ,#213#213#255#209#209#209#255#206#206#206#255#204#204#204#255#165#165#165#255 + +#213#213#255#209#209#209#255#206#206#206#255#204#204#204#255#165#165#165#255 +#175#174#174#255#166#165#166#255#223#223#223#0#223#223#223#0#223#223#223#0 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#255#218#218#218#255 +#214#214#214#255#210#210#210#255#206#206#206#255#203#203#203#255#202#202#202 @@ -1339,13 +1345,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#241#241#241#255#196#196#196#255#255#255#255#255#255#255#255#255#211#211#211 +#255#196#196#196#255#196#196#196#255#241#241#241#255'\\\l'#21#21#21#0#13#13 +#13#0#13#13#13#0#13#13#13#0#13#13#13#0'###'#0'dddj'#246#246#246#255#192#192 - +#192#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192 + ,#192#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#192 +#192#192#255#246#246#246#255'dddj'#25#25#25'X'#21#21#21'u'#21#21#21'u'#21#21 +#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'ooo'#255#176#176#176 +#255#255#255#255#255#255#255#255#255#255#255#255#255#187#187#187#255#249#249 +#249#255'llli888q'#236#236#236#255#232#232#232#255#232#232#232#255#232#232 +#232#255#232#232#232#255#232#232#232#255#232#232#232#255#236#236#236#255'yyy' - ,#255#173#173#173#255#173#173#173#255#173#173#173#255#173#173#173#255#253#253 + +#255#173#173#173#255#173#173#173#255#173#173#173#255#173#173#173#255#253#253 +#253#255'ttthIIIn'#234#234#234#255'&&&'#255'&&&'#255'&&&'#255'&&&'#255#234 +#234#234#255'fff'#255#234#234#234#255#176#176#176#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255'zzzgRRRm'#238#238 @@ -1403,13 +1409,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#255#223#223#223#0#223#223#223#0#0#0#0#255#230#178#139#255#235#194#162#255 +#234#190#160#255#233#190#160#255#228#178#144#253#223#223#223#0#223#223#223#0 +#231#183#149#254#235#195#166#255#235#197#167#255#236#198#167#255#230#179#140 - +#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#230#179#140#255 + ,#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#230#179#140#255 +#236#198#167#255#235#197#167#255#235#195#166#255#231#183#149#254#223#223#223 +#0#223#223#223#0#230#180#143#228#233#190#155#255#235#195#164#255#236#199#170 +#255#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0 +#230#179#140#255#236#199#170#255#235#195#164#255#233#190#155#255#230#180#143 +#228#223#223#223#0#223#223#223#0#231#177#141':'#231#182#142#147#232#184#147 - ,#222#234#187#152#253#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223 + +#222#234#187#152#253#230#179#140#255#223#223#223#0#223#223#223#0#223#223#223 +#0#223#223#223#0#230#179#140#255#234#187#152#253#232#184#147#222#231#182#142 +#147#231#177#141':'#223#223#223#0#223#223#223#0#204#153'f'#5#238#183#139#13 +#233#180#140'@'#232#179#139#167#232#181#142#253#223#223#223#0#223#223#223#0 @@ -1467,13 +1473,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#255#247#248#248#255#247#248#248#255#247#248#248#255#247#248#248#255#247#248 +#248#255#247#248#248#255#133#138#136#255#255#255#255#0#255#255#255#0#255#255 +#255#0#133#138#136#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + ,#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#133#138#136#255#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#140#142#141#255#133#138#136#255#133#138#136#255 +#133#138#136#255#133#138#136#255#133#138#136#255#133#138#136#255#133#138#136 +#255#133#138#136#255#133#138#136#255#133#138#136#255#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#22'actUpdateObjectExecute'#0 - ,#0#9'TMenuItem'#10'MenuItem33'#6'Action'#7#9'actDelete'#11'Bitmap.Data'#10':' + +#0#9'TMenuItem'#10'MenuItem33'#6'Action'#7#9'actDelete'#11'Bitmap.Data'#10':' +#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' ' +#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -1531,13 +1537,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#255#0#164'e4'#5#164'e4S'#167'j:'#190#166'i8'#233#164'f5'#250#167'j:'#228#167 +'k;'#170#164'e4$'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#164 +'e4'#255#165'g6'#147#255#255#255#0#164'e4T'#166'g7'#238#181#128'U'#243#206 - +#166#132#255#216#182#151#255#219#185#153#255#211#172#138#255#194#148'm'#252 + ,#166#132#255#216#182#151#255#219#185#153#255#211#172#138#255#194#148'm'#252 +#166'h8'#246#164'f5['#255#255#255#0#255#255#255#0#255#255#255#0#165'g7'#254 +#183#132'['#247#165'g6'#212#177'zN'#244#227#202#180#255#236#218#201#255#231 +#209#188#255#227#201#176#255#222#190#160#255#210#171#136#255#206#165#130#255 +#211#174#142#255#166'h8'#245#164'e4*'#255#255#255#0#255#255#255#0#166'h8'#253 +#241#228#216#255#212#178#149#254#244#233#224#255#243#232#221#255#237#220#204 - ,#255#210#173#143#254#176'xL'#245#165'f5'#251#166'i9'#255#166'i9'#254#169'm=' + +#255#210#173#143#254#176'xL'#245#165'f5'#251#166'i9'#255#166'i9'#254#169'm=' +#255#176'xL'#255#167'j:'#168#255#255#255#0#255#255#255#0#165'g7'#253#246#238 +#230#255#245#236#227#255#245#237#228#255#230#210#193#255#176'yM'#245#166'i8' +#202#164'e46'#255#255#255#0#164'e4j'#169'k<'#237#182'|O'#255#167'j:'#254#165 @@ -1595,13 +1601,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#255'>94'#168#255#255#255#0',)%'#168#144#132'y'#255#194#184#173#255#192#180 +#170#255#168#155#142#255#17#15#14#195#255#255#255#0#255#255#255#0'ypf'#5'\UN' +#249'B=8'#255'XQJ'#255'=83'#255'3/+'#255'# '#29#229#23#22#20'0'#30#28#25#181 - +#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255#255 + ,#26#24#22#255'%" '#255#25#23#21#255#15#14#13#255#1#1#1#238#0#0#0#2#255#255 +#255#0#159#146#134#5#157#145#133#255#177#163#150#255#127'uk'#255'|rh'#255'wm' +'d'#255'lc['#255'.*&'#255'VOH'#255#128'vl'#255'|rh'#255'wmd'#255'pg^'#255#0#0 +#0#254#0#0#0#5#255#255#255#0#171#157#144#4#175#161#148#225#186#174#162#255 +#130'wm'#255#130'wm'#255#170#145'{'#255#186#167#148#255#183#164#142#250#176 +#151#129#255#159#141'}'#255#131'm['#255'qcW'#255#149#137'}'#255#4#4#3#224#0#0 - ,#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134 + +#0#3#255#255#255#0#185#172#160#8#135'}rH'#155#142#130#255#157#145#133#255#134 +'{q'#255'VOH'#255'PJD'#255#128'vl'#255'nf]'#255#130'lX'#255#166#145'}'#255 +#148#132't'#255'VOH'#255#12#11#11'z'#7#7#6#1#255#255#255#0#255#255#255#0#255 +#255#255#0'tkb'#255#164#151#138#255#149#137'}'#255#159#146#134#255'>94'#255 @@ -1659,13 +1665,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#218#188#255#27#217#148#255#21#148'P'#255#24#210'|'#255#25#217'w'#255#21#148 +'P'#255'v'#235#173#255#255#255#255#0#204#155#151#255#214#163#157#255#220#174 +#170#255#218#173#168#255#183#189#184#255#21#148'P'#255'L'#228#168#255'?'#235 - +#168#255'$'#218#157#255#26#213#160#255#20#210#144#255#16#206'l'#255#29#214'z' + ,#168#255'$'#218#157#255#26#213#160#255#20#210#144#255#16#206'l'#255#29#214'z' +#255';'#225#140#255#21#148'P'#255#255#255#255#0#255#255#255#0#185#187#186#255 +#212#172#170#255#213#174#173#255#255#255#255#0#193#203#195#255#21#148'P'#255 +#21#148'P'#255'I'#220#156#255'F'#230#162#255#21#148'P'#255','#221#137#255'5' +#219#134#255#21#148'P'#255'v'#235#173#255#255#255#255#0#255#255#255#0#255#255 +#255#0#185#187#186#255#185#187#186#255#189#191#190#255#225#227#226#255#255 - ,#255#255#0#165#184#180#255#21#148'P'#255#21#148'P'#255#21#148'P'#255'R'#232 + +#255#255#0#165#184#180#255#21#148'P'#255#21#148'P'#255#21#148'P'#255'R'#232 +#154#255#21#148'P'#255'v'#235#173#255#255#255#255#0#255#255#255#0#255#255#255 +#0#255#255#255#0#255#255#255#0#225#227#226#255#185#187#186#255#185#187#186 +#255#185#187#186#255#185#187#186#255#185#187#186#255#215#235#225#255#21#148 @@ -1723,13 +1729,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#223#0#231#180#141#254#236#200#172#255#235#195#164#255#234#190#160#255#231 +#183#152#255#228#175#144#255#226#170#139#255#217#145'i'#210#223#223#223#0#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 - +#223#0#223#223#223#0#231#180#141#254#230#179#140#255#230#179#140#255#229#175 + ,#223#0#223#223#223#0#231#180#141#254#230#179#140#255#230#179#140#255#229#175 +#136#255#226#168#128#255#222#159'v'#255#218#149'l'#255#215#142'd'#210#223#223 +#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0 +#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223 +#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223#223#0#223#223 +#223#0#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9'TMenuItem'#10'MenuItem45' - ,#6'Action'#7#17'actCompoundCreate'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6' + +#6'Action'#7#17'actCompoundCreate'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6' +#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0 +'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 @@ -1787,13 +1793,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#176#255#191#159#129#255#184#141'e'#255#209#179#143#255#209#179#143#255#187 +#144'f'#255#188#145'h'#255#183#138'`'#255#177'~R'#255'b'#161'i'#255#192#218 +#197#255#173#208#179#255#171#206#177#255#158#200#166#255'm'#170'v'#255#149'{' - +'~'#255'Za'#200#255'PX'#227#255'OV'#224#255'X_'#200#255#144'x'#132#255#187 + ,'~'#255'Za'#200#255'PX'#227#255'OV'#224#255'X_'#200#255#144'x'#132#255#187 +#144'f'#255#209#179#143#255#198#162'{'#255#169'xO'#254'`'#160'h'#255#197#222 +#201#255#180#212#185#255#164#201#170#255#129#171#154#255'am'#195#255'PX'#224 +#255'fh'#235#255#147#147#244#255'ac'#234#255'X['#228#255'IR'#220#255'`c'#190 +#255#166#137#127#255#193#154'q'#255#165#133'k'#200']'#159'e'#255#185#214#190 +#255#135#186#143#255'q'#172'x'#255'SY'#220#255'fj'#235#255#152#150#244#255 - ,#145#145#243#255#137#138#240#255'[_'#231#255'_b'#233#255']a'#232#255'QX'#228 + +#145#145#243#255#137#138#240#255'[_'#231#255'_b'#233#255']a'#232#255'QX'#228 +#255'IT'#216#254#150'~vC'#166#140'w'#10'd'#160'k'#254#134#186#143#255#153#198 +#162#255't'#173'|'#255'OW'#226#255#180#177#249#255#151#150#244#255#147#147 +#244#255#140#141#240#255'\`'#232#255'\a'#231#255']a'#232#255'_b'#233#255'OW' @@ -1851,13 +1857,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#255'RRR'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#234#234#234#255#235#235 +#235#255#237#237#237#255#238#238#238#255#227#227#227#255#195#195#195#255#241 +#241#241#255#242#242#242#255#243#243#243#255#244#244#244#255'QQQ'#255#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#232#232#232#255#233#233#233#255#234#234#234 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#232#232#232#255#233#233#233#255#234#234#234 +#255#235#235#235#255#236#236#236#255#238#238#238#255#239#239#239#255#240#240 +#240#255#241#241#241#255#242#242#242#255'QQQ'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#153#153#153#255#154#154#154#255#155#155#155#255#155#155#155#255 +#156#156#156#255#157#157#157#255#158#158#158#255#159#159#159#255#159#159#159 +#255#160#160#160#255'555'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem' +#10'MenuItem43'#6'Action'#7#13'actIntfCreate'#11'Bitmap.Data'#10':'#4#0#0'6' +#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0 @@ -1915,13 +1921,13 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#255#203#203#203#255#234#234#234#255'fff'#255#234#234#234#255'IIIn'#11#11#11 +#0#4#4#4#0#0#0#0#0#0#0#0#0'>>>'#0'RRR'#0'RRRm'#238#238#238#255#200#200#200 +#255#255#255#255#255#255#255#255#255#200#200#200#255#241#241#241#255#237#237 - +#237#255#238#238#238#255'RRRm'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0' ' + ,#237#255#238#238#238#255'RRRm'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0' ' +' '#0'\\\'#0'\\\l'#241#241#241#255#196#196#196#255#255#255#255#255#255#255 +#255#255#211#211#211#255#196#196#196#255#196#196#196#255#241#241#241#255'\\\' +'l'#21#21#21#0#13#13#13#0#13#13#13#0#13#13#13#0#13#13#13#0'###'#0'dddj'#246 +#246#246#255#192#192#192#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#192#192#192#255#246#246#246#255'dddj'#25#25#25'X'#21#21#21 - ,'u'#21#21#21'u'#21#21#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'o' + +'u'#21#21#21'u'#21#21#21'u'#21#21#21'u'#21#21#21'u111'#174#144#144#144#255'o' +'oo'#255#176#176#176#255#255#255#255#255#255#255#255#255#255#255#255#255#187 +#187#187#255#249#249#249#255'llli888q'#236#236#236#255#232#232#232#255#232 +#232#232#255#232#232#232#255#232#232#232#255#232#232#232#255#232#232#232#255 @@ -1958,5 +1964,9 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +'ri.FrameEdges'#7#9'sfeAround'#21'SpaceAttri.FrameEdges'#7#9'sfeAround'#22'S' +'ymbolAttri.FrameEdges'#7#9'sfeAround'#16'WantBracesParsed'#8#4'left'#3#210#1 +#3'top'#3#252#0#0#0#11'TFindDialog'#2'FD'#6'OnShow'#7#6'FDShow'#5'Title'#6#6 - +'Search'#6'OnFind'#7#6'FDFind'#4'left'#3'@'#2#3'top'#3#143#0#0#0#0 + +'Search'#6'OnFind'#7#6'FDFind'#4'left'#3'@'#2#3'top'#3#143#0#0#0#11'TOpenDia' + +'log'#9'odOpenXSD'#6'Filter'#6#25'XSD files ( *.xsd )|*.xsd'#11'FilterIndex' + +#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPathMustExist'#15'ofFileMustE' + +'xist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#160#1#3'top'#3#164#0#0 + +#0#0 ]); diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas index f7bc54cd9..e7504dac1 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas @@ -42,6 +42,7 @@ type actArrayCreate : TAction; actEditSearch : TAction; actClone : TAction; + actAddXsdImport : TAction; actSaveXSD : TAction; actTreeSearch : TAction; actRecordCreate : TAction; @@ -103,6 +104,7 @@ type MenuItem53 : TMenuItem; MenuItem54 : TMenuItem; MenuItem55 : TMenuItem; + MenuItem56 : TMenuItem; MenuItem6: TMenuItem; MenuItem7 : TMenuItem; MenuItem8: TMenuItem; @@ -113,6 +115,7 @@ type MenuItem3: TMenuItem; MenuItem4: TMenuItem; OD: TOpenDialog; + odOpenXSD : TOpenDialog; PCInfos : TPageControl; PC: TPageControl; Panel1: TPanel; @@ -141,6 +144,8 @@ type ToolButton15: TToolButton; ToolButton16: TToolButton; ToolButton17: TToolButton; + ToolButton18: TToolButton; + ToolButton19: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; @@ -161,6 +166,8 @@ type tsProxy: TTabSheet; trvSchema: TTreeView; procedure actAboutExecute(Sender: TObject); + procedure actAddXsdImportExecute(Sender : TObject); + procedure actAddXsdImportUpdate(Sender : TObject); procedure actArrayCreateExecute(Sender : TObject); procedure actCloneExecute(Sender : TObject); procedure actCloneUpdate(Sender : TObject); @@ -207,6 +214,7 @@ type FFoundNode : TTreeNode; FDependencyList : TObjectList; private + procedure Handle_OnAppException(Sender : TObject; E : Exception); function FindCurrentEditor() : TSynEdit; function Search(const AText : string) : Boolean; function SearchInTree(const AText : string) : Boolean; @@ -222,6 +230,7 @@ type procedure ShowDocumentation(); procedure ShowSourceXSD(); procedure ShowDependencies(); + procedure AddXsdImport(const AFileName : string); procedure OpenFile(const AFileName : string; const AContent : TStream = nil); procedure SaveToFile(const AFileName : string); function PromptAndSave() : Boolean; @@ -370,8 +379,9 @@ end; function ParseXsdFile( const AFileName : string; AContent : TStream; - const ANotifier : TOnParserMessage -):TwstPasTreeContainer;overload; + const ANotifier : TOnParserMessage; + ASymbols : TwstPasTreeContainer +) : TwstPasTreeContainer;overload; var locDoc : TXMLDocument; prsr : IXsdPaser; @@ -387,7 +397,10 @@ begin prsr := nil; locDoc := ReadXMLFile(AContent); try - Result := TwstPasTreeContainer.Create(); + if (ASymbols = nil) then + Result := TwstPasTreeContainer.Create() + else + Result := ASymbols; try prsr := TXsdParser.Create(locDoc,Result,'',ANotifier); locContext := prsr as IParserContext; @@ -397,7 +410,8 @@ begin end; prsr.ParseTypes(); except - FreeAndNil(Result); + if (ASymbols = nil) then + FreeAndNil(Result); raise; end; finally @@ -405,6 +419,15 @@ begin end; end; +function ParseXsdFile( + const AFileName : string; + AContent : TStream; + const ANotifier : TOnParserMessage +):TwstPasTreeContainer;overload; +begin + Result := ParseXsdFile(AFileName,AContent,ANotifier,nil); +end; + function ParseXsdFile( const AFileName : string; const ANotifier : TOnParserMessage @@ -507,14 +530,21 @@ begin end; end; -procedure GenerateWSDL_ToStream(ASymbol : TwstPasTreeContainer; ADest : TStream); +procedure GenerateWSDL_ToStream( + ASymbol : TwstPasTreeContainer; + ADest : TStream; + const ADestPath : string +); var g : IGenerator; doc : TXMLDocument; + locLocator : IDocumentLocator; begin doc := TXMLDocument.Create(); try g := TWsdlGenerator.Create(doc); + locLocator := TFileDocumentLocator.Create(IncludeTrailingPathDelimiter(ADestPath)); + g.SetDocumentLocator(locLocator); g.Execute(ASymbol,ASymbol.CurrentModule.Name); WriteXML(doc,ADest); finally @@ -522,14 +552,21 @@ begin end; end; -procedure GenerateXSD_ToStream(ASymbol : TwstPasTreeContainer; ADest : TStream); +procedure GenerateXSD_ToStream( + ASymbol : TwstPasTreeContainer; + ADest : TStream; + const ADestPath : string +); var g : IGenerator; doc : TXMLDocument; + locLocator : IDocumentLocator; begin doc := TXMLDocument.Create(); try g := TXsdGenerator.Create(doc); + locLocator := TFileDocumentLocator.Create(IncludeLeadingPathDelimiter(ADestPath)); + g.SetDocumentLocator(locLocator); g.Execute(ASymbol,ASymbol.CurrentModule.Name); WriteXML(doc,ADest); finally @@ -773,6 +810,16 @@ begin ShowDependencies(); end; +procedure TfWstTypeLibraryEdit.Handle_OnAppException( + Sender: TObject; E: Exception +); +begin + if (E <> nil) and E.InheritsFrom(EWstEditException) then + MessageDlg(Self.Caption,E.Message,Dialogs.mtError,[mbOK],0) + else + Application.ShowException(E); +end; + function TfWstTypeLibraryEdit.FindCurrentEditor() : TSynEdit; var edt : TSynEdit; @@ -875,6 +922,23 @@ begin end; end; +procedure TfWstTypeLibraryEdit.actAddXsdImportExecute(Sender : TObject); +begin +{$IFNDEF WST_IDE} + odOpenXSD.InitialDir := DM.Options.ReadString(ClassName(),sLAST_PATH,odOpenXSD.InitialDir); +{$ENDIF WST_IDE} + odOpenXSD.Title := 'Import a schema file ...'; + if not odOpenXSD.Execute() then + exit; + AddXsdImport(odOpenXSD.FileName); +end; + +procedure TfWstTypeLibraryEdit.actAddXsdImportUpdate(Sender : TObject); +begin + TAction(Sender).Enabled := (FSymbolTable <> nil) and + (FSymbolTable.CurrentModule <> nil); +end; + procedure TfWstTypeLibraryEdit.actArrayCreateExecute(Sender : TObject); var e : TPasArrayType; @@ -1148,7 +1212,7 @@ var begin mstrm := TMemoryStream.Create(); try - GenerateWSDL_ToStream(FSymbolTable,mstrm); + GenerateWSDL_ToStream(FSymbolTable,mstrm,ExtractFilePath(FCurrentFileName)); mstrm.Position := 0; srcWSDL.Lines.LoadFromStream(mstrm); finally @@ -1214,6 +1278,36 @@ begin DrawDependencies(tvDependency,FDependencyList); end; +procedure TfWstTypeLibraryEdit.AddXsdImport(const AFileName: string); +var + i : Integer; + locModule, locNewModule : TPasModule; + locStream : TMemoryStream; +begin + locStream := TMemoryStream.Create(); + try + locStream.LoadFromFile(odOpenXSD.FileName); + locStream.Position := 0; + locModule := FSymbolTable.CurrentModule; + try + ParseXsdFile(AFileName,locStream,@ShowStatusMessage,FSymbolTable); + locNewModule := FSymbolTable.CurrentModule; + finally + FSymbolTable.SetCurrentModule(locModule); + end; + finally + locStream.Free(); + end; + FSymbolTable.Properties.SetValue(locNewModule,sFILE_NAME,AFileName); + + i := FSymbolTable.CurrentModule.InterfaceSection.UsesList.IndexOf(locNewModule); + if (i = -1) then begin + FSymbolTable.CurrentModule.InterfaceSection.UsesList.Add(locNewModule); + locNewModule.AddRef(); + end; + RenderSymbols(); +end; + procedure TfWstTypeLibraryEdit.OpenFile (const AFileName : string; const AContent : TStream); var tmpTable : TwstPasTreeContainer; @@ -1264,9 +1358,9 @@ begin mstrm := TMemoryStream.Create(); try if SameText('.xsd',ExtractFileExt(AFileName)) then - GenerateXSD_ToStream(FSymbolTable,mstrm) + GenerateXSD_ToStream(FSymbolTable,mstrm,ExtractFilePath(FCurrentFileName)) else - GenerateWSDL_ToStream(FSymbolTable,mstrm); + GenerateWSDL_ToStream(FSymbolTable,mstrm,ExtractFilePath(FCurrentFileName)); mstrm.SaveToFile(AFileName); finally FreeAndNil(mstrm); @@ -1311,6 +1405,7 @@ begin inherited Create(AOwner); FSymbolTable := CreateSymbolTable(ExtractFileName(DEF_FILE_NAME)); trvSchema.Images := DM.IM; + Application.OnException := @Handle_OnAppException; end; destructor TfWstTypeLibraryEdit.Destroy(); diff --git a/wst/trunk/ws_helper/locators.pas b/wst/trunk/ws_helper/locators.pas index d85822d3a..9d6d90a0d 100644 --- a/wst/trunk/ws_helper/locators.pas +++ b/wst/trunk/ws_helper/locators.pas @@ -23,10 +23,24 @@ uses {$IFDEF FPC} , DOM, wst_fpc_xml {$ENDIF FPC} - , xsd_parser; + ; type + IDocumentLocator = interface + ['{F063700B-C0ED-4C54-9A54-C97030E80BD4}'] + function Find( + const ADocLocation : string; + out ADoc : TXMLDocument + ) : Boolean; + function FindPath(ADocLocation : string) : string; + + function GetBasePath() : string; + procedure SetBasePath(AValue : string); + function Clone() : IDocumentLocator; + function MakeRelavive(const AFileName : string) : string; + end; + { TFileDocumentLocator } TFileDocumentLocator = class(TInterfacedObject,IDocumentLocator) @@ -45,6 +59,7 @@ type function GetBasePath() : string; procedure SetBasePath(AValue : string); function Clone() : IDocumentLocator; + function MakeRelavive(const AFileName : string) : string; public constructor Create(const ABasePath : string);virtual; end; @@ -106,6 +121,11 @@ begin Result := TFileDocumentLocatorClass(Self.ClassType).Create(FBasePath) as IDocumentLocator; end; +function TFileDocumentLocator.MakeRelavive(const AFileName: string): string; +begin + Result := ExtractRelativePath(GetBasePath(),AFileName); +end; + constructor TFileDocumentLocator.Create(const ABasePath: string); begin SetBasePath(IncludeTrailingPathDelimiter(ABasePath)); diff --git a/wst/trunk/ws_helper/wsdl_generator.pas b/wst/trunk/ws_helper/wsdl_generator.pas index 4b4a33144..288795695 100644 --- a/wst/trunk/ws_helper/wsdl_generator.pas +++ b/wst/trunk/ws_helper/wsdl_generator.pas @@ -18,7 +18,7 @@ interface uses Classes, SysUtils, TypInfo, {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF}, - pastree, pascal_parser_intf, xsd_generator; + pastree, pascal_parser_intf, xsd_generator, locators; type @@ -42,6 +42,7 @@ type FDocument : TDOMDocument; FTypesNode : TDOMElement; FDefinitionsNode : TDOMElement; + FDocumentLocator : IDocumentLocator; private procedure GenerateTypes(ASymTable : TwstPasTreeContainer; AModule : TPasModule); procedure GenerateServiceMessages( @@ -70,6 +71,8 @@ type ); protected procedure Prepare(ASymTable : TwstPasTreeContainer; AModule : TPasModule); + function GetDocumentLocator() : IDocumentLocator; + procedure SetDocumentLocator(ALocator : IDocumentLocator); procedure Execute( ASymTable : TwstPasTreeContainer; AModuleName : string @@ -154,6 +157,7 @@ var g : IGenerator; nsList : TStringList; s : string; + locLocator : IDocumentLocator; begin mdlLs := ASymTable.Package.Modules; if ( mdlLs.Count > 0 ) then begin @@ -167,6 +171,9 @@ begin end; end; g := TWsdlTypechemaGenerator.Create(Document) as IGenerator; + locLocator := GetDocumentLocator(); + if (locLocator <> nil) then + g.SetDocumentLocator(locLocator); for i := 0 to Pred(mdlLs.Count) do begin mdl := TPasModule(mdlLs[i]); if (mdl <> AModule) then begin @@ -469,6 +476,16 @@ begin end; +function TWsdlGenerator.GetDocumentLocator : IDocumentLocator; +begin + Result := FDocumentLocator; +end; + +procedure TWsdlGenerator.SetDocumentLocator(ALocator : IDocumentLocator); +begin + FDocumentLocator := ALocator; +end; + procedure TWsdlGenerator.Execute(ASymTable : TwstPasTreeContainer; AModuleName : string); var locMainModule : TPasModule; diff --git a/wst/trunk/ws_helper/xsd_generator.pas b/wst/trunk/ws_helper/xsd_generator.pas index 5324b71d0..e9095adcf 100644 --- a/wst/trunk/ws_helper/xsd_generator.pas +++ b/wst/trunk/ws_helper/xsd_generator.pas @@ -18,7 +18,7 @@ interface uses Classes, SysUtils, TypInfo, {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM, wst_fpc_xml{$ENDIF}, - pastree, pascal_parser_intf; + pastree, pascal_parser_intf, locators; type @@ -35,6 +35,8 @@ type ASymTable : TwstPasTreeContainer; AModuleName : string ); + function GetDocumentLocator() : IDocumentLocator; + procedure SetDocumentLocator(ALocator : IDocumentLocator); end; IXsdGenerator = interface(IGenerator) @@ -88,6 +90,7 @@ type FDocument : TDOMDocument; FOptions: TGeneratorOptions; FShortNames : TStrings; + FDocumentLocator : IDocumentLocator; protected procedure GenerateImports( ASymTable : TwstPasTreeContainer; @@ -97,6 +100,8 @@ type function GetSchemaNode(ADocument : TDOMDocument) : TDOMNode;virtual;abstract; procedure SetPreferedShortNames(const ALongName, AShortName : string); function GetPreferedShortNames() : TStrings; + function GetDocumentLocator() : IDocumentLocator; + procedure SetDocumentLocator(ALocator : IDocumentLocator); procedure Execute( ASymTable : TwstPasTreeContainer; AModuleName : string @@ -1414,10 +1419,12 @@ var locNS, locFileName, s : string; locSchemaNode, resNode : TDOMElement; locCurrentNS : string; + locLocator : IDocumentLocator; begin locUsesList := AModule.InterfaceSection.UsesList; if (locUsesList.Count > 0) then begin locCurrentNS := ASymTable.GetExternalName(AModule); + locLocator := GetDocumentLocator(); for i := 0 to Pred(locUsesList.Count) do begin locModule := TPasElement(locUsesList[i]); locNS := ASymTable.GetExternalName(locModule); @@ -1428,6 +1435,8 @@ begin locFileName := ASymTable.Properties.GetValue(locModule,sFILE_NAME); if IsStrEmpty(locFileName) then Continue; + if (locLocator <> nil) then + locFileName := locLocator.MakeRelavive(locFileName); locSchemaNode := GetSchemaNode(FDocument) as TDOMElement; s := Format('%s:%s',[s_xs_short,s_import]); resNode := CreateElement(s,locSchemaNode,FDocument); @@ -1447,6 +1456,16 @@ begin Result := FShortNames; end; +function TCustomXsdGenerator.GetDocumentLocator: IDocumentLocator; +begin + Result := FDocumentLocator; +end; + +procedure TCustomXsdGenerator.SetDocumentLocator(ALocator: IDocumentLocator); +begin + FDocumentLocator := ALocator; +end; + destructor TCustomXsdGenerator.Destroy(); begin FreeAndNil(FShortNames); diff --git a/wst/trunk/ws_helper/xsd_parser.pas b/wst/trunk/ws_helper/xsd_parser.pas index 9846e1cd2..198f6875d 100644 --- a/wst/trunk/ws_helper/xsd_parser.pas +++ b/wst/trunk/ws_helper/xsd_parser.pas @@ -18,7 +18,7 @@ uses Classes, SysUtils, {$IFNDEF FPC}xmldom, wst_delphi_xml{$ELSE}DOM{$ENDIF}, cursor_intf, rtti_filters, - pastree, pascal_parser_intf, logger_intf; + pastree, pascal_parser_intf, logger_intf, locators; type @@ -42,18 +42,7 @@ type TOnParserMessage = procedure (const AMsgType : TMessageType; const AMsg : string) of object; - IDocumentLocator = interface - ['{F063700B-C0ED-4C54-9A54-C97030E80BD4}'] - function Find( - const ADocLocation : string; - out ADoc : TXMLDocument - ) : Boolean; - function FindPath(ADocLocation : string) : string; - - function GetBasePath() : string; - procedure SetBasePath(AValue : string); - function Clone() : IDocumentLocator; - end; + IDocumentLocator = locators.IDocumentLocator; TParserOption = ( poEnumAlwaysPrefix, // Always prefix enum item with the enum name