From 343b11db66c30a4219ea0ffbd92b95577a0a7b8a Mon Sep 17 00:00:00 2001 From: inoussa Date: Fri, 19 Oct 2007 15:30:20 +0000 Subject: [PATCH] wsdl parser : assume style=document binding if not specified git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@277 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- wst/trunk/base_binary_formatter.pas | 7 + wst/trunk/base_json_formatter.pas | 511 ++++++++++++ wst/trunk/base_service_intf.pas | 1 + wst/trunk/base_soap_formatter.pas | 19 + wst/trunk/base_xmlrpc_formatter.pas | 7 + .../test_suite/files/no_binding_style.WSDL | 38 + .../files/simpletypeNativeAlias.WSDL | 21 + .../files/simpletypeNativeAlias.xsd | 9 + wst/trunk/tests/test_suite/test_parsers.pas | 74 ++ .../tests/test_suite/testformatter_unit.pas | 52 ++ wst/trunk/tests/test_suite/wst_test_suite.lpi | 725 +++++++----------- wst/trunk/tests/test_suite/wst_test_suite.lpr | 2 +- wst/trunk/type_lib_edtr/typ_lib_edtr.lpi | 553 ++++++------- wst/trunk/type_lib_edtr/typ_lib_edtr.lpr | 2 +- .../type_lib_edtr/uwsttypelibraryedit.lfm | 17 +- .../type_lib_edtr/uwsttypelibraryedit.lrs | 506 ++++++------ wst/trunk/ws_helper/parserutils.pas | 4 +- wst/trunk/ws_helper/pascal_parser_intf.pas | 14 + wst/trunk/ws_helper/wsdl_parser.pas | 2 + wst/trunk/ws_helper/xsd_generator.pas | 52 +- wst/trunk/ws_helper/xsd_parser.pas | 5 +- 21 files changed, 1618 insertions(+), 1003 deletions(-) create mode 100644 wst/trunk/base_json_formatter.pas create mode 100644 wst/trunk/tests/test_suite/files/no_binding_style.WSDL create mode 100644 wst/trunk/tests/test_suite/files/simpletypeNativeAlias.WSDL create mode 100644 wst/trunk/tests/test_suite/files/simpletypeNativeAlias.xsd diff --git a/wst/trunk/base_binary_formatter.pas b/wst/trunk/base_binary_formatter.pas index 31b600c16..3c49f4ace 100644 --- a/wst/trunk/base_binary_formatter.pas +++ b/wst/trunk/base_binary_formatter.pas @@ -300,6 +300,7 @@ type const AStyle : TArrayStyle; const AItemName : string ):Integer; + function GetScopeItemNames(const AReturnList : TStrings) : Integer; procedure EndScopeRead(); procedure BeginHeader(); @@ -1121,6 +1122,12 @@ begin Result := StackTop().GetItemCount(); end; +function TBaseBinaryFormatter.GetScopeItemNames(const AReturnList : TStrings + ) : Integer; +begin + +end; + procedure TBaseBinaryFormatter.EndScopeRead(); begin PopStack().Free(); diff --git a/wst/trunk/base_json_formatter.pas b/wst/trunk/base_json_formatter.pas new file mode 100644 index 000000000..c8ab727ae --- /dev/null +++ b/wst/trunk/base_json_formatter.pas @@ -0,0 +1,511 @@ +{ + This file is part of the Web Service Toolkit + Copyright (c) 2007 by Inoussa OUEDRAOGO + + This file is provide under modified LGPL licence + ( the files COPYING.modifiedLGPL and COPYING.LGPL). + + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +} +{$INCLUDE wst_global.inc} +unit base_json_formatter; + +interface +uses + Classes, SysUtils, TypInfo, Contnrs, + base_service_intf, + fpjson; + +type + + TJsonInteger = Int64; + + EJsonRpcException = class(EBaseRemoteException) + end; + + { TStackItem } + + TStackItem = class + private + FScopeObject: TJSONData; + FScopeType: TScopeType; + protected + function GetItemsCount() : Integer;virtual; + public + constructor Create(AScopeObject : TJSONData;AScopeType : TScopeType); + function FindNode(var ANodeName : string):TJSONData;virtual;abstract; + function CreateStringBuffer( + Const AName : string; + const AValue : TJSONStringType + ) : TJSONData;virtual;abstract; + function CreateIntBuffer( + Const AName : string; + const AValue : TJsonInteger + ) : TJSONData;virtual;abstract; + function CreateFloatBuffer( + Const AName : string; + const AValue : TJSONFloat + ) : TJSONData;virtual;abstract; + function CreateBoolBuffer( + Const AName : string; + const AValue : Boolean + ) : TJSONData;virtual;abstract; + function CreateObjectBuffer(const AName : string) : TJSONObject;virtual;abstract; + function CreateArrayBuffer(const AName : string) : TJSONArray;virtual;abstract; + property ScopeObject : TJSONData Read FScopeObject; + property ScopeType : TScopeType Read FScopeType; + property ItemsCount : Integer read GetItemsCount; + end; + + { TObjectStackItem } + + TObjectStackItem = class(TStackItem) + protected + function GetDataObject() : TJSONObject;{$IFDEF USE_INLINE}inline;{$ENDIF} + public + constructor Create(AScopeObject : TJSONObject); + function FindNode(var ANodeName : string):TJSONData;override; + function CreateStringBuffer( + const AName : string; + const AValue : TJSONStringType + ) : TJSONData;override; + function CreateIntBuffer( + Const AName : string; + const AValue : TJsonInteger + ) : TJSONData;override; + function CreateFloatBuffer( + Const AName : string; + const AValue : TJSONFloat + ) : TJSONData;override; + function CreateBoolBuffer( + Const AName : string; + const AValue : Boolean + ) : TJSONData;override; + function CreateObjectBuffer(const AName : string) : TJSONObject;override; + function CreateArrayBuffer(const AName : string) : TJSONArray;override; + end; + + { TJsonRpcBaseFormatter } + + TJsonRpcBaseFormatter = class(TSimpleFactoryItem,IFormatterBase) + private + FSerializationStyle : TSerializationStyle; + FStack : TObjectStack; + private + function GetCurrentScope : String; + function HasScope():Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF} + procedure CheckScope();{$IFDEF USE_INLINE}inline;{$ENDIF} + procedure ClearStack(); + function StackTop():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF} + function PopStack():TStackItem;{$IFDEF USE_INLINE}inline;{$ENDIF} + protected + procedure PutInt64( + Const AName : String; + Const ATypeInfo : PTypeInfo; + Const AData : Int64 + );{$IFDEF USE_INLINE}inline;{$ENDIF} + public + procedure SetSerializationStyle(const ASerializationStyle : TSerializationStyle); + function GetSerializationStyle():TSerializationStyle; + procedure Clear(); + + procedure BeginObject( + Const AName : string; + Const ATypeInfo : PTypeInfo + ); + procedure BeginArray( + const AName : string; + const ATypeInfo : PTypeInfo; + const AItemTypeInfo : PTypeInfo; + const ABounds : Array Of Integer; + const AStyle : TArrayStyle + ); + procedure NilCurrentScope(); + function IsCurrentScopeNil():Boolean; + procedure EndScope(); + procedure AddScopeAttribute(Const AName,AValue : string); + function BeginObjectRead( + var AScopeName : string; + const ATypeInfo : PTypeInfo + ) : Integer; + function BeginArrayRead( + var AScopeName : string; + const ATypeInfo : PTypeInfo; + const AStyle : TArrayStyle; + const AItemName : string + ):Integer; + function GetScopeItemNames(const AReturnList : TStrings) : Integer; + procedure EndScopeRead(); + property CurrentScope : String Read GetCurrentScope; + + procedure BeginHeader(); + procedure EndHeader(); + + procedure Put( + Const AName : String; + Const ATypeInfo : PTypeInfo; + Const AData + ); + procedure PutScopeInnerValue( + const ATypeInfo : PTypeInfo; + const AData + ); + procedure Get( + Const ATypeInfo : PTypeInfo; + Var AName : String; + Var AData + ); + procedure GetScopeInnerValue( + const ATypeInfo : PTypeInfo; + var AData + ); + function ReadBuffer(const AName : string) : string; + + procedure SaveToStream(AStream : TStream); + procedure LoadFromStream(AStream : TStream); + + // This procedures will raise exceptions!!! + procedure Error(Const AMsg:string);overload; + procedure Error(Const AMsg:string; Const AArgs : array of const);overload; + public + constructor Create();override; + destructor Destroy();override; + end; + + +implementation + +{ TJsonRpcBaseFormatter } + +function TJsonRpcBaseFormatter.HasScope() : Boolean; +begin + Result := FStack.AtLeast(1); +end; + +procedure TJsonRpcBaseFormatter.CheckScope(); +begin + if not HasScope() then + Error('There is no scope.'); +end; + +procedure TJsonRpcBaseFormatter.ClearStack(); +var + i, c : Integer; +begin + c := FStack.Count; + for I := 1 to c do + FStack.Pop().Free(); +end; + +function TJsonRpcBaseFormatter.StackTop() : TStackItem; +begin + CheckScope(); + Result := FStack.Peek() as TStackItem; +end; + +function TJsonRpcBaseFormatter.PopStack() : TStackItem; +begin + CheckScope(); + Result := FStack.Pop() as TStackItem; +end; + +procedure TJsonRpcBaseFormatter.PutInt64( + const AName : String; + const ATypeInfo : PTypeInfo; + const AData : Int64 +); +begin + StackTop().CreateIntBuffer(AName,AData); +end; + +procedure TJsonRpcBaseFormatter.SetSerializationStyle(const ASerializationStyle : TSerializationStyle); +begin + FSerializationStyle := ASerializationStyle; +end; + +function TJsonRpcBaseFormatter.GetSerializationStyle() : TSerializationStyle; +begin + Result := FSerializationStyle; +end; + +function TJsonRpcBaseFormatter.GetCurrentScope() : string; +begin + CheckScope(); + Result := ''; +end; + +procedure TJsonRpcBaseFormatter.Clear(); +begin + ClearStack(); +end; + +procedure TJsonRpcBaseFormatter.BeginObject( + const AName : string; + const ATypeInfo : PTypeInfo +); +var + elt : TJSONObject; +begin + if HasScope() then + elt := StackTop().CreateObjectBuffer(AName) + else + elt := TJSONObject.Create(); + FStack.Push(TObjectStackItem.Create(elt)); +end; + +procedure TJsonRpcBaseFormatter.BeginArray(const AName : string; + const ATypeInfo : PTypeInfo; const AItemTypeInfo : PTypeInfo; + const ABounds : array of Integer; const AStyle : TArrayStyle); +begin + +end; + +procedure TJsonRpcBaseFormatter.NilCurrentScope(); +begin + +end; + +function TJsonRpcBaseFormatter.IsCurrentScopeNil() : Boolean; +begin + +end; + +procedure TJsonRpcBaseFormatter.EndScope(); +begin + +end; + +procedure TJsonRpcBaseFormatter.AddScopeAttribute(const AName, AValue : string); +begin + +end; + +function TJsonRpcBaseFormatter.BeginObjectRead(var AScopeName : string; + const ATypeInfo : PTypeInfo) : Integer; +begin + +end; + +function TJsonRpcBaseFormatter.BeginArrayRead(var AScopeName : string; + const ATypeInfo : PTypeInfo; const AStyle : TArrayStyle; + const AItemName : string) : Integer; +begin + +end; + +function TJsonRpcBaseFormatter.GetScopeItemNames(const AReturnList : TStrings + ) : Integer; +begin + +end; + +procedure TJsonRpcBaseFormatter.EndScopeRead(); +begin + +end; + +procedure TJsonRpcBaseFormatter.BeginHeader(); +begin + +end; + +procedure TJsonRpcBaseFormatter.EndHeader(); +begin + +end; + +procedure TJsonRpcBaseFormatter.Put( + const AName : String; + const ATypeInfo : PTypeInfo; + const AData +); +begin + +end; + +procedure TJsonRpcBaseFormatter.PutScopeInnerValue(const ATypeInfo : PTypeInfo; + const AData); +begin + +end; + +procedure TJsonRpcBaseFormatter.Get(const ATypeInfo : PTypeInfo; + var AName : String; var AData); +begin + +end; + +procedure TJsonRpcBaseFormatter.GetScopeInnerValue(const ATypeInfo : PTypeInfo; + var AData); +begin + +end; + +function TJsonRpcBaseFormatter.ReadBuffer(const AName : string) : string; +begin + +end; + +procedure TJsonRpcBaseFormatter.SaveToStream(AStream : TStream); +begin + +end; + +procedure TJsonRpcBaseFormatter.LoadFromStream(AStream : TStream); +begin + +end; + +procedure TJsonRpcBaseFormatter.Error(const AMsg : string); +begin + raise EJsonRpcException.Create(AMsg); +end; + +procedure TJsonRpcBaseFormatter.Error(const AMsg : string; const AArgs : array of const); +begin + raise EJsonRpcException.CreateFmt(AMsg,AArgs); +end; + +constructor TJsonRpcBaseFormatter.Create(); +begin + inherited Create(); + FStack := TObjectStack.Create(); +end; + +destructor TJsonRpcBaseFormatter.Destroy(); +begin + FStack.Free(); + inherited Destroy(); +end; + +{ TStackItem } + +function TStackItem.GetItemsCount() : Integer; +begin + Result := FScopeObject.Count; +end; + +constructor TStackItem.Create(AScopeObject : TJSONData; AScopeType : TScopeType); +begin + FScopeObject := AScopeObject; + FScopeType := AScopeType; +end; + +{ TObjectStackItem } + +function TObjectStackItem.GetDataObject() : TJSONObject; +begin + Result := TJSONObject(ScopeObject); +end; + +constructor TObjectStackItem.Create(AScopeObject : TJSONObject); +begin + inherited Create(AScopeObject,stObject); +end; + +function TObjectStackItem.FindNode(var ANodeName : string) : TJSONData; +begin + Result := GetDataObject().Elements[ANodeName]; +end; + +function TObjectStackItem.CreateStringBuffer( + const AName : string; + const AValue : TJSONStringType +) : TJSONData; +var + locObj : TJSONObject; + i : PtrInt; +begin + locObj := GetDataObject(); + Result := locObj.Elements[AName]; + if ( Result = nil ) then begin + i := locObj.Add(AName,AValue); + Result := locObj.Items[i]; + end else begin + Result.AsString := AValue; + end; +end; + +function TObjectStackItem.CreateIntBuffer( + const AName : string; + const AValue : TJsonInteger +) : TJSONData; +var + locObj : TJSONObject; + i : PtrInt; +begin + locObj := GetDataObject(); + Result := locObj.Elements[AName]; + if ( Result = nil ) then begin + i := locObj.Add(AName,AValue); + Result := locObj.Items[i]; + end else begin + Result.AsInteger := AValue; + end; +end; + +function TObjectStackItem.CreateFloatBuffer( + const AName : string; + const AValue : TJSONFloat +) : TJSONData; +var + locObj : TJSONObject; + i : PtrInt; +begin + locObj := GetDataObject(); + Result := locObj.Elements[AName]; + if ( Result = nil ) then begin + i := locObj.Add(AName,AValue); + Result := locObj.Items[i]; + end else begin + Result.AsFloat := AValue; + end; +end; + +function TObjectStackItem.CreateBoolBuffer( + const AName : string; + const AValue : Boolean +) : TJSONData; +var + locObj : TJSONObject; + i : PtrInt; +begin + locObj := GetDataObject(); + Result := locObj.Elements[AName]; + if ( Result = nil ) then begin + i := locObj.Add(AName,AValue); + Result := locObj.Items[i]; + end else begin + Result.AsBoolean := AValue; + end; +end; + +function TObjectStackItem.CreateObjectBuffer(const AName : string) : TJSONObject; +var + locObj : TJSONObject; +begin + locObj := GetDataObject(); + Result := locObj.Elements[AName] as TJSONObject; + if ( Result = nil ) then begin + Result := TJSONObject.Create(); + locObj.Add(AName,Result); + end; +end; + +function TObjectStackItem.CreateArrayBuffer(const AName : string) : TJSONArray; +var + locObj : TJSONObject; +begin + locObj := GetDataObject(); + Result := locObj.Elements[AName] as TJSONArray; + if ( Result = nil ) then begin + Result := TJSONArray.Create(); + locObj.Add(AName,Result); + end; +end; + +end. + diff --git a/wst/trunk/base_service_intf.pas b/wst/trunk/base_service_intf.pas index c784a2c8e..925adda69 100644 --- a/wst/trunk/base_service_intf.pas +++ b/wst/trunk/base_service_intf.pas @@ -162,6 +162,7 @@ type const AStyle : TArrayStyle; const AItemName : string ):Integer; + function GetScopeItemNames(const AReturnList : TStrings) : Integer; procedure EndScopeRead(); property CurrentScope : String Read GetCurrentScope; diff --git a/wst/trunk/base_soap_formatter.pas b/wst/trunk/base_soap_formatter.pas index 403919aba..b6189ac43 100644 --- a/wst/trunk/base_soap_formatter.pas +++ b/wst/trunk/base_soap_formatter.pas @@ -314,6 +314,7 @@ type const AStyle : TArrayStyle; const AItemName : string ):Integer; + function GetScopeItemNames(const AReturnList : TStrings) : Integer; procedure EndScopeRead(); procedure BeginHeader(); @@ -494,6 +495,11 @@ begin Result := InternalBeginScopeRead(AScopeName,ATypeInfo,stArray,AStyle,AItemName); end; +function TSOAPBaseFormatter.GetScopeItemNames(const AReturnList : TStrings) : Integer; +begin + +end; + procedure TSOAPBaseFormatter.EndScopeRead(); begin PopStack().Free(); @@ -1470,6 +1476,9 @@ Var dataBuffer : string; frmt : string; prcsn,i : Integer; + {strm : TStringStream; + locDoc : TwstXMLDocument; + locNode : TDOMNode;} begin CheckScope(); Case ATypeInfo^.Kind Of @@ -1563,6 +1572,16 @@ begin dataBuffer[i] := '.'; end; end; + (*locDoc := nil; + strm := TStringStream.Create(dataBuffer); + try + ReadXMLFile(locDoc,strm); + locNode := locDoc.DocumentElement.CloneNode(True {$IFDEF FPC}, StackTop().ScopeObject.OwnerDocument{$ENDIF}); + StackTop().ScopeObject.AppendChild(locNode); + finally + ReleaseDomNode(locDoc); + strm.Free(); + end;*) StackTop().ScopeObject.AppendChild(FDoc.CreateTextNode(dataBuffer)); end; diff --git a/wst/trunk/base_xmlrpc_formatter.pas b/wst/trunk/base_xmlrpc_formatter.pas index e415b4df7..e9894d016 100644 --- a/wst/trunk/base_xmlrpc_formatter.pas +++ b/wst/trunk/base_xmlrpc_formatter.pas @@ -315,6 +315,7 @@ type const AStyle : TArrayStyle; const AItemName : string ):Integer; + function GetScopeItemNames(const AReturnList : TStrings) : Integer; procedure EndScopeRead(); procedure BeginHeader(); @@ -563,6 +564,12 @@ begin Result := InternalBeginScopeRead(AScopeName,ATypeInfo,stArray,AStyle,AItemName); end; +function TXmlRpcBaseFormatter.GetScopeItemNames(const AReturnList : TStrings + ) : Integer; +begin + +end; + procedure TXmlRpcBaseFormatter.EndScopeRead(); begin PopStack().Free(); diff --git a/wst/trunk/tests/test_suite/files/no_binding_style.WSDL b/wst/trunk/tests/test_suite/files/no_binding_style.WSDL new file mode 100644 index 000000000..509af5f1c --- /dev/null +++ b/wst/trunk/tests/test_suite/files/no_binding_style.WSDL @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wst/trunk/tests/test_suite/files/simpletypeNativeAlias.WSDL b/wst/trunk/tests/test_suite/files/simpletypeNativeAlias.WSDL new file mode 100644 index 000000000..a9287af74 --- /dev/null +++ b/wst/trunk/tests/test_suite/files/simpletypeNativeAlias.WSDL @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/wst/trunk/tests/test_suite/files/simpletypeNativeAlias.xsd b/wst/trunk/tests/test_suite/files/simpletypeNativeAlias.xsd new file mode 100644 index 000000000..029badef7 --- /dev/null +++ b/wst/trunk/tests/test_suite/files/simpletypeNativeAlias.xsd @@ -0,0 +1,9 @@ + + + + + + + diff --git a/wst/trunk/tests/test_suite/test_parsers.pas b/wst/trunk/tests/test_suite/test_parsers.pas index 933e9ed64..5a1a25004 100644 --- a/wst/trunk/tests/test_suite/test_parsers.pas +++ b/wst/trunk/tests/test_suite/test_parsers.pas @@ -32,6 +32,7 @@ type function LoadEmptySchema() : TwstPasTreeContainer;virtual;abstract; function LoadSimpleType_Enum_Schema() : TwstPasTreeContainer;virtual;abstract; function LoadSimpleType_Enum_Embedded_Schema() : TwstPasTreeContainer;virtual;abstract; + function LoadSimpleType_AliasToNativeType_Schema() : TwstPasTreeContainer;virtual;abstract; function LoadComplexType_Class_Schema() : TwstPasTreeContainer;virtual;abstract; function LoadComplexType_Class_Embedded_Schema() : TwstPasTreeContainer;virtual;abstract; @@ -46,6 +47,7 @@ type procedure SimpleType_Enum(); procedure SimpleType_Enum_Embedded(); + procedure SimpleType_AliasToNativeType(); procedure ComplexType_Class(); procedure ComplexType_Class_Embedded(); @@ -67,6 +69,7 @@ type function LoadSimpleType_Enum_Schema() : TwstPasTreeContainer;override; function LoadSimpleType_Enum_Embedded_Schema() : TwstPasTreeContainer;override; + function LoadSimpleType_AliasToNativeType_Schema() : TwstPasTreeContainer;override; function LoadComplexType_Class_Schema() : TwstPasTreeContainer;override; function LoadComplexType_Class_Embedded_Schema() : TwstPasTreeContainer;override; @@ -88,6 +91,7 @@ type function LoadSimpleType_Enum_Schema() : TwstPasTreeContainer;override; function LoadSimpleType_Enum_Embedded_Schema() : TwstPasTreeContainer;override; + function LoadSimpleType_AliasToNativeType_Schema() : TwstPasTreeContainer;override; function LoadComplexType_Class_Schema() : TwstPasTreeContainer;override; function LoadComplexType_Class_Embedded_Schema() : TwstPasTreeContainer;override; @@ -97,6 +101,8 @@ type function LoadComplexType_ArraySequence_Schema() : TwstPasTreeContainer;override; function LoadComplexType_ArraySequence_Embedded_Schema() : TwstPasTreeContainer;override; + published + procedure no_binding_style(); end; implementation @@ -127,8 +133,11 @@ const x_enumSampleType = 'EnumSampleType'; x_enumSampleLIST_COUNT = 7; x_enumSampleLIST : array[0..( x_enumSampleLIST_COUNT - 1 )] of string = ( 'esOne', 'esTwo', 'esThree', 'begin', 'finally', 'True', 'False' ); + x_simpleTypeAliasString = 'AliasString'; + x_simpleTypeAliasInt = 'AliasInt'; x_simpleType = 'simpletype'; x_simpleTypeEmbedded = 'simpletype_embedded'; + x_simpletypeNativeAlias = 'simpletypeNativeAlias'; x_targetNamespace = 'urn:wst-test'; @@ -253,6 +262,42 @@ begin end; end; +procedure TTest_CustomXsdParser.SimpleType_AliasToNativeType(); +var + tr : TwstPasTreeContainer; + mdl : TPasModule; + ls : TList; + elt : TPasElement; + aliasType : TPasAliasType; + i : Integer; +begin + tr := LoadSimpleType_AliasToNativeType_Schema(); + + mdl := tr.FindModule(x_targetNamespace); + CheckNotNull(mdl); + CheckEquals(x_simpletypeNativeAlias,mdl.Name); + CheckEquals(x_targetNamespace,tr.GetExternalName(mdl)); + ls := mdl.InterfaceSection.Declarations; + CheckEquals(2,ls.Count); + elt := tr.FindElement(x_simpleTypeAliasString); + CheckNotNull(elt,x_simpleTypeAliasString); + CheckEquals(x_simpleTypeAliasString,elt.Name); + CheckEquals(x_simpleTypeAliasString,tr.GetExternalName(elt)); + CheckIs(elt,TPasAliasType); + aliasType := elt as TPasAliasType; + CheckNotNull(aliasType.DestType); + Check(tr.SameName(aliasType.DestType,'string')); + + elt := tr.FindElement(x_simpleTypeAliasInt); + CheckNotNull(elt,x_simpleTypeAliasInt); + CheckEquals(x_simpleTypeAliasInt,elt.Name); + CheckEquals(x_simpleTypeAliasInt,tr.GetExternalName(elt)); + CheckIs(elt,TPasAliasType); + aliasType := elt as TPasAliasType; + CheckNotNull(aliasType.DestType); + Check(tr.SameName(aliasType.DestType,'int')); +end; + type TPropertyType = ( ptField, ptAttribute ); const @@ -890,6 +935,11 @@ begin Result := ParseDoc(x_simpleTypeEmbedded); end; +function TTest_XsdParser.LoadSimpleType_AliasToNativeType_Schema() : TwstPasTreeContainer; +begin + Result := ParseDoc(x_simpletypeNativeAlias); +end; + function TTest_XsdParser.LoadComplexType_Class_Schema(): TwstPasTreeContainer; begin Result := ParseDoc(x_complexType_class); @@ -958,6 +1008,11 @@ begin Result := ParseDoc(x_simpleTypeEmbedded); end; +function TTest_WsdlParser.LoadSimpleType_AliasToNativeType_Schema() : TwstPasTreeContainer; +begin + Result := ParseDoc(x_simpletypeNativeAlias); +end; + function TTest_WsdlParser.LoadComplexType_Class_Schema(): TwstPasTreeContainer; begin Result := ParseDoc(x_complexType_class); @@ -988,6 +1043,25 @@ begin Result := ParseDoc(x_complexType_array_sequence_embedded); end; +procedure TTest_WsdlParser.no_binding_style(); +var + symTable : TwstPasTreeContainer; + elt : TPasElement; + intf : TPasClassType; +begin + symTable := ParseDoc('no_binding_style'); + try + elt := symTable.FindElement('ISampleService'); + CheckNotNull(elt); + CheckIs(elt,TPasClassType); + intf := elt as TPasClassType; + Check(intf.ObjKind = okInterface); + CheckEquals(2,GetElementCount(intf.Members,TPasProcedure)); + finally + symTable.Free(); + end; +end; + initialization RegisterTest('XSD parser',TTest_XsdParser.Suite); RegisterTest('WSDL parser',TTest_WsdlParser.Suite); diff --git a/wst/trunk/tests/test_suite/testformatter_unit.pas b/wst/trunk/tests/test_suite/testformatter_unit.pas index e10ae12a4..1544341ce 100644 --- a/wst/trunk/tests/test_suite/testformatter_unit.pas +++ b/wst/trunk/tests/test_suite/testformatter_unit.pas @@ -378,6 +378,8 @@ type procedure Test_Record_simple(); procedure Test_Record_nested(); + + procedure test_GetScopeItemNames(); end; { TTestBinaryFormatter } @@ -2708,6 +2710,56 @@ begin end; end; +procedure TTestFormatter.test_GetScopeItemNames(); +Var + f : IFormatterBase; + s : TMemoryStream; + a, b : TClass_A; + x : string; + ls : TStringList; +begin + ls := nil; + s := Nil; + b := nil; + a := TClass_A.Create(); + try + a.Val_Bool := False; + a.Val_Enum := teThree; + a.Val_String := '123'; + a.Val_32S := 55; + b := TClass_A.Create(); + + f := CreateFormatter(TypeInfo(TClass_A)); + + f.BeginObject('Root',TypeInfo(TClass_A)); + f.Put('a',TypeInfo(TClass_A),a); + f.Put('b',TypeInfo(TClass_A),b); + f.EndScope(); + + s := TMemoryStream.Create(); + f.SaveToStream(s); + FreeAndNil(a); + + ls := TStringList.Create(); + f := CreateFormatter(TypeInfo(TClass_A)); + s.Position := 0; + f.LoadFromStream(s); + x := 'Root'; + f.BeginObjectRead(x,TypeInfo(TClass_A)); + CheckEquals(0, f.GetScopeItemNames(ls), 'GetScopeItemNames.Count()'); + Check( ls.IndexOf('Val_Bool') >= 0 ); + Check( ls.IndexOf('Val_Enum') >= 0 ); + Check( ls.IndexOf('Val_String') >= 0 ); + Check( ls.IndexOf('Val_32S') >= 0 ); + f.EndScopeRead(); + finally + ls.Free(); + b.Free();; + a.Free(); + s.Free(); + end; +end; + { TTestBinaryFormatter } diff --git a/wst/trunk/tests/test_suite/wst_test_suite.lpi b/wst/trunk/tests/test_suite/wst_test_suite.lpi index 510c153f0..f2814f23a 100644 --- a/wst/trunk/tests/test_suite/wst_test_suite.lpi +++ b/wst/trunk/tests/test_suite/wst_test_suite.lpi @@ -7,7 +7,7 @@ - + @@ -27,7 +27,7 @@ - + @@ -40,12 +40,12 @@ - - + + - + @@ -69,29 +69,35 @@ - - + + + + - - + + + - - + + + - - + + + + @@ -161,301 +167,198 @@ + + - + - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - - - - - - - + + + - - - + + + - - - - - - - - - - - - - - - + + + - - - - - - - - - - + + + @@ -463,9 +366,9 @@ - - - + + + @@ -473,9 +376,9 @@ - - - + + + @@ -483,9 +386,9 @@ - - - + + + @@ -493,9 +396,9 @@ - - - + + + @@ -503,300 +406,218 @@ - - - - - - - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - - + + + - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - - - + + + + - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -807,7 +628,7 @@ - + diff --git a/wst/trunk/tests/test_suite/wst_test_suite.lpr b/wst/trunk/tests/test_suite/wst_test_suite.lpr index 474fc6da5..0c62ad0d7 100644 --- a/wst/trunk/tests/test_suite/wst_test_suite.lpr +++ b/wst/trunk/tests/test_suite/wst_test_suite.lpr @@ -17,7 +17,7 @@ uses metadata_generator, parserdefs, server_service_intf, metadata_wsdl, test_parserdef, base_xmlrpc_formatter, wst_fpc_xml, test_utilities, server_service_xmlrpc, test_parsers, wsdl_generator, xsd_generator, -xsd_consts; +xsd_consts, base_json_formatter, wsdl_parser; Const ShortOpts = 'alh'; diff --git a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi index a0ed71bdd..3bc440c9d 100644 --- a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi +++ b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi @@ -7,7 +7,7 @@ - + @@ -32,13 +32,13 @@ - + - + - + @@ -49,8 +49,8 @@ - - + + @@ -60,14 +60,14 @@ - + - + @@ -77,7 +77,7 @@ - + @@ -105,9 +105,9 @@ - + - + @@ -117,7 +117,7 @@ - + @@ -127,7 +127,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -152,7 +152,7 @@ - + @@ -161,14 +161,14 @@ - + - - - + + + @@ -176,76 +176,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -261,7 +261,7 @@ - + @@ -275,162 +275,154 @@ - - - - - - - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - - - - - - + + + - - - + + + - - - - - + + + + + + + - - + + - - + + - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -438,33 +430,33 @@ - - - + + + - - - - - + + + + + - - + + - - + + - - - + + + @@ -472,23 +464,23 @@ - - - + + + - - - + + + - + - - + + @@ -496,16 +488,16 @@ - - - + + + - - - + + + @@ -513,40 +505,40 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -554,42 +546,44 @@ - - - + + + - - - + + + - - - + + + - - - - - + + + + + + + - - - + + + - - - + + + @@ -597,9 +591,9 @@ - - - + + + @@ -607,72 +601,72 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -680,89 +674,106 @@ - - + + - - + + - + - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - @@ -787,7 +798,7 @@ - + @@ -802,6 +813,16 @@ + + + + + + + + + + diff --git a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr index 17be7f5f2..3695c65d6 100644 --- a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr +++ b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr @@ -12,7 +12,7 @@ uses edit_helper, ufclassedit, ufpropedit, uinterfaceedit, udm, pascal_parser_intf, PasTree, PParser, uprocedit, common_gui_utils, uargedit, umoduleedit, ubindingedit, ufrmsaveoption, ufarrayedit, generator, - uftypealiasedit, ufrecordedit, wsdl_generator; + uftypealiasedit, ufrecordedit, wsdl_generator, xsd_parser; begin Application.Initialize; diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm index 0dde68c23..226dc1518 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm @@ -78,11 +78,9 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit PopupMenu = PopupMenu2 TabOrder = 0 BookMarkOptions.Xoffset = 81 - BookMarkOptions.OnChange = nil Gutter.DigitCount = 5 Gutter.ShowLineNumbers = True Gutter.ShowCodeFolding = True - Gutter.OnChange = nil Gutter.CodeFoldingWidth = 14 Highlighter = SynPasSyn1 Keystrokes = < @@ -407,7 +405,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit ShortCut = 24642 end> ReadOnly = True - SelectedColor.OnChange = nil end end object tsWSDL: TTabSheet @@ -427,9 +424,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit PopupMenu = PopupMenu2 TabOrder = 0 BookMarkOptions.Xoffset = 54 - BookMarkOptions.OnChange = nil Gutter.ShowLineNumbers = True - Gutter.OnChange = nil Gutter.CodeFoldingWidth = 14 Highlighter = SynXMLSyn1 Keystrokes = < @@ -754,7 +749,6 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit ShortCut = 24642 end> ReadOnly = True - SelectedColor.OnChange = nil end end object tsProxy: TTabSheet @@ -774,9 +768,11 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit PopupMenu = PopupMenu2 TabOrder = 0 BookMarkOptions.Xoffset = 81 + BookMarkOptions.OnChange = nil Gutter.DigitCount = 5 Gutter.ShowLineNumbers = True Gutter.ShowCodeFolding = True + Gutter.OnChange = nil Gutter.CodeFoldingWidth = 14 Highlighter = SynPasSyn1 Keystrokes = < @@ -1101,6 +1097,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit ShortCut = 24642 end> ReadOnly = True + SelectedColor.OnChange = nil end end object tsImp: TTabSheet @@ -1120,9 +1117,11 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit PopupMenu = PopupMenu2 TabOrder = 0 BookMarkOptions.Xoffset = 81 + BookMarkOptions.OnChange = nil Gutter.DigitCount = 5 Gutter.ShowLineNumbers = True Gutter.ShowCodeFolding = True + Gutter.OnChange = nil Gutter.CodeFoldingWidth = 14 Highlighter = SynPasSyn1 Keystrokes = < @@ -1447,6 +1446,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit ShortCut = 24642 end> ReadOnly = True + SelectedColor.OnChange = nil end end object tsBinder: TTabSheet @@ -1466,10 +1466,12 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit PopupMenu = PopupMenu2 TabOrder = 0 BookMarkOptions.Xoffset = 81 + BookMarkOptions.OnChange = nil Gutter.AutoSize = True Gutter.DigitCount = 5 Gutter.ShowLineNumbers = True Gutter.ShowCodeFolding = True + Gutter.OnChange = nil Gutter.CodeFoldingWidth = 14 Highlighter = SynPasSyn1 Keystrokes = < @@ -1794,6 +1796,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit ShortCut = 24642 end> ReadOnly = True + SelectedColor.OnChange = nil end end object tsLog: TTabSheet @@ -1926,6 +1929,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Caption = 'Open File' DisableIfNoHandler = True OnExecute = actOpenFileExecute + ShortCut = 16463 end object actExit: TAction Caption = 'Exit' @@ -1994,6 +1998,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Caption = 'Save' DisableIfNoHandler = True OnExecute = actSaveExecute + ShortCut = 16467 end object actDelete: TAction Caption = 'Delete' diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs index ec4054c52..43fb1e426 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs @@ -22,63 +22,61 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +'='#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#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gut' - +'ter.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'Sh' - +'ortCut'#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'S' - +'hortCut'#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'S' - +'hortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'S' - +'hortCut'#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'#6'tsWSDL'#7'Caption'#6#5'&WSDL'#12'ClientHeigh' - +'t'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#7'srcWSDL'#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#233#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'6'#24'BookMarkOptions.OnChang' - +'e'#13#22'Gutter.ShowLineNumbers'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFol' - +'dingWidth'#2#14#11'Highlighter'#7#10'SynXMLSyn1'#10'Keystrokes'#14#1#7'Comm' - +'and'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Comma' - +'nd'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Com' - +'mand'#2'h'#8'ShortCut'#3'( '#0#1#7'Command'#3#212#0#8'ShortCut'#3'(@'#0#1#7 + +'pMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.DigitCou' + +'nt'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#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'C' + +'ommand'#2#13#8'ShortCut'#3'!@'#0#1#7'Command'#2'q'#8'ShortCut'#3'!`'#0#1#7 + +'Command'#2#7#8'ShortCut'#2'$'#0#1#7'Command'#2'k'#8'ShortCut'#3'$ '#0#1#7'C' + +'ommand'#2#15#8'ShortCut'#3'$@'#0#1#7'Command'#2's'#8'ShortCut'#3'$`'#0#1#7 + +'Command'#2#8#8'ShortCut'#2'#'#0#1#7'Command'#2'l'#8'ShortCut'#3'# '#0#1#7'C' + +'ommand'#2#16#8'ShortCut'#3'#@'#0#1#7'Command'#2't'#8'ShortCut'#3'#`'#0#1#7 + +'Command'#3#223#0#8'ShortCut'#2'-'#0#1#7'Command'#3#201#0#8'ShortCut'#3'-@'#0 + +#1#7'Command'#3'\'#2#8'ShortCut'#3'- '#0#1#7'Command'#3#246#1#8'ShortCut'#2 + +'.'#0#1#7'Command'#3'['#2#8'ShortCut'#3'. '#0#1#7'Command'#3#245#1#8'ShortCu' + +'t'#2#8#0#1#7'Command'#3#245#1#8'ShortCut'#3#8' '#0#1#7'Command'#3#248#1#8'S' + +'hortCut'#3#8'@'#0#1#7'Command'#3'Y'#2#8'ShortCut'#4#8#128#0#0#0#1#7'Command' + +#3'Z'#2#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#3#253#1#8'ShortCut'#2#13#0#1#7 + +'Command'#3#199#0#8'ShortCut'#3'A@'#0#1#7'Command'#3#201#0#8'ShortCut'#3'C@' + +#0#1#7'Command'#3'b'#2#8'ShortCut'#3'I`'#0#1#7'Command'#3#253#1#8'ShortCut'#3 + +'M@'#0#1#7'Command'#3#254#1#8'ShortCut'#3'N@'#0#1#7'Command'#3#247#1#8'Short' + +'Cut'#3'T@'#0#1#7'Command'#3'c'#2#8'ShortCut'#3'U`'#0#1#7'Command'#3'\'#2#8 + +'ShortCut'#3'V@'#0#1#7'Command'#3'['#2#8'ShortCut'#3'X@'#0#1#7'Command'#3#251 + +#1#8'ShortCut'#3'Y@'#0#1#7'Command'#3#250#1#8'ShortCut'#3'Y`'#0#1#7'Command' + +#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Command'#3'Z'#2#8'ShortCut'#3'Z`'#0#1#7'Comm' + +'and'#3'-'#1#8'ShortCut'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7 + +'Command'#3'/'#1#8'ShortCut'#3'2@'#0#1#7'Command'#3'0'#1#8'ShortCut'#3'3@'#0 + +#1#7'Command'#3'1'#1#8'ShortCut'#3'4@'#0#1#7'Command'#3'2'#1#8'ShortCut'#3'5' + +'@'#0#1#7'Command'#3'3'#1#8'ShortCut'#3'6@'#0#1#7'Command'#3'4'#1#8'ShortCut' + +#3'7@'#0#1#7'Command'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'Short' + +'Cut'#3'9@'#0#1#7'Command'#3'_'#1#8'ShortCut'#3'0`'#0#1#7'Command'#3'`'#1#8 + +'ShortCut'#3'1`'#0#1#7'Command'#3'a'#1#8'ShortCut'#3'2`'#0#1#7'Command'#3'b' + +#1#8'ShortCut'#3'3`'#0#1#7'Command'#3'c'#1#8'ShortCut'#3'4`'#0#1#7'Command'#3 + +'d'#1#8'ShortCut'#3'5`'#0#1#7'Command'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Comman' + +'d'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'C' + +'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0 + +#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3 + ,'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut' + +#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T' + +'TabSheet'#6'tsWSDL'#7'Caption'#6#5'&WSDL'#12'ClientHeight'#3'='#2#11'Client' + +'Width'#3#245#1#0#8'TSynEdit'#7'srcWSDL'#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#233#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'6'#22'Gutter.ShowLineNumbers'#9#23'Gutter.CodeFo' + +'ldingWidth'#2#14#11'Highlighter'#7#10'SynXMLSyn1'#10'Keystrokes'#14#1#7'Com' + +'mand'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Comm' + +'and'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Co' + +'mmand'#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'C' +'ommand'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'C' +'ommand'#2#2#8'ShortCut'#2''''#0#1#7'Command'#2'f'#8'ShortCut'#3''' '#0#1#7 @@ -117,23 +115,126 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +'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'#7'tsProxy'#7'Caption'#6#6'&Proxy'#12 - +'ClientHeight'#3'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#8'srcProxy'#6'He' - +'ight'#3'='#2#5'Width'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12 - +'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Height'#2#236#9'Font.Name' - +#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10 - +'PopupMenu2'#8'TabOrder'#2#0#23'BookMarkOptions.Xoffset'#2'Q'#17'Gutter.Digi' - +'tCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gu' - +'tter.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 + +#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T' + +'TabSheet'#7'tsProxy'#7'Caption'#6#6'&Proxy'#12'ClientHeight'#3'='#2#11'Clie' + +'ntWidth'#3#245#1#0#8'TSynEdit'#8'srcProxy'#6'Height'#3'='#2#5'Width'#3#245#1 + +#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7 + +#7'clBlack'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7 + +#7'fpFixed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0 + +#23'BookMarkOptions.Xoffset'#2'Q'#24'BookMarkOptions.OnChange'#13#17'Gutter.' + +'DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#15 + +'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2#14#11'Highlighter'#7#10'S' + +'ynPasSyn1'#10'Keystrokes'#14#1#7'Command'#2#3#8'ShortCut'#2'&'#0#1#7'Comman' + +'d'#2'g'#8'ShortCut'#3'& '#0#1#7'Command'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Co' + +'mmand'#2#4#8'ShortCut'#2'('#0#1#7'Command'#2'h'#8'ShortCut'#3'( '#0#1#7'Com' + +'mand'#3#212#0#8'ShortCut'#3'(@'#0#1#7'Command'#2#1#8'ShortCut'#2'%'#0#1#7'C' + +'ommand'#2'e'#8'ShortCut'#3'% '#0#1#7'Command'#2#5#8'ShortCut'#3'%@'#0#1#7'C' + ,'ommand'#2'i'#8'ShortCut'#3'%`'#0#1#7'Command'#2#2#8'ShortCut'#2''''#0#1#7'C' + +'ommand'#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'C' + +'ommand'#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'C' + +'ommand'#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'C' + +'ommand'#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'Command'#3'['#2#8'ShortCut'#3 + +'. '#0#1#7'Command'#3#245#1#8'ShortCut'#2#8#0#1#7'Command'#3#245#1#8'ShortCu' + +'t'#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'C' + +'ommand'#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'Short' + +'Cut'#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'ShortCut'#3'Y`'#0#1#7'Command'#3'Y'#2#8'ShortCut'#3'Z@'#0#1#7'Com' + +'mand'#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'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'Short' + +'Cut'#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'ShortCut'#3'4`'#0#1#7'Command'#3'd'#1#8'ShortCut'#3'5`'#0#1#7'Comman' + +'d'#3'e'#1#8'ShortCut'#3'6`'#0#1#7'Command'#3'f'#1#8'ShortCut'#3'7`'#0#1#7'C' + +'ommand'#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'Command'#3#233#0#8'ShortCut'#3'L`'#0#1#7'Command'#3'd'#2#8'ShortCu' + +'t'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut'#3#9' '#0#1#7'Command'#3#250#0#8'Sh' + +'ortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange'#13#0#0#0#9'TTabS' + +'heet'#5'tsImp'#7'Caption'#6#24'Im&plementation Skeleton'#12'ClientHeight'#3 + +'='#2#11'ClientWidth'#3#245#1#0#8'TSynEdit'#6'srcImp'#6'Height'#3'='#2#5'Wid' + +'th'#3#245#1#5'Align'#7#8'alClient'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'F' + +'ont.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'BookMarkOptions.OnChange' + +#13#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCod' + +'eFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFoldingWidth'#2#14#11'High' + +'lighter'#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'Short' + +'Cut'#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'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'Comman' + +'d'#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'ShortC' + +'ut'#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'ShortCut'#3'T@'#0#1#7'Comm' + +'and'#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'Command'#3'-'#1#8'ShortCu' + +'t'#3'0@'#0#1#7'Command'#3'.'#1#8'ShortCut'#3'1@'#0#1#7'Command'#3'/'#1#8'Sh' + +'ortCut'#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'Comman' + +'d'#3'5'#1#8'ShortCut'#3'8@'#0#1#7'Command'#3'6'#1#8'ShortCut'#3'9@'#0#1#7'C' + +'ommand'#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'Command'#3'f'#1#8'ShortCu' + +'t'#3'7`'#0#1#7'Command'#3'g'#1#8'ShortCut'#3'8`'#0#1#7'Command'#3'h'#1#8'Sh' + +'ortCut'#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'Comma' + +'nd'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#22'SelectedColor.OnChange' + +#13#0#0#0#9'TTabSheet'#8'tsBinder'#7'Caption'#6#7'&Binder'#12'ClientHeight'#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_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'BookMarkOptions.OnChange' + +#13#15'Gutter.AutoSize'#9#17'Gutter.DigitCount'#2#5#22'Gutter.ShowLineNumber' + +'s'#9#22'Gutter.ShowCodeFolding'#9#15'Gutter.OnChange'#13#23'Gutter.CodeFold' + +'ingWidth'#2#14#11'Highlighter'#7#10'SynPasSyn1'#10'Keystrokes'#14#1#7'Comma' + +'nd'#2#3#8'ShortCut'#2'&'#0#1#7'Command'#2'g'#8'ShortCut'#3'& '#0#1#7'Comman' + +'d'#3#211#0#8'ShortCut'#3'&@'#0#1#7'Command'#2#4#8'ShortCut'#2'('#0#1#7'Comm' + +'and'#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'C' + +'ommand'#2#5#8'ShortCut'#3'%@'#0#1#7'Command'#2'i'#8'ShortCut'#3'%`'#0#1#7'C' + +'ommand'#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 @@ -156,7 +257,7 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +#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' + ,#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 @@ -167,183 +268,84 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +'ommand'#3'h'#1#8'ShortCut'#3'9`'#0#1#7'Command'#3#231#0#8'ShortCut'#3'N`'#0 +#1#7'Command'#3#232#0#8'ShortCut'#3'C`'#0#1#7'Command'#3#233#0#8'ShortCut'#3 +'L`'#0#1#7'Command'#3'd'#2#8'ShortCut'#2#9#0#1#7'Command'#3'e'#2#8'ShortCut' - +#3#9' '#0#1#7'Command'#3#250#0#8'ShortCut'#3'B`'#0#0#8'ReadOnly'#9#0#0#0#9'T' - +'TabSheet'#5'tsImp'#7'Caption'#6#24'Im&plementation Skeleton'#12'ClientHeigh' - +'t'#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.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.ShowCodeFolding'#9#23'Gutter.CodeFoldin' - +'gWidth'#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#0#0#0#9'TTabSheet'#8 - +'tsBinder'#7'Caption'#6#7'&Binder'#12'ClientHeight'#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_CHARSET'#10'Font.Color'#7#7'clBlac' - +'k'#11'Font.Height'#2#236#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7'fpFix' - +'ed'#11'ParentColor'#8#9'PopupMenu'#7#10'PopupMenu2'#8'TabOrder'#2#0#23'Book' - +'MarkOptions.Xoffset'#2'Q'#15'Gutter.AutoSize'#9#17'Gutter.DigitCount'#2#5#22 - +'Gutter.ShowLineNumbers'#9#22'Gutter.ShowCodeFolding'#9#23'Gutter.CodeFoldin' - +'gWidth'#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#0#0#0#9'TTabSheet'#5 - +'tsLog'#7'Caption'#6#4'&Log'#12'ClientHeight'#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'alClien' - +'t'#13'Lines.Strings'#1#6#0#0#10'ScrollBars'#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'ParentColor'#8#0#0#9'TMainMenu'#9'MainMenu1'#4'lef' - +'t'#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'actNew' - +'FileExecute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#1'-'#0#0#9'TMenuIte' - +'m'#9'MenuItem5'#6'Action'#7#11'actOpenFile'#7'OnClick'#7#18'actOpenFileExec' - +'ute'#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'On' - +'Click'#7#14'actSaveExecute'#0#0#9'TMenuItem'#10'MenuItem32'#6'Action'#7#9'a' - +'ctSaveAs'#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'On' - +'Click'#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'OnCli' - +'ck'#7#21'actRefreshViewExecute'#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'MenuItem13'#6'Action'#7 - +#15'actUpdateObject'#7'Caption'#6#13'Update Object'#7'OnClick'#7#22'actUpdat' - +'eObjectExecute'#0#0#9'TMenuItem'#10'MenuItem34'#6'Action'#7#9'actDelete'#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'actAboutExecute'#0#0#0#11 - +'TActionList'#2'AL'#4'left'#3'X'#1#3'top'#2'8'#0#7'TAction'#11'actOpenFile'#7 - +'Caption'#6#9'Open File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18'actOpenF' - +'ileExecute'#0#0#7'TAction'#7'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHa' - +'ndler'#9#9'OnExecute'#7#14'actExitExecute'#0#0#7'TAction'#9'actExport'#7'Ca' - +'ption'#6#24'Save generated files ...'#18'DisableIfNoHandler'#9#9'OnExecute' - +#7#16'actExportExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'a' - +'ctAbout'#7'Caption'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'a' - +'ctAboutExecute'#0#0#7'TAction'#9'actSaveAs'#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 En' - +'umeration'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actEnumCreateExecute' - +#0#0#7'TAction'#15'actUpdateObject'#7'Caption'#6#6'Update'#18'DisableIfNoHan' - +'dler'#9#9'OnExecute'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpdat' - +'eObjectUpdate'#0#0#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh V' - +'iews'#18'DisableIfNoHandler'#9#9'OnExecute'#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#17'Create Class Type'#18'DisableIfNoHandler'#9#9'OnExecute'#7#24 - +'actCompoundCreateExecute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16 - ,'Create Interface'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actIntfCreateE' - +'xecute'#0#0#7'TAction'#13'actFullExpand'#7'Caption'#6#11'Full expand'#18'Di' - +'sableIfNoHandler'#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'actFullCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Capti' - +'on'#6#4'Save'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0 - +#7'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'O' - +'nExecute'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0 - +#7'TAction'#14'actArrayCreate'#7'Caption'#6#12'Create Array'#18'DisableIfNoH' - +'andler'#9#9'OnExecute'#7#21'actArrayCreateExecute'#0#0#7'TAction'#18'actTyp' - +'eALiasCreate'#7'Caption'#6#17'Create Type ALias'#18'DisableIfNoHandler'#9#9 - +'OnExecute'#7#25'actTypeALiasCreateExecute'#0#0#7'TAction'#15'actRecordCreat' - +'e'#7'Caption'#6#13'Create Record'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22 - +'actRecordCreateExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un' - +' fichier existant'#6'Filter'#6'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pa' - +'s)|*.pas'#11'FilterIndex'#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPat' - +'hMustExist'#15'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'lef' - +'t'#3#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'Co' - +'mmentAttri.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'clGreen'#20'DirectiveAttri.Style'#11#6'fs' - +'Bold'#0#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog' - +#2'SD'#5'Title'#6#27'Enregistrer le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6 + +#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'-'#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#11'a' + +'ctOpenFile'#7'OnClick'#7#18'actOpenFileExecute'#0#0#9'TMenuItem'#9'MenuItem' + +'3'#6'Action'#7#9'actExport'#7'OnClick'#7#16'actExportExecute'#0#0#9'TMenuIt' + +'em'#9'MenuItem7'#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'actSav' + +'eAsExecute'#0#0#9'TMenuItem'#10'MenuItem17'#7'Caption'#6#1'-'#0#0#9'TMenuIt' + +'em'#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'MenuItem29'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuI' + +'tem30'#6'Action'#7#13'actFullExpand'#7'OnClick'#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'Action'#7#13'actEnumCreate'#7'OnC' + +'lick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuItem23'#6'Action'#7 + +#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateExecute'#0#0#9'TMenu' + +'Item'#10'MenuItem48'#6'Action'#7#15'actRecordCreate'#7'OnClick'#7#22'actRec' + +'ordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem25'#6'Action'#7#13'actIntfCre' + +'ate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem35'#6 + +'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9'T' + +'MenuItem'#10'MenuItem36'#6'Action'#7#18'actTypeALiasCreate'#7'OnClick'#7#25 + +'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'MenuItem12'#7'Caption'#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#9'TMenuItem' + +#10'MenuItem34'#6'Action'#7#9'actDelete'#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'actAboutExecute'#0#0#0#11'TActionList'#2'AL'#4'left'#3'X'#1 + +#3'top'#2'8'#0#7'TAction'#11'actOpenFile'#7'Caption'#6#9'Open File'#18'Disab' + +'leIfNoHandler'#9#9'OnExecute'#7#18'actOpenFileExecute'#8'ShortCut'#3'O@'#0#0 + +#7'TAction'#7'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExe' + +'cute'#7#14'actExitExecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save' + +' generated files ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExportE' + +'xecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Capt' + +'ion'#6#5'About'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExecute' + +#0#0#7'TAction'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfNoHand' + +'ler'#9#9'OnExecute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate' + +#0#0#7'TAction'#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#18'Dis' + +'ableIfNoHandler'#9#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAction'#15 + +'actUpdateObject'#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9'OnExecut' + +'e'#7#22'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0 + +#7'TAction'#14'actRefreshView'#7'Caption'#6#14'&Refresh Views'#18'DisableIfN' + +'oHandler'#9#9'OnExecute'#7#21'actRefreshViewExecute'#0#0#7'TAction'#10'actN' + +'ewFile'#7'Caption'#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17 + +'actNewFileExecute'#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6#17'Cre' + ,'ate Class Type'#18'DisableIfNoHandler'#9#9'OnExecute'#7#24'actCompoundCreat' + +'eExecute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create Interface' + +#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actIntfCreateExecute'#0#0#7'TAct' + +'ion'#13'actFullExpand'#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'act' + +'FullCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4'Save'#18'Disa' + +'bleIfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#8'ShortCut'#3'S@'#0#0#7 + +'TAction'#9'actDelete'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnE' + +'xecute'#7#16'actDeleteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7 + +'TAction'#14'actArrayCreate'#7'Caption'#6#12'Create Array'#18'DisableIfNoHan' + +'dler'#9#9'OnExecute'#7#21'actArrayCreateExecute'#0#0#7'TAction'#18'actTypeA' + +'LiasCreate'#7'Caption'#6#17'Create Type ALias'#18'DisableIfNoHandler'#9#9'O' + +'nExecute'#7#25'actTypeALiasCreateExecute'#0#0#7'TAction'#15'actRecordCreate' + +#7'Caption'#6#13'Create Record'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'a' + +'ctRecordCreateExecute'#0#0#0#11'TOpenDialog'#2'OD'#5'Title'#6#26'Ouvrir un ' + +'fichier existant'#6'Filter'#6'3WDSL files(*.WSDL)|*.WSDL|Pascal file (*.pas' + +')|*.pas'#11'FilterIndex'#2#0#10'InitialDir'#6#2'.\'#7'Options'#11#15'ofPath' + +'MustExist'#15'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left' + +#3#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'Comme' + +'ntAttri.Foreground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#22'St' + +'ringAttri.Foreground'#7#8'clMaroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25 + +'DirectiveAttri.Foreground'#7#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBol' + +'d'#0#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#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'Options'#11#15 +'ofPathMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'to' +'p'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#152#0 diff --git a/wst/trunk/ws_helper/parserutils.pas b/wst/trunk/ws_helper/parserutils.pas index 69d78e019..4f9f1a6c9 100644 --- a/wst/trunk/ws_helper/parserutils.pas +++ b/wst/trunk/ws_helper/parserutils.pas @@ -76,7 +76,7 @@ const implementation uses StrUtils, rtti_filters; -const LANGAGE_TOKEN : array[0..107] of string = ( +const LANGAGE_TOKEN : array[0..108] of string = ( 'ABSTRACT', 'AND', 'ARRAY', 'AS', 'ASM', 'BEGIN', 'BOOLEAN', 'BYTE', 'CASE', 'CDECL', 'CHAR', 'CLASS', 'COMP', 'CONST', 'CONSTRUCTOR', 'CONTAINS', 'CURRENCY', @@ -91,7 +91,7 @@ const LANGAGE_TOKEN : array[0..107] of string = ( 'OBJECT', 'OF', 'OLEVARIANT', 'OR', 'OUT', 'OVERLOAD', 'OVERRIDE', 'PACKAGE', 'PACKED', 'PASCAL', 'PCHAR', 'PRIVATE', 'PROCEDURE', 'PROGRAM', 'PUBLISHED', 'RAISE', 'READ', 'REAL', 'RECORD', 'REGISTER', 'REINTRODUCE', 'REPEAT', 'REQUIRES', 'RESULT', - 'SAFECALL', 'SET', 'SHL', 'SHORTINT', 'SHR', 'SINGLE', 'SMALLINT', 'STDCALL', 'STORED', + 'SAFECALL', 'SET', 'SHL', 'SHORTINT', 'SHR', 'SINGLE', 'SMALLINT', 'STDCALL', 'STORED', 'STRING', 'THEN', 'TO', 'TRY', 'TYPE', 'UNIT', 'UNTIL', 'USES', 'VAR', 'VARARGS', 'VARIANT', 'VIRTUAL', 'WHILE', 'WIDECHAR', 'WITH', 'WORD', 'WRITE', 'XOR' ); diff --git a/wst/trunk/ws_helper/pascal_parser_intf.pas b/wst/trunk/ws_helper/pascal_parser_intf.pas index 20877cebc..d92f660ff 100644 --- a/wst/trunk/ws_helper/pascal_parser_intf.pas +++ b/wst/trunk/ws_helper/pascal_parser_intf.pas @@ -132,6 +132,7 @@ type procedure RegisterExternalAlias(AObject : TPasElement; const AExternalName : String); function SameName(AObject : TPasElement; const AName : string) : Boolean; function GetExternalName(AObject : TPasElement) : string; + function GetNameSpace(AType : TPasType) : string ; function IsAttributeProperty(AObject : TPasVariable) : Boolean; procedure SetPropertyAsAttribute(AObject : TPasVariable; const AValue : Boolean); @@ -320,6 +321,7 @@ begin AddAlias('token','string',Result); AddAlias('anyURI','string',Result); + AddAlias('ID','string',Result); AddAlias('float','Single',Result); AddAlias('nonNegativeInteger','LongWord',Result); AddAlias('positiveInteger','nonNegativeInteger',Result); @@ -802,6 +804,18 @@ begin end; end; +function TwstPasTreeContainer.GetNameSpace(AType: TPasType): string; +begin + if Assigned(AType) and + Assigned(AType.Parent{Section}) and + Assigned(AType.Parent.Parent{Module}) + then begin + Result := GetExternalName(AType.Parent.Parent); + end else begin + Result := ''; + end; +end; + { TwstBinding } constructor TwstBinding.Create( diff --git a/wst/trunk/ws_helper/wsdl_parser.pas b/wst/trunk/ws_helper/wsdl_parser.pas index 2b9beba27..94a5db3ae 100644 --- a/wst/trunk/ws_helper/wsdl_parser.pas +++ b/wst/trunk/ws_helper/wsdl_parser.pas @@ -846,6 +846,8 @@ begin if Assigned(typeNode) then begin ExtractSoapBindingStyle(bindingNode,locWStrBuffer); locSoapBindingStyle := locWStrBuffer; + if IsStrEmpty(locSoapBindingStyle) then + locSoapBindingStyle := s_document; intfDef := ParsePortType(typeNode,bindingNode,locSoapBindingStyle); bdng := SymbolTable.AddBinding(bindingName,intfDef); bdng.Address := ExtractAddress(); diff --git a/wst/trunk/ws_helper/xsd_generator.pas b/wst/trunk/ws_helper/xsd_generator.pas index 759ae2a0f..61b1bca89 100644 --- a/wst/trunk/ws_helper/xsd_generator.pas +++ b/wst/trunk/ws_helper/xsd_generator.pas @@ -279,7 +279,7 @@ begin c := Pred(ANode.Attributes.Length); if ( AStartIndex >= 0 ) then i := AStartIndex; - for i := 0 to c do begin + for i := AStartIndex to c do begin if AnsiSameText(AAttValue,ANode.Attributes.Item[i].NodeValue) and ( b or ( Pos(AStartingWith,ANode.Attributes.Item[i].NodeName) = 1 )) then begin @@ -530,25 +530,28 @@ begin trueParent.InheritsFrom(TPasNativeSimpleType) then begin typeCategory := tcSimpleContent; - derivationNode := CreateElement(Format('%s:%s',[s_xs_short,s_extension]),cplxNode,ADocument); - s := Trim(GetNameSpaceShortName(GetTypeNameSpace(AContainer,trueParent),ADocument)); - if ( Length(s) > 0 ) then begin - s := s + ':'; - end; - s := s + AContainer.GetExternalName(trueParent); - derivationNode.SetAttribute(s_base,s); - hasSequence := False; end; + derivationNode := CreateElement(Format('%s:%s',[s_xs_short,s_extension]),cplxNode,ADocument); + s := Trim(GetNameSpaceShortName(GetTypeNameSpace(AContainer,trueParent),ADocument)); + if ( Length(s) > 0 ) then begin + s := s + ':'; + end; + s := s + AContainer.GetExternalName(trueParent); + derivationNode.SetAttribute(s_base,s); + hasSequence := False; end; - for i := 0 to Pred(typItm.Members.Count) do begin - if TPasElement(typItm.Members[i]).InheritsFrom(TPasProperty) then begin - p := TPasProperty(typItm.Members[i]); - if not AContainer.IsAttributeProperty(p) then begin - if ( typeCategory = tcSimpleContent ) then begin - raise EXsdGeneratorException.CreateFmt('Invalid type definition, a simple type cannot have "not attribute" properties : "%s"',[AContainer.GetExternalName(ASymbol)]); + if ( typItm.Members.Count > 0 ) then begin + hasSequence := False; + for i := 0 to Pred(typItm.Members.Count) do begin + if TPasElement(typItm.Members[i]).InheritsFrom(TPasProperty) then begin + p := TPasProperty(typItm.Members[i]); + if not AContainer.IsAttributeProperty(p) then begin + if ( typeCategory = tcSimpleContent ) then begin + raise EXsdGeneratorException.CreateFmt('Invalid type definition, a simple type cannot have "not attribute" properties : "%s"',[AContainer.GetExternalName(ASymbol)]); + end; + hasSequence := True; end; end; - hasSequence := True; end; end; if hasSequence then begin @@ -581,7 +584,11 @@ begin propTypItm := p.VarType; if Assigned(propTypItm) then begin prop_ns_shortName := GetNameSpaceShortName(GetTypeNameSpace(AContainer,propTypItm),ADocument); - propNode.SetAttribute(s_type,Format('%s:%s',[prop_ns_shortName,AContainer.GetExternalName(propTypItm)])); + if GetUltimeType(propTypItm).InheritsFrom(TPasArrayType) then + s := AContainer.GetExternalName(TPasArrayType(GetUltimeType(propTypItm)).ElType) + else + s := AContainer.GetExternalName(propTypItm); + propNode.SetAttribute(s_type,Format('%s:%s',[prop_ns_shortName,s])); if AContainer.IsAttributeProperty(p) then begin if AnsiSameText('Has',Copy(p.StoredAccessorName,1,3)) then propNode.SetAttribute(s_use,'optional') @@ -589,10 +596,13 @@ begin propNode.SetAttribute(s_use,'required'); end else begin if AnsiSameText('Has',Copy(p.StoredAccessorName,1,3)) then - propNode.SetAttribute(s_minOccurs,'0') - else - propNode.SetAttribute(s_minOccurs,'1'); - propNode.SetAttribute(s_maxOccurs,'1'); + propNode.SetAttribute(s_minOccurs,'0'); + {else + propNode.SetAttribute(s_minOccurs,'1');} + if GetUltimeType(propTypItm).InheritsFrom(TPasArrayType) then + propNode.SetAttribute(s_maxOccurs,s_unbounded) + {else + propNode.SetAttribute(s_maxOccurs,'1');} end; end; end; diff --git a/wst/trunk/ws_helper/xsd_parser.pas b/wst/trunk/ws_helper/xsd_parser.pas index 6956a5a34..31f475d36 100644 --- a/wst/trunk/ws_helper/xsd_parser.pas +++ b/wst/trunk/ws_helper/xsd_parser.pas @@ -188,6 +188,8 @@ end; function TCustomXsdSchemaParser.FindElement(const AName: String): TPasElement; begin Result := SymbolTable.FindElementInModule(AName,FModule); + if ( Result = nil ) then + Result := SymbolTable.FindElement(AName); end; function TCustomXsdSchemaParser.FindNamedNode( @@ -484,8 +486,7 @@ end; procedure TCustomXsdSchemaParser.ParseTypes(); var - nd : TDOMNodeRttiExposer; - schmCrsr, crsSchemaChild, typTmpCrs : IObjectCursor; + crsSchemaChild, typTmpCrs : IObjectCursor; typFilterStr : string; typNode : TDOMNode; begin