From a670b3cc1142612d36c1e3cfb28dd9fa59fc0ad9 Mon Sep 17 00:00:00 2001 From: inoussa Date: Tue, 21 Aug 2007 22:14:13 +0000 Subject: [PATCH] Record definition partialy supported in Type Library Editor git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@245 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../tests/record/server/record_server.lpi | 23 +- wst/trunk/type_lib_edtr/edit_helper.pas | 57 +- wst/trunk/type_lib_edtr/typ_lib_edtr.lpi | 364 +++++------- wst/trunk/type_lib_edtr/typ_lib_edtr.lpr | 2 +- wst/trunk/type_lib_edtr/ufclassedit.lfm | 7 +- wst/trunk/type_lib_edtr/ufclassedit.lrs | 60 +- wst/trunk/type_lib_edtr/ufclassedit.pas | 2 +- wst/trunk/type_lib_edtr/ufpropedit.pas | 96 ++- wst/trunk/type_lib_edtr/ufrecordedit.lfm | 178 ++++++ wst/trunk/type_lib_edtr/ufrecordedit.lrs | 51 ++ wst/trunk/type_lib_edtr/ufrecordedit.pas | 233 ++++++++ .../type_lib_edtr/uwsttypelibraryedit.lfm | 34 +- .../type_lib_edtr/uwsttypelibraryedit.lrs | 558 +++++++++--------- .../type_lib_edtr/uwsttypelibraryedit.pas | 17 +- wst/trunk/type_lib_edtr/view_helper.pas | 46 ++ wst/trunk/type_lib_edtr/wsdl_generator.pas | 114 +++- wst/trunk/ws_helper/generator.pas | 17 + wst/trunk/ws_helper/pascal_parser_intf.pas | 40 +- wst/trunk/ws_helper/ws_helper.lpi | 61 +- wst/trunk/ws_helper/wsdl2pas_imp.pas | 126 ++-- 20 files changed, 1418 insertions(+), 668 deletions(-) create mode 100644 wst/trunk/type_lib_edtr/ufrecordedit.lfm create mode 100644 wst/trunk/type_lib_edtr/ufrecordedit.lrs create mode 100644 wst/trunk/type_lib_edtr/ufrecordedit.pas diff --git a/wst/trunk/tests/record/server/record_server.lpi b/wst/trunk/tests/record/server/record_server.lpi index 687f9f060..698534c17 100644 --- a/wst/trunk/tests/record/server/record_server.lpi +++ b/wst/trunk/tests/record/server/record_server.lpi @@ -12,7 +12,7 @@ - + @@ -36,8 +36,8 @@ - - + + @@ -98,8 +98,8 @@ - - + + @@ -119,7 +119,7 @@ - + @@ -188,7 +188,16 @@ - + + + + + + + + + + diff --git a/wst/trunk/type_lib_edtr/edit_helper.pas b/wst/trunk/type_lib_edtr/edit_helper.pas index 0bae966ff..e3c9a0b77 100644 --- a/wst/trunk/type_lib_edtr/edit_helper.pas +++ b/wst/trunk/type_lib_edtr/edit_helper.pas @@ -41,7 +41,8 @@ type TObjectUpdaterClass = class of TObjectUpdater; function CreateEnum(AContainer : TwstPasTreeContainer) : TPasEnumType; - function CreateCompoundObject(ASymbolTable : TwstPasTreeContainer) : TPasClassType; + function CreateClassObject(ASymbolTable : TwstPasTreeContainer) : TPasClassType; + function CreateRecordObject(ASymbolTable : TwstPasTreeContainer) : TPasRecordType; function CreateArray(ASymbolTable : TwstPasTreeContainer) : TPasArrayType; function CreateInterface(ASymbolTable : TwstPasTreeContainer) : TPasClassType; function CreateMethod( @@ -75,7 +76,8 @@ type implementation uses Contnrs, Forms, ufEnumedit, ufclassedit, uinterfaceedit, uprocedit, - uargedit, umoduleedit, ubindingedit, ufarrayedit, uftypealiasedit; + uargedit, umoduleedit, ubindingedit, ufarrayedit, uftypealiasedit, + ufrecordedit; type @@ -164,6 +166,17 @@ type ):Boolean;override; end; + { TRecordUpdater } + + TRecordUpdater = class(TObjectUpdater) + public + class function CanHandle(AObject : TObject):Boolean;override; + class function UpdateObject( + AObject : TPasElement; + ASymbolTable : TwstPasTreeContainer + ):Boolean;override; + end; + { TTypeAliasUpdater } TTypeAliasUpdater = class(TObjectUpdater) @@ -241,6 +254,30 @@ type ):Boolean;override; end; +{ TRecordUpdater } + +class function TRecordUpdater.CanHandle(AObject : TObject) : Boolean; +begin + Result := ( inherited CanHandle(AObject) ) and AObject.InheritsFrom(TPasRecordType) ; +end; + +class function TRecordUpdater.UpdateObject( + AObject : TPasElement; + ASymbolTable : TwstPasTreeContainer +) : Boolean; +var + f : TfRecordEdit; + e : TPasRecordType; +begin + e := AObject as TPasRecordType; + f := TfRecordEdit.Create(Application); + try + Result := f.UpdateObject(e,etUpdate,ASymbolTable); + finally + f.Release(); + end; +end; + { TTypeAliasUpdater } class function TTypeAliasUpdater.CanHandle(AObject : TObject) : Boolean; @@ -517,7 +554,7 @@ begin end; end; -function CreateCompoundObject(ASymbolTable : TwstPasTreeContainer) : TPasClassType; +function CreateClassObject(ASymbolTable : TwstPasTreeContainer) : TPasClassType; var f : TfClassEdit; begin @@ -530,6 +567,19 @@ begin end; end; +function CreateRecordObject(ASymbolTable : TwstPasTreeContainer) : TPasRecordType; +var + f : TfRecordEdit; +begin + Result := nil; + f := TfRecordEdit.Create(Application); + try + f.UpdateObject(Result,etCreate,ASymbolTable); + finally + f.Release(); + end; +end; + function CreateArray(ASymbolTable : TwstPasTreeContainer) : TPasArrayType; var f : TfArrayEdit; @@ -716,6 +766,7 @@ initialization UpdaterRegistryInst.RegisterHandler(TBindingUpdater); UpdaterRegistryInst.RegisterHandler(TArrayUpdater); UpdaterRegistryInst.RegisterHandler(TTypeAliasUpdater); + UpdaterRegistryInst.RegisterHandler(TRecordUpdater); finalization FreeAndNil(UpdaterRegistryInst); diff --git a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpi index 6fe5f7b82..b521e0bf9 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,15 +32,13 @@ - + - + - - @@ -49,8 +47,8 @@ - - + + @@ -60,17 +58,17 @@ - + - - - - + + + + - + @@ -78,9 +76,9 @@ - - - + + + @@ -110,9 +108,11 @@ - - + + + + @@ -120,7 +120,7 @@ - + @@ -128,9 +128,9 @@ - - - + + + @@ -141,9 +141,11 @@ - - + + + + @@ -151,100 +153,102 @@ - - + + + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -254,13 +258,13 @@ - + - + @@ -271,84 +275,80 @@ - + - + - - - - + + + + - - - - - + + + - + - - - - - + + + - + - + - + - + - - + + - + @@ -359,49 +359,49 @@ - + - + - + - + - + - + - + @@ -410,28 +410,28 @@ - + - + - + - + @@ -441,29 +441,31 @@ - + - + - + - + + + - + @@ -473,20 +475,20 @@ - + - + - + @@ -497,14 +499,14 @@ - + - + @@ -514,38 +516,38 @@ - + - + - + - + - + - + @@ -555,40 +557,40 @@ - + - + - + - + - + - + @@ -598,7 +600,7 @@ - + @@ -608,195 +610,93 @@ - + - + - + - + - + - + - + - + - + - + - - - + + + + + + + + + + + + + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr b/wst/trunk/type_lib_edtr/typ_lib_edtr.lpr index 12e2c1051..463c9007e 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, wsdl_generator, ufpropedit, uinterfaceedit, udm, pascal_parser_intf, PasTree, PParser, uprocedit, common_gui_utils, uargedit, umoduleedit, ubindingedit, ufrmsaveoption, ufarrayedit, generator, - uftypealiasedit; + uftypealiasedit, ufrecordedit; begin Application.Initialize; diff --git a/wst/trunk/type_lib_edtr/ufclassedit.lfm b/wst/trunk/type_lib_edtr/ufclassedit.lfm index ba0c1caa5..8f67113e9 100644 --- a/wst/trunk/type_lib_edtr/ufclassedit.lfm +++ b/wst/trunk/type_lib_edtr/ufclassedit.lfm @@ -1,7 +1,7 @@ object fClassEdit: TfClassEdit - Left = 358 + Left = 272 Height = 547 - Top = 113 + Top = 42 Width = 518 HorzScrollBar.Page = 517 VertScrollBar.Page = 546 @@ -104,7 +104,8 @@ object fClassEdit: TfClassEdit Width = 200 end item - Caption = 'Attrbute' + Caption = 'Attribute' + Width = 60 end> PopupMenu = PopupMenu1 RowSelect = True diff --git a/wst/trunk/type_lib_edtr/ufclassedit.lrs b/wst/trunk/type_lib_edtr/ufclassedit.lrs index 97c9f07a9..a4e8405ce 100644 --- a/wst/trunk/type_lib_edtr/ufclassedit.lrs +++ b/wst/trunk/type_lib_edtr/ufclassedit.lrs @@ -1,8 +1,8 @@ { Ceci est un fichier ressource généré automatiquement par Lazarus } LazarusResources.Add('TfClassEdit','FORMDATA',[ - 'TPF0'#11'TfClassEdit'#10'fClassEdit'#4'Left'#3'f'#1#6'Height'#3'#'#2#3'Top'#2 - +'q'#5'Width'#3#6#2#18'HorzScrollBar.Page'#3#5#2#18'VertScrollBar.Page'#3'"'#2 + 'TPF0'#11'TfClassEdit'#10'fClassEdit'#4'Left'#3#16#1#6'Height'#3'#'#2#3'Top'#2 + +'*'#5'Width'#3#6#2#18'HorzScrollBar.Page'#3#5#2#18'VertScrollBar.Page'#3'"'#2 +#13'ActiveControl'#7#7'Button1'#11'BorderStyle'#7#13'bsSizeToolWin'#7'Captio' +'n'#6#10'fClassEdit'#12'ClientHeight'#3'#'#2#11'ClientWidth'#3#6#2#8'Positio' +'n'#7#15'poDesktopCenter'#0#6'TPanel'#6'Panel1'#6'Height'#2'2'#3'Top'#3#241#1 @@ -27,32 +27,32 @@ LazarusResources.Add('TfClassEdit','FORMDATA',[ +#1#11'ClientWidth'#3#235#1#8'TabOrder'#2#1#0#9'TListView'#7'edtProp'#6'Heigh' +'t'#3'&'#1#5'Width'#3#235#1#5'Align'#7#8'alClient'#11'BorderWidth'#2#2#7'Col' +'umns'#14#1#8'AutoSize'#9#7'Caption'#6#4'Name'#5'Width'#3#210#0#0#1#7'Captio' - +'n'#6#4'Type'#5'Width'#3#200#0#0#1#7'Caption'#6#8'Attrbute'#0#0#9'PopupMenu' - +#7#10'PopupMenu1'#9'RowSelect'#9#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport' - +#10'OnDblClick'#7#15'edtPropDblClick'#0#0#0#7'TButton'#7'Button3'#4'Left'#2#4 - +#6'Height'#2#25#3'Top'#3#165#1#5'Width'#2'd'#6'Action'#7#10'actPropAdd'#7'An' - +'chors'#11#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOr' - +'der'#2#2#0#0#7'TButton'#7'Button4'#4'Left'#2't'#6'Height'#2#25#3'Top'#3#165 - +#1#5'Width'#2'd'#6'Action'#7#11'actPropEdit'#7'Anchors'#11#6'akLeft'#8'akBot' - +'tom'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#3#0#0#7'TButton'#7'B' - +'utton5'#4'Left'#3#228#0#6'Height'#2#25#3'Top'#3#165#1#5'Width'#2'd'#6'Actio' - +'n'#7#13'actPropDelete'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#25'BorderSpaci' - +'ng.InnerBorder'#2#4#8'TabOrder'#2#4#0#0#9'TComboBox'#9'edtParent'#4'Left'#2 - +'\'#6'Height'#2#21#3'Top'#2':'#5'Width'#3#150#1#7'Anchors'#11#5'akTop'#6'akL' - +'eft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cba' - +'ctSearchAscending'#0#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style'#7#14'csD' - +'ropDownList'#8'TabOrder'#2#5#0#0#0#0#11'TActionList'#11'ActionList1'#4'left' - +#3#232#0#3'top'#3#200#0#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'DisableI' - +'fNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOKUpdate' - +#0#0#7'TAction'#10'actPropAdd'#7'Caption'#6#12'New Property'#18'DisableIfNoH' - +'andler'#9#9'OnExecute'#7#17'actPropAddExecute'#0#0#7'TAction'#11'actPropEdi' - +'t'#7'Caption'#6#13'Edit Property'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18 - +'actPropEditExecute'#8'OnUpdate'#7#17'actPropEditUpdate'#0#0#7'TAction'#13'a' - +'ctPropDelete'#7'Caption'#6#15'Delete Property'#18'DisableIfNoHandler'#9#9'O' - +'nExecute'#7#20'actPropDeleteExecute'#8'OnUpdate'#7#17'actPropEditUpdate'#0#0 - +#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#2'i'#3'top'#3#186#0#0#9'TMenuItem'#9 - +'MenuItem1'#6'Action'#7#10'actPropAdd'#7'OnClick'#7#17'actPropAddExecute'#0#0 - +#9'TMenuItem'#9'MenuItem2'#6'Action'#7#11'actPropEdit'#7'OnClick'#7#18'actPr' - +'opEditExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#13'actPropDelete'#7 - +'OnClick'#7#20'actPropDeleteExecute'#0#0#0#0 + +'n'#6#4'Type'#5'Width'#3#200#0#0#1#7'Caption'#6#9'Attribute'#5'Width'#2'<'#0 + +#0#9'PopupMenu'#7#10'PopupMenu1'#9'RowSelect'#9#8'TabOrder'#2#0#9'ViewStyle' + +#7#8'vsReport'#10'OnDblClick'#7#15'edtPropDblClick'#0#0#0#7'TButton'#7'Butto' + +'n3'#4'Left'#2#4#6'Height'#2#25#3'Top'#3#165#1#5'Width'#2'd'#6'Action'#7#10 + +'actPropAdd'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBor' + +'der'#2#4#8'TabOrder'#2#2#0#0#7'TButton'#7'Button4'#4'Left'#2't'#6'Height'#2 + +#25#3'Top'#3#165#1#5'Width'#2'd'#6'Action'#7#11'actPropEdit'#7'Anchors'#11#6 + +'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#3#0#0 + +#7'TButton'#7'Button5'#4'Left'#3#228#0#6'Height'#2#25#3'Top'#3#165#1#5'Width' + +#2'd'#6'Action'#7#13'actPropDelete'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#25 + +'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#4#0#0#9'TComboBox'#9'edtParent' + +#4'Left'#2'\'#6'Height'#2#21#3'Top'#2':'#5'Width'#3#150#1#7'Anchors'#11#5'ak' + +'Top'#6'akLeft'#7'akRight'#0#16'AutoCompleteText'#11#22'cbactEndOfLineComple' + +'te'#20'cbactSearchAscending'#0#10'ItemHeight'#2#13#9'MaxLength'#2#0#5'Style' + +#7#14'csDropDownList'#8'TabOrder'#2#5#0#0#0#0#11'TActionList'#11'ActionList1' + +#4'left'#3#232#0#3'top'#3#200#0#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18 + +'DisableIfNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actO' + +'KUpdate'#0#0#7'TAction'#10'actPropAdd'#7'Caption'#6#12'New Property'#18'Dis' + +'ableIfNoHandler'#9#9'OnExecute'#7#17'actPropAddExecute'#0#0#7'TAction'#11'a' + +'ctPropEdit'#7'Caption'#6#13'Edit Property'#18'DisableIfNoHandler'#9#9'OnExe' + +'cute'#7#18'actPropEditExecute'#8'OnUpdate'#7#17'actPropEditUpdate'#0#0#7'TA' + +'ction'#13'actPropDelete'#7'Caption'#6#15'Delete Property'#18'DisableIfNoHan' + +'dler'#9#9'OnExecute'#7#20'actPropDeleteExecute'#8'OnUpdate'#7#17'actPropEdi' + +'tUpdate'#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#2'i'#3'top'#3#186#0#0#9 + +'TMenuItem'#9'MenuItem1'#6'Action'#7#10'actPropAdd'#7'OnClick'#7#17'actPropA' + +'ddExecute'#0#0#9'TMenuItem'#9'MenuItem2'#6'Action'#7#11'actPropEdit'#7'OnCl' + +'ick'#7#18'actPropEditExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#13 + +'actPropDelete'#7'OnClick'#7#20'actPropDeleteExecute'#0#0#0#0 ]); diff --git a/wst/trunk/type_lib_edtr/ufclassedit.pas b/wst/trunk/type_lib_edtr/ufclassedit.pas index bc4a3470e..d140f4877 100644 --- a/wst/trunk/type_lib_edtr/ufclassedit.pas +++ b/wst/trunk/type_lib_edtr/ufclassedit.pas @@ -91,7 +91,7 @@ procedure TfClassEdit.actPropAddExecute(Sender: TObject); var prp : TPasProperty; begin - prp := CreateProperty(FObject,FSymbolTable); + prp := CreateProperty(FObject,FSymbolTable) as TPasProperty; if Assigned(prp) then begin LoadProperty(prp); end; diff --git a/wst/trunk/type_lib_edtr/ufpropedit.pas b/wst/trunk/type_lib_edtr/ufpropedit.pas index ffe01a5b1..f14e4fae7 100644 --- a/wst/trunk/type_lib_edtr/ufpropedit.pas +++ b/wst/trunk/type_lib_edtr/ufpropedit.pas @@ -44,19 +44,21 @@ type procedure actOKExecute(Sender: TObject); procedure actOKUpdate(Sender: TObject); private - FClassObject: TPasClassType; + FClassObject: TPasType; FUpdateType : TEditType; - FObject : TPasProperty; + FObject : TPasVariable; FSymbolTable : TwstPasTreeContainer; private property UpdateType : TEditType read FUpdateType; - property ClassObject : TPasClassType read FClassObject; + property ClassObject : TPasType read FClassObject; private procedure LoadFromObject(); procedure SaveToObject(); + function GetMembers() : TList; + function IsClassType() : Boolean; public function UpdateObject( - var AObject : TPasProperty; + var AObject : TPasVariable; const AUpdateType : TEditType; ASymbolTable : TwstPasTreeContainer ) : Boolean; @@ -65,16 +67,21 @@ type var fPropEdit: TfPropEdit; - function CreateProperty(AClass : TPasClassType; ASymboltable : TwstPasTreeContainer):TPasProperty ; - function UpdateProperty(AProp : TPasProperty; ASymboltable : TwstPasTreeContainer):Boolean; + function CreateProperty(AClass : TPasType; ASymboltable : TwstPasTreeContainer):TPasVariable ; + function UpdateProperty(AProp : TPasVariable; ASymboltable : TwstPasTreeContainer):Boolean; implementation uses parserutils; -function CreateProperty(AClass : TPasClassType; ASymboltable : TwstPasTreeContainer):TPasProperty ; +function CreateProperty(AClass : TPasType; ASymboltable : TwstPasTreeContainer):TPasVariable ; var f : TfPropEdit; begin + if ( AClass = nil ) or + ( not ( AClass.InheritsFrom(TPasClassType) or AClass.InheritsFrom(TPasRecordType) ) ) + then begin + raise Exception.Create('Class or record expected.'); + end; Result := nil; f := TfPropEdit.Create(Application); try @@ -85,12 +92,13 @@ begin end; end; -function UpdateProperty(AProp : TPasProperty; ASymboltable : TwstPasTreeContainer):Boolean; +function UpdateProperty(AProp : TPasVariable; ASymboltable : TwstPasTreeContainer):Boolean; var f : TfPropEdit; begin f := TfPropEdit.Create(Application); try + f.FClassObject := AProp.Parent as TPasType; Result := f.UpdateObject(AProp,etUpdate,ASymboltable); finally f.Release(); @@ -107,7 +115,11 @@ begin TAction(Sender).Enabled := ( not IsStrEmpty(internalName) ) and ( edtType.ItemIndex >= 0 ) and - ( FindMember(ClassObject,internalName) = nil ); + ( ( UpdateType = etUpdate ) or + ( ( ClassObject.InheritsFrom(TPasClassType) and ( FindMember(TPasClassType(ClassObject),internalName) = nil ) ) or + ( ClassObject.InheritsFrom(TPasRecordType) and ( FindMember(TPasRecordType(ClassObject),internalName) = nil ) ) + ) + ); end; procedure TfPropEdit.actOKExecute(Sender: TObject); @@ -116,6 +128,9 @@ begin end; procedure TfPropEdit.LoadFromObject(); +var + i : PtrInt; + ls : TStrings; begin edtName.Text := ''; edtType.Clear(); @@ -123,6 +138,16 @@ begin try edtType.Items.Clear(); FillTypeList(edtType.Items,FSymbolTable); + ls := edtType.Items; + if IsClassType() then begin + i := ls.Count - 1; + while ( i > 0 ) do begin + if ls.Objects[i].InheritsFrom(TPasRecordType) then begin + ls.Delete(i); + end; + Dec(i); + end; + end; finally edtType.Items.EndUpdate(); end; @@ -131,7 +156,12 @@ begin edtName.Text := FSymbolTable.GetExternalName(FObject); edtType.ItemIndex := edtType.Items.IndexOfObject(FObject.VarType); edtAttribute.Checked := FSymbolTable.IsAttributeProperty(FObject); - edtOptional.Checked := AnsiSameText('Has',Copy(FObject.StoredAccessorName,1,3)) ; + if IsClassType() then begin + edtOptional.Checked := AnsiSameText('Has',Copy(TPasProperty(FObject).StoredAccessorName,1,3)) ; + end else begin + edtOptional.Checked := True; + edtOptional.Enabled := False; + end; end else begin Self.Caption := 'New'; end; @@ -139,21 +169,29 @@ end; procedure TfPropEdit.SaveToObject(); var - locObj : TPasProperty; + locObj : TPasVariable; + locObjProp : TPasProperty; typExtName, typIntName : string; propType : TPasType; + eltClass : TPTreeElement; + locIsClass : Boolean; begin locObj := nil; + locIsClass := IsClassType(); + if locIsClass then + eltClass := TPasProperty + else + eltClass := TPasVariable; typExtName := ExtractIdentifier(edtName.Text); typIntName := MakeInternalSymbolNameFrom(typExtName); propType := edtType.Items.Objects[edtType.ItemIndex] as TPasType; if ( UpdateType = etCreate ) then begin - locObj := TPasProperty(FSymbolTable.CreateElement(TPasProperty,typIntName,ClassObject,visPublished,'',0)); + locObj := TPasVariable(FSymbolTable.CreateElement(eltClass,typIntName,ClassObject,visPublished,'',0)); FreeAndNil(FObject); FObject := locObj; locObj.VarType := propType; locObj.VarType.AddRef(); - ClassObject.Members.Add(FObject); + GetMembers().Add(FObject); end else begin locObj := FObject; if ( propType <> locObj.VarType ) then begin @@ -164,19 +202,37 @@ begin end; locObj.Name := typIntName; end; - if edtOptional.Checked then - locObj.StoredAccessorName := 'Has' + locObj.Name - else - locObj.StoredAccessorName := 'True'; - locObj.ReadAccessorName := 'F' + locObj.Name; - locObj.WriteAccessorName := 'F' + locObj.Name; + if IsClassType() then begin + locObjProp := locObj as TPasProperty; + if edtOptional.Checked then + locObjProp.StoredAccessorName := 'Has' + locObjProp.Name + else + locObjProp.StoredAccessorName := 'True'; + locObjProp.ReadAccessorName := 'F' + locObjProp.Name; + locObjProp.WriteAccessorName := 'F' + locObjProp.Name; + end; FSymbolTable.RegisterExternalAlias(locObj,typExtName); //if ( edtAttribute.Checked <> FSymbolTable.IsAttributeProperty(locObj) ) then FSymbolTable.SetPropertyAsAttribute(locObj,edtAttribute.Checked); end; +function TfPropEdit.GetMembers() : TList; +begin + if ClassObject.InheritsFrom(TPasClassType) then + Result := TPasClassType(ClassObject).Members + else if ClassObject.InheritsFrom(TPasRecordType) then + Result := TPasRecordType(ClassObject).Members + else + Result := nil; +end; + +function TfPropEdit.IsClassType() : Boolean; +begin + Result := ClassObject.InheritsFrom(TPasClassType); +end; + function TfPropEdit.UpdateObject( - var AObject : TPasProperty; + var AObject : TPasVariable; const AUpdateType : TEditType; ASymbolTable : TwstPasTreeContainer ): Boolean; diff --git a/wst/trunk/type_lib_edtr/ufrecordedit.lfm b/wst/trunk/type_lib_edtr/ufrecordedit.lfm new file mode 100644 index 000000000..26004be84 --- /dev/null +++ b/wst/trunk/type_lib_edtr/ufrecordedit.lfm @@ -0,0 +1,178 @@ +object fRecordEdit: TfRecordEdit + Left = 701 + Height = 542 + Top = 128 + Width = 517 + HorzScrollBar.Page = 516 + VertScrollBar.Page = 541 + ActiveControl = edtName + Caption = 'fRecordEdit' + ClientHeight = 542 + ClientWidth = 517 + Position = poDesktopCenter + object PageControl1: TPageControl + Height = 492 + Width = 517 + ActivePage = TabSheet1 + Align = alClient + TabIndex = 0 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Record Type' + ClientHeight = 466 + ClientWidth = 509 + object Label1: TLabel + Left = 20 + Height = 14 + Top = 34 + Width = 28 + Caption = 'Name' + ParentColor = False + end + object edtName: TEdit + Left = 76 + Height = 23 + Top = 34 + Width = 409 + Anchors = [akTop, akLeft, akRight] + TabOrder = 0 + end + object GroupBox1: TGroupBox + Left = 20 + Height = 320 + Top = 82 + Width = 465 + Anchors = [akTop, akLeft, akRight, akBottom] + Caption = ' Fields ' + ClientHeight = 302 + ClientWidth = 461 + TabOrder = 1 + object edtFields: TListView + Height = 302 + Width = 461 + Align = alClient + Columns = < + item + Caption = 'Name' + Width = 200 + end + item + Caption = 'Type' + Width = 190 + end + item + Caption = 'Attribute' + Width = 60 + end> + PopupMenu = PopupMenu1 + TabOrder = 0 + ViewStyle = vsReport + end + end + object Button3: TButton + Left = 20 + Height = 25 + Top = 418 + Width = 100 + Action = actPropAdd + Anchors = [akLeft, akBottom] + BorderSpacing.InnerBorder = 4 + TabOrder = 2 + end + object Button4: TButton + Left = 132 + Height = 25 + Top = 418 + Width = 100 + Action = actPropEdit + Anchors = [akLeft, akBottom] + BorderSpacing.InnerBorder = 4 + TabOrder = 3 + end + object Button5: TButton + Left = 244 + Height = 25 + Top = 418 + Width = 100 + Action = actPropDelete + Anchors = [akLeft, akBottom] + BorderSpacing.InnerBorder = 4 + TabOrder = 4 + end + end + end + object Panel1: TPanel + Height = 50 + Top = 492 + Width = 517 + Align = alBottom + ClientHeight = 50 + ClientWidth = 517 + TabOrder = 1 + object Button1: TButton + Left = 328 + Height = 25 + Top = 13 + Width = 75 + Action = actOK + Anchors = [akTop, akRight] + BorderSpacing.InnerBorder = 4 + TabOrder = 0 + end + object Button2: TButton + Left = 416 + Height = 25 + Top = 13 + Width = 75 + Anchors = [akTop, akRight] + BorderSpacing.InnerBorder = 4 + Cancel = True + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 1 + end + end + object ActionList1: TActionList + left = 128 + top = 208 + object actOK: TAction + Caption = 'OK' + DisableIfNoHandler = True + OnExecute = actOKExecute + OnUpdate = actOKUpdate + end + object actPropAdd: TAction + Caption = 'New Property' + DisableIfNoHandler = True + OnExecute = actPropAddExecute + end + object actPropEdit: TAction + Caption = 'Edit Property' + DisableIfNoHandler = True + OnExecute = actPropEditExecute + OnUpdate = actPropEditUpdate + end + object actPropDelete: TAction + Caption = 'Delete Property' + DisableIfNoHandler = True + OnExecute = actPropDeleteExecute + OnUpdate = actPropEditUpdate + end + end + object PopupMenu1: TPopupMenu + left = 112 + top = 256 + object MenuItem1: TMenuItem + Action = actPropAdd + OnClick = actPropAddExecute + end + object MenuItem2: TMenuItem + Action = actPropEdit + OnClick = actPropEditExecute + end + object MenuItem3: TMenuItem + Action = actPropDelete + OnClick = actPropDeleteExecute + end + end +end diff --git a/wst/trunk/type_lib_edtr/ufrecordedit.lrs b/wst/trunk/type_lib_edtr/ufrecordedit.lrs new file mode 100644 index 000000000..0e909c80e --- /dev/null +++ b/wst/trunk/type_lib_edtr/ufrecordedit.lrs @@ -0,0 +1,51 @@ +{ Ceci est un fichier ressource généré automatiquement par Lazarus } + +LazarusResources.Add('TfRecordEdit','FORMDATA',[ + 'TPF0'#12'TfRecordEdit'#11'fRecordEdit'#4'Left'#3#189#2#6'Height'#3#30#2#3'To' + +'p'#3#128#0#5'Width'#3#5#2#18'HorzScrollBar.Page'#3#4#2#18'VertScrollBar.Pag' + +'e'#3#29#2#13'ActiveControl'#7#7'edtName'#7'Caption'#6#11'fRecordEdit'#12'Cl' + +'ientHeight'#3#30#2#11'ClientWidth'#3#5#2#8'Position'#7#15'poDesktopCenter'#0 + +#12'TPageControl'#12'PageControl1'#6'Height'#3#236#1#5'Width'#3#5#2#10'Activ' + +'ePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabIndex'#2#0#8'TabOrder'#2#0 + +#0#9'TTabSheet'#9'TabSheet1'#7'Caption'#6#11'Record Type'#12'ClientHeight'#3 + +#210#1#11'ClientWidth'#3#253#1#0#6'TLabel'#6'Label1'#4'Left'#2#20#6'Height'#2 + +#14#3'Top'#2'"'#5'Width'#2#28#7'Caption'#6#4'Name'#11'ParentColor'#8#0#0#5'T' + +'Edit'#7'edtName'#4'Left'#2'L'#6'Height'#2#23#3'Top'#2'"'#5'Width'#3#153#1#7 + +'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'TabOrder'#2#0#0#0#9'TGroupBox' + +#9'GroupBox1'#4'Left'#2#20#6'Height'#3'@'#1#3'Top'#2'R'#5'Width'#3#209#1#7'A' + +'nchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6#10' Fi' + +'elds '#12'ClientHeight'#3'.'#1#11'ClientWidth'#3#205#1#8'TabOrder'#2#1#0#9 + +'TListView'#9'edtFields'#6'Height'#3'.'#1#5'Width'#3#205#1#5'Align'#7#8'alCl' + +'ient'#7'Columns'#14#1#7'Caption'#6#4'Name'#5'Width'#3#200#0#0#1#7'Caption'#6 + +#4'Type'#5'Width'#3#190#0#0#1#7'Caption'#6#9'Attribute'#5'Width'#2'<'#0#0#9 + +'PopupMenu'#7#10'PopupMenu1'#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport'#0#0#0 + +#7'TButton'#7'Button3'#4'Left'#2#20#6'Height'#2#25#3'Top'#3#162#1#5'Width'#2 + +'d'#6'Action'#7#10'actPropAdd'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#25'Bord' + +'erSpacing.InnerBorder'#2#4#8'TabOrder'#2#2#0#0#7'TButton'#7'Button4'#4'Left' + +#3#132#0#6'Height'#2#25#3'Top'#3#162#1#5'Width'#2'd'#6'Action'#7#11'actPropE' + +'dit'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4 + +#8'TabOrder'#2#3#0#0#7'TButton'#7'Button5'#4'Left'#3#244#0#6'Height'#2#25#3 + +'Top'#3#162#1#5'Width'#2'd'#6'Action'#7#13'actPropDelete'#7'Anchors'#11#6'ak' + +'Left'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#4#0#0#0 + +#0#6'TPanel'#6'Panel1'#6'Height'#2'2'#3'Top'#3#236#1#5'Width'#3#5#2#5'Align' + +#7#8'alBottom'#12'ClientHeight'#2'2'#11'ClientWidth'#3#5#2#8'TabOrder'#2#1#0 + +#7'TButton'#7'Button1'#4'Left'#3'H'#1#6'Height'#2#25#3'Top'#2#13#5'Width'#2 + +'K'#6'Action'#7#5'actOK'#7'Anchors'#11#5'akTop'#7'akRight'#0#25'BorderSpacin' + +'g.InnerBorder'#2#4#8'TabOrder'#2#0#0#0#7'TButton'#7'Button2'#4'Left'#3#160#1 + +#6'Height'#2#25#3'Top'#2#13#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0 + +#25'BorderSpacing.InnerBorder'#2#4#6'Cancel'#9#7'Caption'#6#6'Cancel'#11'Mod' + +'alResult'#2#2#8'TabOrder'#2#1#0#0#0#11'TActionList'#11'ActionList1'#4'left' + +#3#128#0#3'top'#3#208#0#0#7'TAction'#5'actOK'#7'Caption'#6#2'OK'#18'DisableI' + +'fNoHandler'#9#9'OnExecute'#7#12'actOKExecute'#8'OnUpdate'#7#11'actOKUpdate' + +#0#0#7'TAction'#10'actPropAdd'#7'Caption'#6#12'New Property'#18'DisableIfNoH' + +'andler'#9#9'OnExecute'#7#17'actPropAddExecute'#0#0#7'TAction'#11'actPropEdi' + +'t'#7'Caption'#6#13'Edit Property'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18 + +'actPropEditExecute'#8'OnUpdate'#7#17'actPropEditUpdate'#0#0#7'TAction'#13'a' + +'ctPropDelete'#7'Caption'#6#15'Delete Property'#18'DisableIfNoHandler'#9#9'O' + +'nExecute'#7#20'actPropDeleteExecute'#8'OnUpdate'#7#17'actPropEditUpdate'#0#0 + +#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#2'p'#3'top'#3#0#1#0#9'TMenuItem'#9 + +'MenuItem1'#6'Action'#7#10'actPropAdd'#7'OnClick'#7#17'actPropAddExecute'#0#0 + +#9'TMenuItem'#9'MenuItem2'#6'Action'#7#11'actPropEdit'#7'OnClick'#7#18'actPr' + +'opEditExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#13'actPropDelete'#7 + +'OnClick'#7#20'actPropDeleteExecute'#0#0#0#0 +]); diff --git a/wst/trunk/type_lib_edtr/ufrecordedit.pas b/wst/trunk/type_lib_edtr/ufrecordedit.pas new file mode 100644 index 000000000..94f89b6b9 --- /dev/null +++ b/wst/trunk/type_lib_edtr/ufrecordedit.pas @@ -0,0 +1,233 @@ +{ + 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. +} +unit ufrecordedit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, + ExtCtrls, StdCtrls, ActnList, Menus, + pastree, pascal_parser_intf, + edit_helper; + +type + + { TfRecordEdit } + + TfRecordEdit = class(TForm) + actPropAdd : TAction; + actPropEdit : TAction; + actPropDelete : TAction; + actOK : TAction; + ActionList1 : TActionList; + Button1 : TButton; + Button2 : TButton; + Button3 : TButton; + Button4 : TButton; + Button5 : TButton; + edtName : TEdit; + GroupBox1 : TGroupBox; + Label1 : TLabel; + edtFields : TListView; + MenuItem1 : TMenuItem; + MenuItem2 : TMenuItem; + MenuItem3 : TMenuItem; + PageControl1 : TPageControl; + Panel1 : TPanel; + PopupMenu1 : TPopupMenu; + TabSheet1 : TTabSheet; + procedure actOKExecute(Sender : TObject); + procedure actOKUpdate(Sender : TObject); + procedure actPropAddExecute(Sender : TObject); + procedure actPropDeleteExecute(Sender : TObject); + procedure actPropEditExecute(Sender : TObject); + procedure actPropEditUpdate(Sender : TObject); + private + FUpdateType : TEditType; + FObject : TPasRecordType; + FSymbolTable : TwstPasTreeContainer; + private + property UpdateType : TEditType read FUpdateType; + private + procedure LoadField(AFieldDef : TPasVariable); + procedure LoadFromObject(); + procedure SaveToObject(); + public + function UpdateObject( + var AObject : TPasRecordType; + const AUpdateType : TEditType; + ASymbolTable : TwstPasTreeContainer + ):Boolean; + end; + +var + fRecordEdit : TfRecordEdit; + +implementation +uses common_gui_utils, parserutils, ufpropedit; + +{ TfRecordEdit } + +procedure TfRecordEdit.actOKUpdate(Sender : TObject); +begin + TAction(Sender).Enabled := not IsStrEmpty(ExtractIdentifier(edtName.Text)); +end; + +procedure TfRecordEdit.actPropAddExecute(Sender : TObject); +var + prp : TPasVariable; +begin + prp := CreateProperty(FObject,FSymbolTable); + if Assigned(prp) then begin + LoadField(prp); + end; +end; + +procedure TfRecordEdit.actPropDeleteExecute(Sender : TObject); +var + prop : TPasVariable; +begin + prop := TPasVariable(edtFields.ItemFocused.Data); + FObject.Members.Extract(prop); + prop.Release(); + edtFields.ItemFocused.Free(); +end; + +procedure TfRecordEdit.actPropEditExecute(Sender : TObject); +var + prp : TPasVariable; + itm : TListItem; +begin + itm := edtFields.ItemFocused; + if Assigned(itm) then begin + prp := TPasVariable(itm.Data); + if UpdateProperty(prp,FSymbolTable) then begin + itm.Free(); + LoadField(prp); + end; + end; +end; + +procedure TfRecordEdit.actPropEditUpdate(Sender : TObject); +begin + TAction(Sender).Enabled := Assigned(edtFields.ItemFocused); +end; + +procedure TfRecordEdit.actOKExecute(Sender : TObject); +begin + ModalResult := mrOk; +end; + +procedure TfRecordEdit.LoadField(AFieldDef : TPasVariable); +var + itm : TListItem; + s, extName : string; +begin + extName := FSymbolTable.GetExternalName(AFieldDef); + itm := FindItem(extName,edtFields.Items); + if ( itm = nil ) then begin + itm := edtFields.Items.Add(); + end; + itm.Caption := extName; + itm.SubItems.Add(FSymbolTable.GetExternalName(AFieldDef.VarType)); + if FSymbolTable.IsAttributeProperty(AFieldDef) then begin + s := 'Y'; + end else begin + s := 'N'; + end; + itm.SubItems.Add(s); + itm.Data := AFieldDef; +end; + +procedure TfRecordEdit.LoadFromObject(); +var + i : Integer; + prp : TPasVariable; + extName : string; +begin + edtName.Text := ''; + edtFields.Clear(); + if Assigned(FObject) then begin + extName := FSymbolTable.GetExternalName(FObject); + Self.Caption := extName; + edtName.Text := extName; + for i := 0 to Pred(FObject.Members.Count) do begin + if TPasElement(FObject.Members[i]).InheritsFrom(TPasVariable) then begin + prp := TPasVariable(FObject.Members[i]); + LoadField(prp); + end; + end; + end else begin + Self.Caption := 'New'; + end; +end; + +procedure TfRecordEdit.SaveToObject(); +var + typExtName, typIntName : string; + locObj : TPasRecordType; +begin + locObj := nil; + typExtName := ExtractIdentifier(edtName.Text); + typIntName := MakeInternalSymbolNameFrom(typExtName); + locObj := FObject; + locObj.Name := typIntName; + FSymbolTable.RegisterExternalAlias(locObj,typExtName); +end; + +function TfRecordEdit.UpdateObject( + var AObject : TPasRecordType; + const AUpdateType : TEditType; + ASymbolTable : TwstPasTreeContainer +) : Boolean; +begin + Assert(Assigned(ASymbolTable)); + FSymbolTable := ASymbolTable; + FUpdateType := AUpdateType; + FObject := AObject; + if ( UpdateType = etCreate ) and ( FObject = nil ) then begin + FObject := TPasRecordType(FSymbolTable.CreateElement(TPasRecordType,'new_record',FSymbolTable.CurrentModule.InterfaceSection,visDefault,'',0)); + FSymbolTable.CurrentModule.InterfaceSection.Declarations.Add(FObject); + FSymbolTable.CurrentModule.InterfaceSection.Types.Add(FObject); + end; + try + LoadFromObject(); + Result := ( ShowModal() = mrOK ); + if Result then begin + try + SaveToObject(); + if ( AUpdateType = etCreate ) then begin + AObject := FObject; + end; + except + Result := False; + raise; + end; + end; + finally + if ( not Result ) and ( UpdateType = etCreate ) and ( AObject = nil ) then begin + FSymbolTable.CurrentModule.InterfaceSection.Declarations.Extract(FObject); + FSymbolTable.CurrentModule.InterfaceSection.Types.Extract(FObject); + FObject.Release(); + FObject := nil; + end; + end; +end; + +initialization + {$I ufrecordedit.lrs} + +end. + diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lfm index da32c709d..23e37dba6 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 @@ -1884,6 +1887,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Action = actCompoundCreate OnClick = actCompoundCreateExecute end + object MenuItem48: TMenuItem + Action = actRecordCreate + OnClick = actRecordCreateExecute + end object MenuItem25: TMenuItem Action = actIntfCreate OnClick = actIntfCreateExecute @@ -1967,7 +1974,7 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit OnExecute = actNewFileExecute end object actCompoundCreate: TAction - Caption = 'Create Compound Type' + Caption = 'Create Class Type' DisableIfNoHandler = True OnExecute = actCompoundCreateExecute end @@ -2007,6 +2014,11 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit DisableIfNoHandler = True OnExecute = actTypeALiasCreateExecute end + object actRecordCreate: TAction + Caption = 'Create Record' + DisableIfNoHandler = True + OnExecute = actRecordCreateExecute + end end object OD: TOpenDialog Title = 'Ouvrir un fichier existant' @@ -2064,6 +2076,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Action = actCompoundCreate OnClick = actCompoundCreateExecute end + object MenuItem46: TMenuItem + Action = actRecordCreate + OnClick = actRecordCreateExecute + end object MenuItem24: TMenuItem Action = actIntfCreate OnClick = actIntfCreateExecute @@ -2113,6 +2129,10 @@ object fWstTypeLibraryEdit: TfWstTypeLibraryEdit Action = actCompoundCreate OnClick = actCompoundCreateExecute end + object MenuItem47: TMenuItem + Action = actRecordCreate + OnClick = actRecordCreateExecute + end object MenuItem44: TMenuItem Action = actEnumCreate OnClick = actEnumCreateExecute diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.lrs index cd1de1fb5..bbdb51973 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,198 +268,103 @@ 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'MenuItem25'#6'Action'#7#13'actIntf' - +'Create'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem3' - +'5'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0 - +#9'TMenuItem'#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'Captio' - +'n'#6#13'Update Object'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMenuI' - +'tem'#10'MenuItem34'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExecu' - +'te'#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'actOpenFileExecute'#0#0#7'TAction'#7 - +'actExit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'ac' - +'tExitExecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save generated fi' - +'les ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExportExecute'#8'OnU' - +'pdate'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'Abou' - +'t'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TActio' - +'n'#9'actSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfNoHandler'#9#9'OnE' - +'xecute'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAct' - +'ion'#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#18'DisableIfNoHa' - +'ndler'#9#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAction'#15'actUpdat' - +'eObject'#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22 - +'actUpdateObjectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TActi' - +'on'#14'actRefreshView'#7'Caption'#6#14'&Refresh Views'#18'DisableIfNoHandle' - +'r'#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'actNewF' - +'ileExecute'#0#0#7'TAction'#17'actCompoundCreate'#7'Caption'#6#20'Create Com' - +'pound Type'#18'DisableIfNoHandler'#9#9'OnExecute'#7#24'actCompoundCreateExe' - +'cute'#0#0#7'TAction'#13'actIntfCreate'#7'Caption'#6#16'Create Interface'#18 - +'DisableIfNoHandler'#9#9'OnExecute'#7#20'actIntfCreateExecute'#0#0#7'TAction' - ,#13'actFullExpand'#7'Caption'#6#11'Full expand'#18'DisableIfNoHandler'#9#9'O' - +'nExecute'#7#20'actFullExpandExecute'#0#0#7'TAction'#15'actFullCollapse'#7'C' - +'aption'#6#13'Full Collapse'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actF' - +'ullCollapseExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4'Save'#18'Disab' - +'leIfNoHandler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0#7'TAction'#9'actDele' - +'te'#7'Caption'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actDe' - +'leteExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actA' - +'rrayCreate'#7'Caption'#6#12'Create Array'#18'DisableIfNoHandler'#9#9'OnExec' - +'ute'#7#21'actArrayCreateExecute'#0#0#7'TAction'#18'actTypeALiasCreate'#7'Ca' - +'ption'#6#17'Create Type ALias'#18'DisableIfNoHandler'#9#9'OnExecute'#7#25'a' - +'ctTypeALiasCreateExecute'#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'ofP' - +'athMustExist'#15'ofFileMustExist'#14'ofEnableSizing'#12'ofViewDetail'#0#4'l' - +'eft'#3#153#1#3'top'#2'X'#0#0#10'TSynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23 - +'CommentAttri.Foreground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0 - +#22'StringAttri.Foreground'#7#8'clMaroon'#17'SymbolAttri.Style'#11#6'fsBold' - +#0#25'DirectiveAttri.Foreground'#7#7'clGreen'#20'DirectiveAttri.Style'#11#6 - +'fsBold'#0#14'NestedComments'#9#4'left'#3#183#1#3'top'#2'h'#0#0#11'TSaveDial' - +'og'#2'SD'#5'Title'#6#27'Enregistrer le fichier sous'#10'DefaultExt'#6#5'.WS' - +'DL'#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'top'#3#176#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3 - +#152#0#0#9'TMenuItem'#10'MenuItem28'#6'Action'#7#13'actFullExpand'#7'OnClick' - +#7#20'actFullExpandExecute'#0#0#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'a' - +'ctFullCollapse'#7'OnClick'#7#22'actFullCollapseExecute'#0#0#9'TMenuItem'#10 - +'MenuItem39'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewEx' - +'ecute'#0#0#9'TMenuItem'#10'MenuItem26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9 - +'MenuItem8'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExecu' - +'te'#0#0#9'TMenuItem'#10'MenuItem21'#6'Action'#7#17'actCompoundCreate'#7'OnC' - +'lick'#7#24'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem24'#6'Acti' - +'on'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuIt' - +'em'#10'MenuItem37'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayC' - +'reateExecute'#0#0#9'TMenuItem'#10'MenuItem38'#6'Action'#7#18'actTypeALiasCr' - +'eate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'MenuIt' - +'em22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpd' - +'ateObject'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'Menu' - +'Item33'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#10 + +#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'#0#0#7'TAction'#7'act' + +'Exit'#7'Caption'#6#4'Exit'#18'DisableIfNoHandler'#9#9'OnExecute'#7#14'actEx' + +'itExecute'#0#0#7'TAction'#9'actExport'#7'Caption'#6#24'Save generated files' + +' ...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actExportExecute'#8'OnUpda' + +'te'#7#15'actExportUpdate'#0#0#7'TAction'#8'actAbout'#7'Caption'#6#5'About' + +#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actAboutExecute'#0#0#7'TAction'#9 + +'actSaveAs'#7'Caption'#6#11'Save As ...'#18'DisableIfNoHandler'#9#9'OnExecut' + +'e'#7#16'actSaveAsExecute'#8'OnUpdate'#7#15'actExportUpdate'#0#0#7'TAction' + +#13'actEnumCreate'#7'Caption'#6#18'Create Enumeration'#18'DisableIfNoHandler' + +#9#9'OnExecute'#7#20'actEnumCreateExecute'#0#0#7'TAction'#15'actUpdateObject' + +#7'Caption'#6#6'Update'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actUpdate' + +'ObjectExecute'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'ac' + +'tRefreshView'#7'Caption'#6#14'&Refresh Views'#18'DisableIfNoHandler'#9#9'On' + +'Execute'#7#21'actRefreshViewExecute'#0#0#7'TAction'#10'actNewFile'#7'Captio' + +'n'#6#8'New File'#18'DisableIfNoHandler'#9#9'OnExecute'#7#17'actNewFileExecu' + +'te'#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'DisableIfNo' + +'Handler'#9#9'OnExecute'#7#20'actIntfCreateExecute'#0#0#7'TAction'#13'actFul' + +'lExpand'#7'Caption'#6#11'Full expand'#18'DisableIfNoHandler'#9#9'OnExecute' + +#7#20'actFullExpandExecute'#0#0#7'TAction'#15'actFullCollapse'#7'Caption'#6 + +#13'Full Collapse'#18'DisableIfNoHandler'#9#9'OnExecute'#7#22'actFullCollaps' + +'eExecute'#0#0#7'TAction'#7'actSave'#7'Caption'#6#4'Save'#18'DisableIfNoHand' + +'ler'#9#9'OnExecute'#7#14'actSaveExecute'#0#0#7'TAction'#9'actDelete'#7'Capt' + +'ion'#6#6'Delete'#18'DisableIfNoHandler'#9#9'OnExecute'#7#16'actDeleteExecut' + +'e'#8'OnUpdate'#7#21'actUpdateObjectUpdate'#0#0#7'TAction'#14'actArrayCreate' + +#7'Caption'#6#12'Create Array'#18'DisableIfNoHandler'#9#9'OnExecute'#7#21'ac' + +'tArrayCreateExecute'#0#0#7'TAction'#18'actTypeALiasCreate'#7'Caption'#6#17 + +'Create Type ALias'#18'DisableIfNoHandler'#9#9'OnExecute'#7#25'actTypeALiasC' + +'reateExecute'#0#0#7'TAction'#15'actRecordCreate'#7'Caption'#6#13'Create Rec' + +'ord'#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 (*.pas)|*.pas'#11'FilterIndex'#2#0 + +#10'InitialDir'#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'TS' + +'ynPasSyn'#10'SynPasSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlu' + +'e'#18'CommentAttri.Style'#11#6'fsBold'#0#22'StringAttri.Foreground'#7#8'clM' + +'aroon'#17'SymbolAttri.Style'#11#6'fsBold'#0#25'DirectiveAttri.Foreground'#7 + +#7'clGreen'#20'DirectiveAttri.Style'#11#6'fsBold'#0#14'NestedComments'#9#4'l' + +'eft'#3#183#1#3'top'#2'h'#0#0#11'TSaveDialog'#2'SD'#5'Title'#6#27'Enregistre' + +'r le fichier sous'#10'DefaultExt'#6#5'.WSDL'#6'Filter'#6#25'WDSL files(*.WS' + +'DL)|*.WSDL'#11'FilterIndex'#2#0#7'Options'#11#15'ofPathMustExist'#14'ofEnab' + +'leSizing'#12'ofViewDetail'#0#4'left'#3#242#1#3'top'#3#176#0#0#0#10'TPopupMe' + +'nu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#152#0#0#9'TMenuItem'#10'MenuIte' + +'m28'#6'Action'#7#13'actFullExpand'#7'OnClick'#7#20'actFullExpandExecute'#0#0 + +#9'TMenuItem'#10'MenuItem27'#6'Action'#7#15'actFullCollapse'#7'OnClick'#7#22 + +'actFullCollapseExecute'#0#0#9'TMenuItem'#10'MenuItem39'#6'Action'#7#14'actR' + +'efreshView'#7'OnClick'#7#21'actRefreshViewExecute'#0#0#9'TMenuItem'#10'Menu' + +'Item26'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'#7#13'actE' + +'numCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'MenuIt' + +'em21'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24'actCompoundCreateEx' + +'ecute'#0#0#9'TMenuItem'#10'MenuItem46'#6'Action'#7#15'actRecordCreate'#7'On' + +'Click'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10'MenuItem24'#6'Actio' + +'n'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute'#0#0#9'TMenuIte' + +'m'#10'MenuItem37'#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCr' + +'eateExecute'#0#0#9'TMenuItem'#10'MenuItem38'#6'Action'#7#18'actTypeALiasCre' + +'ate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#9'TMenuItem'#10'MenuIte' + +'m22'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#15'actUpda' + +'teObject'#7'OnClick'#7#22'actUpdateObjectExecute'#0#0#9'TMenuItem'#10'MenuI' + +'tem33'#6'Action'#7#9'actDelete'#7'OnClick'#7#16'actDeleteExecute'#0#0#0#10 +'TPopupMenu'#10'PopupMenu2'#4'left'#3#16#2#3'top'#3#235#0#0#9'TMenuItem'#10 +'MenuItem18'#6'Action'#7#14'actRefreshView'#7'OnClick'#7#21'actRefreshViewEx' +'ecute'#0#0#9'TMenuItem'#10'MenuItem19'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10 @@ -366,12 +372,14 @@ LazarusResources.Add('TfWstTypeLibraryEdit','FORMDATA',[ +'TMenuItem'#10'MenuItem40'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#10'MenuItem41' +#6'Action'#7#14'actArrayCreate'#7'OnClick'#7#21'actArrayCreateExecute'#0#0#9 +'TMenuItem'#10'MenuItem45'#6'Action'#7#17'actCompoundCreate'#7'OnClick'#7#24 - +'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem44'#6'Action'#7#13'ac' - +'tEnumCreate'#7'OnClick'#7#20'actEnumCreateExecute'#0#0#9'TMenuItem'#10'Menu' - +'Item43'#6'Action'#7#13'actIntfCreate'#7'OnClick'#7#20'actIntfCreateExecute' - +#0#0#9'TMenuItem'#10'MenuItem42'#6'Action'#7#18'actTypeALiasCreate'#7'OnClic' - +'k'#7#25'actTypeALiasCreateExecute'#0#0#0#10'TSynXMLSyn'#10'SynXMLSyn1'#13'D' - +'efaultFilter'#6#30'Documents WSDL (*.wsdl)|*.wsdl'#7'Enabled'#8#23'ElementA' - +'ttri.Foreground'#7#6'clNavy'#30'AttributeValueAttri.Foreground'#7#8'clPurpl' - +'e'#16'WantBracesParsed'#8#4'left'#3#210#1#3'top'#3#252#0#0#0#0 + +'actCompoundCreateExecute'#0#0#9'TMenuItem'#10'MenuItem47'#6'Action'#7#15'ac' + +'tRecordCreate'#7'OnClick'#7#22'actRecordCreateExecute'#0#0#9'TMenuItem'#10 + +'MenuItem44'#6'Action'#7#13'actEnumCreate'#7'OnClick'#7#20'actEnumCreateExec' + +'ute'#0#0#9'TMenuItem'#10'MenuItem43'#6'Action'#7#13'actIntfCreate'#7'OnClic' + +'k'#7#20'actIntfCreateExecute'#0#0#9'TMenuItem'#10'MenuItem42'#6'Action'#7#18 + +'actTypeALiasCreate'#7'OnClick'#7#25'actTypeALiasCreateExecute'#0#0#0#10'TSy' + +'nXMLSyn'#10'SynXMLSyn1'#13'DefaultFilter'#6#30'Documents WSDL (*.wsdl)|*.ws' + +'dl'#7'Enabled'#8#23'ElementAttri.Foreground'#7#6'clNavy'#30'AttributeValueA' + +'ttri.Foreground'#7#8'clPurple'#16'WantBracesParsed'#8#4'left'#3#210#1#3'top' + +#3#252#0#0#0#0 ]); diff --git a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas index 06e189dcb..4a92b1bd3 100644 --- a/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas +++ b/wst/trunk/type_lib_edtr/uwsttypelibraryedit.pas @@ -39,6 +39,7 @@ type actFullCollapse: TAction; actDelete : TAction; actArrayCreate : TAction; + actRecordCreate : TAction; actTypeALiasCreate : TAction; actSave : TAction; actNewFile: TAction; @@ -84,6 +85,9 @@ type MenuItem43 : TMenuItem; MenuItem44 : TMenuItem; MenuItem45 : TMenuItem; + MenuItem46 : TMenuItem; + MenuItem47 : TMenuItem; + MenuItem48 : TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7 : TMenuItem; @@ -130,6 +134,7 @@ type procedure actIntfCreateExecute(Sender: TObject); procedure actNewFileExecute(Sender: TObject); procedure actOpenFileExecute(Sender: TObject); + procedure actRecordCreateExecute(Sender : TObject); procedure actRefreshViewExecute(Sender: TObject); procedure actSaveAsExecute(Sender: TObject); procedure actSaveExecute (Sender : TObject ); @@ -405,6 +410,16 @@ begin end; end; +procedure TfWstTypeLibraryEdit.actRecordCreateExecute(Sender : TObject); +var + e : TPasRecordType; +begin + e := CreateRecordObject(FSymbolTable); + if Assigned(e) then begin + FindPainter(e).Paint(FSymbolTable,e,GetTypeNode()); + end; +end; + procedure TfWstTypeLibraryEdit.actRefreshViewExecute(Sender: TObject); begin RenderSymbols(); @@ -571,7 +586,7 @@ procedure TfWstTypeLibraryEdit.actCompoundCreateExecute(Sender: TObject); var e : TPasClassType; begin - e := CreateCompoundObject(FSymbolTable); + e := CreateClassObject(FSymbolTable); if Assigned(e) then begin FindPainter(e).Paint(FSymbolTable,e,GetTypeNode()); end; diff --git a/wst/trunk/type_lib_edtr/view_helper.pas b/wst/trunk/type_lib_edtr/view_helper.pas index 338d64d38..e932c213e 100644 --- a/wst/trunk/type_lib_edtr/view_helper.pas +++ b/wst/trunk/type_lib_edtr/view_helper.pas @@ -235,6 +235,19 @@ type class function CanHandle(AObj : TObject):Boolean;override; end; + { TRecordTypeDefinitionPainter } + + TRecordTypeDefinitionPainter = class(TTypeSymbolPainter) + protected + function Paint( + AContainer : TwstPasTreeContainer; + AObj : TPasElement; + AParent : TTreeNode + ):TTreeNode;override; + public + class function CanHandle(AObj : TObject):Boolean;override; + end; + { TArrayTypeDefinitionPainter } TArrayTypeDefinitionPainter = class(TTypeSymbolPainter) @@ -294,6 +307,38 @@ type class function CanHandle(AObj : TObject):Boolean;override; end; +{ TRecordTypeDefinitionPainter } + +function TRecordTypeDefinitionPainter.Paint( + AContainer : TwstPasTreeContainer; + AObj: TPasElement; + AParent: TTreeNode +): TTreeNode; +var + locObj : TPasRecordType; + locProp : TPasVariable; + i : Integer; + s : string; +begin + locObj := AObj as TPasRecordType; + Result := inherited Paint(AContainer,locObj, AParent); + for i := 0 to Pred(locObj.Members.Count) do begin + if TPasElement(locObj.Members[i]).InheritsFrom(TPasVariable) then begin + locProp := TPasVariable(locObj.Members[i]); + s := Format('%s : %s',[AContainer.GetExternalName(locProp),AContainer.GetExternalName(locProp.VarType)]); + if AContainer.IsAttributeProperty(locProp) then begin + s := s + ' ( Attribute )'; + end; + AddChildNode(Result,s); + end; + end; +end; + +class function TRecordTypeDefinitionPainter.CanHandle(AObj : TObject) : Boolean; +begin + Result := inherited CanHandle(AObj) and AObj.InheritsFrom(TPasRecordType); +end; + { TArrayTypeDefinitionPainter } class function TArrayTypeDefinitionPainter.CanHandle(AObj : TObject) : Boolean; @@ -723,6 +768,7 @@ initialization FPainterRegistryInst.RegisterHandler(TPasNativeSimpleTypePainter); FPainterRegistryInst.RegisterHandler(TBindingPainter); FPainterRegistryInst.RegisterHandler(TArrayTypeDefinitionPainter); + FPainterRegistryInst.RegisterHandler(TRecordTypeDefinitionPainter); finalization FreeAndNil(FPainterRegistryInst); diff --git a/wst/trunk/type_lib_edtr/wsdl_generator.pas b/wst/trunk/type_lib_edtr/wsdl_generator.pas index 685d68ef9..1a533f2b9 100644 --- a/wst/trunk/type_lib_edtr/wsdl_generator.pas +++ b/wst/trunk/type_lib_edtr/wsdl_generator.pas @@ -102,6 +102,18 @@ type class function CanHandle(ASymbol : TObject) : Boolean;override; end; + { TPasRecordType_TypeHandler } + + TPasRecordType_TypeHandler = class(TTypeDefinition_TypeHandler) + protected + procedure Generate( + AContainer : TwstPasTreeContainer; + const ASymbol : TPasElement; + AWsdlDocument : TDOMDocument + );override; + class function CanHandle(ASymbol : TObject) : Boolean;override; + end; + { TBaseArrayRemotable_TypeHandler } TBaseArrayRemotable_TypeHandler = class(TTypeDefinition_TypeHandler) @@ -158,6 +170,7 @@ const sNAME = 'name'; sNAME_SPACE = 'namespace'; sPORT_TYPE = 'portType'; + sRECORD = 'record'; sRESTRICTION = 'restriction'; sSEQUENCE = 'sequence'; sSERVICE = 'service'; @@ -717,9 +730,9 @@ begin if not AContainer.IsAttributeProperty(p) then begin if ( typeCategory = tcSimpleContent ) then begin raise EWsdlGeneratorException.CreateFmt('Invalid type definition, a simple type cannot have "not attribute" properties : "%s"',[AContainer.GetExternalName(ASymbol)]); - hasSequence := True; end; end; + hasSequence := True; end; end; if hasSequence then begin @@ -924,6 +937,7 @@ begin r := GetWsdlTypeHandlerRegistry(); r.Register(TEnumTypeHandler); r.Register(TClassTypeDefinition_TypeHandler); + r.Register(TPasRecordType_TypeHandler); r.Register(TBaseArrayRemotable_TypeHandler); r.Register(TTypeAliasDefinition_TypeHandler); end; @@ -970,6 +984,104 @@ begin Result := Assigned(ASymbol) and ASymbol.InheritsFrom(TPasAliasType); end; +{ TPasRecordType_TypeHandler } + +procedure TPasRecordType_TypeHandler.Generate( + AContainer : TwstPasTreeContainer; + const ASymbol : TPasElement; + AWsdlDocument : TDOMDocument +); +var + cplxNode, docNode : TDOMElement; + + procedure CreateDocNode(); + begin + if ( docNode = nil ) then begin + docNode := CreateElement(sDOCUMENT,cplxNode,AWsdlDocument); + end; + end; + +var + typItm : TPasRecordType; + propTypItm : TPasType; + s, prop_ns_shortName : string; + defTypesNode, defSchemaNode, sqcNode, propNode : TDOMElement; + i : Integer; + p : TPasVariable; + hasSequence : Boolean; +begin + inherited; + docNode := nil; + typItm := ASymbol as TPasRecordType; + if Assigned(typItm) then begin + GetNameSpaceShortName(AContainer.GetExternalName(AContainer.CurrentModule) ,AWsdlDocument); + defTypesNode := AWsdlDocument.DocumentElement.FindNode(sWSDL_TYPES) as TDOMElement; + Assert(Assigned(defTypesNode)); + defSchemaNode := defTypesNode.FirstChild as TDOMElement; + + s := Format('%s:%s',[sXSD,sCOMPLEX_TYPE]); + cplxNode := CreateElement(s,defSchemaNode,AWsdlDocument); + cplxNode.SetAttribute(sNAME, AContainer.GetExternalName(typItm)) ; + + CreateDocNode(); + CreateElement(sCUSTOM_ATTRIBUTE,docNode,AWsdlDocument).SetAttribute(sRECORD,'true'); + + hasSequence := False; + for i := 0 to Pred(typItm.Members.Count) do begin + if TPasElement(typItm.Members[i]).InheritsFrom(TPasVariable) then begin + p := TPasVariable(typItm.Members[i]); + if not AContainer.IsAttributeProperty(p) then begin + hasSequence := True; + Break; + end; + end; + end; + if hasSequence then begin + s := Format('%s:%s',[sXSD,sSEQUENCE]); + sqcNode := CreateElement(s,cplxNode,AWsdlDocument); + end else begin + sqcNode := nil; + end; + + + for i := 0 to Pred(typItm.Members.Count) do begin + if TPasElement(typItm.Members[i]).InheritsFrom(TPasVariable) then begin + p := TPasVariable(typItm.Members[i]); + if AContainer.IsAttributeProperty(p) then begin + s := Format('%s:%s',[sXSD,sATTRIBUTE]); + propNode := CreateElement(s,cplxNode,AWsdlDocument); + end else begin + s := Format('%s:%s',[sXSD,sELEMENT]); + propNode := CreateElement(s,sqcNode,AWsdlDocument); + end; + propNode.SetAttribute(sNAME,AContainer.GetExternalName(p)); + propTypItm := p.VarType; + if Assigned(propTypItm) then begin + prop_ns_shortName := GetNameSpaceShortName(GetTypeNameSpace(AContainer,propTypItm),AWsdlDocument); + propNode.SetAttribute(sTYPE,Format('%s:%s',[prop_ns_shortName,AContainer.GetExternalName(propTypItm)])); + {if AContainer.IsAttributeProperty(p) then begin + if AnsiSameText('Has',Copy(p.StoredAccessorName,1,3)) then + propNode.SetAttribute(sATTRIBUTE,'optional') + else + propNode.SetAttribute(sATTRIBUTE,'required'); + end else begin + if AnsiSameText('Has',Copy(p.StoredAccessorName,1,3)) then + propNode.SetAttribute(sMIN_OCCURS,'0') + else + propNode.SetAttribute(sMIN_OCCURS,'1'); + propNode.SetAttribute(sMAX_OCCURS,'1'); + end;} + end; + end; + end; + end; +end; + +class function TPasRecordType_TypeHandler.CanHandle(ASymbol : TObject) : Boolean; +begin + Result := inherited CanHandle(ASymbol) and ASymbol.InheritsFrom(TPasRecordType); +end; + initialization WsdlTypeHandlerRegistryInst := TWsdlTypeHandlerRegistry.Create() as IWsdlTypeHandlerRegistry; RegisterFondamentalTypes(); diff --git a/wst/trunk/ws_helper/generator.pas b/wst/trunk/ws_helper/generator.pas index 407f6c54e..64a6c9a58 100644 --- a/wst/trunk/ws_helper/generator.pas +++ b/wst/trunk/ws_helper/generator.pas @@ -2116,6 +2116,22 @@ var WriteLn('{$ENDIF %s}',[sRECORD_RTTI_DEFINE]); end; + procedure WriteAttributeProperties(); + var + itm : TPasVariable; + k, c : PtrInt; + offsetLine, typeLine : string; + begin + c := ASymbol.Members.Count; + for k := 0 to Pred(c) do begin + itm := TPasVariable(ASymbol.Members[k]); + if SymbolTable.IsAttributeProperty(itm) then begin + Indent(); + WriteLn('RegisterAttributeProperty(TypeInfo(%s),%s);',[ASymbol.Name,QuotedStr(itm.Name)]); + end; + end; + end; + var s : string; begin @@ -2148,6 +2164,7 @@ begin WriteLn('{$IFDEF %s}',[sRECORD_RTTI_DEFINE]); Indent(); WriteLn(s,[ASymbol.Name,Format('__%s_TYPEINFO_FUNC__()',[ASymbol.Name]),ASymbol.Name]); WriteLn('{$ENDIF %s}',[sRECORD_RTTI_DEFINE]); + WriteAttributeProperties(); SetCurrentStream(FDecStream); except on e : Exception do diff --git a/wst/trunk/ws_helper/pascal_parser_intf.pas b/wst/trunk/ws_helper/pascal_parser_intf.pas index 034366cf3..730df3601 100644 --- a/wst/trunk/ws_helper/pascal_parser_intf.pas +++ b/wst/trunk/ws_helper/pascal_parser_intf.pas @@ -129,8 +129,8 @@ type procedure RegisterExternalAlias(AObject : TPasElement; const AExternalName : String); function SameName(AObject : TPasElement; const AName : string) : Boolean; function GetExternalName(AObject : TPasElement) : string; - function IsAttributeProperty(AObject : TPasProperty) : Boolean; - procedure SetPropertyAsAttribute(AObject : TPasProperty; const AValue : Boolean); + function IsAttributeProperty(AObject : TPasVariable) : Boolean; + procedure SetPropertyAsAttribute(AObject : TPasVariable; const AValue : Boolean); function IsInitNeed(AType: TPasType): Boolean; function IsOfType(AType: TPasType; AClass: TClass): Boolean; @@ -161,7 +161,8 @@ type const AParamName : string; const AStartPos : Integer = 0 ) : TPasArgument; - function FindMember(AClass : TPasClassType; const AName : string) : TPasElement ; + function FindMember(AClass : TPasClassType; const AName : string) : TPasElement ; overload; + function FindMember(AClass : TPasRecordType; const AName : string) : TPasElement ; overload; function GetElementCount(AList : TList; AElementClass : TPTreeElement):Integer ; function GetUltimeType(AType : TPasType) : TPasType; @@ -269,6 +270,7 @@ var begin Result := TPasModule(AContainer.CreateElement(TPasModule,'base_service_intf',AContainer.Package,visPublic,'',0)); try + AContainer.Package.Modules.Add(Result); AContainer.RegisterExternalAlias(Result,sXSD_NS); Result.InterfaceSection := TPasSection(AContainer.CreateElement(TPasSection,'',Result,visDefault,'',0)); AddSystemSymbol(Result,AContainer); @@ -380,22 +382,36 @@ begin end; end; -function FindMember(AClass : TPasClassType; const AName : string) : TPasElement ; +function InternalFindMember(AMemberList : TList; const AName : string) : TPasElement ; var - memberList : TList; i : Integer; begin Result := nil; - if ( AClass <> nil ) then begin - memberList := AClass.Members; - for i := 0 to Pred(memberList.Count) do begin - if AnsiSameText(AName,TPasElement(memberList[i]).Name) then begin - Result := TPasElement(memberList[i]); + if ( AMemberList <> nil ) then begin + for i := 0 to Pred(AMemberList.Count) do begin + if AnsiSameText(AName,TPasElement(AMemberList[i]).Name) then begin + Result := TPasElement(AMemberList[i]); end; end; end; end; +function FindMember(AClass : TPasClassType; const AName : string) : TPasElement ; +begin + Result := nil; + if ( AClass <> nil ) then begin + Result := InternalFindMember(AClass.Members,AName); + end; +end; + +function FindMember(AClass : TPasRecordType; const AName : string) : TPasElement ; +begin + Result := nil; + if ( AClass <> nil ) then begin + Result := InternalFindMember(AClass.Members,AName); + end; +end; + function MakeInternalSymbolNameFrom(const AName : string) : string ; begin Result := ExtractIdentifier(AName); @@ -694,12 +710,12 @@ begin end; end; -function TwstPasTreeContainer.IsAttributeProperty(AObject: TPasProperty): Boolean; +function TwstPasTreeContainer.IsAttributeProperty(AObject: TPasVariable): Boolean; begin Result := AnsiSameText(Properties.GetValue(AObject,sATTRIBUTE),'True'); end; -procedure TwstPasTreeContainer.SetPropertyAsAttribute(AObject: TPasProperty; const AValue: Boolean); +procedure TwstPasTreeContainer.SetPropertyAsAttribute(AObject: TPasVariable; const AValue: Boolean); var s : string; begin diff --git a/wst/trunk/ws_helper/ws_helper.lpi b/wst/trunk/ws_helper/ws_helper.lpi index d696bcab3..1a5375e78 100644 --- a/wst/trunk/ws_helper/ws_helper.lpi +++ b/wst/trunk/ws_helper/ws_helper.lpi @@ -12,7 +12,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -60,7 +60,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -88,7 +88,7 @@ - + @@ -131,7 +131,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -182,7 +182,7 @@ - + @@ -203,7 +203,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -433,7 +433,7 @@ - + @@ -499,33 +499,16 @@ + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -560,7 +543,7 @@ diff --git a/wst/trunk/ws_helper/wsdl2pas_imp.pas b/wst/trunk/ws_helper/wsdl2pas_imp.pas index 5e32ea219..ee6737463 100644 --- a/wst/trunk/ws_helper/wsdl2pas_imp.pas +++ b/wst/trunk/ws_helper/wsdl2pas_imp.pas @@ -199,6 +199,7 @@ const s_port : WideString = 'port'; s_portType : WideString = 'portType'; s_prohibited : WideString = 'prohibited'; + s_record : WideString = 'record'; s_ref : WideString = 'ref'; s_required : WideString = 'required'; s_restriction : WideString = 'restriction'; @@ -269,6 +270,44 @@ begin end; end; +function wst_findCustomAttribute( + AWsdlShortNames : TStrings; + ANode : TDOMNode; + const AAttribute : string; + out AValue : string +) : Boolean; +var + nd : TDOMNode; + tmpCrs : IObjectCursor; +begin + Result := False; + tmpCrs := CreateCursorOn( + CreateChildrenCursor(ANode,cetRttiNode), + ParseFilter(CreateQualifiedNameFilterStr(s_document,AWsdlShortNames),TDOMNodeRttiExposer) + ); + tmpCrs.Reset(); + if tmpCrs.MoveNext() then begin + nd := (tmpCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject; + if nd.HasChildNodes() then begin + tmpCrs := CreateCursorOn( + CreateChildrenCursor(nd,cetRttiNode), + ParseFilter(Format('%s=%s',[s_NODE_NAME,QuotedStr(s_customAttributes)]),TDOMNodeRttiExposer) + ); + tmpCrs.Reset(); + if tmpCrs.MoveNext() then begin + nd := (tmpCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject; + if ( nd.Attributes <> nil ) then begin + nd := nd.Attributes.GetNamedItem(AAttribute); + if Assigned(nd) then begin + Result := True; + AValue := nd.NodeValue; + end; + end; + end; + end; + end; +end; + { TWsdlParser } procedure TWsdlParser.DoOnMessage(const AMsgType : TMessageType; const AMsg : string); @@ -386,6 +425,7 @@ var begin CreateWstInterfaceSymbolTable(SymbolTable); FModule := TPasModule(SymbolTable.CreateElement(TPasModule,AModuleName,SymbolTable.Package,visDefault,'',0)); + SymbolTable.Package.Modules.Add(FModule); FModule.InterfaceSection := TPasSection(SymbolTable.CreateElement(TPasSection,'',FModule,visDefault,'',0)); FPortTypeCursor := nil; @@ -2024,31 +2064,30 @@ var function IsHeaderBlock() : Boolean; var - nd : TDOMNode; - tmpCrs : IObjectCursor; + strBuffer : string; begin - Result := False; - tmpCrs := CreateCursorOn( - CreateChildrenCursor(FTypeNode,cetRttiNode), - ParseFilter(CreateQualifiedNameFilterStr(s_document,FOwner.FWsdlShortNames),TDOMNodeRttiExposer) - ); - tmpCrs.Reset(); - if tmpCrs.MoveNext() then begin - nd := (tmpCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject; - if nd.HasChildNodes() then begin - tmpCrs := CreateCursorOn( - CreateChildrenCursor(nd,cetRttiNode), - ParseFilter(Format('%s=%s',[s_NODE_NAME,QuotedStr(s_customAttributes)]),TDOMNodeRttiExposer) - ); - tmpCrs.Reset(); - if tmpCrs.MoveNext() then begin - nd := (tmpCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject; - if ( nd.Attributes <> nil ) then begin - nd := nd.Attributes.GetNamedItem(s_headerBlock); - if Assigned(nd) then - Result := AnsiSameText('true',Trim(nd.NodeValue)); - end; - end; + Result := wst_findCustomAttribute(FOwner.FWsdlShortNames,FTypeNode,s_headerBlock,strBuffer) and AnsiSameText('true',Trim(strBuffer)); + end; + + function IsRecordType() : Boolean; + var + strBuffer : string; + begin + Result := wst_findCustomAttribute(FOwner.FWsdlShortNames,FTypeNode,s_record,strBuffer) and AnsiSameText('true',Trim(strBuffer)); + end; + + procedure ParseElementsAndAttributes(AEltCrs, AEltAttCrs : IObjectCursor); + begin + if Assigned(AEltCrs) then begin + AEltCrs.Reset(); + while AEltCrs.MoveNext() do begin + ParseElement((AEltCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject); + end; + end; + if Assigned(AEltAttCrs) then begin + AEltAttCrs.Reset(); + while AEltAttCrs.MoveNext() do begin + ParseElement((AEltAttCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject); end; end; end; @@ -2061,6 +2100,8 @@ var propTyp, tmpPropTyp : TPasProperty; tmpClassDef : TPasClassType; i : Integer; + recordType : TPasRecordType; + tmpRecVar : TPasVariable; begin ExtractBaseType(); eltCrs := ExtractElementCursor(eltAttCrs); @@ -2097,18 +2138,7 @@ begin classDef.AncestorType.AddRef(); if Assigned(eltCrs) or Assigned(eltAttCrs) then begin isArrayDef := False; - if Assigned(eltCrs) then begin - eltCrs.Reset(); - while eltCrs.MoveNext() do begin - ParseElement((eltCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject); - end; - end; - if Assigned(eltAttCrs) then begin - eltAttCrs.Reset(); - while eltAttCrs.MoveNext() do begin - ParseElement((eltAttCrs.GetCurrent() as TDOMNodeRttiExposer).InnerObject); - end; - end; + ParseElementsAndAttributes(eltCrs,eltAttCrs); if ( arrayItems.Count > 0 ) then begin if ( arrayItems.Count = 1 ) and ( GetElementCount(classDef.Members,TPasProperty) = 1 ) then begin Result := nil; @@ -2155,6 +2185,30 @@ begin end; end; end; + + //check for record + if ( FDerivationMode = dmNone ) and Result.InheritsFrom(TPasClassType) and IsRecordType() then begin + tmpClassDef := classDef; + classDef := nil; + recordType := TPasRecordType(FSymbols.CreateElement(TPasRecordType,tmpClassDef.Name,FSymbols.CurrentModule.InterfaceSection,visPublic,'',0)); + Result := recordType; + if hasInternalName then + FSymbols.RegisterExternalAlias(recordType,ATypeName); + for i := 0 to Pred(tmpClassDef.Members.Count) do begin + if TPasElement(tmpClassDef.Members[i]).InheritsFrom(TPasProperty) then begin + propTyp := TPasProperty(tmpClassDef.Members[i]); + tmpRecVar := TPasVariable(FSymbols.CreateElement(TPasVariable,propTyp.Name,recordType,visPublic,'',0)); + tmpRecVar.VarType := propTyp.VarType; + tmpRecVar.VarType.AddRef(); + FSymbols.RegisterExternalAlias(tmpRecVar,FSymbols.GetExternalName(propTyp)); + recordType.Members.Add(tmpRecVar); + if FSymbols.IsAttributeProperty(propTyp) then begin + FSymbols.SetPropertyAsAttribute(tmpRecVar,True); + end; + end; + end; + FreeAndNil(tmpClassDef); + end; except FreeAndNil(Result); raise;